From dc143cddf2b181ab2cf575dacfb047f5759bfe7e Mon Sep 17 00:00:00 2001 From: Kerim Date: Sat, 26 Aug 2023 02:39:39 +0500 Subject: [PATCH] seller --- composer.json | 3 +- plugins/rainlab/pages/Plugin.php | 15 + .../rainlab/pages/assets/js/pages-snippets.js | 45 +- plugins/rainlab/pages/classes/MenuItem.php | 5 + plugins/rainlab/pages/classes/Page.php | 45 +- plugins/rainlab/pages/updates/version.yaml | 2 + plugins/rainlab/user/.gitignore | 3 + plugins/rainlab/user/LICENCE.md | 3 + plugins/rainlab/user/Plugin.php | 214 + plugins/rainlab/user/README.md | 511 + plugins/rainlab/user/UPGRADE.md | 31 + .../user/assets/images/no-user-avatar.png | Bin 0 -> 1725 bytes .../rainlab/user/assets/images/user-icon.svg | 13 + .../rainlab/user/assets/js/bulk-actions.js | 100 + plugins/rainlab/user/classes/AuthManager.php | 184 + .../rainlab/user/classes/AuthMiddleware.php | 17 + .../rainlab/user/classes/UserEventBase.php | 40 + .../rainlab/user/classes/UserRedirector.php | 48 + .../classes/authmanager/HasBearerToken.php | 133 + plugins/rainlab/user/components/Account.php | 661 + .../rainlab/user/components/ResetPassword.php | 195 + plugins/rainlab/user/components/Session.php | 260 + .../components/account/activation_check.htm | 9 + .../components/account/deactivate_link.htm | 28 + .../user/components/account/default.htm | 24 + .../user/components/account/register.htm | 53 + .../user/components/account/signin.htm | 33 + .../user/components/account/update.htm | 33 + .../components/resetpassword/complete.htm | 1 + .../user/components/resetpassword/default.htm | 7 + .../user/components/resetpassword/reset.htm | 19 + .../user/components/resetpassword/restore.htm | 14 + plugins/rainlab/user/composer.json | 27 + plugins/rainlab/user/config/config.php | 116 + .../rainlab/user/controllers/UserGroups.php | 50 + plugins/rainlab/user/controllers/Users.php | 308 + .../controllers/usergroups/_list_toolbar.htm | 7 + .../controllers/usergroups/config_form.yaml | 31 + .../controllers/usergroups/config_list.yaml | 44 + .../user/controllers/usergroups/create.htm | 48 + .../user/controllers/usergroups/index.htm | 2 + .../user/controllers/usergroups/preview.htm | 19 + .../user/controllers/usergroups/update.htm | 56 + .../controllers/users/_convert_guest_form.htm | 47 + .../user/controllers/users/_hint_activate.htm | 16 + .../user/controllers/users/_hint_banned.htm | 16 + .../user/controllers/users/_hint_guest.htm | 15 + .../user/controllers/users/_hint_trashed.htm | 9 + .../user/controllers/users/_list_toolbar.htm | 84 + .../controllers/users/_preview_scoreboard.htm | 40 + .../controllers/users/_preview_toolbar.htm | 71 + .../user/controllers/users/config_form.yaml | 25 + .../user/controllers/users/config_list.yaml | 40 + .../rainlab/user/controllers/users/create.htm | 64 + .../rainlab/user/controllers/users/index.htm | 2 + .../user/controllers/users/preview.htm | 61 + .../rainlab/user/controllers/users/update.htm | 72 + plugins/rainlab/user/facades/Auth.php | 15 + plugins/rainlab/user/lang/ar/lang.php | 228 + plugins/rainlab/user/lang/cs/lang.php | 190 + plugins/rainlab/user/lang/de/lang.php | 248 + plugins/rainlab/user/lang/en/lang.php | 239 + plugins/rainlab/user/lang/es-ar/lang.php | 168 + plugins/rainlab/user/lang/es/lang.php | 212 + plugins/rainlab/user/lang/fa/lang.php | 191 + plugins/rainlab/user/lang/fr/lang.php | 206 + plugins/rainlab/user/lang/hu/lang.php | 223 + plugins/rainlab/user/lang/id/lang.php | 219 + plugins/rainlab/user/lang/it/lang.php | 192 + plugins/rainlab/user/lang/kr/lang.php | 205 + plugins/rainlab/user/lang/nl/lang.php | 224 + plugins/rainlab/user/lang/pl/lang.php | 205 + plugins/rainlab/user/lang/pt-br/lang.php | 189 + plugins/rainlab/user/lang/pt-pt/lang.php | 189 + plugins/rainlab/user/lang/ru/lang.php | 228 + plugins/rainlab/user/lang/si/lang.php | 228 + plugins/rainlab/user/lang/sk/lang.php | 204 + plugins/rainlab/user/lang/sl/lang.php | 227 + plugins/rainlab/user/lang/sv/lang.php | 205 + plugins/rainlab/user/lang/tr/lang.php | 222 + plugins/rainlab/user/lang/zh-cn/lang.php | 231 + plugins/rainlab/user/lang/zh-tw/lang.php | 222 + plugins/rainlab/user/models/MailBlocker.php | 278 + plugins/rainlab/user/models/Settings.php | 99 + plugins/rainlab/user/models/Throttle.php | 18 + plugins/rainlab/user/models/User.php | 566 + plugins/rainlab/user/models/UserGroup.php | 60 + .../rainlab/user/models/settings/fields.yaml | 107 + plugins/rainlab/user/models/user/columns.yaml | 50 + plugins/rainlab/user/models/user/fields.yaml | 90 + plugins/rainlab/user/models/user/scopes.yaml | 30 + .../user/models/usergroup/columns.yaml | 26 + .../rainlab/user/models/usergroup/fields.yaml | 19 + .../user/notifyrules/UserActivatedEvent.php | 18 + .../notifyrules/UserAttributeCondition.php | 37 + .../user/notifyrules/UserRegisteredEvent.php | 18 + .../userattributecondition/attributes.yaml | 17 + plugins/rainlab/user/phpunit.xml | 42 + .../rainlab/user/tests/UserPluginTestCase.php | 34 + .../tests/unit/facades/AuthFacadeTest.php | 74 + .../updates/create_mail_blockers_table.php | 27 + .../user/updates/create_throttle_table.php | 31 + .../user/updates/create_user_groups_table.php | 36 + .../user/updates/create_users_table.php | 34 + .../user/updates/seed_user_groups_table.php | 22 + .../updates/update_timestamp_nullable.php | 21 + .../user/updates/users_add_deleted_at.php | 25 + .../user/updates/users_add_guest_flag.php | 25 + .../user/updates/users_add_ip_address.php | 31 + .../user/updates/users_add_last_seen.php | 26 + .../user/updates/users_add_login_column.php | 40 + .../user/updates/users_add_seller_id.php | 25 + .../user/updates/users_add_superuser_flag.php | 25 + .../user/updates/users_add_surname.php | 25 + .../users_rename_login_to_username.php | 26 + plugins/rainlab/user/updates/version.yaml | 90 + plugins/rainlab/user/views/mail/activate.htm | 12 + plugins/rainlab/user/views/mail/invite.htm | 13 + plugins/rainlab/user/views/mail/new_user.htm | 11 + .../rainlab/user/views/mail/reactivate.htm | 8 + plugins/rainlab/user/views/mail/restore.htm | 22 + plugins/rainlab/user/views/mail/welcome.htm | 6 + plugins/romanah/bagisto/Plugin.php | 3 +- plugins/romanah/bagisto/components/Seller.php | 110 + themes/nurgul/assets/jquery.session.js | 134 + themes/nurgul/assets/logo_white.svg | 51 + themes/nurgul/assets/profile.jpg | Bin 0 -> 409752 bytes themes/nurgul/assets/seller/css/_app.css | 19070 ++ themes/nurgul/assets/seller/css/app.css | 19069 ++ .../assets/seller/fonts/roboto/LICENSE.txt | 202 + .../seller/fonts/roboto/Roboto-Black.ttf | Bin 0 -> 171072 bytes .../fonts/roboto/Roboto-BlackItalic.ttf | Bin 0 -> 177120 bytes .../seller/fonts/roboto/Roboto-Bold.ttf | Bin 0 -> 170348 bytes .../seller/fonts/roboto/Roboto-BoldItalic.ttf | Bin 0 -> 174520 bytes .../seller/fonts/roboto/Roboto-Italic.ttf | Bin 0 -> 173516 bytes .../seller/fonts/roboto/Roboto-Light.ttf | Bin 0 -> 170012 bytes .../fonts/roboto/Roboto-LightItalic.ttf | Bin 0 -> 176184 bytes .../seller/fonts/roboto/Roboto-Medium.ttf | Bin 0 -> 171656 bytes .../fonts/roboto/Roboto-MediumItalic.ttf | Bin 0 -> 176428 bytes .../seller/fonts/roboto/Roboto-Regular.ttf | Bin 0 -> 171272 bytes .../seller/fonts/roboto/Roboto-Thin.ttf | Bin 0 -> 171500 bytes .../seller/fonts/roboto/Roboto-ThinItalic.ttf | Bin 0 -> 175872 bytes .../nurgul/assets/seller/images/Group 1.svg | 33 + .../nurgul/assets/seller/images/Group 2.svg | 11 + .../seller/images/bg-login-page-dark.svg | 22 + .../assets/seller/images/bg-login-page.svg | 17 + .../assets/seller/images/bg-main-dark.svg | 3 + .../nurgul/assets/seller/images/bg-main.svg | 3 + .../seller/images/error-illustration.svg | 72 + .../assets/seller/images/food-beverage-1.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-10.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-11.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-12.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-13.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-14.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-15.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-16.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-17.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-18.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-19.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-2.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-3.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-4.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-5.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-6.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-7.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-8.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/food-beverage-9.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/illustration.svg | 121 + .../assets/seller/images/illustration2.svg | 121 + themes/nurgul/assets/seller/images/logo.svg | 9 + .../assets/seller/images/map-marker-dark.svg | 6 + .../seller/images/map-marker-region-dark.svg | 20 + .../seller/images/map-marker-region.png | Bin 0 -> 3134 bytes .../seller/images/map-marker-region.svg | 20 + .../assets/seller/images/map-marker.png | Bin 0 -> 956 bytes .../assets/seller/images/map-marker.svg | 6 + .../seller/images/phone-illustration.svg | 11 + .../seller/images/placeholders/200x200.jpg | Bin 0 -> 1851 bytes .../seller/images/placeholders/800x800.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-1.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-10.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-11.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-12.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-13.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-14.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-15.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-16.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-17.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-18.jpg | Bin 0 -> 14451 bytes .../assets/seller/images/preview-19.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-2.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-3.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-4.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-5.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-6.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-7.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-8.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/preview-9.jpg | Bin 0 -> 14451 bytes .../nurgul/assets/seller/images/profile-1.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-10.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-11.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-12.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-13.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-14.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-15.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-16.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-17.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-18.jpg | Bin 0 -> 1851 bytes .../assets/seller/images/profile-19.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-2.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-3.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-4.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-5.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-6.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-7.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-8.jpg | Bin 0 -> 1851 bytes .../nurgul/assets/seller/images/profile-9.jpg | Bin 0 -> 1851 bytes .../seller/images/woman-illustration.svg | 32 + themes/nurgul/assets/seller/js/app.js | 201489 +++++++++++++++ .../assets/seller/js/app.js.LICENSE.txt | 57 + .../seller/js/ckeditor-balloon-block.js | 107 + .../js/ckeditor-balloon-block.js.LICENSE.txt | 4 + .../assets/seller/js/ckeditor-balloon.js | 107 + .../seller/js/ckeditor-balloon.js.LICENSE.txt | 4 + .../assets/seller/js/ckeditor-classic.js | 107 + .../seller/js/ckeditor-classic.js.LICENSE.txt | 4 + .../assets/seller/js/ckeditor-document.js | 109 + .../js/ckeditor-document.js.LICENSE.txt | 4 + .../assets/seller/js/ckeditor-inline.js | 107 + .../seller/js/ckeditor-inline.js.LICENSE.txt | 4 + themes/nurgul/assets/seller/login.svg | 1 + themes/nurgul/layouts/seller-master.htm | 83 + themes/nurgul/meta/menus/aside-menu.yaml | 84 + themes/nurgul/pages/seller-crud-product.htm | 20 + themes/nurgul/pages/seller/create/product.htm | 5 + themes/nurgul/pages/seller/home.htm | 81 + themes/nurgul/pages/seller/orders.htm | 5 + themes/nurgul/pages/seller/products.htm | 69 + themes/nurgul/partials/seller/loader.htm | 4 + themes/nurgul/partials/seller/login-page.htm | 70 + themes/nurgul/partials/seller/mobile-menu.htm | 167 + themes/nurgul/partials/seller/prod-card.htm | 23 + themes/nurgul/partials/seller/prod-create.htm | 44 + themes/nurgul/partials/seller/prod-update.htm | 154 + themes/nurgul/partials/seller/side-menu.htm | 48 + themes/nurgul/partials/seller/top-bar.htm | 283 + .../nurgul/partials/sellerApi/getProducts.htm | 38 + 248 files changed, 253696 insertions(+), 25 deletions(-) create mode 100644 plugins/rainlab/user/.gitignore create mode 100644 plugins/rainlab/user/LICENCE.md create mode 100644 plugins/rainlab/user/Plugin.php create mode 100644 plugins/rainlab/user/README.md create mode 100644 plugins/rainlab/user/UPGRADE.md create mode 100644 plugins/rainlab/user/assets/images/no-user-avatar.png create mode 100644 plugins/rainlab/user/assets/images/user-icon.svg create mode 100644 plugins/rainlab/user/assets/js/bulk-actions.js create mode 100644 plugins/rainlab/user/classes/AuthManager.php create mode 100644 plugins/rainlab/user/classes/AuthMiddleware.php create mode 100644 plugins/rainlab/user/classes/UserEventBase.php create mode 100644 plugins/rainlab/user/classes/UserRedirector.php create mode 100644 plugins/rainlab/user/classes/authmanager/HasBearerToken.php create mode 100644 plugins/rainlab/user/components/Account.php create mode 100644 plugins/rainlab/user/components/ResetPassword.php create mode 100644 plugins/rainlab/user/components/Session.php create mode 100644 plugins/rainlab/user/components/account/activation_check.htm create mode 100644 plugins/rainlab/user/components/account/deactivate_link.htm create mode 100644 plugins/rainlab/user/components/account/default.htm create mode 100644 plugins/rainlab/user/components/account/register.htm create mode 100644 plugins/rainlab/user/components/account/signin.htm create mode 100644 plugins/rainlab/user/components/account/update.htm create mode 100644 plugins/rainlab/user/components/resetpassword/complete.htm create mode 100644 plugins/rainlab/user/components/resetpassword/default.htm create mode 100644 plugins/rainlab/user/components/resetpassword/reset.htm create mode 100644 plugins/rainlab/user/components/resetpassword/restore.htm create mode 100644 plugins/rainlab/user/composer.json create mode 100644 plugins/rainlab/user/config/config.php create mode 100644 plugins/rainlab/user/controllers/UserGroups.php create mode 100644 plugins/rainlab/user/controllers/Users.php create mode 100644 plugins/rainlab/user/controllers/usergroups/_list_toolbar.htm create mode 100644 plugins/rainlab/user/controllers/usergroups/config_form.yaml create mode 100644 plugins/rainlab/user/controllers/usergroups/config_list.yaml create mode 100644 plugins/rainlab/user/controllers/usergroups/create.htm create mode 100644 plugins/rainlab/user/controllers/usergroups/index.htm create mode 100644 plugins/rainlab/user/controllers/usergroups/preview.htm create mode 100644 plugins/rainlab/user/controllers/usergroups/update.htm create mode 100644 plugins/rainlab/user/controllers/users/_convert_guest_form.htm create mode 100644 plugins/rainlab/user/controllers/users/_hint_activate.htm create mode 100644 plugins/rainlab/user/controllers/users/_hint_banned.htm create mode 100644 plugins/rainlab/user/controllers/users/_hint_guest.htm create mode 100644 plugins/rainlab/user/controllers/users/_hint_trashed.htm create mode 100644 plugins/rainlab/user/controllers/users/_list_toolbar.htm create mode 100644 plugins/rainlab/user/controllers/users/_preview_scoreboard.htm create mode 100644 plugins/rainlab/user/controllers/users/_preview_toolbar.htm create mode 100644 plugins/rainlab/user/controllers/users/config_form.yaml create mode 100644 plugins/rainlab/user/controllers/users/config_list.yaml create mode 100644 plugins/rainlab/user/controllers/users/create.htm create mode 100644 plugins/rainlab/user/controllers/users/index.htm create mode 100644 plugins/rainlab/user/controllers/users/preview.htm create mode 100644 plugins/rainlab/user/controllers/users/update.htm create mode 100644 plugins/rainlab/user/facades/Auth.php create mode 100644 plugins/rainlab/user/lang/ar/lang.php create mode 100644 plugins/rainlab/user/lang/cs/lang.php create mode 100644 plugins/rainlab/user/lang/de/lang.php create mode 100644 plugins/rainlab/user/lang/en/lang.php create mode 100644 plugins/rainlab/user/lang/es-ar/lang.php create mode 100644 plugins/rainlab/user/lang/es/lang.php create mode 100644 plugins/rainlab/user/lang/fa/lang.php create mode 100644 plugins/rainlab/user/lang/fr/lang.php create mode 100644 plugins/rainlab/user/lang/hu/lang.php create mode 100644 plugins/rainlab/user/lang/id/lang.php create mode 100644 plugins/rainlab/user/lang/it/lang.php create mode 100644 plugins/rainlab/user/lang/kr/lang.php create mode 100644 plugins/rainlab/user/lang/nl/lang.php create mode 100644 plugins/rainlab/user/lang/pl/lang.php create mode 100644 plugins/rainlab/user/lang/pt-br/lang.php create mode 100644 plugins/rainlab/user/lang/pt-pt/lang.php create mode 100644 plugins/rainlab/user/lang/ru/lang.php create mode 100644 plugins/rainlab/user/lang/si/lang.php create mode 100644 plugins/rainlab/user/lang/sk/lang.php create mode 100644 plugins/rainlab/user/lang/sl/lang.php create mode 100644 plugins/rainlab/user/lang/sv/lang.php create mode 100644 plugins/rainlab/user/lang/tr/lang.php create mode 100644 plugins/rainlab/user/lang/zh-cn/lang.php create mode 100644 plugins/rainlab/user/lang/zh-tw/lang.php create mode 100644 plugins/rainlab/user/models/MailBlocker.php create mode 100644 plugins/rainlab/user/models/Settings.php create mode 100644 plugins/rainlab/user/models/Throttle.php create mode 100644 plugins/rainlab/user/models/User.php create mode 100644 plugins/rainlab/user/models/UserGroup.php create mode 100644 plugins/rainlab/user/models/settings/fields.yaml create mode 100644 plugins/rainlab/user/models/user/columns.yaml create mode 100755 plugins/rainlab/user/models/user/fields.yaml create mode 100644 plugins/rainlab/user/models/user/scopes.yaml create mode 100644 plugins/rainlab/user/models/usergroup/columns.yaml create mode 100644 plugins/rainlab/user/models/usergroup/fields.yaml create mode 100644 plugins/rainlab/user/notifyrules/UserActivatedEvent.php create mode 100644 plugins/rainlab/user/notifyrules/UserAttributeCondition.php create mode 100644 plugins/rainlab/user/notifyrules/UserRegisteredEvent.php create mode 100644 plugins/rainlab/user/notifyrules/userattributecondition/attributes.yaml create mode 100644 plugins/rainlab/user/phpunit.xml create mode 100644 plugins/rainlab/user/tests/UserPluginTestCase.php create mode 100644 plugins/rainlab/user/tests/unit/facades/AuthFacadeTest.php create mode 100644 plugins/rainlab/user/updates/create_mail_blockers_table.php create mode 100644 plugins/rainlab/user/updates/create_throttle_table.php create mode 100644 plugins/rainlab/user/updates/create_user_groups_table.php create mode 100644 plugins/rainlab/user/updates/create_users_table.php create mode 100644 plugins/rainlab/user/updates/seed_user_groups_table.php create mode 100644 plugins/rainlab/user/updates/update_timestamp_nullable.php create mode 100644 plugins/rainlab/user/updates/users_add_deleted_at.php create mode 100644 plugins/rainlab/user/updates/users_add_guest_flag.php create mode 100644 plugins/rainlab/user/updates/users_add_ip_address.php create mode 100644 plugins/rainlab/user/updates/users_add_last_seen.php create mode 100644 plugins/rainlab/user/updates/users_add_login_column.php create mode 100644 plugins/rainlab/user/updates/users_add_seller_id.php create mode 100644 plugins/rainlab/user/updates/users_add_superuser_flag.php create mode 100644 plugins/rainlab/user/updates/users_add_surname.php create mode 100644 plugins/rainlab/user/updates/users_rename_login_to_username.php create mode 100644 plugins/rainlab/user/updates/version.yaml create mode 100644 plugins/rainlab/user/views/mail/activate.htm create mode 100644 plugins/rainlab/user/views/mail/invite.htm create mode 100644 plugins/rainlab/user/views/mail/new_user.htm create mode 100644 plugins/rainlab/user/views/mail/reactivate.htm create mode 100644 plugins/rainlab/user/views/mail/restore.htm create mode 100644 plugins/rainlab/user/views/mail/welcome.htm create mode 100644 plugins/romanah/bagisto/components/Seller.php create mode 100644 themes/nurgul/assets/jquery.session.js create mode 100644 themes/nurgul/assets/logo_white.svg create mode 100644 themes/nurgul/assets/profile.jpg create mode 100644 themes/nurgul/assets/seller/css/_app.css create mode 100644 themes/nurgul/assets/seller/css/app.css create mode 100644 themes/nurgul/assets/seller/fonts/roboto/LICENSE.txt create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-Black.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-BlackItalic.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-Bold.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-BoldItalic.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-Italic.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-Light.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-LightItalic.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-Medium.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-MediumItalic.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-Regular.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-Thin.ttf create mode 100644 themes/nurgul/assets/seller/fonts/roboto/Roboto-ThinItalic.ttf create mode 100644 themes/nurgul/assets/seller/images/Group 1.svg create mode 100644 themes/nurgul/assets/seller/images/Group 2.svg create mode 100644 themes/nurgul/assets/seller/images/bg-login-page-dark.svg create mode 100644 themes/nurgul/assets/seller/images/bg-login-page.svg create mode 100644 themes/nurgul/assets/seller/images/bg-main-dark.svg create mode 100644 themes/nurgul/assets/seller/images/bg-main.svg create mode 100644 themes/nurgul/assets/seller/images/error-illustration.svg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-1.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-10.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-11.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-12.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-13.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-14.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-15.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-16.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-17.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-18.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-19.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-2.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-3.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-4.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-5.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-6.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-7.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-8.jpg create mode 100644 themes/nurgul/assets/seller/images/food-beverage-9.jpg create mode 100644 themes/nurgul/assets/seller/images/illustration.svg create mode 100644 themes/nurgul/assets/seller/images/illustration2.svg create mode 100644 themes/nurgul/assets/seller/images/logo.svg create mode 100644 themes/nurgul/assets/seller/images/map-marker-dark.svg create mode 100644 themes/nurgul/assets/seller/images/map-marker-region-dark.svg create mode 100644 themes/nurgul/assets/seller/images/map-marker-region.png create mode 100644 themes/nurgul/assets/seller/images/map-marker-region.svg create mode 100644 themes/nurgul/assets/seller/images/map-marker.png create mode 100644 themes/nurgul/assets/seller/images/map-marker.svg create mode 100644 themes/nurgul/assets/seller/images/phone-illustration.svg create mode 100644 themes/nurgul/assets/seller/images/placeholders/200x200.jpg create mode 100644 themes/nurgul/assets/seller/images/placeholders/800x800.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-1.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-10.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-11.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-12.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-13.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-14.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-15.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-16.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-17.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-18.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-19.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-2.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-3.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-4.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-5.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-6.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-7.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-8.jpg create mode 100644 themes/nurgul/assets/seller/images/preview-9.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-1.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-10.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-11.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-12.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-13.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-14.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-15.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-16.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-17.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-18.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-19.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-2.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-3.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-4.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-5.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-6.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-7.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-8.jpg create mode 100644 themes/nurgul/assets/seller/images/profile-9.jpg create mode 100644 themes/nurgul/assets/seller/images/woman-illustration.svg create mode 100644 themes/nurgul/assets/seller/js/app.js create mode 100644 themes/nurgul/assets/seller/js/app.js.LICENSE.txt create mode 100644 themes/nurgul/assets/seller/js/ckeditor-balloon-block.js create mode 100644 themes/nurgul/assets/seller/js/ckeditor-balloon-block.js.LICENSE.txt create mode 100644 themes/nurgul/assets/seller/js/ckeditor-balloon.js create mode 100644 themes/nurgul/assets/seller/js/ckeditor-balloon.js.LICENSE.txt create mode 100644 themes/nurgul/assets/seller/js/ckeditor-classic.js create mode 100644 themes/nurgul/assets/seller/js/ckeditor-classic.js.LICENSE.txt create mode 100644 themes/nurgul/assets/seller/js/ckeditor-document.js create mode 100644 themes/nurgul/assets/seller/js/ckeditor-document.js.LICENSE.txt create mode 100644 themes/nurgul/assets/seller/js/ckeditor-inline.js create mode 100644 themes/nurgul/assets/seller/js/ckeditor-inline.js.LICENSE.txt create mode 100644 themes/nurgul/assets/seller/login.svg create mode 100755 themes/nurgul/layouts/seller-master.htm create mode 100755 themes/nurgul/meta/menus/aside-menu.yaml create mode 100755 themes/nurgul/pages/seller-crud-product.htm create mode 100755 themes/nurgul/pages/seller/create/product.htm create mode 100755 themes/nurgul/pages/seller/home.htm create mode 100755 themes/nurgul/pages/seller/orders.htm create mode 100755 themes/nurgul/pages/seller/products.htm create mode 100755 themes/nurgul/partials/seller/loader.htm create mode 100755 themes/nurgul/partials/seller/login-page.htm create mode 100755 themes/nurgul/partials/seller/mobile-menu.htm create mode 100755 themes/nurgul/partials/seller/prod-card.htm create mode 100755 themes/nurgul/partials/seller/prod-create.htm create mode 100755 themes/nurgul/partials/seller/prod-update.htm create mode 100755 themes/nurgul/partials/seller/side-menu.htm create mode 100755 themes/nurgul/partials/seller/top-bar.htm create mode 100755 themes/nurgul/partials/sellerApi/getProducts.htm diff --git a/composer.json b/composer.json index 7291b5f..afab7b2 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,8 @@ "rainlab/pages-plugin": "^1.5", "rainlab/builder-plugin": "^1.2.5", "blakejones/magicforms-plugin": "^1.6", - "rainlab/translate-plugin": "^1.0" + "rainlab/translate-plugin": "^1.0", + "rainlab/user-plugin": "^2.1" }, "require-dev": { "phpunit/phpunit": "^8.5|^9.0" diff --git a/plugins/rainlab/pages/Plugin.php b/plugins/rainlab/pages/Plugin.php index a10f8e5..fe6d5a9 100644 --- a/plugins/rainlab/pages/Plugin.php +++ b/plugins/rainlab/pages/Plugin.php @@ -191,6 +191,11 @@ class Plugin extends PluginBase }); Event::listen('cms.template.getTemplateToolbarSettingsButtons', function($extension, $dataHolder) { + // Running v3.4 with native snippets + if (class_exists('System') && version_compare(\System::VERSION, '3.4', '>=')) { + return; + } + if ($dataHolder->templateType === 'partial') { Snippet::extendEditorPartialToolbar($dataHolder); } @@ -201,10 +206,20 @@ class Plugin extends PluginBase }); Event::listen('cms.template.processSettingsBeforeSave', function($controller, $dataHolder) { + // Running v3.4 with native snippets + if (class_exists('System') && version_compare(\System::VERSION, '3.4', '>=')) { + return; + } + $dataHolder->settings = Snippet::processTemplateSettingsArray($dataHolder->settings); }); Event::listen('cms.template.processSettingsAfterLoad', function($controller, $template, $context = null) { + // Running v3.4 with native snippets + if (class_exists('System') && version_compare(\System::VERSION, '3.4', '>=')) { + return; + } + Snippet::processTemplateSettings($template, $context); }); diff --git a/plugins/rainlab/pages/assets/js/pages-snippets.js b/plugins/rainlab/pages/assets/js/pages-snippets.js index 16fd3be..1d66d4e 100644 --- a/plugins/rainlab/pages/assets/js/pages-snippets.js +++ b/plugins/rainlab/pages/assets/js/pages-snippets.js @@ -24,22 +24,29 @@ } }) - $(document).on('syncContent.oc.richeditor', '.field-richeditor textarea', function(ev, richeditor, container) { - self.syncPageMarkup(ev, container) - }) + if (!this.isForwardCompatibilityMode()) { + $(document).on('syncContent.oc.richeditor', '.field-richeditor textarea', function(ev, richeditor, container) { + self.syncPageMarkup(ev, container) + }) - $(document).on('figureKeydown.oc.richeditor', '.field-richeditor textarea', function(ev, originalEv, richeditor) { - self.editorKeyDown(ev, originalEv, richeditor) - }) + $(document).on('figureKeydown.oc.richeditor', '.field-richeditor textarea', function(ev, originalEv, richeditor) { + self.editorKeyDown(ev, originalEv, richeditor) + }) - $(document).on('click', '[data-snippet]', function() { - if ($(this).hasClass('inspector-open')) { - return - } + $(document).on('click', '[data-snippet]', function() { + if ($(this).hasClass('inspector-open')) { + return + } - $.oc.inspector.manager.createInspector(this) - return false - }) + $.oc.inspector.manager.createInspector(this) + return false + }) + } + } + + // Detects October CMS v3.4 + SnippetManager.prototype.isForwardCompatibilityMode = function() { + return window.oc && window.oc.snippetLookup; } SnippetManager.prototype.onSidebarSnippetClick = function($sidebarItem) { @@ -85,6 +92,11 @@ $snippetNode.addClass('fr-draggable') + if (this.isForwardCompatibilityMode()) { + $snippetNode.attr('data-control', 'snippet'); + $snippetNode.removeAttr('data-inspector-css-class'); + } + $richeditorNode.richEditor('insertUiBlock', $snippetNode) } @@ -124,6 +136,13 @@ } SnippetManager.prototype.initSnippets = function($editor) { + if (this.isForwardCompatibilityMode()) { + $('.fr-view [data-snippet]', $editor).each(function(){ + $(this).attr('data-control', 'snippet'); + }); + return; + } + var snippetCodes = [] $('.fr-view [data-snippet]', $editor).each(function(){ diff --git a/plugins/rainlab/pages/classes/MenuItem.php b/plugins/rainlab/pages/classes/MenuItem.php index 4b3e2b3..1a90710 100644 --- a/plugins/rainlab/pages/classes/MenuItem.php +++ b/plugins/rainlab/pages/classes/MenuItem.php @@ -34,6 +34,11 @@ class MenuItem */ public $nesting; + /** + * @var array|bool sites includes a lookup for other sites. + */ + public $sites = false; + /** * @var string Specifies the menu item type - URL, static page, etc. */ diff --git a/plugins/rainlab/pages/classes/Page.php b/plugins/rainlab/pages/classes/Page.php index 7c24332..c0b7305 100644 --- a/plugins/rainlab/pages/classes/Page.php +++ b/plugins/rainlab/pages/classes/Page.php @@ -617,14 +617,19 @@ class Page extends ContentBase return $this->processedMarkupCache; } + $markup = $this->markup; + /* * Process snippets + * In v3.4 this is handled by the core parser (below) */ - $markup = Snippet::processPageMarkup( - $this->getFileName(), - $this->theme, - $this->markup - ); + if (!class_exists('System') || !version_compare(\System::VERSION, '3.4', '>=')) { + $markup = Snippet::processPageMarkup( + $this->getFileName(), + $this->theme, + $markup + ); + } /* * Inject global view variables @@ -636,10 +641,14 @@ class Page extends ContentBase /* * Process content using core parser + * PageLookup class was deprecated to PageManager in v3.4 -sg */ if (class_exists(\Cms\Classes\PageLookup::class)) { $markup = \Cms\Classes\PageLookup::processMarkup($markup); } + elseif (class_exists(\Cms\Classes\PageManager::class)) { + $markup = \Cms\Classes\PageManager::processMarkup($markup); + } /* * Event hook @@ -655,14 +664,19 @@ class Page extends ContentBase return $this->processedBlockMarkupCache[$placeholderName]; } + $markup = $placeholderContents; + /* * Process snippets + * In v3.4 this is handled by the core parser (below) */ - $markup = Snippet::processPageMarkup( - $this->getFileName().md5($placeholderName), - $this->theme, - $placeholderContents - ); + if (!class_exists('System') || !version_compare(\System::VERSION, '3.4', '>=')) { + $markup = Snippet::processPageMarkup( + $this->getFileName().md5($placeholderName), + $this->theme, + $markup + ); + } /* * Inject global view variables @@ -672,6 +686,17 @@ class Page extends ContentBase $markup = TextParser::parse($markup, $globalVars); } + /* + * Process content using core parser + * PageLookup class was deprecated to PageManager in v3.4 -sg + */ + if (class_exists(\Cms\Classes\PageLookup::class)) { + $markup = \Cms\Classes\PageLookup::processMarkup($markup); + } + elseif (class_exists(\Cms\Classes\PageManager::class)) { + $markup = \Cms\Classes\PageManager::processMarkup($markup); + } + /* * Event hook */ diff --git a/plugins/rainlab/pages/updates/version.yaml b/plugins/rainlab/pages/updates/version.yaml index 389493b..8018d3a 100644 --- a/plugins/rainlab/pages/updates/version.yaml +++ b/plugins/rainlab/pages/updates/version.yaml @@ -73,3 +73,5 @@ v1.5.6: Fixes concurrency save form in October v3 v1.5.7: Adds page finder support for October v3.2 v1.5.8: Fixes resolving links used in static pages v1.5.9: Fixes fancy layout with nested forms +v1.5.10: Adds forward compatibility with October CMS v3.4 +v1.5.12: Fixes more areas of forward compatibility diff --git a/plugins/rainlab/user/.gitignore b/plugins/rainlab/user/.gitignore new file mode 100644 index 0000000..77bed77 --- /dev/null +++ b/plugins/rainlab/user/.gitignore @@ -0,0 +1,3 @@ +.phpunit.result.cache +composer.lock +vendor diff --git a/plugins/rainlab/user/LICENCE.md b/plugins/rainlab/user/LICENCE.md new file mode 100644 index 0000000..b93dc79 --- /dev/null +++ b/plugins/rainlab/user/LICENCE.md @@ -0,0 +1,3 @@ +# License + +See End User License Agreement at https://octobercms.com/eula diff --git a/plugins/rainlab/user/Plugin.php b/plugins/rainlab/user/Plugin.php new file mode 100644 index 0000000..1c3561a --- /dev/null +++ b/plugins/rainlab/user/Plugin.php @@ -0,0 +1,214 @@ + 'rainlab.user::lang.plugin.name', + 'description' => 'rainlab.user::lang.plugin.description', + 'author' => 'Alexey Bobkov, Samuel Georges', + 'icon' => 'icon-user', + 'homepage' => 'https://github.com/rainlab/user-plugin' + ]; + } + + /** + * register + */ + public function register() + { + $alias = AliasLoader::getInstance(); + $alias->alias('Auth', \RainLab\User\Facades\Auth::class); + + App::singleton('user.auth', function () { + return \RainLab\User\Classes\AuthManager::instance(); + }); + + // Overrides with our own extended version of Redirector to support + // separate url.intended session variable for frontend + App::singleton('redirect', function ($app) { + $redirector = new UserRedirector($app['url']); + + // If the session is set on the application instance, we'll inject it into + // the redirector instance. This allows the redirect responses to allow + // for the quite convenient "with" methods that flash to the session. + if (isset($app['session.store'])) { + $redirector->setSession($app['session.store']); + } + + return $redirector; + }); + + // Apply user-based mail blocking + Event::listen('mailer.prepareSend', function ($mailer, $view, $message) { + return MailBlocker::filterMessage($view, $message); + }); + + // Compatibility with RainLab.Notify + $this->bindNotificationEvents(); + } + + /** + * registerComponents + */ + public function registerComponents() + { + return [ + \RainLab\User\Components\Session::class => 'session', + \RainLab\User\Components\Account::class => 'account', + \RainLab\User\Components\ResetPassword::class => 'resetPassword' + ]; + } + + /** + * registerPermissions + */ + public function registerPermissions() + { + return [ + 'rainlab.users.access_users' => [ + 'tab' => 'rainlab.user::lang.plugin.tab', + 'label' => 'rainlab.user::lang.plugin.access_users' + ], + 'rainlab.users.access_groups' => [ + 'tab' => 'rainlab.user::lang.plugin.tab', + 'label' => 'rainlab.user::lang.plugin.access_groups' + ], + 'rainlab.users.access_settings' => [ + 'tab' => 'rainlab.user::lang.plugin.tab', + 'label' => 'rainlab.user::lang.plugin.access_settings' + ], + 'rainlab.users.impersonate_user' => [ + 'tab' => 'rainlab.user::lang.plugin.tab', + 'label' => 'rainlab.user::lang.plugin.impersonate_user' + ], + ]; + } + + /** + * registerNavigation + */ + public function registerNavigation() + { + return [ + 'user' => [ + 'label' => 'rainlab.user::lang.users.menu_label', + 'url' => Backend::url('rainlab/user/users'), + 'icon' => 'icon-user', + 'iconSvg' => 'plugins/rainlab/user/assets/images/user-icon.svg', + 'permissions' => ['rainlab.users.*'], + 'order' => 500, + + 'sideMenu' => [ + 'users' => [ + 'label' => 'rainlab.user::lang.users.menu_label', + 'icon' => 'icon-user', + 'url' => Backend::url('rainlab/user/users'), + 'permissions' => ['rainlab.users.access_users'] + ], + 'usergroups' => [ + 'label' => 'rainlab.user::lang.groups.menu_label', + 'icon' => 'icon-users', + 'url' => Backend::url('rainlab/user/usergroups'), + 'permissions' => ['rainlab.users.access_groups'] + ] + ] + ] + ]; + } + + /** + * registerSettings + */ + public function registerSettings() + { + return [ + 'settings' => [ + 'label' => 'rainlab.user::lang.settings.menu_label', + 'description' => 'rainlab.user::lang.settings.menu_description', + 'category' => SettingsManager::CATEGORY_USERS, + 'icon' => class_exists('System') ? 'octo-icon-user-actions-key' : 'icon-cog', + 'class' => 'RainLab\User\Models\Settings', + 'order' => 500, + 'permissions' => ['rainlab.users.access_settings'] + ] + ]; + } + + /** + * registerMailTemplates + */ + public function registerMailTemplates() + { + return [ + 'rainlab.user::mail.activate', + 'rainlab.user::mail.welcome', + 'rainlab.user::mail.restore', + 'rainlab.user::mail.new_user', + 'rainlab.user::mail.reactivate', + 'rainlab.user::mail.invite', + ]; + } + + /** + * registerNotificationRules + */ + public function registerNotificationRules() + { + return [ + 'groups' => [ + 'user' => [ + 'label' => 'User', + 'icon' => 'icon-user' + ], + ], + 'events' => [ + \RainLab\User\NotifyRules\UserActivatedEvent::class, + \RainLab\User\NotifyRules\UserRegisteredEvent::class, + ], + 'actions' => [], + 'conditions' => [ + \RainLab\User\NotifyRules\UserAttributeCondition::class + ], + ]; + } + + /** + * bindNotificationEvents + */ + protected function bindNotificationEvents() + { + if (!class_exists(Notifier::class)) { + return; + } + + Notifier::bindEvents([ + 'rainlab.user.activate' => \RainLab\User\NotifyRules\UserActivatedEvent::class, + 'rainlab.user.register' => \RainLab\User\NotifyRules\UserRegisteredEvent::class + ]); + + Notifier::instance()->registerCallback(function ($manager) { + $manager->registerGlobalParams([ + 'user' => Auth::getUser() + ]); + }); + } +} diff --git a/plugins/rainlab/user/README.md b/plugins/rainlab/user/README.md new file mode 100644 index 0000000..9ee920d --- /dev/null +++ b/plugins/rainlab/user/README.md @@ -0,0 +1,511 @@ +# Front-end user plugin + +Front-end user management for October CMS. + +## Requirements + +- October CMS 3.0 or above +- The [AJAX Framework](https://octobercms.com/docs/cms/ajax) to be included in your layout/page + +## Installation Instructions + +Run the following to install this plugin: + +```bash +php artisan plugin:install RainLab.User +``` + +To uninstall this plugin: + +```bash +php artisan plugin:remove RainLab.User +``` + +If you are using October CMS v1 or v2, install v1.7 with the following commands: + +```bash +composer require rainlab/user-plugin "^1.7" +``` + +## Managing Users + +Users are managed on the Users tab found in the back-end. Each user provides minimal data fields - **Name**, **Surname**, **Email** and **Password**. The Name can represent either the person's first name or their full name, making the Surname field optional, depending on the complexity of your site. + +Below the **Email** field is an checkbox to block all outgoing mail sent to the user. This is a useful feature for accounts with an email address that is bouncing mail or has reported spam. When checked, no mail will ever be sent to this address, except for the mail template used for resetting the password. + +## Plugin Settings + +This plugin creates a Settings menu item, found by navigating to **Settings > Users > User settings**. This page allows the setting of common features, described in more detail below. + +#### Registration + +Registration to the site is allowed by default. If you are running a closed site, or need to temporarily disable registration, you may disable this feature by switching **Allow user registration** to the OFF setting. + +#### Activation + +Activation is a process of vetting a user who joins the site. By default, users are activated automatically when they register and an activated account is required to sign in. + +The **Activation mode** specifies the activation workflow: + +- **Automatic**: This mode will automatically activate a user when they first register. This is the same as disabling activation entirely and is the default setting. +- **User**: The user can activate their account by responding to a confirmation message sent to their nominated email address. +- **Administrator**: The user can only be activated by an administrator via the back-end area. + +You can allow users to sign in without activating by switching **Sign in requires activation** to the OFF setting. This is useful for minimising friction when registering, however with this approach it is often a good idea to disable any "identity sensitive" features until the user has been activated, such as posting content. Alternatively, you could implement a grace period that deletes users (with sufficient warning!) who have not activated within a given period of time. + +Users have the ability to resend the activation email by clicking **Send the verification email again** found in the Account component. + +#### Sign In + +By default a User will sign in to the site using their email address as a unique identifier. You may use a unique login name instead by changing the **Login attribute** value to Username. This will introduce a new field called **Username** for each user, allowing them to specify their own short name or alias for identification. Both the Email address and Username must be unique to the user. + +If a user experiences too many failed sign in attempts, their account will be temporarily suspended for a period of time. This feature is enabled by default and will suspend an account for 15 minutes after 5 failed sign in attempts, for a given IP address. You may disable this feature by switching **Throttle attempts** to the OFF setting. + +As a security precaution, you may restrict users from having sessions across multiple devices at the same time. Enable the **Prevent concurrent sessions** setting to use this feature. When a user signs in to their account, it will automatically sign out the user for all other sessions. + +#### Notifications + +This feature is implemented by the Notify plugin. How to use this feature: + +- Install the **RainLab.Notify** plugin +- Navigate to **Settings > Notification** rules +- Click **New notification rule** +- Select **User > Activated** +- Click **Add action** +- Select **Compose a mail message** +- Select **User email address** for the **Send to** field +- Here you may select the Mail template previously defined in the user settings. +- Click **Save** + +## Extended Features + +For extra functionality, consider also installing the [User Plus+ plugin](http://octobercms.com/plugin/rainlab-userplus) (`RainLab.UserPlus`). + +## Session Component + +The session component should be added to a layout that has registered users. It has no default markup. + +### User Variable + +You can check the logged in user by accessing the **{{ user }}** Twig variable: + +```twig +{% if user %} +

Hello {{ user.name }}

+{% else %} +

Nobody is logged in

+{% endif %} +``` + +### Signing Out + +The Session component allows a user to sign out of their session. + +```html +Sign out +``` + +### Page Restriction + +The Session component allows the restriction of a page or layout by allowing only signed in users, only guests or no restriction. This example shows how to restrict a page to users only: + +```ini +title = "Restricted page" +url = "/users-only" + +[session] +security = "user" +redirect = "home" +``` + +The `security` property can be user, guest or all. The `redirect` property refers to a page name to redirect to when access is restricted. + +### Route Restriction + +Access to routes can be restricted by applying the `AuthMiddleware`. + +```php +Route::group(['middleware' => \RainLab\User\Classes\AuthMiddleware::class], function () { + // All routes here will require authentication +}); +``` + +### Token Variable + +The `token` Twig variable can be used for generating a new bearer token for the signed in user. + +```twig +{% do response( + ajaxHandler('onSignin').withVars({ + token: session.token() + }) +) %} +``` + +The `checkToken` property of the component is used to verify a supplied token in the request headers `(Authorization: Bearer )`. + +```ini +[session] +checkToken = 1 +``` + +## Account Component + +The account component provides a user sign in form, registration form, activation form and update form. To display the form: + +```ini +title = "Account" +url = "/account/:code?" + +[account] +redirect = "home" +paramCode = "code" +== +{% component 'account' %} +``` + +If the user is logged out, this will display a sign in and registration form. Otherwise, it will display an update form. The `redirect` property is the page name to redirect to after the submit process is complete. The `paramCode` is the URL routing code used for activating the user, only used if the feature is enabled. + +## Reset Password Component + +The reset password component allows a user to reset their password if they have forgotten it. + +```ini +title = "Forgotten your password?" +url = "/forgot-password/:code?" + +[resetPassword] +paramCode = "code" +== +{% component 'resetPassword' %} +``` + +This will display the initial restoration request form and also the password reset form used after the verification email has been received by the user. The `paramCode` is the URL routing code used for resetting the password. + +## Using a Login Name + +By default the User plugin will use the email address as the login name. To switch to using a user defined login name, navigate to the backend under System > Users > User Settings and change the Login attribute under the Sign in tab to be **Username**. Then simply ask for a username upon registration by adding the username field: + +```twig +
+ + + + + + + + + + + + + +
+``` + +We can add any other additional fields here too, such as `phone`, `company`, etc. + +## Password Length Requirements + +By default, the User plugin requires a minimum password length of 8 characters for all users when registering or changing their password. You can change this length requirement by going to backend and navigating to System > Users > User Settings. Inside the Registration tab, a **Minimum password length** field is provided, allowing you to increase or decrease this limit to your preferred length. + +## Error Handling + +### Flash Messages + +This plugin makes use of October's [`Flash API`](http://octobercms.com/docs/markup/tag-flash). In order to display the error messages, you need to place the following snippet in your layout or page. + +```twig +{% flash %} +
{{ message }}
+{% endflash %} +``` + +### AJAX Errors + +The User plugin displays AJAX error messages in a simple ``alert()``-box by default. However, this might scare non-technical users. You can change the default behavior of an AJAX error from displaying an ``alert()`` message, like this: + +```js + +``` + +### Checking Email/Username Availability + +Here is a simple example of how you can quickly check if an email address / username is available in your registration forms. First, inside the page code, define the following AJAX handler to check the login name, here we are using the email address: + +```php +public function onCheckEmail() +{ + return ['isTaken' => Auth::findUserByLogin(post('email')) ? 1 : 0]; +} +``` + +For the email input we use the `data-request` and `data-track-input` attributes to call the `onCheckEmail` handler any time the field is updated. The `data-request-success` attribute will call some jQuery code to toggle the alert box. + +```html +
+ + +
+ + +``` + +## Overriding Functionality + +Here is how you would override the `onSignin()` handler to log any error messages. Inside the page code, define this method: + +```php +function onSignin() +{ + try { + return $this->account->onSignin(); + } + catch (Exception $ex) { + Log::error($ex); + } +} +``` + +Here the local handler method will take priority over the **account** component's event handler. Then we simply inherit the logic by calling the parent handler manually, via the component object (`$this->account`). + +## Auth Facade + +There is an `Auth` facade you may use for common tasks, it primarily inherits the `October\Rain\Auth\Manager` class for functionality. + +You may use `Auth::register` to register an account: + +```php +$user = Auth::register([ + 'name' => 'Some User', + 'email' => 'some@website.tld', + 'password' => 'changeme', + 'password_confirmation' => 'changeme', +]); +``` + +The second argument can specify if the account should be automatically activated: + +```php +// Auto activate this user +$user = Auth::register([...], true); +``` + +The `Auth::check` method is a quick way to check if the user is signed in. + +```php +// Returns true if signed in. +$loggedIn = Auth::check(); +``` + +To return the user model that is signed in, use `Auth::getUser` instead. + +```php +// Returns the signed in user +$user = Auth::getUser(); +``` + +You may authenticate a user by providing their login and password with `Auth::authenticate`. + +```php +// Authenticate user by credentials +$user = Auth::authenticate([ + 'login' => post('login'), + 'password' => post('password') +]); +``` + +The second argument is used to store a non-expire cookie for the user. + +```php +$user = Auth::authenticate([...], true); +``` + +You can also authenticate as a user simply by passing the user model along with `Auth::login`. + +```php +// Sign in as a specific user +Auth::login($user); +``` + +The second argument is the same. + +```php +// Sign in and remember the user +Auth::login($user, true); +``` + +You may look up a user by their login name using the `Auth::findUserByLogin` method. + +```php +$user = Auth::findUserByLogin('some@email.tld'); +``` + +When working with authentication via bearer tokens, the `Auth::getBearerToken` method can be used to obtain a bearer token (JWT) for the current user. It expires after 1 hour by default. + +```php +$token = Auth::getBearerToken(); +``` + +The `Auth::checkBearerToken` method is used to verify a supplied token and authenticate the user. The method returns `true` if the verification was successful. + +```php +if ($jwtToken = Request::bearerToken()) { + Auth::checkBearerToken($jwtToken); +} +``` + +## Guest Users + +Creating a guest user allows the registration process to be deferred. For example, making a purchase without needing to register first. Guest users are not able to sign in and will be added to the user group with the code `guest`. + +Use the `Auth::registerGuest` method to create a guest user, it will return a user object and can be called multiple times. The unique identifier is the email address, which is a required field. + +```php +$user = Auth::registerGuest(['email' => 'person@acme.tld']); +``` + +When a user registers with the same email address using the `Auth::register` method, they will inherit the existing guest user account. + +```php +// This will not throw an "Email already taken" error +$user = Auth::register([ + 'email' => 'person@acme.tld', + 'password' => 'changeme', + 'password_confirmation' => 'changeme', +]); +``` + +> **Important**: If you are using guest accounts, it is important to disable sensitive functionality for user accounts that are not verified, since it may be possible for anyone to inherit a guest account. + +You may also convert a guest to a registered user with the `convertToRegistered` method. This will generate a random password and sends an invitation using the `rainlab.user::mail.invite` template. + +```php +$user->convertToRegistered(); +``` + +To disable the notification and password reset, pass the first argument as false. + +```php +$user->convertToRegistered(false); +``` + +## Working with APIs + +When [building API endpoints using CMS pages](https://docs.octobercms.com/3.x/cms/resources/building-apis.html) it can be useful to use a page for handling the authentication logic. The following is a simple example that includes various API endpoints. + +```twig +title = "User API Page" +url = "/api/user/:action" + +[resetPassword] +[account] +[session] +checkToken = 1 +== +{% if this.param.action == 'signin' %} + {% do response( + ajaxHandler('onSignin').withVars({ + token: session.token() + }) + ) %} +{% endif %} + +{% if this.param.action == 'register' %} + {% do response(ajaxHandler('onRegister')) %} +{% endif %} + +{% if this.param.action == 'logout' %} + {% do response(ajaxHandler('onLogout')) %} +{% endif %} + +{% if this.param.action == 'refresh' %} + {% do response({ data: { + token: session.token() + }}) %} +{% endif %} +``` + +An API layout to verify the user can be used for other API endpoints. + +```twig +description = "Auth API Layout" +is_priority = 1 + +[session] +checkToken = 1 +== +{% if session.user %} + {% page %} +{% else %} + {% do abort(403, 'Access Denied') %} +{% endif %} +``` + +## Events + +This plugin will fire some global events that can be useful for interacting with other plugins. + +- **rainlab.user.beforeRegister**: Before the user's registration is processed. Passed the `$data` variable by reference to enable direct modifications to the `$data` provided to the `Auth::register()` method. +- **rainlab.user.register**: The user has successfully registered. Passed the `$user` object and the submitted `$data` variable. +- **rainlab.user.beforeAuthenticate**: Before the user is attempting to authenticate using the Account component. +- **rainlab.user.login**: The user has successfully signed in. +- **rainlab.user.logout**: The user has successfully signed out. +- **rainlab.user.deactivate**: The user has opted-out of the site by deactivating their account. This should be used to disable any content the user may want removed. +- **rainlab.user.reactivate**: The user has reactivated their own account by signing back in. This should revive the users content on the site. +- **rainlab.user.getNotificationVars**: Fires when sending a user notification to enable passing more variables to the email templates. Passes the `$user` model the template will be for. +- **rainlab.user.view.extendListToolbar**: Fires when the user listing page's toolbar is rendered. +- **rainlab.user.view.extendPreviewToolbar**: Fires when the user preview page's toolbar is rendered. + +Here is an example of hooking an event: + +```php +Event::listen('rainlab.user.deactivate', function($user) { + // Hide all posts by the user +}); +``` + +A common requirement is to adapt another to a legacy authentication system. In the example below, the `WordPressLogin::check` method would check the user password using an alternative hashing method, and if successful, update to the new one used by October. + +```php +Event::listen('rainlab.user.beforeAuthenticate', function($component, $credentials) { + $login = array_get($credentials, 'login'); + $password = array_get($credentials, 'password'); + + // No such user exists + if (!$user = Auth::findUserByLogin($login)) { + return; + } + + // The user is logging in with their old WordPress account + // for the first time. Rehash their password using the new + // October system. + if (WordPressLogin::check($user->password, $password)) { + $user->password = $user->password_confirmation = $password; + $user->forceSave(); + } +}); +``` + +### License + +This plugin is an official extension of the October CMS platform and is free to use if you have a platform license. See [EULA license](LICENSE.md) for more details. diff --git a/plugins/rainlab/user/UPGRADE.md b/plugins/rainlab/user/UPGRADE.md new file mode 100644 index 0000000..16b14b1 --- /dev/null +++ b/plugins/rainlab/user/UPGRADE.md @@ -0,0 +1,31 @@ +# Upgrade guide + +- [Upgrading to 1.1 from 1.0](#upgrade-1.1) +- [Upgrading to 1.4 from 1.3](#upgrade-1.4) + + +## Upgrading To 1.1 + +The User plugin has been split apart in to smaller more manageable plugins. These fields are no longer provided by the User plugin: `company`, `phone`, `street_addr`, `city`, `zip`, `country`, `state`. This is a non-destructive upgrade so the columns will remain in the database untouched. + +Country and State models have been removed and can be replaced by installing the plugin **RainLab.Location**. The remaining profiles fields can be replaced by installing the plugin **RainLab.UserPlus**. + +In short, to retain the old functionality simply install the following plugins: + +- RainLab.Location +- RainLab.UserPlus + + +## Upgrading To 1.4 + +The Notifications tab in User settings has been removed. This feature has been replaced by the [Notify plugin](https://octobercms.com/plugin/rainlab-notify). How to replace this feature: + +1. Install the `RainLab.Notify` plugin +1. Navigate to Settings > Notification rules +1. Click **New notification** rule +1. Select User > **Activated** +1. Click **Add action** +1. Select **Compose a mail message** +1. Select **User email address** for the **Send to field** +1. Here you may select the **Mail template** previously defined in the user settings. +1. Click **Save** diff --git a/plugins/rainlab/user/assets/images/no-user-avatar.png b/plugins/rainlab/user/assets/images/no-user-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..4804596a46cf73d9c4da7b606371ab3762f9fbcb GIT binary patch literal 1725 zcmaJ?Yfuwc7+qe1j`*M;V5MD`;D{;7=0zY72qZ*70+>LFqLh#<5+T{JStOv2fua*T z-~cMMRvuO?vC%!GI;`mgR#g?rJ4(k)iy$)Qo)5H zSt3}Z;Un?NO=%b+Nec;=rzOZe6_BqF=&j=r0xATTfjU*9TFcRKp&4BcF*Yt!A#etQ zCvc&+MM*_rARomLkVS#r?ABf0? zDdIR{fp9h#G2=qdkT$3)kYeAeTxM zLp2`jd&fMtM0m$IoHs2onYTTnCcKUjrf#i`@FMOCBT(QMuIqbz;+(c0wrxE&(CJLW z0yDBQ;^?Qd&z6<(`Tf39=EYORhZEO3J8sR{yheOFtAljp&q8(KYtqdNq?;8DDPvfB z%Y}*Dd&}z;Nj^pGl3vKv06=;x@NM9|$!KZ5vF~XK2b1>z-JOm+;S-x^(e>>^&sSKjHHjflZ#h3uz_VK1#4`8V z!n$PkDy={L*yrUXZLG(&{hlUwntJUgoc2bYu?g;3#p^I_vQ)UBvir%`O&=uu&d9e@ zCz|OV6kl%3ZI3itcZU zxh5=w_!VGx>Jc!psM3DI!u7B)GUJw$MZ+RYm!WSbm3plrSCS5dkH${yc%m1}Yp(#O z9#*#skp+Wi)@R-e`oh(=*%nX~6g3#mkt5>D3|+3{*1T0u4>ElZ+6wQ~|1(OT zGSBfJ**L|^Z>bSj*hqb!F&|brlgJS}M1|KXR@%FYESVNLkk8$1<5NDW+&>y=+~gCc zxvzPv5*BVx#`0~Dw$?&EcuNC|IHt$Zi2OO`~Hu(Gsz3d47t;rn7e?Df|ACcFR zv<%EWTGJ2_Y7ukbXo;jPsOeJo%GdmFB?DC+(Ll#GccAY0)2SBy-WMi=2J^zatZC=# zUA*mm4sFA5=HK{0Mc3pqvVU}jz0F`0r|3r(aCvBqg)y)6Ht!m7k~}=vIWoK&NVn@6 zm}FI3PuCZBKOJ?c?%l??QkAr|>cwEy$2owZxobLf__Oji&6+GrH9I2o2L~;QmHF~W zAJv8z8s_bSRTbEUyG_IZhK4#*#@(UB=9epc57&%j=S-7N;=DG~s9(OS-ZH6KHhA9k feJhuiH<~U5D$CGIKe2<<#ve*xK!~8yKPKZ}F_)ba literal 0 HcmV?d00001 diff --git a/plugins/rainlab/user/assets/images/user-icon.svg b/plugins/rainlab/user/assets/images/user-icon.svg new file mode 100644 index 0000000..ad7b94d --- /dev/null +++ b/plugins/rainlab/user/assets/images/user-icon.svg @@ -0,0 +1,13 @@ + + + + Group + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/plugins/rainlab/user/assets/js/bulk-actions.js b/plugins/rainlab/user/assets/js/bulk-actions.js new file mode 100644 index 0000000..69885f9 --- /dev/null +++ b/plugins/rainlab/user/assets/js/bulk-actions.js @@ -0,0 +1,100 @@ +/* + * Bulk actions plugin + * + * Data attributes: + * - data-control="bulk-actions" - enables the plugin on an element + * + * JavaScript API: + * $('div').bulkActions() + */ + ++function ($) { "use strict"; + + // BULK ACTIONS CLASS DEFINITION + // ============================ + + var BulkActions = function(element, options) { + this.options = options + this.$el = $(element) + + // Init + this.init() + } + + BulkActions.DEFAULTS = {} + + BulkActions.prototype.init = function() { + this.activeAction = null + this.$primaryBtn = $('[data-primary-button]', this.$el) + this.$toggleBtn = $('.dropdown-toggle', this.$el) + this.$dropdownMenu = $('.dropdown-menu', this.$el) + this.baseCss = this.$primaryBtn.attr('class') + + this.$primaryBtn.on('click', $.proxy(this.onClickPrimaryButton, this)) + this.$dropdownMenu.on('click', 'li > a', $.proxy(this.onClickMenuItem, this)) + + this.setActiveItem($('li > a:first', this.$dropdownMenu)) + } + + BulkActions.prototype.onClickPrimaryButton = function() { + if (!this.activeAction) { + throw new Error('Bulk action not found') + } + + this.$primaryBtn.data('request-data', { + checked: $('.control-list').listWidget('getChecked'), + action: this.activeAction + }) + } + + BulkActions.prototype.onClickMenuItem = function(ev) { + this.setActiveItem($(ev.target)) + this.$primaryBtn.click() + } + + BulkActions.prototype.setActiveItem = function($el) { + this.$toggleBtn.blur(); + this.activeAction = $el.data('action'); + this.$primaryBtn.text($el.text()); + this.$primaryBtn.attr('class', this.baseCss); + this.$primaryBtn.addClass($el.attr('class')).removeClass('dropdown-item'); + this.$primaryBtn.data('request-confirm', $el.data('confirm')); + } + + // BULK ACTIONS PLUGIN DEFINITION + // ============================ + + var old = $.fn.bulkActions + + $.fn.bulkActions = function (option) { + var args = Array.prototype.slice.call(arguments, 1), result + this.each(function () { + var $this = $(this) + var data = $this.data('oc.bulkactions') + var options = $.extend({}, BulkActions.DEFAULTS, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('oc.bulkactions', (data = new BulkActions(this, options))) + if (typeof option == 'string') result = data[option].apply(data, args) + if (typeof result != 'undefined') return false + }) + + return result ? result : this + } + + $.fn.bulkActions.Constructor = BulkActions + + // BULK ACTIONS NO CONFLICT + // ================= + + $.fn.bulkActions.noConflict = function () { + $.fn.bulkActions = old + return this + } + + // BULK ACTIONS DATA-API + // =============== + + $(document).render(function() { + $('[data-control="bulk-actions"]').bulkActions() + }); + +}(window.jQuery); \ No newline at end of file diff --git a/plugins/rainlab/user/classes/AuthManager.php b/plugins/rainlab/user/classes/AuthManager.php new file mode 100644 index 0000000..1dc977c --- /dev/null +++ b/plugins/rainlab/user/classes/AuthManager.php @@ -0,0 +1,184 @@ +useThrottle = UserSettings::get('use_throttle', $this->useThrottle); + + $this->requireActivation = UserSettings::get('require_activation', $this->requireActivation); + + parent::init(); + } + + /** + * {@inheritDoc} + */ + public function extendUserQuery($query) + { + $query->withTrashed(); + + // Extensibility + Event::fire('rainlab.user.extendUserAuthQuery', [$query]); + } + + /** + * {@inheritDoc} + */ + public function register(array $credentials, $activate = false, $autoLogin = true) + { + if ($guest = $this->findGuestUserByCredentials($credentials)) { + return $this->convertGuestToUser($guest, $credentials, $activate); + } + + return parent::register($credentials, $activate, $autoLogin); + } + + /** + * findUserByEmail finds a user by the email value, which includes + * deactivated (trashed) user records. + * @param string $email + * @return Authenticatable|null + */ + public function findUserByEmail($email) + { + if (!$email) { + return null; + } + + $query = $this->createUserModelQuery(); + + $user = $query->where('email', $email)->first(); + + return $this->validateUserModel($user) ? $user : null; + } + + // + // Guest users + // + + /** + * findGuestUserByCredentials + */ + public function findGuestUserByCredentials(array $credentials) + { + if ($email = array_get($credentials, 'email')) { + return $this->findGuestUser($email); + } + + return null; + } + + /** + * findGuestUser + */ + public function findGuestUser($email) + { + $query = $this->createUserModelQuery(); + + return $query + ->where('email', $email) + ->where('is_guest', 1) + ->first() + ; + } + + /** + * registerGuest a guest user by giving the required credentials. + * + * @param array $credentials + * @return Models\User + */ + public function registerGuest(array $credentials) + { + $user = $this->findGuestUserByCredentials($credentials); + $newUser = false; + + if (!$user) { + $user = $this->createUserModel(); + $newUser = true; + } + + $user->fill($credentials); + $user->is_guest = true; + $user->save(); + + // Add user to guest group + if ($newUser && $group = UserGroupModel::getGuestGroup()) { + $user->groups()->add($group); + } + + // Prevents revalidation of the password field + // on subsequent saves to this model object + $user->password = null; + + return $this->user = $user; + } + + /** + * convertGuestToUser converts a guest user to a registered user. + * + * @param Models\User $user + * @param array $credentials + * @param bool $activate + * @return Models\User + */ + public function convertGuestToUser($user, $credentials, $activate = false) + { + $user->fill($credentials); + $user->convertToRegistered(false); + + // Remove user from guest group + if ($group = UserGroupModel::getGuestGroup()) { + $user->groups()->remove($group); + } + + if ($activate) { + $user->attemptActivation($user->getActivationCode()); + } + + // Prevents revalidation of the password field + // on subsequent saves to this model object + $user->password = null; + + return $this->user = $user; + } +} diff --git a/plugins/rainlab/user/classes/AuthMiddleware.php b/plugins/rainlab/user/classes/AuthMiddleware.php new file mode 100644 index 0000000..73dbc9a --- /dev/null +++ b/plugins/rainlab/user/classes/AuthMiddleware.php @@ -0,0 +1,17 @@ + [ + 'title' => 'Name', + 'label' => 'Name of the user', + ], + 'email' => [ + 'title' => 'Email', + 'label' => "User's email address", + ], + ]; + } + + public static function makeParamsFromEvent(array $args, $eventName = null) + { + $user = array_get($args, 0); + + $params = $user->getNotificationVars(); + $params['user'] = $user; + + return $params; + } +} diff --git a/plugins/rainlab/user/classes/UserRedirector.php b/plugins/rainlab/user/classes/UserRedirector.php new file mode 100644 index 0000000..47a799d --- /dev/null +++ b/plugins/rainlab/user/classes/UserRedirector.php @@ -0,0 +1,48 @@ +session->put($sessionKey, $this->generator->full()); + + return $this->to($path, $status, $headers, $secure); + } + + /** + * intended creates a new redirect response to the previously intended location. + * @param string $default + * @param int $status + * @param array $headers + * @param bool $secure + * @return \Illuminate\Http\RedirectResponse + */ + public function intended($default = '/', $status = 302, $headers = [], $secure = null) + { + $sessionKey = App::runningInBackend() + ? 'url.intended' + : 'url.cms.intended'; + + $path = $this->session->pull($sessionKey, $default); + + return $this->to($path, $status, $headers, $secure); + } +} diff --git a/plugins/rainlab/user/classes/authmanager/HasBearerToken.php b/plugins/rainlab/user/classes/authmanager/HasBearerToken.php new file mode 100644 index 0000000..138f761 --- /dev/null +++ b/plugins/rainlab/user/classes/authmanager/HasBearerToken.php @@ -0,0 +1,133 @@ +getUser(); + if (!$user) { + return null; + } + + // Secret key + $secretKey = Crypt::getKey(); + if (!$secretKey) { + throw new \Illuminate\Encryption\MissingAppKeyException; + } + + // Prepare metadata + $tokenId = base64_encode(Str::random(16)); + $issuedAt = Carbon::now(); + $expireAt = Carbon::now()->addMinutes(60); + $serverName = Request::getHost(); + + // Prepare payload + $persistCode = $user->persist_code ?: $user->getPersistCode(); + $data = [ + 'login' => $user->getLogin(), + 'hash' => Hash::make($persistCode) + ]; + + // Create the token as an array + $data = [ + 'iat' => $issuedAt->getTimestamp(), + 'jti' => $tokenId, + 'iss' => $serverName, + 'nbf' => $issuedAt->getTimestamp(), + 'exp' => $expireAt->getTimestamp(), + 'data' => $data + ]; + + // Encode the array to a JWT string. + return JWT::encode($data, $secretKey, 'HS512'); + } + + /** + * checkBearerToken + */ + public function checkBearerToken(string $jwtToken) + { + if (!class_exists(JWT::class)) { + throw new SystemException("Missing package. Please install 'firebase/php-jwt' via composer."); + } + + if (!strlen(trim($jwtToken))) { + return false; + } + + // Secret key + $secretKey = Crypt::getKey(); + if (!$secretKey) { + throw new \Illuminate\Encryption\MissingAppKeyException; + } + + // Decode token + try { + JWT::$leeway = 60; + $token = JWT::decode($jwtToken, new Key($secretKey, 'HS512')); + } + catch (Exception $ex) { + return false; + } + + // Validate claims + $now = Carbon::now(); + $serverName = Request::getHost(); + if ( + $token->iss !== $serverName || + $token->nbf > $now->getTimestamp() || + $token->exp < $now->getTimestamp() + ) { + return false; + } + + // Locate payload + $login = $token->data->login ?? null; + $hash = $token->data->hash ?? null; + if (!$login || !$hash) { + return false; + } + + // Locate user + $user = $this->findUserByLogin($login); + if (!$user || !$user->persist_code) { + return false; + } + + // Persist code check failed + if (!Hash::check($user->persist_code, $hash)) { + return false; + } + + // Pass + $this->user = $user; + + // Check and reset + if (!$this->check()) { + $this->user = null; + } + } +} diff --git a/plugins/rainlab/user/components/Account.php b/plugins/rainlab/user/components/Account.php new file mode 100644 index 0000000..bed195b --- /dev/null +++ b/plugins/rainlab/user/components/Account.php @@ -0,0 +1,661 @@ + /*Account*/'rainlab.user::lang.account.account', + 'description' => /*User management form.*/'rainlab.user::lang.account.account_desc' + ]; + } + + /** + * defineProperties + */ + public function defineProperties() + { + return [ + 'redirect' => [ + 'title' => /*Redirect to*/'rainlab.user::lang.account.redirect_to', + 'description' => /*Page name to redirect to after update, sign in or registration.*/'rainlab.user::lang.account.redirect_to_desc', + 'type' => 'dropdown', + 'default' => '' + ], + 'paramCode' => [ + 'title' => /*Activation Code Param*/'rainlab.user::lang.account.code_param', + 'description' => /*The page URL parameter used for the registration activation code*/ 'rainlab.user::lang.account.code_param_desc', + 'type' => 'string', + 'default' => 'code' + ], + 'activationPage' => [ + 'title' => /* Activation Page */'rainlab.user::lang.account.activation_page', + 'description' => /* Select a page to use for activating the user account */'rainlab.user::lang.account.activation_page_comment', + 'type' => 'dropdown', + 'default' => '' + ], + 'forceSecure' => [ + 'title' => /*Force secure protocol*/'rainlab.user::lang.account.force_secure', + 'description' => /*Always redirect the URL with the HTTPS schema.*/'rainlab.user::lang.account.force_secure_desc', + 'type' => 'checkbox', + 'default' => 0 + ], + 'requirePassword' => [ + 'title' => /*Confirm password on update*/'rainlab.user::lang.account.update_requires_password', + 'description' => /*Require the current password of the user when changing their profile.*/'rainlab.user::lang.account.update_requires_password_comment', + 'type' => 'checkbox', + 'default' => 0 + ], + ]; + } + + /** + * getRedirectOptions + */ + public function getRedirectOptions() + { + return [ + '' => '- refresh page -', + '0' => '- no redirect -' + ] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName'); + } + + /** + * getActivationPageOptions + */ + public function getActivationPageOptions() + { + return [ + '' => '- current page -', + ] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName'); + } + + /** + * Executed when this component is initialized + */ + public function prepareVars() + { + $this->page['user'] = $this->user(); + $this->page['canRegister'] = $this->canRegister(); + $this->page['loginAttribute'] = $this->loginAttribute(); + $this->page['loginAttributeLabel'] = $this->loginAttributeLabel(); + $this->page['updateRequiresPassword'] = $this->updateRequiresPassword(); + $this->page['rememberLoginMode'] = $this->rememberLoginMode(); + } + + /** + * Executed when this component is bound to a page or layout. + */ + public function onRun() + { + // Redirect to HTTPS checker + if ($redirect = $this->redirectForceSecure()) { + return $redirect; + } + + // Activation code supplied + if ($code = $this->activationCode()) { + $this->onActivate($code); + } + + $this->prepareVars(); + } + + // + // Properties + // + + /** + * Returns the logged in user, if available + */ + public function user() + { + if (!Auth::check()) { + return null; + } + + return Auth::getUser(); + } + + /** + * Flag for allowing registration, pulled from UserSettings + */ + public function canRegister() + { + return UserSettings::get('allow_registration', true); + } + + /** + * Returns the login model attribute. + */ + public function loginAttribute() + { + return UserSettings::get('login_attribute', UserSettings::LOGIN_EMAIL); + } + + /** + * Returns the login label as a word. + */ + public function loginAttributeLabel() + { + return Lang::get($this->loginAttribute() == UserSettings::LOGIN_EMAIL + ? /*Email*/'rainlab.user::lang.login.attribute_email' + : /*Username*/'rainlab.user::lang.login.attribute_username' + ); + } + + /** + * updateRequiresPassword returns the update requires password setting + */ + public function updateRequiresPassword() + { + return $this->property('requirePassword', false); + } + + /** + * rememberLoginMode returns the login remember mode. + */ + public function rememberLoginMode() + { + return UserSettings::get('remember_login', UserSettings::REMEMBER_ALWAYS); + } + + /** + * useRememberLogin returns true if persistent authentication should be used. + */ + protected function useRememberLogin(): bool + { + switch ($this->rememberLoginMode()) { + case UserSettings::REMEMBER_ALWAYS: + return true; + + case UserSettings::REMEMBER_NEVER: + return false; + + case UserSettings::REMEMBER_ASK: + return (bool) post('remember', false); + } + } + + /** + * activationCode looks for the activation code from the URL parameter. If nothing + * is found, the GET parameter 'activate' is used instead. + * @return string + */ + public function activationCode() + { + $routeParameter = $this->property('paramCode'); + + if ($code = $this->param($routeParameter)) { + return $code; + } + + return get('activate'); + } + + // + // AJAX + // + + /** + * onSignin signs in the user + */ + public function onSignin() + { + try { + // Validate input + $data = (array) post(); + $rules = []; + + $rules['login'] = $this->loginAttribute() == UserSettings::LOGIN_USERNAME + ? 'required|between:2,255' + : 'required|email|between:6,255'; + + $rules['password'] = 'required|between:' . UserModel::getMinPasswordLength() . ',255'; + + if (!array_key_exists('login', $data)) { + $data['login'] = post('username', post('email')); + } + + $data['login'] = trim($data['login']); + + $validation = Validator::make( + $data, + $rules, + $this->getValidatorMessages(), + $this->getCustomAttributes() + ); + + if ($validation->fails()) { + throw new ValidationException($validation); + } + + // Authenticate user + $credentials = [ + 'login' => array_get($data, 'login'), + 'password' => array_get($data, 'password') + ]; + + Event::fire('rainlab.user.beforeAuthenticate', [$this, $credentials]); + + $user = Auth::authenticate($credentials, $this->useRememberLogin()); + if ($user->isBanned()) { + Auth::logout(); + throw new AuthException(Lang::get(/*Sorry, this user is currently not activated. Please contact us for further assistance.*/'rainlab.user::lang.account.banned')); + } + + // Record IP address + if ($ipAddress = Request::ip()) { + $user->touchIpAddress($ipAddress); + } + + // Redirect + if ($redirect = $this->makeRedirection(true)) { + return $redirect; + } + } + catch (Exception $ex) { + $this->throwOrFlashError($ex); + } + } + + /** + * onRegister registers the user + */ + public function onRegister() + { + try { + if (!$this->canRegister()) { + throw new ApplicationException(Lang::get(/*Registrations are currently disabled.*/'rainlab.user::lang.account.registration_disabled')); + } + + if ($this->isRegisterThrottled()) { + throw new ApplicationException(Lang::get(/*Registration is throttled. Please try again later.*/'rainlab.user::lang.account.registration_throttled')); + } + + // Validate input + $data = (array) post(); + + if (!array_key_exists('password_confirmation', $data)) { + $data['password_confirmation'] = post('password'); + } + + $rules = (new UserModel)->rules; + + if ($this->loginAttribute() !== UserSettings::LOGIN_USERNAME) { + unset($rules['username']); + } + + $validation = Validator::make( + $data, + $rules, + $this->getValidatorMessages(), + $this->getCustomAttributes() + ); + + if ($validation->fails()) { + throw new ValidationException($validation); + } + + // Record IP address + if ($ipAddress = Request::ip()) { + $data['created_ip_address'] = $data['last_ip_address'] = $ipAddress; + } + + // Register user + Event::fire('rainlab.user.beforeRegister', [&$data]); + + $requireActivation = UserSettings::get('require_activation', true); + $automaticActivation = UserSettings::get('activate_mode') == UserSettings::ACTIVATE_AUTO; + $userActivation = UserSettings::get('activate_mode') == UserSettings::ACTIVATE_USER; + $adminActivation = UserSettings::get('activate_mode') == UserSettings::ACTIVATE_ADMIN; + $user = Auth::register($data, $automaticActivation); + + Event::fire('rainlab.user.register', [$user, $data]); + + // Activation is by the user, send the email + if ($userActivation) { + $this->sendActivationEmail($user); + + Flash::success(Lang::get(/*An activation email has been sent to your email address.*/'rainlab.user::lang.account.activation_email_sent')); + } + + $intended = false; + + // Activation is by the admin, show message + // For automatic email on account activation RainLab.Notify plugin is needed + if ($adminActivation) { + Flash::success(Lang::get(/*You have successfully registered. Your account is not yet active and must be approved by an administrator.*/'rainlab.user::lang.account.activation_by_admin')); + } + + // Automatically activated or not required, log the user in + if ($automaticActivation || !$requireActivation) { + Auth::login($user, $this->useRememberLogin()); + $intended = true; + } + + // Redirect to the intended page after successful sign in + if ($redirect = $this->makeRedirection($intended)) { + return $redirect; + } + } + catch (Exception $ex) { + $this->throwOrFlashError($ex); + } + } + + /** + * onActivate activates the user + * @param string $code Activation code + */ + public function onActivate($code = null) + { + try { + $code = post('code', $code); + + $errorFields = ['code' => Lang::get(/*Invalid activation code supplied.*/'rainlab.user::lang.account.invalid_activation_code')]; + + // Break up the code parts + $parts = explode('!', $code); + if (count($parts) != 2) { + throw new ValidationException($errorFields); + } + + list($userId, $code) = $parts; + + if (!strlen(trim($userId)) || !strlen(trim($code))) { + throw new ValidationException($errorFields); + } + + if (!$user = Auth::findUserById($userId)) { + throw new ValidationException($errorFields); + } + + if (!$user->attemptActivation($code)) { + throw new ValidationException($errorFields); + } + + Flash::success(Lang::get(/*Successfully activated your account.*/'rainlab.user::lang.account.success_activation')); + + // Sign in the user + Auth::login($user, $this->useRememberLogin()); + } + catch (Exception $ex) { + $this->throwOrFlashError($ex); + } + } + + /** + * Update the user + */ + public function onUpdate() + { + if (!$user = $this->user()) { + return; + } + + $data = (array) post(); + + if ($this->updateRequiresPassword()) { + if (!$user->checkHashValue('password', $data['password_current'])) { + throw new ValidationException(['password_current' => Lang::get('rainlab.user::lang.account.invalid_current_pass')]); + } + } + + if (Input::hasFile('avatar')) { + $user->avatar = Input::file('avatar'); + } + + $user->fill($data); + $user->save(); + + // Password has changed, reauthenticate the user + if (array_key_exists('password', $data) && strlen($data['password'])) { + Auth::login($user->reload(), $this->useRememberLogin()); + } + + // Update Event to hook into the plugins function + Event::fire('rainlab.user.update', [$user, $data]); + + Flash::success(post('flash', Lang::get(/*Settings successfully saved!*/'rainlab.user::lang.account.success_saved'))); + + // Redirect + if ($redirect = $this->makeRedirection()) { + return $redirect; + } + + $this->prepareVars(); + } + + /** + * Deactivate user + */ + public function onDeactivate() + { + if (!$user = $this->user()) { + return; + } + + if (!$user->checkHashValue('password', post('password'))) { + throw new ValidationException(['password' => Lang::get('rainlab.user::lang.account.invalid_deactivation_pass')]); + } + + Auth::logout(); + $user->delete(); + + Flash::success(post('flash', Lang::get(/*Successfully deactivated your account. Sorry to see you go!*/'rainlab.user::lang.account.success_deactivation'))); + + // Redirect + if ($redirect = $this->makeRedirection()) { + return $redirect; + } + } + + /** + * Trigger a subsequent activation email + */ + public function onSendActivationEmail() + { + try { + if (!$user = $this->user()) { + throw new ApplicationException(Lang::get(/*You must be logged in first!*/'rainlab.user::lang.account.login_first')); + } + + if ($user->is_activated) { + throw new ApplicationException(Lang::get(/*Your account is already activated!*/'rainlab.user::lang.account.already_active')); + } + + Flash::success(Lang::get(/*An activation email has been sent to your email address.*/'rainlab.user::lang.account.activation_email_sent')); + + $this->sendActivationEmail($user); + } + catch (Exception $ex) { + $this->throwOrFlashError($ex); + } + + // Redirect + if ($redirect = $this->makeRedirection()) { + return $redirect; + } + } + + // + // Helpers + // + + /** + * Returns a link used to activate the user account. + * @return string + */ + protected function makeActivationUrl($code) + { + $params = [ + $this->property('paramCode') => $code + ]; + + if ($pageName = $this->property('activationPage')) { + $url = $this->pageUrl($pageName, $params); + } + else { + $url = $this->currentPageUrl($params); + } + + if (strpos($url, $code) === false) { + $url .= '?activate=' . $code; + } + + return $url; + } + + /** + * Sends the activation email to a user + * @param User $user + * @return void + */ + protected function sendActivationEmail($user) + { + $code = implode('!', [$user->id, $user->getActivationCode()]); + + $link = $this->makeActivationUrl($code); + + $data = [ + 'name' => $user->name, + 'link' => $link, + 'code' => $code + ]; + + Mail::send('rainlab.user::mail.activate', $data, function($message) use ($user) { + $message->to($user->email, $user->name); + }); + } + + /** + * Redirect to the intended page after successful update, sign in or registration. + * The URL can come from the "redirect" property or the "redirect" postback value. + * @return mixed + */ + protected function makeRedirection($intended = false) + { + $method = $intended ? 'intended' : 'to'; + + $property = post('redirect', $this->property('redirect')); + + // No redirect + if ($property === '0') { + return; + } + + // Refresh page + if ($property === '') { + return Redirect::refresh(); + } + + $redirectUrl = $this->pageUrl($property) ?: $property; + + if ($redirectUrl) { + return Redirect::$method($redirectUrl); + } + } + + /** + * Checks if the force secure property is enabled and if so + * returns a redirect object. + * @return mixed + */ + protected function redirectForceSecure() + { + if ( + Request::secure() || + Request::ajax() || + !$this->property('forceSecure') + ) { + return; + } + + return Redirect::secure(Request::path()); + } + + /** + * Returns true if user is throttled. + * @return bool + */ + protected function isRegisterThrottled() + { + if (!UserSettings::get('use_register_throttle', false)) { + return false; + } + + return UserModel::isRegisterThrottled(Request::ip()); + } + + /** + * getValidatorMessages + */ + protected function getValidatorMessages(): array + { + return (array) (new UserModel)->customMessages; + } + + /** + * getCustomAttributes + */ + protected function getCustomAttributes(): array + { + return [ + 'login' => $this->loginAttributeLabel(), + 'password' => Lang::get('rainlab.user::lang.account.password'), + 'email' => Lang::get('rainlab.user::lang.account.email'), + 'username' => Lang::get('rainlab.user::lang.user.username'), + 'name' => Lang::get('rainlab.user::lang.account.full_name') + ]; + } + + /** + * throwOrFlashError is error logic used by older versions before postback + * handlers internally supported flash messages for safe exceptions. + */ + protected function throwOrFlashError($ex) + { + // v3.4 handles postback flash logic internally and more accurately + // so just throw the exception when using v3.4 or above + if (version_compare(System::VERSION, '3.4', '>=')) { + throw $ex; + } + + // AJAX request or ajaxHandler twig call + if (Request::ajax() || !post('_handler')) { + throw $ex; + } + + // Assumed postback handler, exception ignored + Flash::error($ex->getMessage()); + } +} diff --git a/plugins/rainlab/user/components/ResetPassword.php b/plugins/rainlab/user/components/ResetPassword.php new file mode 100644 index 0000000..461d535 --- /dev/null +++ b/plugins/rainlab/user/components/ResetPassword.php @@ -0,0 +1,195 @@ + /*Reset Password*/'rainlab.user::lang.reset_password.reset_password', + 'description' => /*Forgotten password form.*/'rainlab.user::lang.reset_password.reset_password_desc' + ]; + } + + /** + * defineProperties + */ + public function defineProperties() + { + return [ + 'paramCode' => [ + 'title' => /*Reset Code Param*/'rainlab.user::lang.reset_password.code_param', + 'description' => /*The page URL parameter used for the reset code*/'rainlab.user::lang.reset_password.code_param_desc', + 'type' => 'string', + 'default' => 'code' + ], + 'resetPage' => [ + 'title' => /* Reset Page */'rainlab.user::lang.account.reset_page', + 'description' => /* Select a page to use for resetting the account password */'rainlab.user::lang.account.reset_page_comment', + 'type' => 'dropdown', + 'default' => '' + ], + ]; + } + + /** + * getResetPageOptions + */ + public function getResetPageOptions() + { + return [ + '' => '- current page -', + ] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName'); + } + + // + // Properties + // + + /** + * Returns the reset password code from the URL + * @return string + */ + public function code() + { + $routeParameter = $this->property('paramCode'); + + if ($code = $this->param($routeParameter)) { + return $code; + } + + return get('reset'); + } + + // + // AJAX + // + + /** + * Trigger the password reset email + */ + public function onRestorePassword() + { + $rules = [ + 'email' => 'required|email|between:6,255' + ]; + + $validation = Validator::make(post(), $rules); + if ($validation->fails()) { + throw new ValidationException($validation); + } + + $user = Auth::findUserByEmail(post('email')); + if (!$user || $user->is_guest || $user->trashed()) { + throw new ApplicationException(Lang::get(/*A user was not found with the given credentials.*/'rainlab.user::lang.account.invalid_user')); + } + + $code = implode('!', [$user->id, $user->getResetPasswordCode()]); + + $link = $this->makeResetUrl($code); + + $data = [ + 'name' => $user->name, + 'username' => $user->username, + 'link' => $link, + 'code' => $code + ]; + + Mail::send('rainlab.user::mail.restore', $data, function($message) use ($user) { + $message->to($user->email, $user->full_name); + }); + } + + /** + * Perform the password reset + */ + public function onResetPassword() + { + $rules = [ + 'code' => 'required', + 'password' => 'required|between:' . UserModel::getMinPasswordLength() . ',255' + ]; + + $validation = Validator::make(post(), $rules); + if ($validation->fails()) { + throw new ValidationException($validation); + } + + $errorFields = ['code' => Lang::get(/*Invalid activation code supplied.*/'rainlab.user::lang.account.invalid_activation_code')]; + + // Break up the code parts + $parts = explode('!', post('code')); + if (count($parts) != 2) { + throw new ValidationException($errorFields); + } + + list($userId, $code) = $parts; + + if (!strlen(trim($userId)) || !strlen(trim($code)) || !$code) { + throw new ValidationException($errorFields); + } + + if (!$user = Auth::findUserById($userId)) { + throw new ValidationException($errorFields); + } + + if (!$user->attemptResetPassword($code, post('password'))) { + throw new ValidationException($errorFields); + } + + // Check needed for compatibility with legacy systems + if (method_exists(\RainLab\User\Classes\AuthManager::class, 'clearThrottleForUserId')) { + Auth::clearThrottleForUserId($user->id); + } + } + + // + // Helpers + // + + /** + * makeResetUrl returns a link used to reset the user account. + * @return string + */ + protected function makeResetUrl($code) + { + $params = [ + $this->property('paramCode') => $code + ]; + + // Locate the current page + $url = ''; + + if ($pageName = $this->property('resetPage')) { + $url = $this->pageUrl($pageName, $params); + } + + if (!$url) { + $url = $this->currentPageUrl($params); + } + + if (strpos($url, $code) === false) { + $url .= '?reset=' . $code; + } + + return $url; + } +} diff --git a/plugins/rainlab/user/components/Session.php b/plugins/rainlab/user/components/Session.php new file mode 100644 index 0000000..f5ca413 --- /dev/null +++ b/plugins/rainlab/user/components/Session.php @@ -0,0 +1,260 @@ + 'rainlab.user::lang.session.session', + 'description' => 'rainlab.user::lang.session.session_desc' + ]; + } + + /** + * defineProperties + */ + public function defineProperties() + { + return [ + 'security' => [ + 'title' => 'rainlab.user::lang.session.security_title', + 'description' => 'rainlab.user::lang.session.security_desc', + 'type' => 'dropdown', + 'default' => 'all', + 'options' => [ + 'all' => 'rainlab.user::lang.session.all', + 'user' => 'rainlab.user::lang.session.users', + 'guest' => 'rainlab.user::lang.session.guests' + ] + ], + 'allowedUserGroups' => [ + 'title' => 'rainlab.user::lang.session.allowed_groups_title', + 'description' => 'rainlab.user::lang.session.allowed_groups_description', + 'placeholder' => '*', + 'type' => 'set', + 'default' => [] + ], + 'redirect' => [ + 'title' => 'rainlab.user::lang.session.redirect_title', + 'description' => 'rainlab.user::lang.session.redirect_desc', + 'type' => 'dropdown', + 'default' => '' + ], + 'checkToken' => [ + 'title' => /*Use token authentication*/'rainlab.user::lang.session.check_token', + 'description' => /*Check authentication using a verified bearer token.*/'rainlab.user::lang.session.check_token_desc', + 'type' => 'checkbox', + 'default' => 0 + ], + ]; + } + + /** + * getRedirectOptions + */ + public function getRedirectOptions() + { + return [''=>'- none -'] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName'); + } + + /** + * getAllowedUserGroupsOptions + */ + public function getAllowedUserGroupsOptions() + { + return UserGroup::lists('name','code'); + } + + /** + * init component + */ + public function init() + { + // Login with token + if ($this->property('checkToken', false)) { + $this->authenticateWithBearerToken(); + } + + // Inject security logic pre-AJAX + $this->controller->bindEvent('page.init', function() { + if (Request::ajax() && ($redirect = $this->checkUserSecurityRedirect())) { + return ['X_OCTOBER_REDIRECT' => $redirect->getTargetUrl()]; + } + }); + } + + /** + * Executed when this component is bound to a page or layout. + */ + public function onRun() + { + if ($redirect = $this->checkUserSecurityRedirect()) { + return $redirect; + } + + $this->page['user'] = $this->user(); + } + + /** + * user returns the logged in user, if available, and touches + * the last seen timestamp. + * @return RainLab\User\Models\User + */ + public function user() + { + if (!$user = Auth::getUser()) { + return null; + } + + if (!Auth::isImpersonator()) { + $user->touchLastSeen(); + } + + return $user; + } + + /** + * token returns an authentication token + */ + public function token() + { + return Auth::getBearerToken(); + } + + /** + * Returns the previously signed in user when impersonating. + */ + public function impersonator() + { + return Auth::getImpersonator(); + } + + /** + * onLogout logs out the user + * + * Usage: + * Sign out + * + * With the optional redirect parameter: + * Sign out + * + */ + public function onLogout() + { + $user = Auth::getUser(); + + Auth::logout(); + + if ($user) { + Event::fire('rainlab.user.logout', [$user]); + } + + $url = post('redirect', Request::fullUrl()); + + Flash::success(Lang::get('rainlab.user::lang.session.logout')); + + return Redirect::to($url); + } + + /** + * If impersonating, revert back to the previously signed in user. + * @return Redirect + */ + public function onStopImpersonating() + { + if (!Auth::isImpersonator()) { + return $this->onLogout(); + } + + Auth::stopImpersonate(); + + $url = post('redirect', Request::fullUrl()); + + Flash::success(Lang::get('rainlab.user::lang.session.stop_impersonate_success')); + + return Redirect::to($url); + } + + /** + * checkUserSecurityRedirect will return a redirect if the user cannot access the page. + */ + protected function checkUserSecurityRedirect() + { + // No security layer enabled + if ($this->checkUserSecurity()) { + return; + } + + if (!$this->property('redirect')) { + throw new SystemException('Redirect property is empty on Session component.'); + } + + $redirectUrl = $this->controller->pageUrl($this->property('redirect')); + + return Redirect::guest($redirectUrl); + } + + /** + * checkUserSecurity checks if the user can access this page based on the security rules. + */ + protected function checkUserSecurity(): bool + { + $allowedGroup = $this->property('security', self::ALLOW_ALL); + $allowedUserGroups = (array) $this->property('allowedUserGroups', []); + $isAuthenticated = Auth::check(); + + if ($isAuthenticated) { + if ($allowedGroup == self::ALLOW_GUEST) { + return false; + } + + if (!empty($allowedUserGroups)) { + $userGroups = Auth::getUser()->groups->lists('code'); + if (!count(array_intersect($allowedUserGroups, $userGroups))) { + return false; + } + } + } + else { + if ($allowedGroup == self::ALLOW_USER) { + return false; + } + } + + return true; + } + + /** + * authenticateWithBearerToken + */ + protected function authenticateWithBearerToken() + { + if ($jwtToken = Request::bearerToken()) { + Auth::checkBearerToken($jwtToken); + } + } +} diff --git a/plugins/rainlab/user/components/account/activation_check.htm b/plugins/rainlab/user/components/account/activation_check.htm new file mode 100644 index 0000000..5030833 --- /dev/null +++ b/plugins/rainlab/user/components/account/activation_check.htm @@ -0,0 +1,9 @@ +{% if not user.is_activated %} + +

Your email address has not yet been verified.

+

+ You should verify your account otherwise it may be deleted. Please check your email to verify. + Send the verification email again. +

+ +{% endif %} \ No newline at end of file diff --git a/plugins/rainlab/user/components/account/deactivate_link.htm b/plugins/rainlab/user/components/account/deactivate_link.htm new file mode 100644 index 0000000..f96071d --- /dev/null +++ b/plugins/rainlab/user/components/account/deactivate_link.htm @@ -0,0 +1,28 @@ + + Deactivate account + + + diff --git a/plugins/rainlab/user/components/account/default.htm b/plugins/rainlab/user/components/account/default.htm new file mode 100644 index 0000000..ddc10c2 --- /dev/null +++ b/plugins/rainlab/user/components/account/default.htm @@ -0,0 +1,24 @@ +{% if not user %} + +
+ +
+

Sign in

+ {% partial __SELF__ ~ '::signin' %} +
+ +
+ {% partial __SELF__ ~ '::register' %} +
+ +
+ +{% else %} + + {% partial __SELF__ ~ '::activation_check' %} + + {% partial __SELF__ ~ '::update' %} + + {% partial __SELF__ ~ '::deactivate_link' %} + +{% endif %} diff --git a/plugins/rainlab/user/components/account/register.htm b/plugins/rainlab/user/components/account/register.htm new file mode 100644 index 0000000..e6cdef0 --- /dev/null +++ b/plugins/rainlab/user/components/account/register.htm @@ -0,0 +1,53 @@ +{% if canRegister %} +

Register

+ + {{ form_ajax('onRegister') }} + +
+ + +
+ +
+ + +
+ + {% if loginAttribute == "username" %} +
+ + +
+ {% endif %} + +
+ + +
+ + + + {{ form_close() }} +{% else %} + +{% endif %} diff --git a/plugins/rainlab/user/components/account/signin.htm b/plugins/rainlab/user/components/account/signin.htm new file mode 100644 index 0000000..1e34d83 --- /dev/null +++ b/plugins/rainlab/user/components/account/signin.htm @@ -0,0 +1,33 @@ +{{ form_ajax('onSignin') }} + +
+ + +
+ +
+ + +
+ + {% if rememberLoginMode == 'ask' %} +
+
+ +
+
+ {% endif %} + + + +{{ form_close() }} diff --git a/plugins/rainlab/user/components/account/update.htm b/plugins/rainlab/user/components/account/update.htm new file mode 100644 index 0000000..c26563e --- /dev/null +++ b/plugins/rainlab/user/components/account/update.htm @@ -0,0 +1,33 @@ +{{ form_ajax('onUpdate') }} + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + {% if updateRequiresPassword %} +

To change these details, please confirm your current password.

+
+ + +
+ {% endif %} + + + +{{ form_close() }} diff --git a/plugins/rainlab/user/components/resetpassword/complete.htm b/plugins/rainlab/user/components/resetpassword/complete.htm new file mode 100644 index 0000000..d0d0baa --- /dev/null +++ b/plugins/rainlab/user/components/resetpassword/complete.htm @@ -0,0 +1 @@ +

Password reset complete, you may now sign in.

\ No newline at end of file diff --git a/plugins/rainlab/user/components/resetpassword/default.htm b/plugins/rainlab/user/components/resetpassword/default.htm new file mode 100644 index 0000000..b2eed57 --- /dev/null +++ b/plugins/rainlab/user/components/resetpassword/default.htm @@ -0,0 +1,7 @@ +
+ {% if __SELF__.code == null %} + {% partial __SELF__ ~ '::restore' %} + {% else %} + {% partial __SELF__ ~ '::reset' %} + {% endif %} +
\ No newline at end of file diff --git a/plugins/rainlab/user/components/resetpassword/reset.htm b/plugins/rainlab/user/components/resetpassword/reset.htm new file mode 100644 index 0000000..78c62da --- /dev/null +++ b/plugins/rainlab/user/components/resetpassword/reset.htm @@ -0,0 +1,19 @@ +

+ Please check your email for the activation code. +

+ +
+
+ + +
+ +
+ + +
+ + +
diff --git a/plugins/rainlab/user/components/resetpassword/restore.htm b/plugins/rainlab/user/components/resetpassword/restore.htm new file mode 100644 index 0000000..e51eb02 --- /dev/null +++ b/plugins/rainlab/user/components/resetpassword/restore.htm @@ -0,0 +1,14 @@ +

+ Lost your password? No problem! Enter your email address to verify your account. +

+ +
+
+ + +
+ + +
diff --git a/plugins/rainlab/user/composer.json b/plugins/rainlab/user/composer.json new file mode 100644 index 0000000..af185fc --- /dev/null +++ b/plugins/rainlab/user/composer.json @@ -0,0 +1,27 @@ +{ + "name": "rainlab/user-plugin", + "type": "october-plugin", + "description": "User plugin for October CMS", + "homepage": "https://octobercms.com/plugin/rainlab-user", + "keywords": ["october", "octobercms", "user"], + "license": "MIT", + "authors": [ + { + "name": "Alexey Bobkov", + "email": "aleksey.bobkov@gmail.com", + "role": "Co-founder" + }, + { + "name": "Samuel Georges", + "email": "daftspunky@gmail.com", + "role": "Co-founder" + } + ], + "require": { + "php": "^8.0.2", + "october/rain": ">=3.0", + "firebase/php-jwt": "^6.4", + "composer/installers": "~1.0" + }, + "minimum-stability": "dev" +} diff --git a/plugins/rainlab/user/config/config.php b/plugins/rainlab/user/config/config.php new file mode 100644 index 0000000..2fef283 --- /dev/null +++ b/plugins/rainlab/user/config/config.php @@ -0,0 +1,116 @@ + Settings::ACTIVATE_AUTO, + + /* + |-------------------------------------------------------------------------- + | Allow user registration + |-------------------------------------------------------------------------- + | + | If this is disabled users can only be created by administrators. + | + */ + + 'allowRegistration' => true, + + /* + |-------------------------------------------------------------------------- + | Prevent concurrent sessions + |-------------------------------------------------------------------------- + | + | When enabled users cannot sign in to multiple devices at the same time. + | + */ + + 'blockPersistence' => false, + + /* + |-------------------------------------------------------------------------- + | Login attribute + |-------------------------------------------------------------------------- + | + | Select what primary user detail should be used for signing in. + | + | LOGIN_EMAIL Authenticate users by email. + | LOGIN_USERNAME Authenticate users by username. + | + */ + + 'loginAttribute' => Settings::LOGIN_EMAIL, + + /* + |-------------------------------------------------------------------------- + | Minimum Password Length + |-------------------------------------------------------------------------- + | + | The minimum length of characters required for user passwords. + | + */ + + 'minPasswordLength' => 8, + + /* + |-------------------------------------------------------------------------- + | Remember login mode + |-------------------------------------------------------------------------- + | + | Select if the user session should be persistent. + | + | REMEMBER_ALWAYS Always persist user session. + | REMEMBER_ASK Ask if session should be persistent. + | REMEMBER_NEVER Never persist user session. + | + */ + + 'rememberLogin' => Settings::REMEMBER_ALWAYS, + + /* + |-------------------------------------------------------------------------- + | Sign in requires activation + |-------------------------------------------------------------------------- + | + | Users must have an activated account to sign in. + | + */ + + 'requireActivation' => true, + + /* + |-------------------------------------------------------------------------- + | Throttle registration + |-------------------------------------------------------------------------- + | + | Prevent multiple registrations from the same IP in short succession. + | + */ + + 'useRegisterThrottle' => true, + + /* + |-------------------------------------------------------------------------- + | Throttle attempts + |-------------------------------------------------------------------------- + | + | Repeat failed sign in attempts will temporarily suspend the user. + | + */ + + 'useThrottle' => true, +]; diff --git a/plugins/rainlab/user/controllers/UserGroups.php b/plugins/rainlab/user/controllers/UserGroups.php new file mode 100644 index 0000000..d624bf3 --- /dev/null +++ b/plugins/rainlab/user/controllers/UserGroups.php @@ -0,0 +1,50 @@ +addJs('/plugins/rainlab/user/assets/js/bulk-actions.js'); + + $this->asExtension('ListController')->index(); + } + + /** + * {@inheritDoc} + */ + public function listInjectRowClass($record, $definition = null) + { + $classes = []; + + if ($record->trashed()) { + $classes[] = 'strike'; + } + + if ($record->isBanned()) { + $classes[] = 'negative'; + } + + if (!$record->is_activated) { + $classes[] = 'disabled'; + } + + if (count($classes) > 0) { + return join(' ', $classes); + } + } + + public function listExtendQuery($query) + { + $query->withTrashed(); + } + + public function formExtendQuery($query) + { + $query->withTrashed(); + } + + /** + * Display username field if settings permit + */ + public function formExtendFields($form) + { + /* + * Show the username field if it is configured for use + */ + if ( + UserSettings::get('login_attribute') == UserSettings::LOGIN_USERNAME && + array_key_exists('username', $form->getFields()) + ) { + $form->getField('username')->hidden = false; + } + } + + public function formAfterUpdate($model) + { + $blockMail = post('User[block_mail]', false); + if ($blockMail !== false) { + $blockMail ? MailBlocker::blockAll($model) : MailBlocker::unblockAll($model); + } + } + + public function formExtendModel($model) + { + $model->block_mail = MailBlocker::isBlockAll($model); + + $model->bindEvent('model.saveInternal', function() use ($model) { + unset($model->attributes['block_mail']); + }); + } + + /** + * Manually activate a user + */ + public function preview_onActivate($recordId = null) + { + $model = $this->formFindModelObject($recordId); + + $model->attemptActivation($model->activation_code); + + Flash::success(Lang::get('rainlab.user::lang.users.activated_success')); + + if ($redirect = $this->makeRedirect('update-close', $model)) { + return $redirect; + } + } + + /** + * Manually unban a user + */ + public function preview_onUnban($recordId = null) + { + $model = $this->formFindModelObject($recordId); + + $model->unban(); + + Flash::success(Lang::get('rainlab.user::lang.users.unbanned_success')); + + if ($redirect = $this->makeRedirect('update-close', $model)) { + return $redirect; + } + } + + /** + * Display the convert to registered user popup + */ + public function preview_onLoadConvertGuestForm($recordId) + { + $this->vars['groups'] = UserGroup::where('code', '!=', UserGroup::GROUP_GUEST)->get(); + + return $this->makePartial('convert_guest_form'); + } + + /** + * Manually convert a guest user to a registered one + */ + public function preview_onConvertGuest($recordId) + { + $model = $this->formFindModelObject($recordId); + + // Convert user and send notification + $model->convertToRegistered(post('send_registration_notification', false)); + + // Remove user from guest group + if ($group = UserGroup::getGuestGroup()) { + $model->groups()->remove($group); + } + + // Add user to new group + if ( + ($groupId = post('new_group')) && + ($group = UserGroup::find($groupId)) + ) { + $model->groups()->add($group); + } + + Flash::success(Lang::get('rainlab.user::lang.users.convert_guest_success')); + + if ($redirect = $this->makeRedirect('update-close', $model)) { + return $redirect; + } + } + + /** + * Impersonate this user + */ + public function preview_onImpersonateUser($recordId) + { + if (!$this->user->hasAccess('rainlab.users.impersonate_user')) { + return Response::make(Lang::get('backend::lang.page.access_denied.label'), 403); + } + + $model = $this->formFindModelObject($recordId); + + Auth::impersonate($model); + + Flash::success(Lang::get('rainlab.user::lang.users.impersonate_success')); + } + + /** + * Unsuspend this user + */ + public function preview_onUnsuspendUser($recordId) + { + $model = $this->formFindModelObject($recordId); + + $model->unsuspend(); + + Flash::success(Lang::get('rainlab.user::lang.users.unsuspend_success')); + + return Redirect::refresh(); + } + + /** + * Force delete a user. + */ + public function update_onDelete($recordId = null) + { + $model = $this->formFindModelObject($recordId); + + $model->forceDelete(); + + Flash::success(Lang::get('backend::lang.form.delete_success')); + + if ($redirect = $this->makeRedirect('delete', $model)) { + return $redirect; + } + } + + /** + * Perform bulk action on selected users + */ + public function index_onBulkAction() + { + if ( + ($bulkAction = post('action')) && + ($checkedIds = post('checked')) && + is_array($checkedIds) && + count($checkedIds) + ) { + + foreach ($checkedIds as $userId) { + if (!$user = User::withTrashed()->find($userId)) { + continue; + } + + switch ($bulkAction) { + case 'delete': + $user->forceDelete(); + break; + + case 'activate': + $user->attemptActivation($user->activation_code); + break; + + case 'deactivate': + $user->clearPersistCode(); + $user->delete(); + break; + + case 'restore': + $user->restore(); + break; + + case 'ban': + $user->ban(); + break; + + case 'unban': + $user->unban(); + break; + } + } + + Flash::success(Lang::get('rainlab.user::lang.users.'.$bulkAction.'_selected_success')); + } + else { + Flash::error(Lang::get('rainlab.user::lang.users.'.$bulkAction.'_selected_empty')); + } + + return $this->listRefresh(); + } +} diff --git a/plugins/rainlab/user/controllers/usergroups/_list_toolbar.htm b/plugins/rainlab/user/controllers/usergroups/_list_toolbar.htm new file mode 100644 index 0000000..8ab7b77 --- /dev/null +++ b/plugins/rainlab/user/controllers/usergroups/_list_toolbar.htm @@ -0,0 +1,7 @@ + diff --git a/plugins/rainlab/user/controllers/usergroups/config_form.yaml b/plugins/rainlab/user/controllers/usergroups/config_form.yaml new file mode 100644 index 0000000..f6e3181 --- /dev/null +++ b/plugins/rainlab/user/controllers/usergroups/config_form.yaml @@ -0,0 +1,31 @@ +# =================================== +# Form Behavior Config +# =================================== + +# Record name +name: rainlab.user::lang.group.label + +# Model Form Field configuration +form: $/rainlab/user/models/usergroup/fields.yaml + +# Model Class name +modelClass: RainLab\User\Models\UserGroup + +# Default redirect location +defaultRedirect: rainlab/user/usergroups + +# Create page +create: + title: rainlab.user::lang.groups.create_title + redirect: rainlab/user/usergroups/update/:id + redirectClose: rainlab/user/usergroups + +# Update page +update: + title: rainlab.user::lang.groups.update_title + redirect: rainlab/user/usergroups + redirectClose: rainlab/user/usergroups + +# Preview page +preview: + title: rainlab.user::lang.groups.update_title \ No newline at end of file diff --git a/plugins/rainlab/user/controllers/usergroups/config_list.yaml b/plugins/rainlab/user/controllers/usergroups/config_list.yaml new file mode 100644 index 0000000..b765d35 --- /dev/null +++ b/plugins/rainlab/user/controllers/usergroups/config_list.yaml @@ -0,0 +1,44 @@ +# =================================== +# List Behavior Config +# =================================== + +# Model List Column configuration +list: $/rainlab/user/models/usergroup/columns.yaml + +# Model Class name +modelClass: RainLab\User\Models\UserGroup + +# List Title +title: rainlab.user::lang.groups.list_title + +# Link URL for each record +recordUrl: rainlab/user/usergroups/update/:id + +# Message to display if the list is empty +noRecordsMessage: backend::lang.list.no_records + +# Records to display per page +recordsPerPage: 20 + +# Displays the list column set up button +showSetup: true + +# Displays the sorting link on each column +showSorting: true + +# Default sorting column +# defaultSort: +# column: created_at +# direction: desc + +# Display checkboxes next to each record +# showCheckboxes: true + +# Toolbar widget configuration +toolbar: + # Partial for toolbar buttons + buttons: list_toolbar + + # Search widget configuration + search: + prompt: backend::lang.list.search_prompt diff --git a/plugins/rainlab/user/controllers/usergroups/create.htm b/plugins/rainlab/user/controllers/usergroups/create.htm new file mode 100644 index 0000000..f15ad81 --- /dev/null +++ b/plugins/rainlab/user/controllers/usergroups/create.htm @@ -0,0 +1,48 @@ + +
    +
  • +
  • pageTitle) ?>
  • +
+ + +fatalError): ?> + + 'layout']) ?> + +
+ formRender() ?> +
+ +
+
+ + + + + +
+
+ + + + + +

fatalError) ?>

+

+ + diff --git a/plugins/rainlab/user/controllers/usergroups/index.htm b/plugins/rainlab/user/controllers/usergroups/index.htm new file mode 100644 index 0000000..766877d --- /dev/null +++ b/plugins/rainlab/user/controllers/usergroups/index.htm @@ -0,0 +1,2 @@ + +listRender() ?> diff --git a/plugins/rainlab/user/controllers/usergroups/preview.htm b/plugins/rainlab/user/controllers/usergroups/preview.htm new file mode 100644 index 0000000..8769529 --- /dev/null +++ b/plugins/rainlab/user/controllers/usergroups/preview.htm @@ -0,0 +1,19 @@ + + + + +fatalError): ?> + +
+ formRenderPreview() ?> +
+ + + +

fatalError) ?>

+

Return to user groups list

+ + \ No newline at end of file diff --git a/plugins/rainlab/user/controllers/usergroups/update.htm b/plugins/rainlab/user/controllers/usergroups/update.htm new file mode 100644 index 0000000..6d81742 --- /dev/null +++ b/plugins/rainlab/user/controllers/usergroups/update.htm @@ -0,0 +1,56 @@ + +
    +
  • +
  • pageTitle) ?>
  • +
+ + +fatalError): ?> + + 'layout']) ?> + +
+ formRender() ?> +
+ +
+
+ + + + + + +
+
+ + + + + +

fatalError) ?>

+

+ + diff --git a/plugins/rainlab/user/controllers/users/_convert_guest_form.htm b/plugins/rainlab/user/controllers/users/_convert_guest_form.htm new file mode 100644 index 0000000..270df82 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_convert_guest_form.htm @@ -0,0 +1,47 @@ + 'convertGuestForm']) ?> + + + + + diff --git a/plugins/rainlab/user/controllers/users/_hint_activate.htm b/plugins/rainlab/user/controllers/users/_hint_activate.htm new file mode 100644 index 0000000..2c0c64a --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_hint_activate.htm @@ -0,0 +1,16 @@ +
+
+
+ +

+

+ + . +

+
+
+
diff --git a/plugins/rainlab/user/controllers/users/_hint_banned.htm b/plugins/rainlab/user/controllers/users/_hint_banned.htm new file mode 100644 index 0000000..bb5af21 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_hint_banned.htm @@ -0,0 +1,16 @@ +
+
+
+ +

+

+ + . +

+
+
+
diff --git a/plugins/rainlab/user/controllers/users/_hint_guest.htm b/plugins/rainlab/user/controllers/users/_hint_guest.htm new file mode 100644 index 0000000..c039484 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_hint_guest.htm @@ -0,0 +1,15 @@ +
+
+
+ +

+

+ + . +

+
+
+
diff --git a/plugins/rainlab/user/controllers/users/_hint_trashed.htm b/plugins/rainlab/user/controllers/users/_hint_trashed.htm new file mode 100644 index 0000000..114b5ab --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_hint_trashed.htm @@ -0,0 +1,9 @@ +
+
+
+ +

+

+
+
+
diff --git a/plugins/rainlab/user/controllers/users/_list_toolbar.htm b/plugins/rainlab/user/controllers/users/_list_toolbar.htm new file mode 100644 index 0000000..ee41d51 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_list_toolbar.htm @@ -0,0 +1,84 @@ +
+ + + + + + + makePartial('~/path/to/partial'); + * }); + * + */ + $this->fireViewEvent('rainlab.user.view.extendListToolbar'); + ?> + +
diff --git a/plugins/rainlab/user/controllers/users/_preview_scoreboard.htm b/plugins/rainlab/user/controllers/users/_preview_scoreboard.htm new file mode 100644 index 0000000..ce95340 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_preview_scoreboard.htm @@ -0,0 +1,40 @@ +
+

+ name): ?> +

name) ?>

+ +

+ +

+ + email) ?> + +

+
+created_at): ?> +
+

+

+ created_at->toFormattedDateString() ?> +

+

+ : + is_guest): ?> + + is_activated): ?> + + + + +

+
+ +last_seen): ?> +
+

+

last_seen->diffForHumans() ?>

+

+ isOnline() ? e(trans('rainlab.user::lang.user.is_online')) : e(trans('rainlab.user::lang.user.is_offline')) ?> +

+
+ diff --git a/plugins/rainlab/user/controllers/users/_preview_toolbar.htm b/plugins/rainlab/user/controllers/users/_preview_toolbar.htm new file mode 100644 index 0000000..2d76680 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/_preview_toolbar.htm @@ -0,0 +1,71 @@ + + + + + + +user->hasAccess('rainlab.users.impersonate_user')): ?> + + + + + +isSuspended()): ?> + + + + + + + + Deactivate + + + Ban user + + + Delete + + +*/ +?> + +makePartial('~/path/to/partial'); + * }); + * + */ + $this->fireViewEvent('rainlab.user.view.extendPreviewToolbar', [ + 'record' => $formModel + ]); +?> diff --git a/plugins/rainlab/user/controllers/users/config_form.yaml b/plugins/rainlab/user/controllers/users/config_form.yaml new file mode 100644 index 0000000..7b92abf --- /dev/null +++ b/plugins/rainlab/user/controllers/users/config_form.yaml @@ -0,0 +1,25 @@ +# =================================== +# Form Behavior Config +# =================================== + +# Record name +name: rainlab.user::lang.user.label + +# Model Form Field configuration +form: $/rainlab/user/models/user/fields.yaml + +# Model Class name +modelClass: RainLab\User\Models\User + +# Default redirect location +defaultRedirect: rainlab/user/users + +# Create page +create: + redirect: rainlab/user/users/preview/:id + redirectClose: rainlab/user/users + +# Update page +update: + redirect: rainlab/user/users/update/:id + redirectClose: rainlab/user/users/preview/:id diff --git a/plugins/rainlab/user/controllers/users/config_list.yaml b/plugins/rainlab/user/controllers/users/config_list.yaml new file mode 100644 index 0000000..796c42f --- /dev/null +++ b/plugins/rainlab/user/controllers/users/config_list.yaml @@ -0,0 +1,40 @@ +# =================================== +# List Behavior Config +# =================================== + +# List Title +title: rainlab.user::lang.users.list_title + +# Model List Column configuration +list: $/rainlab/user/models/user/columns.yaml + +# Filter widget configuration +filter: $/rainlab/user/models/user/scopes.yaml + +# Model Class name +modelClass: RainLab\User\Models\User + +# Link URL for each record +recordUrl: rainlab/user/users/preview/:id + +# Message to display if the list is empty +noRecordsMessage: backend::lang.list.no_records + +# Records to display per page +recordsPerPage: 20 + +# Display checkboxes next to each record +showCheckboxes: true + +# Displays the list column set up button +showSetup: true + +# Toolbar widget configuration +toolbar: + + # Partial for toolbar buttons + buttons: list_toolbar + + # Search widget configuration + search: + prompt: backend::lang.list.search_prompt diff --git a/plugins/rainlab/user/controllers/users/create.htm b/plugins/rainlab/user/controllers/users/create.htm new file mode 100644 index 0000000..f010a3c --- /dev/null +++ b/plugins/rainlab/user/controllers/users/create.htm @@ -0,0 +1,64 @@ + +
    +
  • +
  • pageTitle)) ?>
  • +
+ + +fatalError): ?> + + + +
+ formRenderOutsideFields() ?> +
+
+ formRenderPrimaryTabs() ?> +
+ +
+
+ + + + + +
+
+ + + + +
formRenderSecondaryTabs() ?>
+ + + + 'layout stretch']) ?> + makeLayout('form-with-sidebar') ?> + + + + +
+ +
+
+

fatalError)) ?>

+

+
+ diff --git a/plugins/rainlab/user/controllers/users/index.htm b/plugins/rainlab/user/controllers/users/index.htm new file mode 100644 index 0000000..766877d --- /dev/null +++ b/plugins/rainlab/user/controllers/users/index.htm @@ -0,0 +1,2 @@ + +listRender() ?> diff --git a/plugins/rainlab/user/controllers/users/preview.htm b/plugins/rainlab/user/controllers/users/preview.htm new file mode 100644 index 0000000..3ff3530 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/preview.htm @@ -0,0 +1,61 @@ + +
    +
  • +
  • pageTitle)) ?>
  • +
+ + +fatalError): ?> + + + + is_guest): ?> + makePartial('hint_guest') ?> + isBanned()): ?> + makePartial('hint_banned') ?> + trashed()): ?> + makePartial('hint_trashed') ?> + is_activated): ?> + makePartial('hint_activate') ?> + + +
+
+ makePartial('preview_scoreboard') ?> +
+
+ +
+
+ makePartial('preview_toolbar') ?> +
+
+ +
+ formRender(['preview' => true, 'section' => 'outside']) ?> +
+ +
+ formRender(['preview' => true, 'section' => 'primary']) ?> +
+ + + + +
formRender(['preview' => true, 'section' => 'secondary']) ?>
+ + + + 'layout stretch']) ?> + makeLayout('form-with-sidebar') ?> + + + + + +
+

fatalError) ?>

+

+
+ + diff --git a/plugins/rainlab/user/controllers/users/update.htm b/plugins/rainlab/user/controllers/users/update.htm new file mode 100644 index 0000000..6be1c68 --- /dev/null +++ b/plugins/rainlab/user/controllers/users/update.htm @@ -0,0 +1,72 @@ + +
    +
  • +
  • pageTitle)) ?>
  • +
+ + +fatalError): ?> + + + +
+ formRenderOutsideFields() ?> +
+ +
+ formRenderPrimaryTabs() ?> +
+ +
+
+ + + + + + +
+
+ + + + +
formRenderSecondaryTabs() ?>
+ + + + 'layout stretch']) ?> + makeLayout('form-with-sidebar') ?> + + + + +
+ +
+
+

fatalError)) ?>

+

+
+ diff --git a/plugins/rainlab/user/facades/Auth.php b/plugins/rainlab/user/facades/Auth.php new file mode 100644 index 0000000..5f32208 --- /dev/null +++ b/plugins/rainlab/user/facades/Auth.php @@ -0,0 +1,15 @@ + [ + 'name' => 'المستخدم', + 'description' => 'إدارة المستخدم الأمامية.', + 'tab' => 'المستخدمون', + 'access_users' => 'ادارة المستخدمين', + 'access_groups' => 'إدارة مجموعات المستخدمين', + 'access_settings' => 'إدارة إعدادات المستخدم', + 'impersonate_user' => 'انتحال شخصية المستخدمين' + ], + 'users' => [ + 'menu_label' => 'المستخدمون', + 'all_users' => 'جميع المستخدمين', + 'new_user' => 'مستخدم جديد', + 'list_title' => 'ادارة المستخدمين', + 'trashed_hint_title' => 'قام المستخدم بإلغاء تنشيط حسابه', + 'trashed_hint_desc' => 'قام هذا المستخدم بإلغاء تنشيط حسابه ولم يعد يريد الظهور على الموقع. يمكنهم استعادة حسابهم في أي وقت عن طريق تسجيل الدخول مرة أخرى.', + 'banned_hint_title' => 'تم حظر المستخدم', + 'banned_hint_desc' => 'تم حظر هذا المستخدم من قبل المسؤول ولن يتمكن من تسجيل الدخول.', + 'guest_hint_title' => 'هذا مستخدم ضيف', + 'guest_hint_desc' => 'يتم تخزين هذا المستخدم لأغراض مرجعية فقط ويحتاج إلى التسجيل قبل تسجيل الدخول.', + 'activate_warning_title' => 'المستخدم غير مفعل!', + 'activate_warning_desc' => 'لم يتم تنشيط هذا المستخدم وقد يتعذر عليه تسجيل الدخول.', + 'activate_confirm' => 'هل تريد فعلاً تفعيل هذا المستخدم؟', + 'activated_success' => 'تم تنشيط المستخدم', + 'activate_manually' => 'قم بتنشيط هذا المستخدم يدويًا', + 'convert_guest_confirm' => 'تحويل هذا الضيف إلى مستخدم؟', + 'convert_guest_manually' => 'التحويل إلى مستخدم مسجل', + 'convert_guest_success' => 'تم تحويل المستخدم إلى حساب مسجل', + 'impersonate_user' => 'انتحال شخصية المستخدم', + 'impersonate_confirm' => 'انتحال شخصية هذا المستخدم؟ يمكنك العودة إلى حالتك الأصلية بتسجيل الخروج.', + 'impersonate_success' => 'أنت الآن تنتحل شخصية هذا المستخدم', + 'delete_confirm' => 'هل تريد حقًا حذف هذا المستخدم؟', + 'unban_user' => 'إلغاء حظر هذا المستخدم', + 'unban_confirm' => 'هل تريد حقًا إلغاء حظر هذا المستخدم؟', + 'unbanned_success' => 'تم إلغاء حظر المستخدم', + 'return_to_list' => 'العودة إلى قائمة المستخدمين', + 'update_details' => 'تحديث التفاصيل', + 'bulk_actions' => 'إجراءات ', + 'delete_selected' => 'احذف المختار', + 'delete_selected_confirm' => 'حذف المستخدمين المختارين؟', + 'delete_selected_empty' => 'لا يوجد مستخدمون محددون لحذفهم.', + 'delete_selected_success' => 'تم حذف المستخدمين المحددين بنجاح.', + 'activate_selected' => 'تفعيل المحدد', + 'activate_selected_confirm' => 'تفعيل المستخدمين المختارين؟', + 'activate_selected_empty' => 'لا يوجد مستخدمون محددون لتنشيطهم.', + 'activate_selected_success' => 'تم تفعيل المستخدمين المختارين بنجاح.', + 'deactivate_selected' => 'تم تحديد إلغاء التنشيط', + 'deactivate_selected_confirm' => 'تعطيل المستخدمين المختارين؟', + 'deactivate_selected_empty' => 'لا يوجد مستخدمون محددون لإلغاء تنشيطهم.', + 'deactivate_selected_success' => 'تم إلغاء تنشيط المستخدمين المحددين بنجاح.', + 'restore_selected' => 'استعادة المختارة', + 'restore_selected_confirm' => 'استعادة المستخدمين المختارين؟', + 'restore_selected_empty' => 'لا يوجد مستخدمون محددون لاستعادتهم.', + 'restore_selected_success' => 'تمت استعادة المستخدمين المحددين بنجاح.', + 'ban_selected' => 'تم تحديد الحظر', + 'ban_selected_confirm' => 'حظر المستخدمين المختارين؟', + 'ban_selected_empty' => 'لا يوجد مستخدمون محددون لحظرهم.', + 'ban_selected_success' => 'تم بنجاح حظر المستخدمين المحددين.', + 'unban_selected' => 'تم تحديد إلغاء الحظر', + 'unban_selected_confirm' => 'إلغاء حظر المستخدمين المحددين؟', + 'unban_selected_empty' => 'لا يوجد مستخدمون محددون لإلغاء الحظر.', + 'unban_selected_success' => 'تم بنجاح فك الحظر عن المستخدمين المحددين.', + 'unsuspend' => 'غير معلق', + 'unsuspend_success' => 'تم إلغاء تعليق المستخدم.', + 'unsuspend_confirm' => 'إلغاء تعليق هذا المستخدم؟' + ], + 'settings' => [ + 'users' => 'المستخدمون', + 'menu_label' => 'إعدادات المستخدم', + 'menu_description' => 'إدارة مصادقة المستخدم والتسجيل وإعدادات التنشيط.', + 'activation_tab' => 'التنشيط', + 'signin_tab' => 'تسجيل الدخول', + 'registration_tab' => 'تسجيل', + 'profile_tab' => 'الملف الشخصي', + 'notifications_tab' => 'إشعارات', + 'allow_registration' => 'السماح بتسجيل المستخدم', + 'allow_registration_comment' => 'إذا تم تعطيل هذا ، فلا يمكن إنشاء المستخدمين إلا بواسطة المسؤولين.', + 'activate_mode' => 'وضع التنشيط', + 'activate_mode_comment' => 'حدد كيفية تنشيط حساب المستخدم.', + 'activate_mode_auto' => 'تلقائي', + 'activate_mode_auto_comment' => 'يتم تفعيله تلقائيًا عند التسجيل.', + 'activate_mode_user' => 'اسم االمستخدم', + 'activate_mode_user_comment' => 'يقوم المستخدم بتنشيط حسابه الخاص باستخدام البريد.', + 'activate_mode_admin' => 'مدير', + 'activate_mode_admin_comment' => 'يمكن للمسؤول فقط تنشيط المستخدم.', + 'require_activation' => 'يتطلب تسجيل الدخول التنشيط', + 'require_activation_comment' => 'يجب أن يكون لدى المستخدمين حساب نشط لتسجيل الدخول.', + 'use_throttle' => 'محاولات خنق', + 'use_throttle_comment' => 'ستؤدي محاولات تسجيل الدخول الفاشلة المتكررة إلى تعليق المستخدم مؤقتًا.', + 'use_register_throttle' => 'تسجيل الخانق', + 'use_register_throttle_comment' => 'منع التسجيلات المتعددة من نفس عنوان IP في تتابع قصير.', + 'block_persistence' => 'منع الجلسات المتزامنة', + 'block_persistence_comment' => 'عند التمكين ، لا يمكن للمستخدمين تسجيل الدخول إلى أجهزة متعددة في نفس الوقت.', + 'login_attribute' => 'سمة تسجيل الدخول', + 'login_attribute_comment' => 'حدد تفاصيل المستخدم الأساسية التي يجب استخدامها لتسجيل الدخول.', + 'remember_login' => 'تذكر وضع تسجيل الدخول', + 'remember_login_comment' => 'حدد ما إذا كانت جلسة المستخدم يجب أن تكون مستمرة.', + 'remember_always' => 'دائماً', + 'remember_never' => 'أبداً', + 'remember_ask' => 'اسأل المستخدم عند تسجيل الدخول', + ], + 'user' => [ + 'label' => 'المستخدم', + 'id' => 'ID', + 'username' => 'اسم المستخدم', + 'name' => 'اسم', + 'name_empty' => 'مجهول', + 'surname' => 'اسم العائلة', + 'email' => 'البريد الإلكتروني', + 'created_at' => 'مسجل', + 'last_seen' => 'اخر ظهور', + 'is_guest' => 'زائر', + 'joined' => 'انضم', + 'is_online' => 'متواجد حاليا', + 'is_offline' => 'حاليا غير متصل', + 'send_invite' => 'إرسال دعوة عبر البريد الإلكتروني', + 'send_invite_comment' => 'يرسل رسالة ترحيب تحتوي على معلومات تسجيل الدخول وكلمة المرور.', + 'create_password' => 'أنشئ كلمة مرور', + 'create_password_comment' => 'أدخل كلمة مرور جديدة مستخدمة لتسجيل الدخول.', + 'reset_password' => 'إعادة تعيين كلمة المرور', + 'reset_password_comment' => 'لإعادة تعيين كلمة مرور هذا المستخدم ، أدخل كلمة مرور جديدة هنا.', + 'confirm_password' => 'تأكيد كلمة المرور', + 'confirm_password_comment' => 'أدخل كلمة المرور مرة أخرى لتأكيدها.', + 'groups' => 'مجموعات', + 'empty_groups' => 'لا توجد مجموعات مستخدمين متاحة.', + 'avatar' => 'الصورة الرمزية', + 'details' => 'تفاصيل', + 'account' => 'الحساب', + 'block_mail' => 'حظر كل البريد الصادر المرسل إلى هذا المستخدم.', + 'status_label' => 'حالة', + 'status_guest' => 'زائر', + 'status_activated' => 'مفعل', + 'status_registered' => 'مسجل', + 'created_ip_address' => 'عنوان IP الذي تم إنشاؤه', + 'last_ip_address' => 'عنوان IP الأخير', + ], + 'group' => [ + 'label' => 'مجموعة', + 'id' => 'ID', + 'name' => 'الاسم', + 'description_field' => 'الوصف', + 'code' => 'رمز', + 'code_comment' => 'أدخل رمزًا فريدًا يستخدم لتعريف هذه المجموعة.', + 'created_at' => 'أنشئت', + 'users_count' => 'المستخدمون' + ], + 'groups' => [ + 'menu_label' => 'مجموعات', + 'all_groups' => 'مجموعات الاعضاء', + 'new_group' => 'مجموعة جديدة', + 'delete_selected_confirm' => 'هل تريد حقًا حذف المجموعات المختارة؟', + 'list_title' => 'إدارة المجموعات', + 'delete_confirm' => 'هل تريد حقًا حذف هذه المجموعة؟', + 'delete_selected_success' => 'تم حذف المجموعات المحددة بنجاح.', + 'delete_selected_empty' => 'لا توجد مجموعات محددة لحذفها.', + 'return_to_list' => 'رجوع إلى قائمة المجموعات', + 'return_to_users' => 'رجوع إلى قائمة المستخدمين', + 'create_title' => 'إنشاء مجموعة مستخدمين', + 'update_title' => 'تحرير مجموعة المستخدمين', + 'preview_title' => 'معاينة مجموعة المستخدمين' + ], + 'login' => [ + 'attribute_email' => 'البريد الإلكتروني', + 'attribute_username' => 'اسم المستخدم' + ], + 'account' => [ + 'account' => 'الحساب', + 'account_desc' => 'نموذج إدارة المستخدم.', + 'banned' => 'عذرا ، هذا المستخدم غير مفعل حاليا. يرجى الاتصال بنا للحصول على مزيد من المساعدة.', + 'redirect_to' => 'إعادة توجيه ل', + 'redirect_to_desc' => 'اسم الصفحة المراد إعادة التوجيه إليه بعد التحديث أو تسجيل الدخول أو التسجيل.', + 'code_param' => 'تفعيل كود بارام', + 'code_param_desc' => 'معلمة URL للصفحة المستخدمة في رمز تنشيط التسجيل', + 'force_secure' => 'فرض بروتوكول آمن', + 'force_secure_desc' => 'قم دائمًا بإعادة توجيه عنوان URL باستخدام مخطط HTTPS.', + 'invalid_user' => 'لم يتم العثور على مستخدم ببيانات الاعتماد المقدمة.', + 'invalid_activation_code' => 'تم توفير رمز التفعيل غير صالح.', + 'invalid_deactivation_pass' => 'كلمة المرور التي أدخلتها غير صالحة.', + 'invalid_current_pass' => 'كلمة المرور الحالية التي أدخلتها غير صالحة.', + 'success_activation' => 'تم تفعيل حسابك بنجاح.', + 'success_deactivation' => 'تم إلغاء تنشيط حسابك بنجاح. اسف لرؤيتك تذهب!', + 'success_saved' => 'تم حفظ الإعدادات بنجاح!', + 'login_first' => 'يجب عليك تسجيل الدخول أولا!', + 'already_active' => 'تم تنشيط حسابك بالفعل!', + 'activation_email_sent' => 'تم ارسال رسالة التحقق الى بريدك الالكتروني.', + 'activation_by_admin' => 'لقد قمت بالتسجيل بنجاح. حسابك ليس نشطًا بعد ويجب أن يوافق عليه المسؤول.', + 'registration_disabled' => 'التسجيلات معطلة حاليا.', + 'registration_throttled' => 'التسجيل مخنق. الرجاء معاودة المحاولة في وقت لاحق.', + 'sign_in' => 'تسجيل الدخول', + 'register' => 'تسجيل', + 'full_name' => 'الاسم الكامل', + 'email' => 'البريد الإلكتروني', + 'password' => 'كلمة المرور', + 'login' => 'تسجيل الدخول', + 'new_password' => 'كلمة السر الجديدة', + 'new_password_confirm' => 'تأكيد كلمة المرور الجديدة', + 'update_requires_password' => 'تأكيد كلمة المرور عند التحديث', + 'update_requires_password_comment' => 'طلب كلمة المرور الحالية للمستخدم عند تغيير ملف التعريف الخاص به.', + 'activation_page' => 'صفحة التفعيل', + 'activation_page_comment' => 'حدد صفحة لاستخدامها في تنشيط حساب المستخدم', + 'reset_page' => 'إعادة ضبط الصفحة', + 'reset_page_comment' => 'حدد صفحة لاستخدامها في إعادة تعيين كلمة مرور الحساب', + ], + 'reset_password' => [ + 'reset_password' => 'إعادة تعيين كلمة المرور', + 'reset_password_desc' => 'استمارة كلمة السر المنسية.', + 'code_param' => 'إعادة تعيين الرمز', + 'code_param_desc' => 'معلمة URL للصفحة المستخدمة في إعادة تعيين رمز' + ], + 'session' => [ + 'session' => 'جلسة', + 'session_desc' => 'يضيف جلسة المستخدم إلى الصفحة ويمكنه تقييد الوصول إلى الصفحة.', + 'security_title' => 'السماح فقط', + 'security_desc' => 'من المسموح له الوصول إلى هذه الصفحة.', + 'all' => 'الجميع', + 'users' => 'المستخدمون', + 'guests' => 'ضيوف', + 'allowed_groups_title' => 'السماح للمجموعات', + 'allowed_groups_description' => 'اختر المجموعات المسموح بها أو لا تختارها للسماح لجميع المجموعات', + 'redirect_title' => 'إعادة توجيه ل', + 'redirect_desc' => 'اسم الصفحة لإعادة التوجيه إذا تم رفض الوصول.', + 'logout' => 'لقد تم تسجيل الخروج بنجاح!', + 'stop_impersonate_success' => 'لم تعد تنتحل شخصية مستخدم.', + ] +]; diff --git a/plugins/rainlab/user/lang/cs/lang.php b/plugins/rainlab/user/lang/cs/lang.php new file mode 100644 index 0000000..2c92870 --- /dev/null +++ b/plugins/rainlab/user/lang/cs/lang.php @@ -0,0 +1,190 @@ + [ + 'name' => 'Uživatelé', + 'description' => 'Správa front-end uživatelů.', + 'tab' => 'Uživatelé', + 'access_users' => 'Správa uživatelů', + 'access_groups' => 'Správa uživatelských skupin', + 'access_settings' => 'Správa nastavení uživatelů', + ], + 'users' => [ + 'menu_label' => 'Uživatelé', + 'all_users' => 'Seznam uživatelů', + 'new_user' => 'Vytvořit uživatele', + 'list_title' => 'Správa uživatelů', + 'activating' => 'Povoluji...', + 'trashed_hint_title' => 'Uživatel deaktivoval svůj účet', + 'trashed_hint_desc' => 'Uživatel zablokoval svůj účet a nechce se dále objevovat na stránkách. Může však svůj účet kdykoli obnovit přihlášením se zpět.', + 'banned_hint_title' => 'Uživatel byl zabanován', + 'banned_hint_desc' => 'Tento uživatel byl zablokován administrátorem a nebude moct se přihlásit.', + 'guest_hint_title' => 'Tento uživatel je host', + 'guest_hint_desc' => 'Tento uživatel je uložen pouze jako reference a musí se zaregistrovat před přihlášením.', + 'activate_warning_title' => 'Uživatel není aktivní!', + 'activate_warning_desc' => 'Tento uživatel nemohl být aktivován a nebude mít možnost se přihlásit.', + 'activate_confirm' => 'Opravdu chcete aktivovat tohoto uživatele?', + 'activated_success' => 'Uživatel byl úspěšně aktivován!', + 'activate_manually' => 'Aktivovat uživatele manuálně', + 'convert_guest_confirm' => 'Chcete převést hosta na uživatele?', + 'convert_guest_manually' => 'Převést na zaregistrovaného uživatele', + 'convert_guest_success' => 'Uživatel byl převeden na registrovaného uživatele', + 'delete_confirm' => 'Opravdu chcete smazat tohoto uživatele?', + 'unban_user' => 'Zrušit ban tohoto uživatele', + 'unban_confirm' => 'Opravdu chcete zrušit ban tohoto uživatele?', + 'unbanned_success' => 'Uživateli byl zrušen ban', + 'return_to_list' => 'Zpět na seznam uživatelů', + 'update_details' => 'Upravit detaily', + 'bulk_actions' => 'Hromadné akce', + 'delete_selected' => 'Odstranit vybrané', + 'delete_selected_confirm' => 'Chcete smazat vybrané uživatele?', + 'delete_selected_empty' => 'Nejdříve vyberte uživatele, které chcete smazat.', + 'delete_selected_success' => 'Vybraní uživatelé úspěšně odstraněni.', + 'deactivate_selected' => 'Deaktivovat vybrané', + 'deactivate_selected_confirm' => 'Deaktivovat vybrané uživatele?', + 'deactivate_selected_empty' => 'Musíte vybrat uživatele, které chcete deaktivovat.', + 'deactivate_selected_success' => 'Vybraní uživatelé byli úspěšně deaktivování.', + 'restore_selected' => 'Obnovit vybrané', + 'restore_selected_confirm' => 'Opravdu chcete obnovit vybrané uživatele?', + 'restore_selected_empty' => 'Musíte vybrat uživatele, které chcete obnovit.', + 'restore_selected_success' => 'Vybraní uživatele byli úspěšně obnoveni.', + 'ban_selected' => 'Zabanovat vybrané', + 'ban_selected_confirm' => 'Opravdu chcete zabanovat vybrané uživatele?', + 'ban_selected_empty' => 'Musíte vybrat uživatele, které chcete zabanovat.', + 'ban_selected_success' => 'Vybraní uživatelé byli úspěšně zabanováni.', + 'unban_selected' => 'Odbanovat vybrané', + 'unban_selected_confirm' => 'Opravdu chcete odbanovat vybrané uživatele?', + 'unban_selected_empty' => 'Musíte vybrat uživatele, které chcete odbanovat.', + 'unban_selected_success' => 'Vybraní uživatelé byli úspěšně odbanováni.', + ], + 'settings' => [ + 'users' => 'Uživatelé', + 'menu_label' => 'Správa uživatelů', + 'menu_description' => 'Správa nastavení uživatelů', + 'activation_tab' => 'Aktivace', + 'signin_tab' => 'Přihlášení', + 'registration_tab' => 'Registrace', + 'notifications_tab' => 'Notifikace', + 'allow_registration' => 'Povolit registraci uživatelů', + 'allow_registration_comment' => 'Pokud je registrace zakázaná, uživatelé lze vytvářet pouze v administraci.', + 'activate_mode' => 'Režim aktivace', + 'activate_mode_comment' => 'Vyberte jak má být uživatel aktivován.', + 'activate_mode_auto' => 'Automaticky', + 'activate_mode_auto_comment' => 'Aktivován automaticky ihned po registraci.', + 'activate_mode_user' => 'Aktivační e-mail', + 'activate_mode_user_comment' => 'Uživatel si aktivuje účet pomocí aktivačního e-mailu.', + 'activate_mode_admin' => 'Administrátorem', + 'activate_mode_admin_comment' => 'Pouze administrátor může aktivovat uživatele.', + 'require_activation' => 'Přihlášení vyžaduje aktivaci uživatele', + 'require_activation_comment' => 'Uživatelé musí mít aktivovaný účet, aby se mohl přihlásit.', + 'use_throttle' => 'Omezit opakované pokusy o přihlášení', + 'use_throttle_comment' => 'Při opakovaném pokusu o přihlášení dojde k suspendování uživatele.', + 'login_attribute' => 'Přihlašovací atribut', + 'login_attribute_comment' => 'Zvolte, jaký atribut bude použitý k přihlášení uživatele.', + ], + 'user' => [ + 'label' => 'Uživatel', + 'id' => 'ID', + 'username' => 'Uživatelské jméno', + 'name' => 'Jméno', + 'name_empty' => 'Anonym', + 'surname' => 'Příjmení', + 'email' => 'E-mail', + 'created_at' => 'Datum registrace', + 'last_seen' => 'Poslední přihlášení', + 'is_guest' => 'Host', + 'joined' => 'Registrován', + 'is_online' => 'Nyní on-line', + 'is_offline' => 'Nyní offline', + 'send_invite' => 'Poslat pozvánku e-mailem', + 'send_invite_comment' => 'Poslat uvítací e-mail obsahující přihlašovací jméno a heslo.', + 'create_password' => 'Vytvořit heslo', + 'create_password_comment' => 'Zadejte heslo které se bude používat k přihlašování.', + 'reset_password' => 'Nové heslo', + 'reset_password_comment' => 'Pro změnu hesla, zadejte nové heslo.', + 'confirm_password' => 'Nové heslo znovu pro kontrolu', + 'confirm_password_comment' => 'Zadejte heslo znovu pro kontrolu správnosti.', + 'groups' => 'Skupiny', + 'empty_groups' => 'V této skupině nejsou žádní uživatelé.', + 'avatar' => 'Obrázek', + 'details' => 'Detaily', + 'account' => 'Účet', + 'block_mail' => 'Zablokovat všechny odchozí e-maily pro tohoto uživatele.', + 'status_guest' => 'Host', + 'status_activated' => 'Aktivován', + 'status_registered' => 'Registrován', + ], + 'group' => [ + 'label' => 'Skupina', + 'id' => 'ID', + 'name' => 'Název', + 'description_field' => 'Popis skupiny', + 'code' => 'Kód', + 'code_comment' => 'Zadejte unikátní kód pro jednoznačnou identifikaci této skupiny.', + 'created_at' => 'Vytvořeno', + 'users_count' => 'Počet uživatelů', + ], + 'groups' => [ + 'menu_label' => 'Skupiny', + 'all_groups' => 'Uživatelské skupiny', + 'new_group' => 'Nová skupina', + 'delete_selected_confirm' => 'Opravdu chcete smazat vybrané skupiny?', + 'list_title' => 'Správa skupin', + 'delete_confirm' => 'Opravdu chcete odstranit tuto skupinu?', + 'delete_selected_success' => 'Vybrané skupiny byly úspěšně odstraněny.', + 'delete_selected_empty' => 'Musíte nejdřív vybrat skupiny které chcete smazat.', + 'return_to_list' => 'Zpět na seznam skupin', + 'return_to_users' => 'Zpět na seznam uživatelů', + 'create_title' => 'Vytvořit skupinu', + 'update_title' => 'Upravit skupinu', + 'preview_title' => 'Náhled skupiny', + ], + 'login' => [ + 'attribute_email' => 'E-mail', + 'attribute_username' => 'Uživatelské jméno', + ], + 'account' => [ + 'account' => 'Správa účtu', + 'account_desc' => 'Formuláře správy účtu a přihlášení', + 'redirect_to' => 'Přesměrovat na', + 'redirect_to_desc' => 'Název stránky pro přesměrování po úpravě údajů, přihlášení nebo registraci.', + 'code_param' => 'Parametr aktivačního kódu', + 'code_param_desc' => 'Parametr z URL stránky, který se použije pro aktivační kód', + 'invalid_user' => 'Uživatel s těmito údaji nebyl nalezen.', + 'invalid_activation_code' => 'Zadán nesprávný parametr pro aktivační kód', + 'invalid_deactivation_pass' => 'Zadané heslo není správné.', + 'success_activation' => 'Váš účet byl úspěšně aktivován.', + 'success_deactivation' => 'Váš účet byl úspěšně deaktivován. Mrzí nás, že odcházíte!', + 'success_saved' => 'Nastavení bylo úspěšně uloženo!', + 'login_first' => 'Nejdříve musíte být přihlášeni!', + 'already_active' => 'Váš účet je již aktivován!', + 'activation_email_sent' => 'Aktivační e-mail byl zaslán na e-mail, který byl zadán při registraci.', + 'registration_disabled' => 'Registrace jsou dočasně pozastaveny.', + 'sign_in' => 'Přihlášení', + 'register' => 'Registrace', + 'full_name' => 'Celé jméno', + 'email' => 'E-mail', + 'password' => 'Heslo', + 'login' => 'Přihlášení', + 'new_password' => 'Nové heslo', + 'new_password_confirm' => 'Potvrzení nového hesla' + ], + 'reset_password' => [ + 'reset_password' => 'Obnova hesla', + 'reset_password_desc' => 'Formulář obnovy hesla', + 'code_param' => 'Parametr kódu pro obnovu hesla', + 'code_param_desc' => 'Parametr URL použitý pro obnovu hesla' + ], + 'session' => [ + 'session' => 'Session', + 'session_desc' => 'Vloží do stránky informace o přihlášení s možností omezení přístupových práv.', + 'security_title' => 'Povolit pouze', + 'security_desc' => 'Kdo má přístup k této stránce.', + 'all' => 'Všichni', + 'users' => 'Uživatelé', + 'guests' => 'Hosti', + 'redirect_title' => 'Přesměrovat na', + 'redirect_desc' => 'Stránka pro přesměrování, pokud je přístup zamítnut.', + 'logout' => 'Byli jste úspěšně odhlášeni!' + ] +]; diff --git a/plugins/rainlab/user/lang/de/lang.php b/plugins/rainlab/user/lang/de/lang.php new file mode 100644 index 0000000..a87f58b --- /dev/null +++ b/plugins/rainlab/user/lang/de/lang.php @@ -0,0 +1,248 @@ + [ + 'name' => 'Benutzer', + 'description' => 'Frontend-Benutzer-Verwaltung.', + 'tab' => 'Benutzer', + 'access_users' => 'Benutzer verwalten', + 'access_groups' => 'Benutzergruppen verwalten', + 'access_settings' => 'Benutzereinstellungen verwalten', + 'impersonate_user' => 'Als Benutzer einloggen', + ], + 'location' => [ + 'label' => 'Standort', + 'new' => 'Neuer Standort', + 'create_title' => 'Standort anlegen', + 'update_title' => 'Standort bearbeiten', + 'preview_title' => 'Standort ansehen', + ], + 'locations' => [ + 'menu_label' => 'Standorte', + 'menu_description' => 'Verfügbare Benutzer-Standorte und Provinzen verwalten.', + 'hide_disabled' => 'Deaktivierte verbergen', + 'enabled_label' => 'Aktiviert', + 'enabled_help' => 'Deaktivierte Standorte sind im Frontend nicht sichtbar.', + 'enable_or_disable_title' => 'Standorte aktivieren oder deaktivieren', + 'enable_or_disable' => 'Aktivieren oder deaktivieren', + 'selected_amount' => 'Standorte ausgewählt: :amount', + 'enable_success' => 'Standorte erfolgreich aktiviert.', + 'disable_success' => 'Standorte erfolgreich deaktiviert.', + 'disable_confirm' => 'Sind Sie sicher?', + 'list_title' => 'Standorte verwalten', + 'delete_confirm' => 'Möchten Sie diesen Standort wirklich löschen?', + 'return_to_list' => 'Zurück zur Standortliste', + ], + 'users' => [ + 'menu_label' => 'Benutzer', + 'all_users' => 'Alle Benutzer', + 'new_user' => 'Neuer Benutzer', + 'list_title' => 'Benutzer verwalten', + 'trashed_hint_title' => 'Benutzer hat sein Konto deaktiviert.', + 'trashed_hint_desc' => 'Dieser Benutzer hat sein Konto deaktiviert und möchte nicht mehr auf der Seite erscheinen. Er kann sein Konto jederzeit durch eine Anmeldung reaktivieren.', + 'banned_hint_title' => 'Benutzer wurde gesperrt.', + 'banned_hint_desc' => 'Dieser Benutzer wurde von einem Adminstrator gesperrt und kann sich somit nicht mehr anmelden.', + 'guest_hint_title' => 'Dieser Benutzer ist ein Gast', + 'guest_hint_desc' => 'Dieser Benutzer ist nur zu Referenzzwecken gespeichert und muss sich vor dem nächsten Login nochmals registrieren.', + 'activate_warning_title' => 'Benutzer nicht aktiviert!', + 'activate_warning_desc' => 'Dieser Benutzer wurde noch nicht aktiviert und kann sich nicht einloggen.', + 'activate_confirm' => 'Möchten Sie diesen Benutzer wirklich aktivieren?', + 'activated_success' => 'Benutzer erfolgreich aktiviert!', + 'activate_manually' => 'Benutzer manuell aktivieren', + 'convert_guest_confirm' => 'Soll dieser Benutzer zu einem Gast umgewandelt werden?', + 'convert_guest_manually' => 'Benutzer zu einem Gast umwandeln', + 'convert_guest_success' => 'Der Benutzer wurde zu einem Gast umgewandelt', + 'impersonate_user' => 'Als Benutzer einloggen', + 'impersonate_confirm' => 'Soll die Anmeldung mit diesem Benutzerkonto erfolgen? Nach der Abmeldung wird die bestehende Sitzung wiederhergestellt.', + 'impersonate_success' => 'Sie sind nun als diesen Benutzer angemeldet', + 'delete_confirm' => 'Möchten Sie diesen Benutzer wirklich löschen?', + 'unban_user' => 'Diesen Benutzer entsperren', + 'unban_confirm' => 'Möchten Sie diesen Benutzer wirklich entsperren?', + 'unbanned_success' => 'Der Benutzer wurde entsperrt', + 'return_to_list' => 'Zurück zur Benutzerliste', + 'update_details' => 'Update details', + 'bulk_actions' => 'Stapelbearbeitung', + 'delete_selected' => 'Ausgewählte löschen', + 'delete_selected_confirm' => 'Ausgewählte Benutzer löschen?', + 'delete_selected_empty' => 'Keine Benutzer zum Löschen ausgewählt.', + 'delete_selected_success' => 'Ausgewählte Benutzer erfolgreich gelöscht.', + 'activate_selected' => 'Ausgewählte aktivieren', + 'activate_selected_confirm' => 'Sollten die ausgewählten Benutzer aktiviert werden?', + 'activate_selected_empty' => 'Es sind keine Benutzer zur Aktivierung ausgewählt.', + 'activate_selected_success' => 'Die ausgewählten Benutzer wurden erfolgreich aktiviert.', + 'deactivate_selected' => 'Ausgewählte deaktivieren', + 'deactivate_selected_confirm' => 'Ausgewählte Benutzer deaktivieren?', + 'deactivate_selected_empty' => 'Es wurden keine Benutzer zum Deaktivieren ausgewählt.', + 'deactivate_selected_success' => 'Ausgewählte Benutzer erfolgreich deaktiviert.', + 'restore_selected' => 'Ausgewählte wiederherstellen', + 'restore_selected_confirm' => 'Ausgewählte Benutzer wiederherstellen?', + 'restore_selected_empty' => 'Es wurden keine Benutzer zum Wiederherstellen ausgewählt.', + 'restore_selected_success' => 'Ausgewählte Benutzer erfolgreich wiederhergestellt.', + 'ban_selected' => 'Ausgewählte sperren', + 'ban_selected_confirm' => 'Ausgewählte Benutzer sperren?', + 'ban_selected_empty' => 'Es wurden keine Benutzer zum Sperren ausgewählt.', + 'ban_selected_success' => 'Ausgewählte Benutzer erfolgreich gesperrt.', + 'unban_selected' => 'Ausgewählte entsperren', + 'unban_selected_confirm' => 'Ausgewählte Benutzer entsperren?', + 'unban_selected_empty' => 'Es wurden keine Benutzer zum Entsperren ausgewählt.', + 'unban_selected_success' => 'Ausgewählte Benutzer erfolgreich entsperrt.', + 'activating' => 'Aktiviere...', + ], + 'settings' => [ + 'users' => 'Benutzer', + 'menu_label' => 'Benutzer-Einstellungen', + 'menu_description' => 'Benutzer-Einstellungen verwalten.', + 'activation_tab' => 'Aktivierung', + 'signin_tab' => 'Einloggen', + 'registration_tab' => 'Registrierungen', + 'notifications_tab' => 'Benachrichtigungen', + 'allow_registration' => 'Benutzerregistrierung erlauben', + 'allow_registration_comment' => 'Falls dies deaktivert ist, können Benutzer nur von Administratoren erstellt werden.', + 'activate_mode' => 'Aktivierungsmodus', + 'activate_mode_comment' => 'Wählen Sie aus, wie ein Benutzer aktiviert werden soll.', + 'activate_mode_auto' => 'Automatisch', + 'activate_mode_auto_comment' => 'Automatische Aktivierung bei Registrierung.', + 'activate_mode_user' => 'Benutzer', + 'activate_mode_user_comment' => 'Der Benutzer aktiviert seinen eigenes Konto per E-Mail.', + 'activate_mode_admin' => 'Administrator', + 'activate_mode_admin_comment' => 'Nur ein Administrator kann einen Benutzer aktivieren.', + 'require_activation' => 'Anmeldung benötigt Aktivierung', + 'require_activation_comment' => 'Benutzer müssen zum Einloggen ein aktiviertes Konto besitzen.', + 'use_throttle' => 'Anmeldeversuche begrenzen', + 'use_throttle_comment' => 'Bei wiederholten Anmelde-Fehlversuchen wird der Benutzer temporär gesperrt.', + 'block_persistence' => 'Gleichzeitige Anmeldung unterbinden', + 'block_persistence_comment' => 'Wird diese Option aktiviert kann sich ein Benutzer nicht an mehreren Geräten gleichzeitig anmelden.', + 'login_attribute' => 'Anmelde-Attribut-Zuordnung', + 'login_attribute_comment' => 'Wählen Sie, welches Benutzerattribut zum Anmelden verwendet werden soll.', + 'location_tab' => 'Standort', + 'default_country' => 'Standort-Voreinstellung', + 'default_country_comment' => 'Wenn ein Benutzer keinen Standort angibt, wird dieser Standort als Standard gewählt.', + 'default_state' => 'Provinz-Voreinstellung', + 'default_state_comment' => 'Wenn ein Benutzer keinen Standort angibt, wird diese Provinz als Standard gewählt.', + ], + 'state' => [ + 'label' => 'Provinz', + 'name' => 'Name', + 'name_comment' => 'Anzeigenamen für diese Provinz eingeben.', + 'code' => 'Code', + 'code_comment' => 'Eindeutigen Code für diese Provinz eingeben.', + ], + 'country' => [ + 'label' => 'Land', + 'name' => 'Name', + 'code' => 'Code', + 'code_comment' => 'Eindeutigen Code für dieses Land eingeben.', + 'enabled' => 'Aktiv', + ], + 'user' => [ + 'label' => 'Benutzer', + 'id' => 'ID', + 'username' => 'Benutzername', + 'name' => 'Name', + 'name_empty' => 'Anonym', + 'surname' => 'Nachname', + 'email' => 'E-Mail', + 'created_at' => 'Registriert am', + 'last_seen' => 'Zuletzt gesehen', + 'is_guest' => 'Gast', + 'joined' => 'Registriert', + 'is_online' => 'Jetzt online', + 'is_offline' => 'Momentan offline', + 'send_invite' => 'Einladung per E-Mail versenden', + 'send_invite_comment' => 'Sendet eine E-Mail mit Benutzername und Passwort and den Benutzer', + 'create_password' => 'Passwort erstellen', + 'create_password_comment' => 'Gib ein neues Passwort ein, das zum Anmelden verwendet wird.', + 'reset_password' => 'Passwort setzen', + 'reset_password_comment' => 'Geben Sie hier ein Passwort ein, um das aktuelle Benutzerpasswort zu überschreiben.', + 'confirm_password' => 'Passwort bestätigen', + 'confirm_password_comment' => 'Passwort zur Bestätigung erneut eingeben.', + 'groups' => 'Gruppen', + 'empty_groups' => 'Es gibt keine Benutzer-Gruppen.', + 'avatar' => 'Avatar', + 'details' => 'Details', + 'account' => 'Benutzerkonto', + 'block_mail' => 'Blockiere alle ausgehenden E-Mails an diesen Benutzer.', + 'status_guest' => 'Gast', + 'status_activated' => 'Aktiviert', + 'status_registered' => 'Registriert', + ], + 'login' => [ + 'attribute_email' => 'E-Mail', + 'attribute_username' => 'Benutzername', + ], + 'account' => [ + 'account' => 'Benutzerkonto', + 'account_desc' => 'Benutzerkontoverwaltung.', + 'banned' => 'Sorry, dieser Benutzer ist momentan nicht aktiviert. Kontaktieren Sie uns für weitere Unterstützung.', + 'redirect_to' => 'Weiterleiten nach', + 'redirect_to_desc' => 'Seitenname zum Weiterleiten nach Update, Anmeldung oder Registrierung.', + 'code_param' => 'Aktivierungscode Parameter', + 'code_param_desc' => 'Dieser URL-Parameter wird als Registrierungs-Aktivierungscode verwendet', + 'force_secure' => 'Forciere sichere URLs', + 'force_secure_desc' => 'Verwende für Weiterleitungen immer das HTTPS-Protokoll.', + 'invalid_user' => 'Es wurde kein Benutzer mit diesen Zugangsdaten gefunden.', + 'invalid_activation_code' => 'Ungültiger Aktivierungscode übermittelt', + 'invalid_deactivation_pass' => 'Das eingegebene Passwort war ungültig.', + 'success_activation' => 'Benutzerkonto erfolgreich aktiviert.', + 'success_deactivation' => 'Konto erfolgreich deaktiviert. Schade, dass du gehst!', + 'success_saved' => 'Einstellungen erfolgreich gespeichert!', + 'login_first' => 'Sie müssen sich erst einloggen!', + 'already_active' => 'Ihr Benutzerkonto ist bereits aktiviert!', + 'activation_email_sent' => 'Eine Aktivierungs-E-Mail wurde an Ihre E-Mail-Adresse versendet.', + 'registration_disabled' => 'Registrierungen sind momentan deaktiviert.', + 'sign_in' => 'Anmelden', + 'register' => 'Registrieren', + 'full_name' => 'Name', + 'email' => 'E-Mail', + 'password' => 'Passwort', + 'login' => 'Anmelden', + 'new_password' => 'Neues Passwort', + 'new_password_confirm' => 'Neues Passwort bestätigen', + ], + 'reset_password' => [ + 'reset_password' => 'Passwort zurücksetzen', + 'reset_password_desc' => 'Formular zum Zurücksetzen des Passworts.', + 'code_param' => 'Reset-Code-Parameter', + 'code_param_desc' => 'URL-Parameter, der für den Reset-Code verwendet wird', + ], + 'session' => [ + 'session' => 'Session', + 'session_desc' => 'Fügt Benutzer-Session zu Seite hinzu und kann Zugriff einschränken.', + 'security_title' => 'Erlauben', + 'security_desc' => 'Wer hat Zugriff auf die Seite?', + 'all' => 'Jeder', + 'users' => 'Benutzer', + 'guests' => 'Gäste', + 'allowed_groups_title' => 'Gruppen zulassen', + 'allowed_groups_description' => 'Wählen Sie zugelassene Gruppen aus. Wird keine Gruppe ausgewhält sind alle zugelassen.', + 'redirect_title' => 'Weiterleiten nach', + 'redirect_desc' => 'Seitenname zum Weiterleiten bei verweigertem Zugriff.', + 'logout' => 'Sie haben sich erfolgreich ausgeloggt!', + 'stop_impersonate_success' => 'Sie sind nicht mehr als diesen Benutzer angemeldet.', + ], + 'group' => [ + 'label' => 'Gruppe', + 'id' => 'ID', + 'name' => 'Name', + 'description_field' => 'Beschreibung', + 'code' => 'Code', + 'code_comment' => 'Gebe einen eindeutigen Code ein, der die Gruppe identifiziert.', + 'created_at' => 'Erstellt am', + 'users_count' => 'Benutzer', + ], + 'groups' => [ + 'menu_label' => 'Gruppen', + 'all_groups' => 'Benutzergruppen', + 'new_group' => 'Neue Gruppe', + 'delete_selected_confirm' => 'Willst du die ausgewählten Gruppen wirklich löschen?', + 'list_title' => 'Gruppen verwalten', + 'delete_confirm' => 'Willst du diese Gruppe wirklich löschen?', + 'delete_selected_success' => 'Ausgewählte Gruppen erfolgreich gelöscht.', + 'delete_selected_empty' => 'Es wurden keine Gruppen zum Löschen ausgewählt.', + 'return_to_list' => 'Zurück zur Gruppenliste', + 'return_to_users' => 'Zurück zur Benutzerliste', + 'create_title' => 'Benutzergruppe erstellen', + 'update_title' => 'Benutzergruppe bearbeiten', + 'preview_title' => 'Vorschau der Benutzergruppe', + ], +]; diff --git a/plugins/rainlab/user/lang/en/lang.php b/plugins/rainlab/user/lang/en/lang.php new file mode 100644 index 0000000..baba6d9 --- /dev/null +++ b/plugins/rainlab/user/lang/en/lang.php @@ -0,0 +1,239 @@ + [ + 'name' => 'User', + 'description' => 'Front-end user management.', + 'tab' => 'Users', + 'access_users' => 'Manage Users', + 'access_groups' => 'Manage User Groups', + 'access_settings' => 'Manage User Settings', + 'impersonate_user' => 'Impersonate Users' + ], + 'users' => [ + 'menu_label' => 'Users', + 'all_users' => 'All Users', + 'new_user' => 'New User', + 'list_title' => 'Manage Users', + 'trashed_hint_title' => 'User has deactivated their account', + 'trashed_hint_desc' => 'This user has deactivated their account and no longer wants to appear on the site. They can restore their account at any time by signing back in.', + 'banned_hint_title' => 'User has been banned', + 'banned_hint_desc' => 'This user has been banned by an administrator and will be unable to sign in.', + 'guest_hint_title' => 'This is a guest user', + 'guest_hint_desc' => 'This user is stored for reference purposes only and needs to register before signing in.', + 'activate_warning_title' => 'User not activated!', + 'activate_warning_desc' => 'This user has not been activated and may be unable to sign in.', + 'activate_confirm' => 'Do you really want to activate this user?', + 'activated_success' => 'User has been activated', + 'activate_manually' => 'Activate this user manually', + 'convert_guest_confirm' => 'Convert this guest to a user?', + 'convert_guest_manually' => 'Convert to registered user', + 'convert_guest_success' => 'User has been converted to a registered account', + 'impersonate_user' => 'Impersonate user', + 'impersonate_confirm' => 'Impersonate this user? You can revert to your original state by logging out.', + 'impersonate_success' => 'You are now impersonating this user', + 'delete_confirm' => 'Do you really want to delete this user?', + 'unban_user' => 'Unban this user', + 'unban_confirm' => 'Do you really want to unban this user?', + 'unbanned_success' => 'User has been unbanned', + 'return_to_list' => 'Return to users list', + 'update_details' => 'Update details', + 'bulk_actions' => 'Bulk actions', + 'delete_selected' => 'Delete selected', + 'delete_selected_confirm' => 'Delete the selected users?', + 'delete_selected_empty' => 'There are no selected users to delete.', + 'delete_selected_success' => 'Successfully deleted the selected users.', + 'activate_selected' => 'Activate selected', + 'activate_selected_confirm' => 'Activate the selected users?', + 'activate_selected_empty' => 'There are no selected users to activate.', + 'activate_selected_success' => 'Successfully activated the selected users.', + 'deactivate_selected' => 'Deactivate selected', + 'deactivate_selected_confirm' => 'Deactivate the selected users?', + 'deactivate_selected_empty' => 'There are no selected users to deactivate.', + 'deactivate_selected_success' => 'Successfully deactivated the selected users.', + 'restore_selected' => 'Restore selected', + 'restore_selected_confirm' => 'Restore the selected users?', + 'restore_selected_empty' => 'There are no selected users to restore.', + 'restore_selected_success' => 'Successfully restored the selected users.', + 'ban_selected' => 'Ban selected', + 'ban_selected_confirm' => 'Ban the selected users?', + 'ban_selected_empty' => 'There are no selected users to ban.', + 'ban_selected_success' => 'Successfully banned the selected users.', + 'unban_selected' => 'Unban selected', + 'unban_selected_confirm' => 'Unban the selected users?', + 'unban_selected_empty' => 'There are no selected users to unban.', + 'unban_selected_success' => 'Successfully unbanned the selected users.', + 'unsuspend' => 'Unsuspend', + 'unsuspend_success' => 'User has been unsuspended.', + 'unsuspend_confirm' => 'Unsuspend this user?' + ], + 'settings' => [ + 'users' => 'Users', + 'menu_label' => 'User settings', + 'menu_description' => 'Manage user authentication, registration and activation settings.', + 'activation_tab' => 'Activation', + 'signin_tab' => 'Sign in', + 'registration_tab' => 'Registration', + 'password_policy_tab' => 'Password Policy', + 'profile_tab' => 'Profile', + 'notifications_tab' => 'Notifications', + 'allow_registration' => 'Allow user registration', + 'allow_registration_comment' => 'If this is disabled users can only be created by administrators.', + 'activate_mode' => 'Activation mode', + 'activate_mode_comment' => 'Select how a user account should be activated.', + 'activate_mode_auto' => 'Automatic', + 'activate_mode_auto_comment' => 'Activated automatically upon registration.', + 'activate_mode_user' => 'User', + 'activate_mode_user_comment' => 'The user activates their own account using mail.', + 'activate_mode_admin' => 'Administrator', + 'activate_mode_admin_comment' => 'Only an Administrator can activate a user.', + 'require_activation' => 'Sign in requires activation', + 'require_activation_comment' => 'Users must have an activated account to sign in.', + 'use_throttle' => 'Throttle attempts', + 'use_throttle_comment' => 'Repeat failed sign in attempts will temporarily suspend the user.', + 'use_register_throttle' => 'Throttle registration', + 'use_register_throttle_comment' => 'Prevent multiple registrations from the same IP in short succession.', + 'block_persistence' => 'Prevent concurrent sessions', + 'block_persistence_comment' => 'When enabled users cannot sign in to multiple devices at the same time.', + 'login_attribute' => 'Login attribute', + 'login_attribute_comment' => 'Select what primary user detail should be used for signing in.', + 'remember_login' => 'Remember login mode', + 'remember_login_comment' => 'Select if the user session should be persistent.', + 'remember_always' => 'Always', + 'remember_never' => 'Never', + 'remember_ask' => 'Ask the user on login', + 'min_password_length' => 'Min password length', + 'min_password_length_comment' => 'Password length required for users', + 'require_mixed_case' => 'Require mixed case', + 'require_mixed_case_comment' => 'Require uppercase and lowercase letters', + 'require_number' => 'Require number', + 'require_symbol' => 'Require special character', + 'require_uncompromised' => 'Require uncompromised', + 'require_uncompromised_comment' => 'Require non-leaked password', + ], + 'user' => [ + 'label' => 'User', + 'id' => 'ID', + 'username' => 'Username', + 'name' => 'Name', + 'name_empty' => 'Anonymous', + 'surname' => 'Surname', + 'email' => 'Email', + 'created_at' => 'Registered', + 'last_seen' => 'Last seen', + 'is_guest' => 'Guest', + 'joined' => 'Joined', + 'is_online' => 'Online now', + 'is_offline' => 'Currently offline', + 'send_invite' => 'Send invitation by email', + 'send_invite_comment' => 'Sends a welcome message containing login and password information.', + 'create_password' => 'Create Password', + 'create_password_comment' => 'Enter a new password used for signing in.', + 'reset_password' => 'Reset Password', + 'reset_password_comment' => 'To reset this users password, enter a new password here.', + 'confirm_password' => 'Password Confirmation', + 'confirm_password_comment' => 'Enter the password again to confirm it.', + 'groups' => 'Groups', + 'empty_groups' => 'There are no user groups available.', + 'avatar' => 'Avatar', + 'details' => 'Details', + 'account' => 'Account', + 'block_mail' => 'Block all outgoing mail sent to this user.', + 'status_label' => 'Status', + 'status_guest' => 'Guest', + 'status_activated' => 'Activated', + 'status_registered' => 'Registered', + 'created_ip_address' => 'Created IP Address', + 'last_ip_address' => 'Last IP Address', + ], + 'group' => [ + 'label' => 'Group', + 'id' => 'ID', + 'name' => 'Name', + 'description_field' => 'Description', + 'code' => 'Code', + 'code_comment' => 'Enter a unique code used to identify this group.', + 'created_at' => 'Created', + 'users_count' => 'Users' + ], + 'groups' => [ + 'menu_label' => 'Groups', + 'all_groups' => 'User Groups', + 'new_group' => 'New Group', + 'delete_selected_confirm' => 'Do you really want to delete selected groups?', + 'list_title' => 'Manage Groups', + 'delete_confirm' => 'Do you really want to delete this group?', + 'delete_selected_success' => 'Successfully deleted the selected groups.', + 'delete_selected_empty' => 'There are no selected groups to delete.', + 'return_to_list' => 'Back to groups list', + 'return_to_users' => 'Back to users list', + 'create_title' => 'Create User Group', + 'update_title' => 'Edit User Group', + 'preview_title' => 'Preview User Group' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Username' + ], + 'account' => [ + 'account' => 'Account', + 'account_desc' => 'User management form.', + 'banned' => 'Sorry, this user is currently not activated. Please contact us for further assistance.', + 'redirect_to' => 'Redirect to', + 'redirect_to_desc' => 'Page name to redirect to after update, sign in or registration.', + 'code_param' => 'Activation Code Param', + 'code_param_desc' => 'The page URL parameter used for the registration activation code', + 'force_secure' => 'Force secure protocol', + 'force_secure_desc' => 'Always redirect the URL with the HTTPS schema.', + 'invalid_user' => 'A user was not found with the given credentials.', + 'invalid_activation_code' => 'Invalid activation code supplied.', + 'invalid_deactivation_pass' => 'The password you entered was invalid.', + 'invalid_current_pass' => 'The current password you entered was invalid.', + 'success_activation' => 'Successfully activated your account.', + 'success_deactivation' => 'Successfully deactivated your account. Sorry to see you go!', + 'success_saved' => 'Settings successfully saved!', + 'login_first' => 'You must be logged in first!', + 'already_active' => 'Your account is already activated!', + 'activation_email_sent' => 'An activation email has been sent to your email address.', + 'activation_by_admin' => 'You have successfully registered. Your account is not yet active and must be approved by an administrator.', + 'registration_disabled' => 'Registrations are currently disabled.', + 'registration_throttled' => 'Registration is throttled. Please try again later.', + 'sign_in' => 'Sign in', + 'register' => 'Register', + 'full_name' => 'Full Name', + 'email' => 'Email', + 'password' => 'Password', + 'login' => 'Login', + 'new_password' => 'New Password', + 'new_password_confirm' => 'Confirm New Password', + 'update_requires_password' => 'Confirm password on update', + 'update_requires_password_comment' => 'Require the current password of the user when changing their profile.', + 'activation_page' => 'Activation Page', + 'activation_page_comment' => 'Select a page to use for activating the user account', + 'reset_page' => 'Reset Page', + 'reset_page_comment' => 'Select a page to use for resetting the account password', + ], + 'reset_password' => [ + 'reset_password' => 'Reset Password', + 'reset_password_desc' => 'Forgotten password form.', + 'code_param' => 'Reset Code Param', + 'code_param_desc' => 'The page URL parameter used for the reset code' + ], + 'session' => [ + 'session' => 'Session', + 'session_desc' => 'Adds the user session to a page and can restrict page access.', + 'security_title' => 'Allow only', + 'security_desc' => 'Who is allowed to access this page.', + 'all' => 'All', + 'users' => 'Users', + 'guests' => 'Guests', + 'allowed_groups_title' => 'Allow groups', + 'allowed_groups_description' => 'Choose allowed groups or none to allow all groups', + 'redirect_title' => 'Redirect to', + 'redirect_desc' => 'Page name to redirect if access is denied.', + 'logout' => 'You have been successfully logged out!', + 'stop_impersonate_success' => 'You are no longer impersonating a user.', + 'check_token' => 'Use token authentication', + 'check_token_desc' => 'Check this box to allow authentication using a bearer token.', + ] +]; diff --git a/plugins/rainlab/user/lang/es-ar/lang.php b/plugins/rainlab/user/lang/es-ar/lang.php new file mode 100644 index 0000000..40bf787 --- /dev/null +++ b/plugins/rainlab/user/lang/es-ar/lang.php @@ -0,0 +1,168 @@ + [ + 'name' => 'User', + 'description' => 'Front-end user management.', + 'tab' => 'Users', + 'access_users' => 'Administrar Usuarios', + 'access_groups' => 'Administrar Grupos de Usuarios', + 'access_settings' => 'Administrar Ajustes de Usuario' + ], + 'users' => [ + 'menu_label' => 'Usuarios', + 'all_users' => 'Todos los Usuarios', + 'new_user' => 'Nuevo Usuario', + 'list_title' => 'Administrar Usuarios', + 'activating' => 'Activando...', + 'trashed_hint_title' => 'El usuario ha desactivado su cuenta', + 'trashed_hint_desc' => 'Éste usuario ha desactivado su cuenta y no quiere volver a aparecer en el sitio. Ellos pueden restaurar su cuenta en cualquier momento al re-ingresar.', + 'banned_hint_title' => 'El usuario ha sido baneado', + 'banned_hint_desc' => 'Éste usuario ha sido baneado por un administrador y estará imposibilitado para ingresar.', + 'activate_warning_title' => 'El usuario no esta activado!', + 'activate_warning_desc' => 'Éste usuario no esta activado y quizá no pueda ingresar.', + 'activate_confirm' => 'Realmente desea activar éste usuario?', + 'activate_manually' => 'Activar éste usuario manualmente', + 'delete_confirm' => 'Realmente desea eliminar éste usuario?', + 'activated_success' => 'El usuario ha sido activado con éxito!', + 'return_to_list' => 'Regresar a la lista de usuarios', + 'delete_selected' => 'Eliminar seleccionados', + 'delete_selected_confirm' => 'Eliminar los usuarios seleccionados?', + 'delete_selected_empty' => 'No hay usuarios seleccionados para eliminar.', + 'delete_selected_success' => 'Los usuarios seleccionados se eliminaron con éxito.', + 'deactivate_selected' => 'Desactivar seleccionados', + 'deactivate_selected_confirm' => 'Desactivar los usuarios seleccionados?', + 'deactivate_selected_empty' => 'No hay usuarios seleccionados para desactivar.', + 'deactivate_selected_success' => 'Los usuarios seleccionados se desactivaron con éxito.', + 'restore_selected' => 'Reactivar seleccionados', + 'restore_selected_confirm' => 'Reactivar los usuarios seleccionados?', + 'restore_selected_empty' => 'No hay usuarios seleccionados para reactivar.', + 'restore_selected_success' => 'Los usuarios seleccionados se reactivaron con éxito.', + 'ban_selected' => 'Suspender seleccionados (Banear)', + 'ban_selected_confirm' => 'Suspender los usuarios seleccionados?', + 'ban_selected_empty' => 'No hay usuarios seleccionados para suspender.', + 'ban_selected_success' => 'Los usuarios seleccionados se suspendieron con éxito.', + 'unban_selected' => 'Reanudar seleccionados (Baneados)', + 'unban_selected_confirm' => 'Reanudar los usuarios seleccionados?', + 'unban_selected_empty' => 'No hay usuarios seleccionados para reanudar.', + 'unban_selected_success' => 'Los usuarios seleccionados se reanudaron con éxito.', + ], + 'settings' => [ + 'users' => 'Usuarios', + 'menu_label' => 'Ajustes de Usuario', + 'menu_description' => 'Administrar los ajustes de usuario.', + 'activation_tab' => 'Activación', + 'signin_tab' => 'Ingreso', + 'registration_tab' => 'Registración', + 'notifications_tab' => 'Notificaciones', + 'allow_registration' => 'Permitir registro de ususarios', + 'allow_registration_comment' => 'Si esta desactivado, los usuarios solo podrán ser creados por administradores.', + 'activate_mode' => 'Modo de Activación', + 'activate_mode_comment' => 'Seleccione la forma en que una cuenta debe ser activada.', + 'activate_mode_auto' => 'Automático', + 'activate_mode_auto_comment' => 'Se activa automáticamente en la registración.', + 'activate_mode_user' => 'Usuario', + 'activate_mode_user_comment' => 'El usuario activa su propia cuenta a través del e-mail.', + 'activate_mode_admin' => 'Administrador', + 'activate_mode_admin_comment' => 'Solo los administradores pueden activar usuarios.', + 'require_activation' => 'El ingreso requiere activación', + 'require_activation_comment' => 'Los usuarios necesitarán una cuenta activa para ingresar.', + 'use_throttle' => 'Regular intentos fallidos', + 'use_throttle_comment' => 'Repetidos intentos fallidos de ingreso suspenderán temporalmente al usuario.', + 'login_attribute' => 'Atributo para ingreso', + 'login_attribute_comment' => 'Seleccione que atributo sera utilizado para el ingreso.', + ], + 'user' => [ + 'label' => 'Usuario', + 'id' => 'ID', + 'username' => 'Nombre de Usuario', + 'name' => 'Nombre', + 'surname' => 'Apellido', + 'email' => 'Email', + 'created_at' => 'Registrado', + 'create_password' => 'Crear Contraseña', + 'create_password_comment' => 'Ingrese una nueva contraseña.', + 'reset_password' => 'Reiniciar contraseña ', + 'reset_password_comment' => 'Para reiniciar esta contraseña, ingrese un nueva aquí.', + 'confirm_password' => 'Confirmar contraseña', + 'confirm_password_comment' => 'Ingrese nuevamente la contraseña para confirmarla.', + 'groups' => 'Grupos', + 'empty_groups' => 'No hay grupos de usuarios disponibles.', + 'avatar' => 'Avatar', + 'details' => 'Detalles', + 'account' => 'Cuenta' + ], + 'group' => [ + 'label' => 'Grupo', + 'id' => 'ID', + 'name' => 'Nombre', + 'description_field' => 'Descripción', + 'code' => 'Código', + 'code_comment' => 'Ingrese un código único para identificar a este grupo.', + 'created_at' => 'Creado', + 'users_count' => 'Usuarios' + ], + 'groups' => [ + 'menu_label' => 'Grupos', + 'all_groups' => 'Grupos de Usuario', + 'new_group' => 'Nuevo Grupo', + 'delete_selected_confirm' => 'Realmente quiere eliminar los grupos seleccionados?', + 'list_title' => 'Administrar Grupos', + 'delete_confirm' => 'Realmente quiere eliminar este grupo?', + 'delete_selected_success' => 'Los grupos seleccionados se eliminaron con éxito.', + 'delete_selected_empty' => 'No hay grupos seleccionados para eliminar.', + 'return_to_list' => 'Volver a la lista de grupos', + 'return_to_users' => 'Volver a la lista de usuarios', + 'create_title' => 'Crear Grupo', + 'update_title' => 'Editar Grupo', + 'preview_title' => 'Ver Grupo' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Nombre de Usuario' + ], + 'account' => [ + 'account' => 'Cuenta', + 'account_desc' => 'Formulario de administración de usuario.', + 'redirect_to' => 'Redirigir a', + 'redirect_to_desc' => 'Nombre de la página a redirigir luego de una actualización, ingreso o registro.', + 'code_param' => 'Parámetro del Código de Activación', + 'code_param_desc' => 'El parámetro de URL utilizado para el código de activación de registro.', + 'invalid_user' => 'No se encontraron usuarios con los datos proporcionados.', + 'invalid_activation_code' => 'Código de activación inválido.', + 'invalid_deactivation_pass' => 'La contraseña ingresada no es válida.', + 'success_activation' => 'Su cuenta fue activada con éxito.', + 'success_deactivation' => 'Su cuenta fue desactivada con éxito.', + 'success_saved' => 'Ajustes guardados con éxito!', + 'login_first' => 'Primero debes ingresar con un usuario!', + 'already_active' => 'Su cuenta ya se encuentra activada!', + 'activation_email_sent' => 'Un mail de activación fue enviado a su cuenta de correo.', + 'registration_disabled' => 'Actualmente los registros no están habilitados.', + 'sign_in' => 'Ingresar', + 'register' => 'Registrarse', + 'full_name' => 'Nombre Completo', + 'email' => 'Email', + 'password' => 'Contraseña', + 'login' => 'Iniciar Sesión', + 'new_password' => 'Nueva Contraseña', + 'new_password_confirm' => 'Confirmar Nueva Contraseña' + ], + 'reset_password' => [ + 'reset_password' => 'Reiniciar Contraseña', + 'reset_password_desc' => 'Formulario de olvido de contraseña.', + 'code_param' => 'Parámetro del Código de Reinicio', + 'code_param_desc' => 'El parámetro de URL utilizado para el código de reinicio.' + ], + 'session' => [ + 'session' => 'Sesión', + 'session_desc' => 'Agrega la sesión de usuario a una pagina y permite restringir el acceso a la misma.', + 'security_title' => 'Permitir acceso a', + 'security_desc' => 'Quien tiene permiso para acceder a esta página.', + 'all' => 'Todos', + 'users' => 'Usuarios', + 'guests' => 'Invitados', + 'redirect_title' => 'Redirigir a', + 'redirect_desc' => 'Nombre de la página a redirigir si el acceso es denegado.', + 'logout' => 'La sesión se ha cerrado con éxito!' + ] +]; diff --git a/plugins/rainlab/user/lang/es/lang.php b/plugins/rainlab/user/lang/es/lang.php new file mode 100644 index 0000000..360d73e --- /dev/null +++ b/plugins/rainlab/user/lang/es/lang.php @@ -0,0 +1,212 @@ + [ + 'name' => 'Usuarios', + 'description' => 'Administración de usuarios en la interfaz del sistema.', + 'tab' => 'Usuarios', + 'access_users' => 'Administrar usuarios', + 'access_groups' => 'Administrar grupos', + 'access_settings' => 'Preferencias de usuario', + 'impersonate_user' => 'Personificar Usuario' + ], + 'users' => [ + 'menu_label' => 'Usuarios', + 'all_users' => 'Todos los usuarios', + 'new_user' => 'Nuevo usuario', + 'list_title' => 'Administrar usuarios', + 'trashed_hint_title' => 'El usuario tiene su perfil desactivado', + 'trashed_hint_desc' => 'Este usuario tiene desactivado su perfil y no quiere aparecer en el sitio. Los usuarios pueden reactivar su perfil en cualquier momento iniciando sesión nuevamente.', + 'banned_hint_title' => 'El Usuario ha sido bloqueado', + 'banned_hint_desc' => 'Este usuario ha sido bloqueado por un administrador y no será capaz de iniciar sesión.', + 'guest_hint_title' => 'Este usuario es un invitado', + 'guest_hint_desc' => 'El usuario es almacenado sólo para efectos de referencia y necesita registrarse antes de iniciar sesión.', + 'activate_warning_title' => '¡El usuario no se pudo activar!', + 'activate_warning_desc' => 'Este usuario todavía no ha sido activado y no será capaz de iniciar sesión.', + 'activate_confirm' => '¿Realmente desea activar este usuario?', + 'activated_success' => '¡El usuario ha sido activado exitosamente!', + 'activate_manually' => 'Activar usuario manualmente', + 'convert_guest_confirm' => '¿Convertir este invitado en usuario?', + 'convert_guest_manually' => 'Convertir a usuario registrado', + 'convert_guest_success' => 'El usuario ha sido convertido a una cuenta registrada', + 'impersonate_user' => 'Iniciar sesión como este usuario', + 'impersonate_confirm' => '¿Estás seguro que quieres iniciar sesión como este usuario? Puedes volver a tu estado original cerrando la sesión.', + 'impersonate_success' => 'Has iniciado sesión como este usuario correctamente.', + 'delete_confirm' => '¿Realmente desea eliminar este usuario?', + 'unban_user' => 'Desbloquear este usuario', + 'unban_confirm' => '¿Realmente desea desbloquear este usuario?', + 'unbanned_success' => 'El usuario ha sido desbloqueado', + 'return_to_list' => 'Volver a la lista de usuarios', + 'update_details' => 'Actualizar detalles', + 'bulk_actions' => 'Acciones en masa', + 'delete_selected' => 'Eliminar usuarios seleccionados', + 'delete_selected_confirm' => '¿Eliminar los usuarios seleccionados?', + 'delete_selected_empty' => 'No hay usuarios seleccionados a eliminar.', + 'delete_selected_success' => 'Se eliminaron exitosamente los usuarios seleccionados.', + 'activate_selected' => 'Activar usuarios seleccionados', + 'activate_selected_confirm' => '¿Activar los usuarios seleccionados?', + 'activate_selected_empty' => 'No hay usuarios seleccionados para activar.', + 'activate_selected_success' => 'Los usuarios seleccionados han sido activados exitosamente.', + 'deactivate_selected' => 'Desactivar usuarios seleccionados', + 'deactivate_selected_confirm' => '¿Desactivar los usuarios seleccionados?', + 'deactivate_selected_empty' => 'No hay usuarios seleccionados a desactivar.', + 'deactivate_selected_success' => 'Se desactivaron exitosamente los usuarios seleccionados.', + 'restore_selected' => 'Restablecer los usuarios seleccionados', + 'restore_selected_confirm' => '¿Restablecer los usuarios seleccionados?', + 'restore_selected_empty' => 'No hay usuarios seleccionados a restablecer.', + 'restore_selected_success' => 'Se restablecieron exitosamente los usuarios seleccionados.', + 'ban_selected' => 'Bloquear usuarios seleccionados', + 'ban_selected_confirm' => '¿Bloquear los usuarios seleccionados?', + 'ban_selected_empty' => 'No hay usuarios seleccionados a bloquear.', + 'ban_selected_success' => 'Se bloquearon exitosamente los usuarios seleccionados.', + 'unban_selected' => 'Desbloquear usuarios seleccionados', + 'unban_selected_confirm' => '¿Desbloquear los usuarios seleccionados?', + 'unban_selected_empty' => 'No hay usuarios seleccionados a desbloquear.', + 'unban_selected_success' => 'Se desbloquearon exitosamente los usuarios seleccionados.', + ], + 'settings' => [ + 'users' => 'Usuarios', + 'menu_label' => 'Preferencias de usuario', + 'menu_description' => 'Administra las preferencias de los usuarios.', + 'activation_tab' => 'Activación', + 'signin_tab' => 'Iniciar sesión', + 'registration_tab' => 'Registro', + 'notifications_tab' => 'Notificaciones', + 'allow_registration' => 'Permitir registro de usuarios', + 'allow_registration_comment' => 'Si está deshabilitado los usuarios sólo pueden ser creados por administradores.', + 'min_password_length' => 'Largo mínimo de la contraseña', + 'min_password_length_comment' => 'La cantidad mínima de caracteres requerida para contraseñas.', + 'activate_mode' => 'Modo de activación', + 'activate_mode_comment' => 'Seleccione como debería ser activado un perfil de usuario.', + 'activate_mode_auto' => 'Automática', + 'activate_mode_auto_comment' => 'Activada automáticamente al registrarse.', + 'activate_mode_user' => 'Usuario', + 'activate_mode_user_comment' => 'El usuario activa su perfil usando su e-mail.', + 'activate_mode_admin' => 'Administrador', + 'activate_mode_admin_comment' => 'Sólo un administrador puede activar un usuario.', + 'require_activation' => 'Inicio de sesión requiere activación.', + 'require_activation_comment' => 'Usuarios deben tener una perfil activado para poder iniciar sesión.', + 'use_throttle' => 'Límite de intentos', + 'use_throttle_comment' => 'Intentos de inicios de sesión seguidos que provocaran la suspensión temporal del perfil de usuario.', + 'block_persistence' => 'Prevenir sesiones concurrentes', + 'block_persistence_comment' => 'Prevenir que los usuarios habilitados puedan iniciar sesión desde múltiples dispositivos.', + 'login_attribute' => 'Atributo de inicio de sesión', + 'login_attribute_comment' => 'Seleccione que dato de usuario debería ser utilizado para el inicio de sesión.', + 'remember_login' => 'Modo recordar usuario', + 'remember_login_comment' => 'Selecciona si la sesión del usuario debe ser persistente.', + 'remember_always' => 'Siempre', + 'remember_never' => 'Nunca', + 'remember_ask' => 'Preguntar al usuario al iniciar sesión', + ], + 'user' => [ + 'label' => 'Usuario', + 'id' => 'ID', + 'username' => 'Nombre de usuario', + 'name' => 'Nombres', + 'name_empty' => 'Anónimo', + 'surname' => 'Apellidos', + 'email' => 'E-mail', + 'created_at' => 'Registrado', + 'last_seen' => 'Última vez visto', + 'is_guest' => 'Invitado', + 'joined' => 'Incorporado', + 'is_online' => 'En línea ahora', + 'is_offline' => 'Actualmente desconectado', + 'send_invite' => 'Enviar invitación por email', + 'send_invite_comment' => 'Envía un mensaje de bienvenida con información de inicio de sesión y contraseña.', + 'create_password' => 'Crear contraseña', + 'create_password_comment' => 'Ingrese nueva contraseña para iniciar sesión', + 'reset_password' => 'Restablecer contraseña', + 'reset_password_comment' => 'Para restablecer la contraseña del usuario, ingrese una nueva contraseña aquí.', + 'confirm_password' => 'Confirmación de contraseña', + 'confirm_password_comment' => 'Ingrese la contraseña nuevamente para confirmarla.', + 'groups' => 'Grupos', + 'empty_groups' => 'No hay grupos de usuarios disponibles.', + 'avatar' => 'Avatar', + 'details' => 'Detalles', + 'account' => 'Perfil', + 'block_mail' => 'Bloquear todos los envios de e-mail para este usuario.', + 'status_guest' => 'Invitado', + 'status_activated' => 'Activado', + 'status_registered' => 'Registrado', + ], + 'group' => [ + 'label' => 'Grupo', + 'id' => 'ID', + 'name' => 'Nombre', + 'description_field' => 'Descripción', + 'code' => 'Código', + 'code_comment' => 'Ingrese un código único para identificar este grupo.', + 'created_at' => 'Creado', + 'users_count' => 'Usuarios' + ], + 'groups' => [ + 'menu_label' => 'Grupos', + 'all_groups' => 'Grupos de usuarios', + 'new_group' => 'Nuevo grupo', + 'delete_selected_confirm' => '¿Realmente quiere eliminar todos los grupos seleccionados?', + 'list_title' => 'Administrar grupos', + 'delete_confirm' => '¿Realmente desea eliminar este grupo?', + 'delete_selected_success' => 'Los grupos seleccionados fueron eliminados exitosamente.', + 'delete_selected_empty' => 'No hay grupos seleccionados para eliminar.', + 'return_to_list' => 'Volver a la lista de grupos', + 'return_to_users' => 'Volver a la lista de usuarios', + 'create_title' => 'Añadir grupo', + 'update_title' => 'Editar grupo', + 'preview_title' => 'Vista previa de grupo' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Nombre de usuario' + ], + 'account' => [ + 'account' => 'Perfil', + 'account_desc' => 'Formulario para gestionar datos del usuario.', + 'banned' => 'Los sentimos, este usuario no se encuentra activado actualmente. Por favor contáctanos para mayor asistencia.', + 'redirect_to' => 'redirigir a', + 'redirect_to_desc' => 'Página hacia la cual redirigir despues de una actualización, inicio de sesión o registro.', + 'code_param' => 'Parámetro para el código de activación', + 'code_param_desc' => 'El parámetro de URL en la página usuado para el código de activación del registro.', + 'force_secure' => 'Forzar protocolo seguro', + 'force_secure_desc' => 'Siempre redirigir la URL utilizando HTTPS.', + 'invalid_user' => 'No se encontro un usuario con las credenciales proporcionadas.', + 'invalid_activation_code' => 'El código de activación que proporcionó es inválido.', + 'invalid_deactivation_pass' => 'La contraseña que ingresó es inválida.', + 'success_activation' => 'Su perfil fue activado exitosamente.', + 'success_deactivation' => 'Su perfil fue desactivado exitosamente. ¡Nos apena mucho su partida!', + 'success_saved' => '¡Preferencias guardadas exitosamente!', + 'login_first' => '¡Debe iniciar sesión primero!', + 'already_active' => '¡Su perfil ya estaba activado!', + 'activation_email_sent' => 'Un e-mail de confirmación ha sido enviado a su dirección de correo electrónico.', + 'registration_disabled' => 'El registro de usuarios está temporalmente deshabilitado.', + 'sign_in' => 'Iniciar sesión', + 'register' => 'Registro', + 'full_name' => 'Nombre completo', + 'email' => 'E-mail', + 'password' => 'Contraseña', + 'login' => 'Iniciar sesión', + 'new_password' => 'Nueva contraseña', + 'new_password_confirm' => 'Confirme su nueva contraseña' + ], + 'reset_password' => [ + 'reset_password' => 'Restablecer contraseña', + 'reset_password_desc' => 'Formulario de contraseña olvidada.', + 'code_param' => 'Parámetro para el código de restablecimiento', + 'code_param_desc' => 'El parámetro de URL de la página usado para el código de restablecimiento.e' + ], + 'session' => [ + 'session' => 'Sesión', + 'session_desc' => 'Agrega la sesión del usuario a una página y puede restringir el acceso a dicha página.', + 'security_title' => 'Permitir solamente', + 'security_desc' => 'Quién es permitido acceder a esta página.', + 'all' => 'Todos', + 'users' => 'Usuarios', + 'guests' => 'Invitados', + 'allowed_groups_title' => 'Permitir grupos', + 'allowed_groups_description' => 'Selecciona los grupos permitidos o ninguno para permitir todos los grupos', + 'redirect_title' => 'redirigir a', + 'redirect_desc' => 'Página a la cual redirigir si el acceso es denegado.', + 'logout' => '¡Ha terminado exitosamente su sesión!', + 'stop_impersonate_success' => 'Has dejado de personificar al usuario.', + ] +]; diff --git a/plugins/rainlab/user/lang/fa/lang.php b/plugins/rainlab/user/lang/fa/lang.php new file mode 100644 index 0000000..8b2b2f0 --- /dev/null +++ b/plugins/rainlab/user/lang/fa/lang.php @@ -0,0 +1,191 @@ + [ + 'name' => 'کاربر', + 'description' => 'مدیریت کاربران', + 'tab' => 'کاربران', + 'access_users' => 'مدیریت کاربران', + 'access_groups' => 'مدیریت گروه‌های کاربران', + 'access_settings' => 'مدیریت تنطیمات کاربران', + 'impersonate_user' => 'از دید کاربران' + ], + 'users' => [ + 'menu_label' => 'کاربران', + 'all_users' => 'همه کاربران', + 'new_user' => 'کاربر جدید', + 'list_title' => 'مدیریت کاربران', + 'trashed_hint_title' => 'کاربر حساب خود را غیر فعال کرده است', + 'trashed_hint_desc' => 'این کاربر حساب خود را غیر فعال کرده است و علاقه ای به ادامه فعالیت در سایت را ندارد. کاربران با ورود مجدد به سایت میتوانند حساب خود را فعال کنند.', + 'banned_hint_title' => 'حساب کاربری مسدود است', + 'banned_hint_desc' => 'حساب این کاربر توسط مدیر مسدود است و نمی تواند به سیستم وارد شود', + 'guest_hint_title' => 'این کاربر مهمان است', + 'guest_hint_desc' => 'این کاربر برای مرجع دهی ثبت شده است باید ثبت نام و وارد سیستم شود.', + 'activate_warning_title' => 'کاربر فعال نمیباشد!', + 'activate_warning_desc' => 'این کاربر فعال نشده است و نمیتواند وارد سایت شود.', + 'activate_confirm' => 'آیا از فعالسازی این کاربر اطمینان دارید؟', + 'activated_success' => 'کاربر با موفقیت فعال شد.', + 'activate_manually' => 'فعال سازی دستی این کاربر', + 'convert_guest_confirm' => 'تبدیل این کاربر به مهمان؟', + 'convert_guest_manually' => 'تبدیل به کاربر ثبت نام شده', + 'convert_guest_success' => 'کارب به حالت ثبت نام شده تغییر پیدا کرد', + 'delete_confirm' => 'آیا از حذف این کاربر اطمینان دارید؟', + 'unban_user' => 'رفع انتسداد حساب کاربری', + 'unban_confirm' => 'آیا از رفع انسداد حساب کاربری این شخص اطمینان دارید؟', + 'unbanned_success' => 'حساب کاربری رفع انسداد شد', + 'return_to_list' => 'بازگشت به لیست کاربران', + 'update_details' => 'ویرایش جزئیات', + 'bulk_actions' => 'اعمال گروهی', + 'delete_selected' => 'حذف انتخاب شده', + 'delete_selected_confirm' => 'آیا از حذف کاربران انتخاب شده اطمینان داری؟', + 'delete_selected_empty' => 'کاربری جهت حذف انتخاب نشده است.', + 'delete_selected_success' => 'کاربران انتخاب شده با موفقیت حذف شدند.', + 'deactivate_selected' => 'غیر فعال سازی انتخاب شده', + 'deactivate_selected_confirm' => 'کاربران انتخاب شده غیرفعال شوند؟', + 'deactivate_selected_empty' => 'کاربری برای غیر فعال سازی انتخاب نشده است', + 'deactivate_selected_success' => 'کاربران انتخاب شده با موفقیت غیرفعال شدند', + 'restore_selected' => 'بازسازی انتخاب شده ها', + 'restore_selected_confirm' => 'کاربرانت انتخاب شده بازسازی شوند؟', + 'restore_selected_empty' => 'کاربری برای بازسازی انتخاب نشده', + 'restore_selected_success' => 'کاربران انتخاب شده با موفقیت بازسازی شدند', + 'ban_selected' => 'مسدود کردن انتخاب شده ها', + 'ban_selected_confirm' => 'کاربران انتخاب شده مسدود شوند؟', + 'ban_selected_empty' => 'کاربری برای اسنداد حساب انتخاب نشده است', + 'ban_selected_success' => 'حساب کاربران انتخاب شده با موفقیت مسدود شد', + 'unban_selected' => 'رفع انسداد انتخاب شده ها', + 'unban_selected_confirm' => 'کاربران انتخاب شده رفع انسداد شوند؟', + 'unban_selected_empty' => 'کاربری برای رفع انسداد انتخاب نشده است', + 'unban_selected_success' => 'کاربران انتخاب شده با موفقیت رفع انسداد شدند', + 'activating' => 'فعال سازی...', + ], + 'settings' => [ + 'users' => 'کاربران', + 'menu_label' => 'تنظیمات کاربران', + 'menu_description' => 'مدیریت تنظیمات مربوط به کاربر.', + 'activation_tab' => 'فعال سازی', + 'signin_tab' => 'ورود', + 'registration_tab' => 'ایجاد حساب کاربری', + 'notifications_tab' => 'هشدار ها', + 'allow_registration' => 'به کاربران اجازه ثبت نام داده شود.', + 'allow_registration_comment' => 'اگر این گزینه غیر فعال باشد حساب کاربری فقط توسط مدیران میتواند ایجاد شود.', + 'activate_mode' => 'روش فعال سازی', + 'activate_mode_comment' => 'روشی را که میخواهید حساب های کاربری از آن طریق فعال شوند را انتخاب نمایید.', + 'activate_mode_auto' => 'خودکار', + 'activate_mode_auto_comment' => 'بهنگام ثبت نام حساب کاربری به صورت خودکار فعال شود.', + 'activate_mode_user' => 'کاربر', + 'activate_mode_user_comment' => 'کاربران حساب خود را از طریق ایمیل فعال نمایند.', + 'activate_mode_admin' => 'مدیریت', + 'activate_mode_admin_comment' => 'فقط مدیران حساب کاربری را فعال نمایید.', + 'require_activation' => 'ورود نیاز مند فعال سازی حساب کاربری می باشد', + 'require_activation_comment' => 'کاربران باید دارای حساب کاربری فعال جهت ورود باشند.', + 'use_throttle' => 'جلو گیری از ورود', + 'use_throttle_comment' => 'تکرار ورود نا موفق کاربر را به طور موقت غیر فعال میکند.', + 'login_attribute' => 'مشخصه ی ورود', + 'login_attribute_comment' => 'مشخصه ای را که کاربر برای ورود باید وارد نماید انتخاب نمایید.', + ], + 'user' => [ + 'label' => 'کاربر', + 'id' => 'مشخصه', + 'username' => 'نام کاربری', + 'name' => 'نام', + 'name_empty' => 'ناشناس', + 'surname' => 'نام خانوادگی', + 'email' => 'پست الکترونیکی', + 'created_at' => 'تاریخ ثبت نام', + 'last_seen' => 'آخرین بازدید', + 'is_guest' => 'مهمان', + 'joined' => 'عضو شده', + 'is_online' => 'آنلاین', + 'is_offline' => 'هم اکنون آفلاین', + 'send_invite' => 'ارسال دعوت نامه با ایمیل', + 'send_invite_comment' => 'ارسال ایمیل خوش آمد شامل رمز عبور و نام کاربری', + 'create_password' => 'ساخت رمزعبور', + 'create_password_comment' => 'رمز جدید برای استفاده کاربر در زمان ورود را وارد کنید', + 'reset_password' => 'تنظیم مجدد کلمه عبور', + 'reset_password_comment' => 'جهت تنظیم مجدد کلمه عبور کاربر ، کلمه عبور جدید را وارد نمایید.', + 'confirm_password' => 'تایید کلمه عبور', + 'confirm_password_comment' => 'جهت تایید کلمه عبور را مجددا وارد نمایید.', + 'groups' => 'گرو ها', + 'empty_groups' => 'گروه کاربری موجود نیست', + 'avatar' => 'نمایه', + 'details' => 'جزییات', + 'account' => 'حساب کاربری', + 'block_mail' => 'هیچ ایمیلی به این کاربر ارسال نشود', + 'status_guest' => 'مهمان', + 'status_activated' => 'فعال', + 'status_registered' => 'عضو شده', + 'user' => 'user', + ], + 'group' => [ + 'label' => 'گروه', + 'id' => 'مشخصه', + 'name' => 'نام', + 'description_field' => 'توضیحات', + 'code' => 'کد یکتا', + 'code_comment' => 'کد یکتایی را جهت دسترسی به این گروه وارد نمایید', + 'created_at' => 'تاریخ ایجاد', + 'users_count' => 'کاربران', + ], + 'groups' => [ + 'menu_label' => 'گروه ها', + 'all_groups' => 'گروه های کاربر', + 'new_group' => 'گروه جدید', + 'delete_selected_confirm' => 'آیا از حذف گروه های انتخاب شده اطمینان دارید؟', + 'list_title' => 'مدیریت گروه ها', + 'delete_confirm' => 'آیا از حذف این گروه اطمینان دارید؟', + 'delete_selected_success' => 'گروه های انتخاب شده با موفقیت حذف شدند.', + 'delete_selected_empty' => 'گروهی جهت حذف انتخاب نشده است.', + 'return_to_list' => 'بازگشت به لیست گروه ها', + 'return_to_users' => 'بازگشت به لیست کاربران', + 'create_title' => 'ایجاد گروه کاربری جدید', + 'update_title' => 'ویرایش گروه کاربری', + 'preview_title' => 'پیش نمایش گروه کاربری', + ], + 'login' => [ + 'attribute_email' => 'پست الکترونیکی', + 'attribute_username' => 'نام کاربری', + ], + 'account' => [ + 'account' => 'حساب کاربری', + 'account_desc' => 'فرم مدیریت کاربران.', + 'redirect_to' => 'انتقال به', + 'redirect_to_desc' => 'نام صفحه ای که کاربر پس از ورود باید به آن صفحه منتقل شود.', + 'code_param' => 'پارامتر کد فعال سازی', + 'code_param_desc' => 'پارامتر آدرس صفحه جهت استفاده در کد فعال سازی بهنگام ثبت نام', + 'invalid_user' => 'کاربری با اطلاعات وارد شده یافت نشد.', + 'invalid_activation_code' => 'مد فعالسازی معتبر نمیباشد', + 'invalid_deactivation_pass' => 'کلمه عبور وارد شده صحیح نمی باشد.', + 'success_activation' => 'حساب کاربری شما با موفقیت فعال شد.', + 'success_deactivation' => 'حساب شما با موفقیت غیر فعال شد. از رفتن شما متاسفیم.', + 'success_saved' => 'تنظیمات با موفقیت اعمال شدند.', + 'login_first' => 'شما باید وارد حساب کاربری خود شوید!', + 'already_active' => 'حساب کاربری شما قبلا فعال شده است!', + 'activation_email_sent' => 'یک پست الکترونیکی حاوی آدرس فعال سازی به ایمیل شما ارسال شد.', + 'registration_disabled' => 'در حال حاظر سرویس ثبت نام فعال نمی باشد.', + 'sign_in' => 'ورود', + 'register' => 'ثبت نام', + 'full_name' => 'نام کامل', + 'email' => 'پست الکترونیکی', + 'password' => 'کلمه عبور', + 'login' => 'نام کاربری', + 'new_password' => 'کلمه عبور جدید', + 'new_password_confirm' => 'تایید کلمه عبور', + ], + 'reset_password' => [ + 'reset_password' => 'بازنشانی کلمه عبور', + 'reset_password_desc' => 'فرم کلمه عبور فراموش شده.', + 'code_param' => 'پارامتر کد بازنشانی', + 'code_param_desc' => 'پارامتر آدرس صفحه ای که جهت کد بازنشانی استفاده خوهد شد', + ], + 'session' => [ + 'session' => 'جلسه', + 'session_desc' => 'جلسه کاربری را به صفحه جهت دسترسی کاربران اضافه می کند.', + 'security_title' => 'دسترسی برای', + 'security_desc' => 'چه کسانی میتوانند به این صفحه دسترسی داشته باشند؟', + 'all' => 'همه', + 'users' => 'کاربران', + 'guests' => 'میهمان ها', + 'redirect_title' => 'انتقال به', + 'redirect_desc' => 'نام صفحه‌ای که در صورت عدم اجازه دسترسی کاربر به آن انتقال پیدا می‌کند.', + 'logout' => 'با موفقیت از سیستم خارج شدید!', + 'stop_impersonate_success' => 'دیگر در نقشِ سایر کاربران نیستید.', + ], +]; diff --git a/plugins/rainlab/user/lang/fr/lang.php b/plugins/rainlab/user/lang/fr/lang.php new file mode 100644 index 0000000..9e32168 --- /dev/null +++ b/plugins/rainlab/user/lang/fr/lang.php @@ -0,0 +1,206 @@ + [ + 'name' => 'Utilisateur', + 'description' => 'Gestion des utilisateurs Front-End.', + 'tab' => 'Utilisateur', + 'access_users' => 'Gérer les utilisateurs', + 'access_groups' => 'Gérer les groupes', + 'access_settings' => 'Gérer les paramètres', + 'impersonate_user' => 'Usurper l\'identité des utilisateurs' + ], + 'users' => [ + 'menu_label' => 'Utilisateurs', + 'all_users' => 'Tous les utilisateurs', + 'new_user' => 'Nouvel utilisateur', + 'list_title' => 'Gestion des utilisateurs', + 'trashed_hint_title' => 'L’utilisateur a désactivé son compte', + 'trashed_hint_desc' => 'Cet utilisateur a désactivé son compte ou ne souhaite plus apparaître sur le site. Il peut réactiver son compte à tout moment en se réinscrivant.', + 'banned_hint_title' => 'L’utilisateur a été banni', + 'banned_hint_desc' => 'Cet utilisateur a été banni par l’administrateur et ne pourra plus se réinscrire.', + 'guest_hint_title' => 'Ceci est un utilisteur invité', + 'guest_hint_desc' => 'Cette utilisateur est enregistré comme référence seulement, il doit s\'inscire avant de se connecter.', + 'activate_warning_title' => 'L’utilisateur n’est pas activé !', + 'activate_warning_desc' => 'Cet utilisateur n’a pas été activé et sera dans l’impossibilité de se connecter.', + 'activate_confirm' => 'Confirmez-vous l’activation de cet utilisateur ?', + 'activated_success' => 'L’utilisateur a été activé avec succès !', + 'activate_manually' => 'Activer cet utilisateur manuellement', + 'convert_guest_confirm' => 'Convertir cet invité en utilisateur?', + 'convert_guest_manually' => 'Convertir en utilisateur enregistré', + 'convert_guest_success' => 'L\'utilisateur à été converti en compte enregistré', + 'impersonate_user' => 'Usurper l\'identité d\'un utilisateur', + 'impersonate_confirm' => 'Usurper l\'identité de cet utilisateur? Vous pouvez revenir à votre état d\'origine en vous déconnectant.', + 'impersonate_success' => 'Vous êtes en train d\'usurper l\'identité de cet utilisateur', + 'delete_confirm' => 'Confirmez-vous la suppression de cet utilisateur ?', + 'unban_user' => 'Lever le bannissement de cet utilisateur', + 'unban_confirm' => 'Confirmez-vous la levée du bannissement de cet utilisateur ?', + 'unbanned_success' => 'L’utilisateur n’est plus banni', + 'return_to_list' => 'Retour à la liste des utilisateurs', + 'update_details' => 'Mettre à jour les informations', + 'bulk_actions' => 'Actions groupées', + 'delete_selected' => 'Supprimer la sélection', + 'delete_selected_confirm' => 'Supprimer les utilisateurs sélectionnés ?', + 'delete_selected_empty' => 'Aucun utilisateur n’a été sélectionné pour la suppression.', + 'delete_selected_success' => 'Les utilisateurs sélectionnés ont été supprimés correctement.', + 'activate_selected' => 'Activer la sélection', + 'activate_selected_confirm' => 'Activer les utilisateurs sélectionnés?', + 'activate_selected_empty' => 'Aucun utilisateur sélectionné à activer.', + 'activate_selected_success' => 'Les utilisateurs sélectionnés ont été activé avec succès.', + 'deactivate_selected' => 'Désactiver la sélection', + 'deactivate_selected_confirm' => 'Désactiver les utilisateurs sélectionnés ?', + 'deactivate_selected_empty' => 'Il n’y a aucun utilisateur sélectionné à désactiver.', + 'deactivate_selected_success' => 'Les utilisateurs sélectionnés ont été désactivés avec succès.', + 'restore_selected' => 'Activer la sélection', + 'restore_selected_confirm' => 'Activer les utilisateurs sélectionnés ?', + 'restore_selected_empty' => 'Il n’y a aucun utilisateur sélectionné à activer.', + 'restore_selected_success' => 'Les utilisateurs sélectionnés ont été activés avec succès.', + 'ban_selected' => 'Bannir la sélection', + 'ban_selected_confirm' => 'Bannir les utilisateurs sélectionnés ?', + 'ban_selected_empty' => 'Il n’y a aucun utilisateur sélectionné à bannir.', + 'ban_selected_success' => 'Les utilisateurs sélectionnés ont été bannis avec succès.', + 'unban_selected' => 'Lever le bannissement de la sélection', + 'unban_selected_confirm' => 'Lever le bannissement des utilisateurs sélectionnés ?', + 'unban_selected_empty' => 'Il n’y a aucun utilisateur sélectionné pour lesquels lever le bannissement.', + 'unban_selected_success' => 'Le bannissement des utilisateurs sélectionnés a été levé avec succès.', + ], + 'settings' => [ + 'users' => 'Utilisateurs', + 'menu_label' => 'Paramètres utilisateurs', + 'menu_description' => 'Gérer les paramètres liés aux utilisateurs.', + 'activation_tab' => 'Activation', + 'signin_tab' => 'Connexion', + 'registration_tab' => 'Enregistrement', + 'notifications_tab' => 'Notifications', + 'allow_registration' => 'Autoriser l\'inscription des utilisateurs', + 'allow_registration_comment' => 'Si désactivé, les utilisateurs ne peuvent être créés que par des administrateurs.', + 'activate_mode' => 'Mode d’activation', + 'activate_mode_comment' => 'Choisissez la méthode d’activation des comptes d’utilisateurs.', + 'activate_mode_auto' => 'Automatique', + 'activate_mode_auto_comment' => 'Activation automatique après inscription.', + 'activate_mode_user' => 'Utilisateur', + 'activate_mode_user_comment' => 'L’utilisateur active son compte par email.', + 'activate_mode_admin' => 'Administrateur', + 'activate_mode_admin_comment' => 'Seul un administrateur peut activer un utilisateur.', + 'require_activation' => 'Vérifier l’activation des comptes utilisateurs lors de la connexion', + 'require_activation_comment' => 'Si activé, les utilisateurs doivent avoir leur compte activé pour pouvoir se connecter.', + 'use_throttle' => 'Tentatives de connexion ratées', + 'use_throttle_comment' => 'En cas de tentatives répétées de connexion, l’utilisateur sera suspendu temporairement.', + 'block_persistence' => 'Empêcher les sessions simultanées', + 'block_persistence_comment' => 'Lorsque activée, les utilisateurs ne peuvent pas se connecter à plusieurs appareils en même temps.', + 'login_attribute' => 'Attribut pour l’identifiant', + 'login_attribute_comment' => 'Choisissez l’attribut utilisateur à utiliser comme identifiant.', + ], + 'user' => [ + 'label' => 'Utilisateur', + 'id' => 'ID', + 'username' => 'Identifiant', + 'name' => 'Prénom', + 'name_empty' => 'Anonyme', + 'surname' => 'Nom', + 'email' => 'E-mail', + 'created_at' => 'Enregistré le', + 'last_seen' => 'Dernière connexion', + 'is_guest' => 'Invité', + 'joined' => 'Inscrit le', + 'is_online' => 'Est actuellement connecté', + 'is_offline' => 'N’est pas connecté', + 'send_invite' => 'Envoyer une invitation par email', + 'send_invite_comment' => 'Envoie un message de bienvenue contenant les informations de connexion et de mot de passe.', + 'create_password' => 'Créer un mot de passe', + 'create_password_comment' => 'Entrez un nouveau mot de passe de connexion.', + 'reset_password' => 'Réinitialiser le mot de passe', + 'reset_password_comment' => 'Pour effacer le mot de passe de cet utilisateur, entrez un nouveau mot de passe ici.', + 'confirm_password' => 'Confirmation du mot de passe', + 'confirm_password_comment' => 'Entrez à nouveau le mot de passe pour le confirmer.', + 'groups' => 'Groupes', + 'empty_groups' => 'Aucun groupe d\'utilisateurs disponible.', + 'avatar' => 'Avatar', + 'details' => 'Détails', + 'account' => 'Compte', + 'block_mail' => 'Bloquer tous les e-mails sortants à destination de cet utilisateur.', + 'status_guest' => 'Invité', + 'status_activated' => 'Activé', + 'status_registered' => 'Enregistré', + ], + 'group' => [ + 'label' => 'Groupe d’utilisateurs', + 'id' => 'ID', + 'name' => 'Nom', + 'description_field' => 'Description', + 'code' => 'Code', + 'code_comment' => 'Entrez un code unique pour y accéder via l’API', + 'created_at' => 'Créé le', + 'users_count' => 'Nombre d’utilisateurs', + ], + 'groups' => [ + 'menu_label' => 'Groupes', + 'all_groups' => 'Tous les groupes', + 'new_group' => 'Nouveau groupe', + 'delete_selected_confirm' => 'Confirmez-vous la suppression des groupes sélectionnés ?', + 'list_title' => 'Groupes d’utilisateurs', + 'delete_confirm' => 'Confirmez-vous la suppression de ce groupe d’utilisateurs ?', + 'delete_selected_success' => 'Les groupes d’utilisateurs sélectionnés ont été supprimés avec succès.', + 'delete_selected_empty' => 'Il n’a aucun groupe d’utilisateurs sélectionné à supprimer.', + 'return_to_list' => 'Retour à la liste des groupes', + 'return_to_users' => 'Retour à la liste des utilisateurs', + 'create_title' => 'Nouveau groupe d’utilisateurs', + 'update_title' => 'Modifier un groupe d’utilisateurs', + 'preview_title' => 'Visualiser le groupe d\'utilisateurs', + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Pseudo', + ], + 'account' => [ + 'account' => 'Compte', + 'account_desc' => 'Gestion du compte utilisateur.', + 'banned' => 'Désolé, cet utilisateur n\'est actuellement pas activé. S\'il vous plaît contactez-nous pour plus d\'aide.', + 'redirect_to' => 'Rediriger vers', + 'redirect_to_desc' => 'Nom de la page de redirection après la mise à jour, la connexion ou l’enregistrement.', + 'code_param' => 'Paramètre code d’activation', + 'code_param_desc' => 'URL de la page utilisée pour l’enregistrement du code d’activation', + 'force_secure' => 'Forer le protocole sécurisé', + 'force_secure_desc' => 'Toujours rediriger l\'URL avec le schéma HTTPS.', + 'invalid_user' => 'Aucun utilisateur ne correspond aux identifiants fournis.', + 'invalid_activation_code' => 'Le code d’activation fourni est invalide.', + 'invalid_deactivation_pass' => 'Le mot de passe saisi est invalide.', + 'success_activation' => 'Votre compte a été activé avec succès !', + 'success_deactivation' => 'Votre compte a été désactivé avec succès. Nous somme navrés de vous voir partir !', + 'success_saved' => 'Vos paramètres ont été enregistrés avec succès !', + 'login_first' => 'Vous devez d’abord vous connecter !', + 'already_active' => 'Votre compte a déjà été activé !', + 'activation_email_sent' => 'Un e-mail d’activation a été envoyé sur votre adresse e-mail personnelle.', + 'registration_disabled' => 'La création de compte est désactivée pour le moment.', + 'sign_in' => 'Connexion', + 'register' => 'Créer un compte', + 'full_name' => 'Nom complet', + 'email' => 'E-mail', + 'password' => 'Mot de passe', + 'login' => 'Identifiant', + 'new_password' => 'Nouveau mot de passe', + 'new_password_confirm' => 'Confirmez le nouveau mot de passe', + ], + 'reset_password' => [ + 'reset_password' => 'Réinitialiser le mot de passe', + 'reset_password_desc' => 'Formulaire de récupération du mot de passe.', + 'code_param' => 'Code de réinitialisation', + 'code_param_desc' => 'URL de la page utilisée pour le code de réinitialisation', + ], + 'session' => [ + 'session' => 'Session', + 'session_desc' => 'Ajoute la session utilisateur à une page et permet de restreindre l’accès à la page.', + 'security_title' => 'Autorisations spéciales', + 'security_desc' => 'Personne(s) autorisée(s) à accéder à cette page.', + 'all' => 'Tous', + 'users' => 'Utilisateurs', + 'guests' => 'Invités', + 'allowed_groups_title' => 'Autoriser les groupes', + 'allowed_groups_description' => 'Choisissez les groupes autorisés ou aucun pour autoriser tous les groupes', + 'redirect_title' => 'Rediriger vers', + 'redirect_desc' => 'Nom de la page de redirection au cas où l’accès est refusé.', + 'logout' => 'Vous avez été déconnecté avec succès.', + 'stop_impersonate_success' => 'Vous n\'êtes plus en train d\'usurper l\'identité d\'un utilisateur', + ], + +]; diff --git a/plugins/rainlab/user/lang/hu/lang.php b/plugins/rainlab/user/lang/hu/lang.php new file mode 100644 index 0000000..ecc149f --- /dev/null +++ b/plugins/rainlab/user/lang/hu/lang.php @@ -0,0 +1,223 @@ + [ + 'name' => 'Felhasználók', + 'description' => 'Felhasználók menedzselése a weboldalon.', + 'tab' => 'Felhasználók', + 'access_users' => 'Fiókok kezelése', + 'access_groups' => 'Csoportok kezelése', + 'access_settings' => 'Beállítások kezelése', + 'impersonate_user' => 'Átjelentkezett felhasználók' + ], + 'users' => [ + 'menu_label' => 'Felhasználók', + 'all_users' => 'Felhasználók', + 'new_user' => 'Új felhasználó', + 'list_title' => 'Felhasználók kezelése', + 'trashed_hint_title' => 'A felhasználók felfüggeszthetik a saját fiókjukat', + 'trashed_hint_desc' => 'Amennyiben nem akarnak megjelenni a weboldalon, úgy deaktiválhatják a saját fiókjukat. Bármikor újra engedélyezhetik, ha újra sikeresen bejelentkeznek a weboldalra.', + 'banned_hint_title' => 'A felhasználó tiltva van', + 'banned_hint_desc' => 'Ezt a felhasználót már tiltotta egy adminisztrátor, így nem lesz képes bejelentkezni.', + 'guest_hint_title' => 'Vendég felhasználó', + 'guest_hint_desc' => 'Ez a felhasználó ideglenesen lett eltárolva. Regisztrálnia kell, mielőtt bejelentkezik a weboldalra.', + 'activate_warning_title' => 'Nincs aktiválva a felhasználó!', + 'activate_warning_desc' => 'Ennek a felhasználónak nem történt meg az aktiválása, így nem tud bejelentkezni.', + 'activate_confirm' => 'Valóban aktiválni akarja ezt a felhasználót?', + 'activated_success' => 'A felhasználó aktiválása megtörtént', + 'activate_manually' => 'A felhasználó kézi aktiválása', + 'convert_guest_confirm' => 'Legyen átkonvertálva teljes értékű felhasználóvá?', + 'convert_guest_manually' => 'Felhasználóvá konvertálás', + 'convert_guest_success' => 'A felhasználó konvertálása sikeresen megtörtént.', + 'impersonate_user' => 'Átjelentkezés a fiókba', + 'impersonate_confirm' => 'Biztos benne, hogy átjelentkezik a felhasználó saját fiókjába? Ezáltal a jelenlegi munkamenetből ki lesz jelentkeztetve.', + 'impersonate_success' => 'Sikeresen átjelentkezett a másik fiókba', + 'delete_confirm' => 'Valóban törölni akarja ezt a felhasználót?', + 'unban_user' => 'Felhasználó engedélyezése', + 'unban_confirm' => 'Valóban engedélyezni akarja ezt a felhasználót?', + 'unbanned_success' => 'A felhasználó sikeresen engedélyezve lett.', + 'return_to_list' => 'Vissza a felhasználó listához', + 'update_details' => 'Adatok módosítása', + 'bulk_actions' => 'Műveletek', + 'delete_selected' => 'Eltávolítás', + 'delete_selected_confirm' => 'Valóban törölni akarja a kiválasztott felhasználókat?', + 'delete_selected_empty' => 'Nincs kiválasztva felhasználó a törléshez.', + 'delete_selected_success' => 'A kiválasztott felhasználók sikeresen törölve lettek.', + 'activate_selected' => 'Aktiválás', + 'activate_selected_confirm' => 'Valóban aktiválni akarja a kiválasztott felhasználókat?', + 'activate_selected_empty' => 'Nincs kiválasztva felhasználó az aktiváláshoz.', + 'activate_selected_success' => 'A kiválasztott felhasználók sikeresen aktiválva lettek.', + 'deactivate_selected' => 'Deaktiválás', + 'deactivate_selected_confirm' => 'Valóban deaktiválni akarja a kiválasztott felhasználókat?', + 'deactivate_selected_empty' => 'Nincs kiválasztva felhasználó a deaktiváláshoz.', + 'deactivate_selected_success' => 'A kiválasztott felhasználók sikeresen deaktiválva lettek.', + 'restore_selected' => 'Visszaállítás', + 'restore_selected_confirm' => 'Valóban vissza akarja állítani a kiválasztott felhasználókat?', + 'restore_selected_empty' => 'Nincs kiválasztva felhasználó a visszaállításhoz.', + 'restore_selected_success' => 'A kiválasztott felhasználók sikeresen vissza lettek állítva.', + 'ban_selected' => 'Letiltás', + 'ban_selected_confirm' => 'Valóban tiltani akarja a kiválasztott felhasználókat?', + 'ban_selected_empty' => 'Nincs kiválasztva felhasználó a tiltáshoz.', + 'ban_selected_success' => 'A kiválasztott felhasználók sikeresen tiltva lettek.', + 'unban_selected' => 'Engedélyezés', + 'unban_selected_confirm' => 'Valóban engedélyezni akarja a kiválasztott felhasználókat?', + 'unban_selected_empty' => 'Nincs kiválasztva felhasználó az engedélyezéshez.', + 'unban_selected_success' => 'A kiválasztott felhasználók sikeresen engedélyezve lettek.', + 'unsuspend' => 'Felfüggesztés', + 'unsuspend_success' => 'A felfüggesztés sikeresen megtörtént.', + 'unsuspend_confirm' => 'Felfüggeszti a felhasználót?' + ], + 'settings' => [ + 'users' => 'Felhasználók', + 'menu_label' => 'Beállítások', + 'menu_description' => 'A felhasználókhoz tartozó beállítások kezelése.', + 'activation_tab' => 'Aktiválás', + 'signin_tab' => 'Bejelentkezés', + 'registration_tab' => 'Regisztráció', + 'profile_tab' => 'Profil', + 'notifications_tab' => 'Értesítések', + 'allow_registration' => 'Regisztráció engedélyezése', + 'allow_registration_comment' => 'Tiltás esetén csak az adminisztrátorok adhatnak hozzá felhasználót.', + 'activate_mode' => 'Aktiválási mód', + 'activate_mode_comment' => 'Válassza ki, hogyan kell aktiválni egy felhasználói fiókot.', + 'activate_mode_auto' => 'Automatikus', + 'activate_mode_auto_comment' => 'Regisztráláskor automatikusan aktiválva.', + 'activate_mode_user' => 'Felhasználó', + 'activate_mode_user_comment' => 'A felhasználó levéllel aktiválja a saját fiókját.', + 'activate_mode_admin' => 'Adminisztrátor', + 'activate_mode_admin_comment' => 'Csak adminisztrátor aktiválhat felhasználót.', + 'require_activation' => 'A bejelentkezéshez aktiválás szükséges', + 'require_activation_comment' => 'A felhasználóknak aktivált fiókkal kell rendelkezniük a bejelentkezéshez.', + 'use_throttle' => 'Kísérletek késleltetése', + 'use_throttle_comment' => 'Az ismétlődő sikertelen bejelentkezések ideiglenesen felfüggesztik a felhasználót.', + 'use_register_throttle' => 'Többszörös regisztráció', + 'use_register_throttle_comment' => 'Akadályozzon meg több regisztrációt ugyanarról az IP-ről, ha röviddel egymás után történnek.', + 'block_persistence' => 'Egyidejű munkamenet', + 'block_persistence_comment' => 'Engedélyezés esetén a felhasználók nem tudnak bejelentkezni egyszerre több eszközről.', + 'login_attribute' => 'Bejelentkezési azonosító', + 'login_attribute_comment' => 'Válassza ki, hogy milyen felhasználói adatot kell használni a bejelentkezéshez.', + 'remember_login' => 'Emlékezzen a felhasználóra', + 'remember_login_comment' => 'Válassza ki az alábbiak közül a munkamenet időtartalmát.', + 'remember_always' => 'Mindig', + 'remember_never' => 'Soha', + 'remember_ask' => 'Kérdezzen rá' + ], + 'user' => [ + 'label' => 'Felhasználó', + 'id' => 'Azonosító', + 'username' => 'Felhasználónév', + 'name' => 'Név', + 'name_empty' => 'Ismeretlen', + 'surname' => 'Családnév', + 'email' => 'E-mail cím', + 'created_at' => 'Regisztrált', + 'last_seen' => 'Belépve', + 'is_guest' => 'Vendég', + 'joined' => 'Csatlakozva', + 'is_online' => 'Elérhető', + 'is_offline' => 'Nem elérhető', + 'send_invite' => 'Üdvözlés küldése e-mailben', + 'send_invite_comment' => 'A kimenő levél tartalmazza a felhasználónevet és jelszót.', + 'create_password' => 'Jelszó megadása', + 'create_password_comment' => 'Kérjük használjon egyedi és erős jelszót.', + 'reset_password' => 'Új jelszó megadása', + 'reset_password_comment' => 'Kérjük használjon egyedi és erős jelszót.', + 'confirm_password' => 'Jelszó megerősítése', + 'confirm_password_comment' => 'Kérjük gépelje be újra a jelszót.', + 'groups' => 'Csoportok', + 'empty_groups' => 'Nincs létrehozva csoport.', + 'avatar' => 'Profilkép', + 'details' => 'Adatok', + 'account' => 'Fiók', + 'block_mail' => 'Az összes kimenő levél tiltása ennél a felhasználónál.', + 'status_guest' => 'Vendég', + 'status_activated' => 'Aktivált', + 'status_registered' => 'Regisztrált', + 'created_ip_address' => 'Létrehozott IP cím', + 'last_ip_address' => 'Legutóbbi IP cím' + ], + 'group' => [ + 'label' => 'Csoport', + 'id' => 'Azonosító', + 'name' => 'Név', + 'description_field' => 'Leírás', + 'code' => 'Kód', + 'code_comment' => 'Egyedi azonosító az API eléréshez.', + 'created_at' => 'Létrehozva', + 'users_count' => 'Felhasználók' + ], + 'groups' => [ + 'menu_label' => 'Csoportok', + 'all_groups' => 'Csoportok', + 'new_group' => 'Új csoport', + 'delete_selected_confirm' => 'Valóban törölni akarja a kijelölt csoportokat?', + 'list_title' => 'Csoportok kezelése', + 'delete_confirm' => 'Valóban törölni akarja ezt a csoportot?', + 'delete_selected_success' => 'A csoportok sikeresen eltávolításra kerültek.', + 'delete_selected_empty' => 'A törléshez előbb ki kell választania legalább egy csoportot.', + 'return_to_list' => 'Vissza a csoportokhoz', + 'return_to_users' => 'Vissza a felhasználókhoz', + 'create_title' => 'Csoport létrehozása', + 'update_title' => 'Csoport szerkesztése', + 'preview_title' => 'Csoport előnézete' + ], + 'login' => [ + 'attribute_email' => 'E-mail cím', + 'attribute_username' => 'Felhasználónév' + ], + 'account' => [ + 'account' => 'Fiók', + 'account_desc' => 'Felhasználó kezelési űrlap.', + 'banned' => 'Sajnáljuk, ez a felhasználói fiók nincs aktiválva. Kérjük vegye fel a kapcsolatot a weboldal üzemeltetőjével.', + 'redirect_to' => 'Átirányítás', + 'redirect_to_desc' => 'Az oldal neve az átirányításhoz frissítés, bejelentkezés vagy regisztrálás után.', + 'code_param' => 'Aktiválási kód', + 'code_param_desc' => 'A regisztrálás aktiválási kódjához használt oldal webcíme.', + 'force_secure' => 'Biztonságos protokoll kényszerítése', + 'force_secure_desc' => 'A webcím mindig legyen átírányítva HTTPS protokollra.', + 'invalid_user' => 'Nem található a megadott hitelesítési adatokkal rendelkező felhasználó.', + 'invalid_activation_code' => 'A megadott aktiválási kód érvénytelen.', + 'invalid_deactivation_pass' => 'A megadott jelszó érvénytelen.', + 'invalid_current_pass' => 'A megadott jelenlegi jelszó érvénytelen.', + 'success_activation' => 'A fiók aktiválása sikerült.', + 'success_deactivation' => 'Sikeresen felfüggesztette a fiókját. További szép napot kívánunk!', + 'success_saved' => 'Sikerült menteni a beállításokat!', + 'login_first' => 'Előbb be kell jelentkeznie!', + 'already_active' => 'Már aktiválta a fiókját!', + 'activation_email_sent' => 'Az aktiválási e-mail elküldése sikeresen megtörtént.', + 'activation_by_admin' => 'A regisztráció sikeresen megtörtént! A fiókja még nem aktív, azt a weboldal üzemeltetőjének még jóvá kell hagynia.', + 'registration_disabled' => 'A regisztráció jelenleg tiltva van az oldalon.', + 'registration_throttled' => 'Az újbóli regisztráció nem engedélyezett. Kérjük próbálja meg később.', + 'sign_in' => 'Bejelentkezés', + 'register' => 'Regisztráció', + 'full_name' => 'Teljes név', + 'email' => 'E-mail cím', + 'password' => 'Jelszó', + 'login' => 'Bejelentkezés', + 'new_password' => 'Új jelszó', + 'new_password_confirm' => 'Új jelszó megerősítése', + 'update_requires_password' => 'Biztonságos adatmódosítás', + 'update_requires_password_comment' => 'A profil megváltoztatásakor a rendszer elkéri a felhasználó jelenlegi jelszavát.' + ], + 'reset_password' => [ + 'reset_password' => 'Új jelszó megadása', + 'reset_password_desc' => 'Elfelejtett jelszó űrlap.', + 'code_param' => 'Visszaállító kód', + 'code_param_desc' => 'A visszaállító kódhoz használt oldal webcíme.' + ], + 'session' => [ + 'session' => 'Munkamenet', + 'session_desc' => 'Hozzáadja egy oldqalhoz a felhasználói munkamenetet és korlátozhatja az oldalhoz való hozzáférést.', + 'security_title' => 'Csak engedélyezés', + 'security_desc' => 'Ki számára engedélyezett a hozzáférés ehhez az oldalhoz.', + 'all' => 'Mindenki', + 'users' => 'Felhasználók', + 'guests' => 'Vendégek', + 'allowed_groups_title' => 'Csoportok engedélyezése', + 'allowed_groups_description' => 'Válassza ki az engedélyezni kívánt csoportokat vagy egyiket sem az összes elfogadásához.', + 'redirect_title' => 'Átirányítás', + 'redirect_desc' => 'Az átirányítandó oldal neve, ha a hozzáférés meg van tagadva.', + 'logout' => 'Sikeresen kijelentkezett!', + 'stop_impersonate_success' => 'Sikeresen visszajelentkezett az eredeti profiljába.' + ] +]; diff --git a/plugins/rainlab/user/lang/id/lang.php b/plugins/rainlab/user/lang/id/lang.php new file mode 100644 index 0000000..3b40083 --- /dev/null +++ b/plugins/rainlab/user/lang/id/lang.php @@ -0,0 +1,219 @@ + [ + 'name' => 'Pengguna', + 'description' => 'Manajemen pengguna front-end', + 'tab' => 'Pengguna', + 'access_users' => 'Kelola Pengguna', + 'access_groups' => 'Kelola Grup Pengguna', + 'access_settings' => 'Kelola Pengaturan Pengguna', + 'impersonate_user' => 'Menyamar Sebagai Pengguna' + ], + 'users' => [ + 'menu_label' => 'Pengguna', + 'all_users' => 'Semua Pengguna', + 'new_user' => 'Pengguna Baru', + 'list_title' => 'Kelola Pengguna', + 'trashed_hint_title' => 'Pengguna telah menonaktifkan akunnya', + 'trashed_hint_desc' => 'Pengguna ini telah menonaktifkan akunnya dan tidak ingin terlihat lagi di situs ini. Mereka dapat memulihkan akun mereka kapan saja dengan login kembali.', + 'banned_hint_title' => 'Pengguna telah diblokir', + 'banned_hint_desc' => 'Pengguna ini telah diblokir oleh administrator dan tidak dapat login.', + 'guest_hint_title' => 'Ini adalah pengguna tamu', + 'guest_hint_desc' => 'Pengguna ini disimpan untuk tujuan referensi saja dan perlu mendaftar sebelum login.', + 'activate_warning_title' => 'Pengguna tidak diaktifkan!', + 'activate_warning_desc' => 'Pengguna ini belum diaktifkan dan mungkin tidak dapat login.', + 'activate_confirm' => 'Apakah Anda benar-benar ingin mengaktifkan pengguna ini?', + 'activated_success' => 'Pengguna telah diaktifkan', + 'activate_manually' => 'Aktifkan pengguna ini secara manual', + 'convert_guest_confirm' => 'Ubah tamu menjadi penguna?', + 'convert_guest_manually' => 'Ubah tamu menjadi pengguna yang terdaftar', + 'convert_guest_success' => 'Pengguna telah diubah menjadi akun yang terdaftar', + 'impersonate_user' => 'Menyamar sebagai pengguna', + 'impersonate_confirm' => 'Menyamar sebagai pengguna? Anda dapat kembali ke keadaan semula dengan logout.', + 'impersonate_success' => 'Anda sekarang menyamar sebagai pengguna ini', + 'delete_confirm' => 'Apakah Anda benar-benar ingin menghapus pengguna ini?', + 'unban_user' => 'Batalkan pemblokiran pengguna ini', + 'unban_confirm' => 'Apakah Anda benar-benar ingin membatalkan pemblokiran pengguna ini?', + 'unbanned_success' => 'Pengguna tidak lagi diblokir', + 'return_to_list' => 'Kembali ke list pengguna', + 'update_details' => 'Perbarui detail', + 'bulk_actions' => 'Aksi masal', + 'delete_selected' => 'Hapus yang dipilih', + 'delete_selected_confirm' => 'Hapus pengguna yang dipilih?', + 'delete_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dihapus.', + 'delete_selected_success' => 'Berhasil menghapus pengguna yang dipilih.', + 'activate_selected' => 'Aktifkan yang dipilih', + 'activate_selected_confirm' => 'Aktifkan pengguna yang dipilih?', + 'activate_selected_empty' => 'Tidak ada pengguna yang dipilih untuk diaktifkan.', + 'activate_selected_success' => 'Berhasil mengaktifkan pengguna yang dipilih.', + 'deactivate_selected' => 'Nonaktifkan yang dipilih', + 'deactivate_selected_confirm' => 'Nonaktifkan pengguna yang dipilih?', + 'deactivate_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dinonaktifkan.', + 'deactivate_selected_success' => 'Berhasil menonaktifkan pengguna yang dipilih.', + 'restore_selected' => 'Pulihkan yang dipilih', + 'restore_selected_confirm' => 'Pulihkan pengguna yang dipilih?', + 'restore_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dipulihkan.', + 'restore_selected_success' => 'Berhasil memulihkan pengguna yang dipilih.', + 'ban_selected' => 'Blokir yang dipilih', + 'ban_selected_confirm' => 'Blokir pengguna yang dipilih?', + 'ban_selected_empty' => 'Tidak ada pengguna yang dipilih untuk diblokir.', + 'ban_selected_success' => 'Berhasil memblokir pengguna yang dipilih.', + 'unban_selected' => 'Batalkan pemblokiran yang dipilih', + 'unban_selected_confirm' => 'Batalkan pemblokiran pengguna yang dipilih?', + 'unban_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dibatalkan pemblokirannya.', + 'unban_selected_success' => 'Berhasil membatalkan pemblokiran pengguna yang dipilih.', + ], + 'settings' => [ + 'users' => 'Pengguna', + 'menu_label' => 'Pengaturan pengguna', + 'menu_description' => 'Kelola pengaturan berbasis pengguna', + 'activation_tab' => 'Aktivasi', + 'signin_tab' => 'Login', + 'registration_tab' => 'Pendaftaran', + 'profile_tab' => 'Profil', + 'notifications_tab' => 'Notifikasi', + 'allow_registration' => 'Izinkan pendaftaran', + 'allow_registration_comment' => 'Jika tidak diaktfkan, pengguna hanya bisa dibuat oleh administrator.', + 'activate_mode' => 'Mode aktivasi', + 'activate_mode_comment' => 'Tentukan bagaimana akun pengguna haris diaktifkan', + 'activate_mode_auto' => 'Otomatis', + 'activate_mode_auto_comment' => 'Diaktifkan secara otomatis setelah pendaftaran.', + 'activate_mode_user' => 'Pengguna', + 'activate_mode_user_comment' => 'Pengguna mengaktifkan akun mereka menggunakan email.', + 'activate_mode_admin' => 'Administrator', + 'activate_mode_admin_comment' => 'Hanya administrator yang bisa mengaktifkan pengguna.', + 'require_activation' => 'Login memerlukan aktivasi', + 'require_activation_comment' => 'Pengguna harus aktif sebelum bisa login.', + 'use_throttle' => 'Upaya penangguhan', + 'use_throttle_comment' => 'Mengulangi upaya login yang gagal akan menangguhkan pengguna untuk sementara.', + 'use_register_throttle' => 'Pencekalan pendaftaran', + 'use_register_throttle_comment' => 'Cegah pendaftaran dari IP yang sama dalam kurun waktu singkat.', + 'block_persistence' => 'Cegah sesi bersamaan', + 'block_persistence_comment' => 'Saat diaktifkan, pengguna tidak dapat login ke beberapa perangkat secara bersamaan.', + 'login_attribute' => 'Atribut login', + 'login_attribute_comment' => 'Pilih detail atribut apa yang harus digunakan untuk masuk.', + 'remember_login' => 'Mode ingat login', + 'remember_login_comment' => 'Tentukan jika sesi pengguna harus persisten.', + 'remember_always' => 'Selalu', + 'remember_never' => 'Jangan pernah', + 'remember_ask' => 'Tanyakan saat login', + ], + 'user' => [ + 'label' => 'Pengguna', + 'id' => 'ID', + 'username' => 'Nama pengguna', + 'name' => 'Nama', + 'name_empty' => 'Anonim', + 'surname' => 'Nama keluarga', + 'email' => 'Email', + 'created_at' => 'Terdaftar', + 'last_seen' => 'Terakhir dilihat', + 'is_guest' => 'Tamu', + 'joined' => 'Bergabung', + 'is_online' => 'Sedang online', + 'is_offline' => 'Sedang offline', + 'send_invite' => 'Kirim undangan via email', + 'send_invite_comment' => 'Kirim pesan selamat datang dengan menyertakan informasi login dan kata sandi.', + 'create_password' => 'Buat Sandi', + 'create_password_comment' => 'Buat kata sandi baru untuk masuk.', + 'reset_password' => 'Setel Ulang Kata Sandi', + 'reset_password_comment' => 'Untuk menyetel ulang sandi, masukkan kata sandi baru disini.', + 'confirm_password' => 'Konfirmasi Kata Sandi', + 'confirm_password_comment' => 'Masukkan kembali kata sandi untuk konfirmasi.', + 'groups' => 'Grup', + 'empty_groups' => 'Tidak ada grup pengguna yang tersedia.', + 'avatar' => 'Avatar', + 'details' => 'Detail', + 'account' => 'Akun', + 'block_mail' => 'Blokir semua pesan keluar yang dikirim ke pengguna ini.', + 'status_guest' => 'Tamu', + 'status_activated' => 'Diaktifkan', + 'status_registered' => 'Terdaftar', + 'created_ip_address' => 'Alamat IP Telah Dibuat', + 'last_ip_address' => 'Alamat IP Terakhir', + ], + 'group' => [ + 'label' => 'Grup', + 'id' => 'ID', + 'name' => 'Nama', + 'description_field' => 'Deskripsi', + 'code' => 'Kode', + 'code_comment' => 'Masukkan kode unik untuk mengidentifikasi grup ini.', + 'created_at' => 'Dibuat', + 'users_count' => 'Pengguna' + ], + 'groups' => [ + 'menu_label' => 'Grup', + 'all_groups' => 'Grup Pengguna', + 'new_group' => 'Grup Baru', + 'delete_selected_confirm' => 'Apakah Anda benar-benar ingin menghapus grup yang dipilih?', + 'list_title' => 'Kelola Grup', + 'delete_confirm' => 'Apakah Anda benar-benar ingin menghapus grup ini?', + 'delete_selected_success' => 'Berhasil menghapus grup yang dipilih.', + 'delete_selected_empty' => 'Tidak ada grup yang dipilih untuk dihapus.', + 'return_to_list' => 'Kembali ke daftar grup', + 'return_to_users' => 'Kembali ke daftar pengguna', + 'create_title' => 'Buat Grup Pengguna', + 'update_title' => 'Edit Grup Pengguna', + 'preview_title' => 'Pratinjau Grup Pengguna' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Nama Pengguna' + ], + 'account' => [ + 'account' => 'Akun', + 'account_desc' => 'Formulir manajemen pengguna.', + 'banned' => 'Maaf, pengguna saat ini tidak diaktifkan. Silakan hubungi kami untuk bantuan lebih lanjut.', + 'redirect_to' => 'Alihkan ke', + 'redirect_to_desc' => 'Nama halaman untuk dialihkan setelah pembaruan, masuk atau registrasi.', + 'code_param' => 'Parameter Kode Aktivasi', + 'code_param_desc' => 'Parameter URL pada halaman yang digunakan untuk kode aktivasi pendaftaran', + 'force_secure' => 'Paksa protokol yang aman', + 'force_secure_desc' => 'Selalu mengarahkan URL dengan skema HTTPS.', + 'invalid_user' => 'Pengguna dengan kredensial yang diberikan tidak ditemukan.', + 'invalid_activation_code' => 'Kode aktivasi yang diberikan tidak valid.', + 'invalid_deactivation_pass' => 'Kata sandi yang diberikan tidak valid.', + 'invalid_current_pass' => 'Kata sandi saat ini yang Anda masukkan tidak valid.', + 'success_activation' => 'Berhasil mengaktifkan akun Anda.', + 'success_deactivation' => 'Berhasil menonaktifkan akun Anda. Sedih melihat Anda pergi!', + 'success_saved' => 'Pengaturan berhasil disimpan!', + 'login_first' => 'Anda harus masuk terlebih dahulu!', + 'already_active' => 'Akun Anda sudah diaktifkan!', + 'activation_email_sent' => 'Email aktivasi telah dikirim ke alamat email Anda.', + 'registration_disabled' => 'Pendaftaran saat ini dinonaktifkan.', + 'registration_throttled' => 'Registrasi dibatasi. Silakan coba lagi nanti.', + 'sign_in' => 'Masuk', + 'register' => 'Daftar', + 'full_name' => 'Nama Lengkap', + 'email' => 'Email', + 'password' => 'Kata Sandi', + 'login' => 'Login', + 'new_password' => 'Kata Sandi Baru', + 'new_password_confirm' => 'Konfirmasi Kata Sandi Baru', + 'update_requires_password' => 'Konfirmasikan kata sandi saat pembaruan', + 'update_requires_password_comment' => 'Kata sandi diperlukan saat mengubah profil.' + ], + 'reset_password' => [ + 'reset_password' => 'Setel Ulang Kata Sandi', + 'reset_password_desc' => 'Formulir lupa kata sandi.', + 'code_param' => 'Parameter Penyetelan Ulang Kata Sandi', + 'code_param_desc' => 'Parameter URL pada halaman yang digunakan untuk kode reset' + ], + 'session' => [ + 'session' => 'Sesi', + 'session_desc' => 'Menambahkan sesi pengguna ke halaman dan dapat membatasi akses halaman.', + 'security_title' => 'Hanya izinkan', + 'security_desc' => 'Siapa yang diizinkan mengakses halaman.', + 'all' => 'Semua', + 'users' => 'Pengguna', + 'guests' => 'Tamu', + 'allowed_groups_title' => 'Izinkan grup', + 'allowed_groups_description' => 'Pilih grup yang diizinkan, atau pilih tidak ada untuk mengizinkan semua grup', + 'redirect_title' => 'Alihkan ke', + 'redirect_desc' => 'Nama halaman untuk dialihkan jika akses ditolak.', + 'logout' => 'Anda telah berhasil keluar!', + 'stop_impersonate_success' => 'Anda tidak lagi bertidak sebagai pengguna.', + ] +]; diff --git a/plugins/rainlab/user/lang/it/lang.php b/plugins/rainlab/user/lang/it/lang.php new file mode 100644 index 0000000..2bb08f8 --- /dev/null +++ b/plugins/rainlab/user/lang/it/lang.php @@ -0,0 +1,192 @@ + [ + 'name' => 'Utenti', + 'description' => 'Gestione Utenti Front-End.', + 'tab' => 'Utenti', + 'access_users' => 'Gestisci Utenti', + 'access_groups' => 'Gestisci Gruppi di Utenti', + 'access_settings' => 'Gestisci Impostazioni Utenti' + ], + 'users' => [ + 'menu_label' => 'Utenti', + 'all_users' => 'Tutti gli utenti', + 'new_user' => 'Nuovo Utente', + 'list_title' => 'Gestisci Utenti', + 'trashed_hint_title' => 'L\'utente ha disabilitato il suo account', + 'trashed_hint_desc' => 'Questo utente ha disattivato il suo account and e non vuole più apparire sul sito. Possono riattivarsi in qualsiasi momento effettuando l\'accesso.', + 'banned_hint_title' => 'Questo utente è stato bannato', + 'banned_hint_desc' => 'Questo utente è stato bannato da un amministratore e non potrà piú effettuare l\'accesso', + 'guest_hint_title' => 'Questo è un utente anonimo', + 'guest_hint_desc' => 'Questo utente è salvato solo per riferimento e deve registrarsi prima di poter effettuare l\'accesso', + 'activate_warning_title' => 'Utente non attivo!', + 'activate_warning_desc' => 'Questo utente non è stato attivato e potrebbe non essere in grado di effettuare l\'accesso', + 'activate_confirm' => 'Vuoi veramente attivare questo utente?', + 'activated_success' => 'Utente Attivato', + 'activate_manually' => 'Attiva questo utente manualmente', + 'convert_guest_confirm' => 'Convertire questo utente anonimo a un utente registrato?', + 'convert_guest_manually' => 'Converti a un utente registrato', + 'convert_guest_success' => 'Utente convertito a un account registrato', + 'delete_confirm' => 'Vuoi veramente cancellare questo utente?', + 'unban_user' => 'Sblocca questo utente', + 'unban_confirm' => 'Vuoi veramente sbloccare questo utente?', + 'unbanned_success' => 'L\'utente è stato sbloccato', + 'return_to_list' => 'Ritorna alla lista utenti', + 'update_details' => 'Aggiorna dettagli', + 'bulk_actions' => 'Azioni multiple', + 'delete_selected' => 'Elimina selezionati', + 'delete_selected_confirm' => 'Eliminare gli utenti selezionati?', + 'delete_selected_empty' => 'Non ci sono utenti selezionati da cancellare.', + 'delete_selected_success' => 'Gli utenti selezionati sono stati cancellati con successo.', + 'deactivate_selected' => 'Disabilita selezionati', + 'deactivate_selected_confirm' => 'Disattivare gli utenti selezionati?', + 'deactivate_selected_empty' => 'Non ci sono utenti selezionati da disattivare.', + 'deactivate_selected_success' => 'Utenti selezionati disattivati con successo.', + 'restore_selected' => 'Ripristina selezionati', + 'restore_selected_confirm' => 'Ripristinare gli utenti selezionati?', + 'restore_selected_empty' => 'Non ci sono utenti selezionati da ripristinare.', + 'restore_selected_success' => 'Utenti selezionati ripristinati con successo.', + 'ban_selected' => 'Blocca selezionati', + 'ban_selected_confirm' => 'Bloccare l\'utente selezionato?', + 'ban_selected_empty' => 'Non ci sono utenti selezionati da bloccare.', + 'ban_selected_success' => 'Utenti selezionati bloccati con successo.', + 'unban_selected' => 'Sblocca selezionati', + 'unban_selected_confirm' => 'Sbloccare gli utenti selezionati?', + 'unban_selected_empty' => 'Non ci sono utenti selezionati da sbloccare.', + 'unban_selected_success' => 'Utenti selezionati sbloccati con successo.', + ], + 'settings' => [ + 'users' => 'Utenti', + 'menu_label' => 'Impostazioni Utenti', + 'menu_description' => 'Gestisci impostazioni degli utenti', + 'activation_tab' => 'Attivazione', + 'signin_tab' => 'Accesso', + 'registration_tab' => 'Registrazione', + 'notifications_tab' => 'Notifiche', + 'allow_registration' => 'Consenti registrazione utenti', + 'allow_registration_comment' => 'Se questo è disabilitato gli utenti possono essere creati solo da un amministratore.', + 'activate_mode' => 'Modalità di attivazione', + 'activate_mode_comment' => 'Scegli come un utente dovrebbe essere attivato', + 'activate_mode_auto' => 'Automaticamente', + 'activate_mode_auto_comment' => 'Attivato automaticamente alla registrazione', + 'activate_mode_user' => 'Utente', + 'activate_mode_user_comment' => 'L\'utente si attiva da solo confermando la sua email', + 'activate_mode_admin' => 'Amministratore', + 'activate_mode_admin_comment' => 'Solo un amminstratore può attivare un utente.', + 'require_activation' => 'Effettuare l\'accesso richiede l\'attivazione.', + 'require_activation_comment' => 'Gli utenti devono avere un account attivato per effettuare l\'accesso.', + 'block_persistence' => 'Previeni sessioni concorrenti', + 'block_persistence_comment' => 'Quando abilitato gli utenti non possono effettuare il log-in da diversi dispositivi contemporaneamente', + 'use_throttle' => 'Limita tentativi', + 'use_throttle_comment' => 'Ripetuti tentativi errati di accesso porteranno alla sospensione temporanea dell\'utente.', + 'login_attribute' => 'Metodo di login', + 'login_attribute_comment' => 'Seleziona che attributo gli utenti useranno per effettuare il login.' , + ], + 'user' => [ + 'label' => 'Utente', + 'id' => 'ID', + 'username' => 'Username', + 'name' => 'Nome', + 'name_empty' => 'Anonimo', + 'surname' => 'Cognome', + 'email' => 'Email', + 'created_at' => 'Registrato', + 'last_seen' => 'Ultimo accesso', + 'is_guest' => 'Anonimo', + 'joined' => 'Joined', + 'is_online' => 'Online adesso', + 'is_offline' => 'Al momento non collegato', + 'send_invite' => 'Invia invito via mail', + 'send_invite_comment' => 'Invia un messaggio di benvenuto contenente le informazioni per l\'accesso', + 'create_password' => 'Crea Password', + 'create_password_comment' => 'Inserisci una nuova password per l\'accesso.', + 'reset_password' => 'Cambia la Password', + 'reset_password_comment' => 'Per cambiare la password di questo utente, inserisci una nuova password quí', + 'confirm_password' => 'Conferma Password', + 'confirm_password_comment' => 'Inserisci nuovamente la password per confermare.', + 'groups' => 'Gruppi', + 'empty_groups' => 'Non ci sono gruppi di utenti disponibili.', + 'avatar' => 'Avatar', + 'details' => 'Dettagli', + 'account' => 'Account', + 'block_mail' => 'Blocca tutte le mail verso questo utente.', + 'status_guest' => 'Anonimo', + 'status_activated' => 'Attivato', + 'status_registered' => 'Registrato', + ], + 'group' => [ + 'label' => 'Gruppo', + 'id' => 'ID', + 'name' => 'Nome', + 'description_field' => 'Descrizione', + 'code' => 'Codice', + 'code_comment' => 'Inserisci un codice univoco per identificare il gruppo.', + 'created_at' => 'Creato', + 'users_count' => 'Utenti' + ], + 'groups' => [ + 'menu_label' => 'Gruppi', + 'all_groups' => 'Gruppi di Utenti', + 'new_group' => 'Nuovo gruppo', + 'delete_selected_confirm' => 'Vuoi veramente cancellare i gruppi selezionati?', + 'list_title' => 'Gestisci Gruppi', + 'delete_confirm' => 'Vuoi veramente cancellare questo gruppo?', + 'delete_selected_success' => 'Gruppi selezionati cancellati con successo.', + 'delete_selected_empty' => 'Non ci sono gruppi selezionati da cancellare.', + 'return_to_list' => 'Torna all\'elenco dei gruppi', + 'return_to_users' => 'Torna alla lista utenti', + 'create_title' => 'Crea Gruppo di Utenti', + 'update_title' => 'Modifica Gruppo di Utenti', + 'preview_title' => 'Anteprima Gruppo' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Username' + ], + 'account' => [ + 'account' => 'Account', + 'account_desc' => 'Form di gestione account.', + 'redirect_to' => 'Reindirizza A', + 'redirect_to_desc' => 'Pagina verso cui essere reindirizzati dopo modifica, accesso o registrazione.', + 'code_param' => 'Parametro codice di attivazione', + 'code_param_desc' => 'Parametro dell\'URL usato per il codice di attivazione', + 'invalid_user' => 'Impossibile effettuare il login con le credenziali fornite.', + 'invalid_activation_code' => 'Codice di attivazione fornito non valido.', + 'invalid_deactivation_pass' => 'La password inserita non è valida.', + 'success_activation' => 'Account attivato con successo.', + 'success_deactivation' => 'Account disattivato con successo. Ci dispiace vederti andare via!', + 'success_saved' => 'Impostazioni salvate con successo!', + 'login_first' => 'Devi prima effettuare l\'accesso!', + 'already_active' => 'Il tuo account è già stato attivato!', + 'activation_email_sent' => 'Una mail di attivazione è stata inviata al tuo indirizzo mail.', + 'activation_by_admin' => 'Registrazione effettuata con successo. Il tuo account non è ancora attivo e deve essere approvato da un amministratore.', + 'registration_disabled' => 'La registrazione è al momento disattivata.', + 'sign_in' => 'Accedi', + 'register' => 'Registra', + 'full_name' => 'Nome Completo', + 'email' => 'Email', + 'password' => 'Password', + 'login' => 'Login', + 'new_password' => 'Nuova Password', + 'new_password_confirm' => 'Conferma Nuova Password' + ], + 'reset_password' => [ + 'reset_password' => 'Ripristina Password', + 'reset_password_desc' => 'Form password dimenticata.', + 'code_param' => 'Parametro codice di ripristino', + 'code_param_desc' => 'Parametro dell\'URL usato per il codice di ripristino' + ], + 'session' => [ + 'session' => 'Sessione', + 'session_desc' => 'Aggiungi la sessione utente a una pagina per limitare l\'accesso.', + 'security_title' => 'Autorizza solo', + 'security_desc' => 'Chi è autorizzato ad accedere alla pagina.', + 'all' => 'Tutti', + 'users' => 'Utenti', + 'guests' => 'Anonimi', + 'redirect_title' => 'Reindirizza a', + 'redirect_desc' => 'Nome della pagina a cui reindirizzare se l\'accesso è negato.', + 'logout' => 'Sei stato scollegato con successo!' + ] +]; diff --git a/plugins/rainlab/user/lang/kr/lang.php b/plugins/rainlab/user/lang/kr/lang.php new file mode 100644 index 0000000..03badd4 --- /dev/null +++ b/plugins/rainlab/user/lang/kr/lang.php @@ -0,0 +1,205 @@ + [ + 'name' => '계정', + 'description' => '프론트 엔드 회원관리', + 'tab' => '회원관리', + 'access_users' => '회원관리', + 'access_groups' => '그룹관리', + 'access_settings' => '회원설정', + 'impersonate_user' => '위장 로그인' + ], + 'users' => [ + 'menu_label' => '계정', + 'all_users' => '전체계정', + 'new_user' => '신규계정', + 'list_title' => '계정관리', + 'trashed_hint_title' => '사용자가 계정을 비활성화했습니다.', + 'trashed_hint_desc' => '이 사용자는 자신의 계정을 비활성화했으며 더 이상 사이트에 나타나길 원치 않습니다. 다시 로그인하면 언제든지 계정을 복원 할 수 있습니다.', + 'banned_hint_title' => '차단된 계정입니다.', + 'banned_hint_desc' => '이 사용자는 관리자에 의해 차단되었으며 로그인 할 수 없습니다.', + 'guest_hint_title' => '방문자 입니다.', + 'guest_hint_desc' => '이 계정은 참조 목적으로 만 저장되며 로그인하기 전에 등록해야합니다.', + 'activate_warning_title' => '사용자가 활성화되지 않았습니다!', + 'activate_warning_desc' => '이 사용자는 비활성화 상태이며, 로그인 할 수 없습니다.', + 'activate_confirm' => '이 사용자를 활성화하시겠습니까?', + 'activated_success' => '사용자가 활성화되었습니다.', + 'activate_manually' => '수동으로 이 사용자 활성화', + 'convert_guest_confirm' => '이 방문자를 계정으로 변환하시겠습니까?', + 'convert_guest_manually' => '등록된 사용자로 변환', + 'convert_guest_success' => '사용자가 등록된 계정으로 변환되었습니다.', + 'impersonate_user' => '가장 로그인', + 'impersonate_confirm' => '이 사용자로 가장하시겠습니까? 로그 아웃하면 원래 상태로 되돌릴 수 있습니다.', + 'impersonate_success' => '이제 이 사용자를 가장하고 있습니다.', + 'delete_confirm' => '이 사용자를 삭제하시겠습니까??', + 'unban_user' => '이 사용자의 차단을 해제합니다.', + 'unban_confirm' => '이 사용자의 차단을 해제하시겠습니까?', + 'unbanned_success' => '사용자의 차단이 해제되었습니다.', + 'return_to_list' => '사용자 목록으로 돌아가기', + 'update_details' => '세부 정보 수정', + 'bulk_actions' => '대량 작업', + 'delete_selected' => '선택 항목 삭제', + 'delete_selected_confirm' => '선택한 사용자를 삭제하시겠습니까?', + 'delete_selected_empty' => '삭제할 대상이 없습니다.', + 'delete_selected_success' => '선택한 사용자를 성공적으로 삭제했습니다.', + 'activate_selected' => '선택한 항목 활성화', + 'activate_selected_confirm' => '선택한 사용자를 활성화하시겠습니까?', + 'activate_selected_empty' => '활성화할 선택한 사용자가 없습니다.', + 'activate_selected_success' => '선택한 사용자가 성공적으로 활성화되었습니다.', + 'deactivate_selected' => '비활성화 선택됨', + 'deactivate_selected_confirm' => '선택한 사용자를 비활성화하시겠습니까?', + 'deactivate_selected_empty' => '비활성화할 선택한 사용자가 없습니다.', + 'deactivate_selected_success' => '선택한 사용자를 성공적으로 비활성화했습니다.', + 'restore_selected' => '복원 선택됨', + 'restore_selected_confirm' => '선택한 사용자를 복원하시겠습니까?', + 'restore_selected_empty' => '복원할 선택한 사용자가 없습니다.', + 'restore_selected_success' => '선택한 사용자를 성공적으로 복원했습니다.', + 'ban_selected' => '차단 선택', + 'ban_selected_confirm' => '선택한 사용자의 차단하시겠습니까?', + 'ban_selected_empty' => '차단할 선택된 사용자가 없습니다.', + 'ban_selected_success' => '선택한 사용자를 성공적으로 차단했습니다.', + 'unban_selected' => '차단해제 선택', + 'unban_selected_confirm' => '선택한 사용자를 차단해제하시겠습니까?', + 'unban_selected_empty' => '차단해제할 선택한 사용자가 없습니다.', + 'unban_selected_success' => '선택한 사용자를 성공적으로 차단해제했습니다.', + ], + 'settings' => [ + 'users' => '사용자', + 'menu_label' => '사용자 설정', + 'menu_description' => '사용자 기본 설정을 관리합니다.', + 'activation_tab' => '활성화', + 'signin_tab' => '로그인', + 'registration_tab' => '등록.', + 'notifications_tab' => '알림', + 'allow_registration' => '사용자 등록 허용', + 'allow_registration_comment' => '이 기능을 사용하지 않도록 설정하면 관리자만 사용자를 생성할 수 있습니다.', + 'activate_mode' => '활성화 모드', + 'activate_mode_comment' => '사용자 계정을 활성화할 방법을 선택합니다.', + 'activate_mode_auto' => '자동', + 'activate_mode_auto_comment' => '등록 시 자동으로 활성화됩니다.', + 'activate_mode_user' => '사용자', + 'activate_mode_user_comment' => '사용자가 메일을 사용하여 자신의 계정을 활성화합니다.', + 'activate_mode_admin' => '관리자', + 'activate_mode_admin_comment' => '관리자만 사용자를 활성화할 수 있습니다.', + 'require_activation' => '로그인을 위해서는 활성화가 필요합니다.', + 'require_activation_comment' => '사용자가 로그인하려면 활성화된 계정이여야 합니다.', + 'use_throttle' => '스로틀 시도', + 'use_throttle_comment' => '실패한 로그인 시도를 반복하면 사용자가 일시적으로 일시 중지됩니다.', + 'block_persistence' => '동시 세션 방지', + 'block_persistence_comment' => '활성화된 경우 사용자는 한번에 여러 장치에 로그인할 수 없습니다.', + 'login_attribute' => '로그인 속성', + 'login_attribute_comment' => '로그인에 사용할 기본 사용자 세부 정보를 선택합니다.', + ], + 'user' => [ + 'label' => '사용자', + 'id' => '아이디', + 'username' => '사용자 이름', + 'name' => '이름', + 'name_empty' => '익명', + 'surname' => '성', + 'email' => '이메일', + 'created_at' => '등록일', + 'last_seen' => '마지막 활동', + 'is_guest' => '손님', + 'joined' => '가입된', + 'is_online' => '지금 온라인', + 'is_offline' => '현재 오프라인 상태', + 'send_invite' => '이메일로 초대 메일 보내기', + 'send_invite_comment' => '로그인 및 비밀번호 정보가 포함된 환영 메시지를 보냅니다.', + 'create_password' => '비밀번호 생성', + 'create_password_comment' => '로그인에 사용되는 새 비밀번호를 입력합니다.', + 'reset_password' => '비밀번호 재설정', + 'reset_password_comment' => '이 사용자 암호를 재설정하려면 여기에 새 암호를 입력하십시오.', + 'confirm_password' => '비밀번호 확인', + 'confirm_password_comment' => '비밀번호를 다시 입력하여 확인합니다.', + 'groups' => '그룹', + 'empty_groups' => '사용 가능한 사용자 그룹이 없습니다.', + 'avatar' => '아바타', + 'details' => '세부 사항', + 'account' => '계정', + 'block_mail' => '이 사용자에게 보내는 보내는 메일을 모두 차단합니다.', + 'status_guest' => '손님', + 'status_activated' => '활성화 상태', + 'status_registered' => '등록한', + ], + 'group' => [ + 'label' => '그룹', + 'id' => '아이디', + 'name' => '이름', + 'description_field' => '설명', + 'code' => '코드', + 'code_comment' => '이 그룹을 식별하는 데 사용되는 고유 한 코드를 입력하십시오.', + 'created_at' => '생성날짜', + 'users_count' => '사용자 수' + ], + 'groups' => [ + 'menu_label' => '그룹 목록', + 'all_groups' => '회원 그룹 목록', + 'new_group' => '새로운 그룹', + 'delete_selected_confirm' => '선택한 그룹을 삭제하시겠습니까?', + 'list_title' => '그룹 관리', + 'delete_confirm' => '이 그룹을 삭제하시겠습니까?', + 'delete_selected_success' => '선택한 그룹을 성공적으로 삭제했습니다.', + 'delete_selected_empty' => '선택된 그룹이 없습니다.', + 'return_to_list' => '그룹 목록으로 돌아가기', + 'return_to_users' => '사용자 목록으로 돌아가기', + 'create_title' => '사용자 그룹 생성', + 'update_title' => '사용자 그룹 수정', + 'preview_title' => '사용자 그룹 미리 보기', + ], + 'login' => [ + 'attribute_email' => '이메일', + 'attribute_username' => '회원명', + ], + 'account' => [ + 'account' => '계정', + 'account_desc' => '사용자 관리 폼', + 'banned' => '죄송합니다. 이 사용자는 현재 활성화되어 있지 않습니다. 도움이 필요하시면 저희에게 연락 주십시오.', + 'redirect_to' => '리디렉션', + 'redirect_to_desc' => '로그인, 등록, 업데이트 후 리디렉션 할 페이지 이름.', + 'code_param' => '활성화 코드 값', + 'code_param_desc' => '등록 활성화 코드에 사용되는 페이지 URL파라미터', + 'force_secure' => '강제 보안 프로토콜', + 'force_secure_desc' => '항상 URL을 HTTPS스키마로 리디렉션 하십시오.', + 'invalid_user' => '지정한 자격 증명을 가진 사용자를 찾을 수 없습니다.', + 'invalid_activation_code' => '제공된 활성화 코드가 잘못되었습니다.', + 'invalid_deactivation_pass' => '입력한 암호가 잘못되었습니다.', + 'success_activation' => '계정이 활성화되었습니다.', + 'success_deactivation' => '계정이 비활성화되었습니다. 죄송합니다!', + 'success_saved' => '설정이 성공적으로 저장되었습니다!', + 'login_first' => '먼저 로그인해야 합니다!', + 'already_active' => '계정이 이미 활성화되었습니다!', + 'activation_email_sent' => '활성화 이메일이 사용자의 이메일 주소로 전송되었습니다.', + 'registration_disabled' => '가입이 현재 비활성화되어 있습니다.', + 'sign_in' => '로그인', + 'register' => '회원가입', + 'full_name' => '전체 이름', + 'email' => '이메일', + 'password' => '비밀번호', + 'login' => '로그인.', + 'new_password' => '새 암호', + 'new_password_confirm' => '암호 재확인', + ], + 'reset_password' => [ + 'reset_password' => '비밀번호 재설정', + 'reset_password_desc' => '암호 형식을 잊어 버렸습니다.', + 'code_param' => '코드 매개 변수 재설정', + 'code_param_desc' => '재설정 코드에 사용되는 페이지 URL매개 변수', + ], + 'session' => [ + 'session' => '기간', + 'session_desc' => '페이지에 사용자 세션을 추가하고 페이지 액세스를 제한할 수 있습니다.', + 'security_title' => '허용', + 'security_desc' => '누가 이 페이지에 액세스 할 수 있습니까?', + 'all' => '모든.', + 'users' => '사용자', + 'guests' => '방문자', + 'allowed_groups_title' => '그룹 허용', + 'allowed_groups_description' => '허용되는 그룹을 선택하거나, 모든 그룹을 허용할 그룹이 없도록 선택하십시오.', + 'redirect_title' => '리디렉션', + 'redirect_desc' => '액세스가 거부된 경우 리디렉션 할 페이지 이름입니다.', + 'logout' => '성공적으로 로그아웃되었습니다!', + 'stop_impersonate_success' => '더 이상 사용자를 가장하지 않습니다.', + ] +]; diff --git a/plugins/rainlab/user/lang/nl/lang.php b/plugins/rainlab/user/lang/nl/lang.php new file mode 100644 index 0000000..486406b --- /dev/null +++ b/plugins/rainlab/user/lang/nl/lang.php @@ -0,0 +1,224 @@ + [ + 'name' => 'Gebruiker', + 'description' => 'Gebruikersbeheer voor de front-end.', + 'tab' => 'Gebruikers', + 'access_users' => 'Beheer Gebruikers', + 'access_groups' => 'Beheer Groepen', + 'access_settings' => 'Gebruikersinstellingen beheren', + 'impersonate_user' => 'Inloggen als gebruikers', + ], + 'users' => [ + 'menu_label' => 'Gebruikers', + 'all_users' => 'Alle gebruikers', + 'new_user' => 'Nieuwe gebruiker', + 'list_title' => 'Beheer gebruikers', + 'trashed_hint_title' => 'Gebruiker heeft zijn account gedeactiveerd', + 'trashed_hint_desc' => 'Deze gebruiker heeft zijn account gedeactiveerd en wil niet meer op de site verschijnen. Hij kan zijn account op elk moment herstellen door opnieuw in te loggen.', + 'banned_hint_title' => 'Gebruiker is verbannen', + 'banned_hint_desc' => 'Deze gebruiker is verbannen door een beheerder en kan niet meer inloggen.', + 'guest_hint_title' => 'Dit is een gastgebruiker', + 'guest_hint_desc' => 'Deze gebruiker wordt alleen voor referentiedoeleinden opgeslagen en moet zich registreren voordat hij zich aanmeldt.', + 'activate_warning_title' => 'Gebruiker is niet geactiveerd!', + 'activate_warning_desc' => 'Deze gebruiker is niet geactiveerd en kan niet inloggen.', + 'activate_confirm' => 'Weet u zeker dat u het gebruikersaccount wilt activeren?', + 'activated_success' => 'Gebruikersaccount succesvol geactiveerd!', + 'activate_manually' => 'Deze gebruiker handmatig activeren', + 'convert_guest_confirm' => 'Deze gast omzetten naar een gebruiker?', + 'convert_guest_manually' => 'Omzetten naar geregistreerde gebruiker', + 'convert_guest_success' => 'Gebruiker is omgezet naar een geregistreerd account', + 'impersonate_user' => 'Inloggen als', + 'impersonate_confirm' => 'Als deze gebruiker inloggen? U kunt terugkeren naar uw oorspronkelijke staat door uit te loggen.', + 'impersonate_success' => 'Je bent nu ingelogd als deze gebruiker', + 'delete_confirm' => 'Weet u zeker dat u deze gebruiker wilt verwijderen?', + 'unban_user' => 'Deblokkeer deze gebruiker', + 'unban_confirm' => 'Wil je deze gebruiker echt deblokkeren?', + 'unbanned_success' => 'Gebruiker is gedeblokkeerd', + 'return_to_list' => 'Terug naar overzicht', + 'update_details' => 'Details bijwerken', + 'bulk_actions' => 'Bulk acties', + 'delete_selected' => 'Geselecteerde verwijderen', + 'delete_selected_confirm' => 'Verwijder geselecteerde gebruikers?', + 'delete_selected_empty' => 'Er zijn geen geselecteerde gebruikers om te verwijderen.', + 'delete_selected_success' => 'Geselecteerde gebruikers verwijderd.', + 'activate_selected' => 'Activeer geselecteerde', + 'activate_selected_confirm' => 'De geselecteerde gebruikers activeren?', + 'activate_selected_empty' => 'Er zijn geen geselecteerde gebruikers om te activeren.', + 'activate_selected_success' => 'Geselecteerde gebruikers zijn succesvol geactiveerd.', + 'deactivate_selected' => 'Deactiveer geselecteerde', + 'deactivate_selected_confirm' => 'De geselecteerde gebruikers deactiveren?', + 'deactivate_selected_empty' => 'There are no selected users to deactivate.', + 'deactivate_selected_success' => 'Geselecteerde gebruikers zijn succesvol gedeactiveerd.', + 'restore_selected' => 'Herstel geselecteerde', + 'restore_selected_confirm' => 'De geselecteerde gebruikers herstellen?', + 'restore_selected_empty' => 'Er zijn geen geselecteerde gebruikers om te herstellen.', + 'restore_selected_success' => 'Geselecteerde gebruikers zijn succesvol hersteld.', + 'ban_selected' => 'Blokkeer geselecteerde', + 'ban_selected_confirm' => 'De geselecteerde gebruikers blokkeren?', + 'ban_selected_empty' => 'Er zijn geen gebruikers geselecteerd om te blokkeren.', + 'ban_selected_success' => 'Geselecteerde gebruikers zijn succesvol geblokkeerd.', + 'unban_selected' => 'Deblokkeer geselecteerde', + 'unban_selected_confirm' => 'De geselecteerde gebruikers deblokkeren?', + 'unban_selected_empty' => 'Er zijn geen gebruikers geselecteerd om te deblokkeren.', + 'unban_selected_success' => 'Geselecteerde gebruikers zijn succesvol gedeblokkeerd.', + 'unsuspend' => 'Blokkade opheffen', + 'unsuspend_success' => 'Blokkade voor de gebruiker is opgeheven.', + 'unsuspend_confirm' => 'Blokkade voor deze gebruiker opheffen?', + ], + 'settings' => [ + 'users' => 'Gebruikers', + 'menu_label' => 'Instellingen', + 'menu_description' => 'Beheer de instellingen voor gebruikers.', + 'activation_tab' => 'Activatie', + 'signin_tab' => 'Inloggen', + 'registration_tab' => 'Registratie', + 'profile_tab' => 'Profiel', + 'notifications_tab' => 'Notificaties', + 'allow_registration' => 'Gebruikersregistratie toestaan', + 'allow_registration_comment' => 'Als deze optie is uitgeschakeld kunnen alleen beheerders gebruikers aanmaken.', + 'activate_mode' => 'Activatie modus', + 'activate_mode_comment' => 'Selecteer de wijze waarop een gebruikersaccount geactiveerd moet te worden.', + 'activate_mode_auto' => 'Automatisch', + 'activate_mode_auto_comment' => 'Het gebruikersaccount wordt meteen geactiveerd na registratie.', + 'activate_mode_user' => 'Gebruiker', + 'activate_mode_user_comment' => 'De gebruiker activeert het account d.m.v. e-mail.', + 'activate_mode_admin' => 'Beheerder', + 'activate_mode_admin_comment' => 'Alleen de beheerder kan het gebruikersaccount activeren.', + 'require_activation' => 'Inloggen vereist activatie', + 'require_activation_comment' => 'Gebruikers moeten een geactiveerd account hebben.', + 'use_throttle' => 'Beperk inlogpogingen', + 'use_throttle_comment' => 'Meerdere mislukte inlog pogingen resulteren in een tijdelijk uitgeschakeld gebruikersaccount.', + 'use_register_throttle' => 'Registraties beperken', + 'use_register_throttle_comment' => 'Voorkomen dat meerdere registraties van hetzelfde IP kort na elkaar plaatsvinden.', + 'block_persistence' => 'Voorkom gelijktijdige sessies ', + 'block_persistence_comment' => 'Indien ingeschakeld kunnen gebruikers zich niet aanmelden op meerdere apparaten tegelijk.', + 'login_attribute' => 'Inlog attribuut', + 'login_attribute_comment' => 'Selecteer het attribuut wat moet worden gebruikt om in te loggen.', + 'remember_login' => 'Onthoud inlogmodus', + 'remember_login_comment' => 'Selecteer of de gebruikerslogin onthouden moet worden.', + 'remember_always' => 'Altijd', + 'remember_never' => 'Nooit', + 'remember_ask' => 'Vraag de gebruiker bij het inloggen', + ], + 'user' => [ + 'label' => 'Gebruiker', + 'id' => 'ID', + 'username' => 'Gebruikersnaam', + 'name' => 'Voornaam', + 'name_empty' => 'Anoniem', + 'surname' => 'Achternaam', + 'email' => 'E-mailadres', + 'created_at' => 'Geregistreerd op', + 'last_seen' => 'Laatste login', + 'is_guest' => 'Gast', + 'joined' => 'Geregistreerd op', + 'is_online' => 'Momenteel online', + 'is_offline' => 'Momenteel offline', + 'send_invite' => 'Uitnodiging per e-mail sturen', + 'send_invite_comment' => 'Stuurt een welkomstbericht met login en wachtwoord informatie.', + 'create_password' => 'Wachtwoord aanmaken', + 'create_password_comment' => 'Voer een nieuw wachtwoord in dat wordt gebruikt om in te loggen.', + 'reset_password' => 'Reset wachtwoord', + 'reset_password_comment' => 'Voer een nieuw wachtwoord in om het wachtwoord te resetten.', + 'confirm_password' => 'Herhaal wachtwoord', + 'confirm_password_comment' => 'Voer het wachtwoord nogmaals in.', + 'groups' => 'Groep', + 'empty_groups' => 'Er zijn geen gebruikersgroepen beschikbaar.', + 'avatar' => 'Profielfoto', + 'details' => 'Details', + 'account' => 'Account', + 'block_mail' => 'Blokkeert alle uitgaande mail die naar deze gebruiker wordt gestuurd.', + 'status_guest' => 'Gast', + 'status_activated' => 'Geactiveerd', + 'status_registered' => 'Geregistreerd', + 'created_ip_address' => 'Registratie IP-address', + 'last_ip_address' => 'Laatste IP-address', + ], + 'group' => [ + 'label' => 'Groep', + 'id' => 'ID', + 'name' => 'Naam', + 'description_field' => 'Omschrijving', + 'code' => 'Code', + 'code_comment' => 'Voer een unieke code in als je deze groep wilt gebruiken met de API.', + 'created_at' => 'Aangemaakt op', + 'users_count' => 'Gebruikers', + 'is_new_user_default_field' => 'Voeg nieuwe beheerders automatisch toe aan deze groep.', + ], + 'groups' => [ + 'menu_label' => 'Groepen', + 'all_groups' => 'Groepen', + 'new_group' => 'Nieuwe groep', + 'delete_selected_confirm' => 'Weet u zeker dat u de geselecteerde groepen wilt verwijderen?', + 'list_title' => 'Beheer groepen', + 'delete_confirm' => 'Weet u zeker dat u deze groep wilt verwijderen?', + 'delete_selected_success' => 'De geselecteerde groepen zijn verwijderd.', + 'delete_selected_empty' => 'Er zijn geen groepen geselecteerd om te verwijderen.', + 'return_to_list' => 'Terug naar overzicht', + 'return_to_users' => 'Back to users list', + 'create_title' => 'Groep aanmaken', + 'update_title' => 'Wijzig groep', + 'preview_title' => 'Voorbeeldweergave groep', + ], + 'login' => [ + 'attribute_email' => 'E-mailadres', + 'attribute_username' => 'Gebruikersnaam', + ], + 'account' => [ + 'account' => 'Account', + 'account_desc' => 'Gebruikersaccount formulier.', + 'banned' => 'Sorry, deze gebruiker is momenteel niet geactiveerd. Neem contact met ons op voor verdere hulp.', + 'redirect_to' => 'Redirect naar', + 'redirect_to_desc' => 'Pagina om naar te redirecten na het bijwerken, inloggen of registreren.', + 'code_param' => 'Activatie Code parameter', + 'code_param_desc' => 'De pagina URL parameter die gebruikt wordt voor de registratie activatie code.', + 'force_secure' => 'Forceer beveiligd protocol', + 'force_secure_desc' => 'Stuur de URL altijd door naar HTTPS.', + 'invalid_user' => 'Geen gebruiker gevonden.', + 'invalid_activation_code' => 'Onjuiste activatie code', + 'invalid_deactivation_pass' => 'Het ingevoerde wachtwoord is ongeldig.', + 'invalid_current_pass' => 'Het ingevoerde huidige wachtwoord is ongeldig.', + 'success_activation' => 'Uw account is succesvol geactiveerd.', + 'success_deactivation' => 'Succesvol je account gedeactiveerd. Jammer dat je weggaat!', + 'success_saved' => 'Instellingen zijn opgeslagen.', + 'login_first' => 'U moet ingelogd zijn om deze pagina te bekijken.', + 'already_active' => 'Uw gebruikersaccount is reeds geactiveerd.', + 'activation_email_sent' => 'Een e-mailbericht met een activatie link is naar uw e-mailadres verzonden.', + 'activation_by_admin' => 'U bent succesvol geregistreerd. Uw account is nog niet actief en moet worden goedgekeurd door een beheerder.', + 'registration_disabled' => 'Registratie is momenteel uitgeschakeld.', + 'registration_throttled' => 'Registratie is geblokkeerd. Probeer het later nog eens.', + 'sign_in' => 'Inloggen', + 'register' => 'Registreren', + 'full_name' => 'Volledige naam', + 'email' => 'E-mailadres', + 'password' => 'Wachtwoord', + 'login' => 'Inloggen', + 'new_password' => 'Nieuw wachtwoord', + 'new_password_confirm' => 'Herhaal nieuw wachtwoord', + 'update_requires_password' => 'Bevestig wachtwoord bij update', + 'update_requires_password_comment' => 'Vereis het huidige wachtwoord van de gebruiker wanneer hij zijn profiel wijzigt.', + ], + 'reset_password' => [ + 'reset_password' => 'Reset wachtwoord', + 'reset_password_desc' => 'Wachtwoord vergeten formulier.', + 'code_param' => 'Reset Code parameter', + 'code_param_desc' => 'De pagina URL parameter die gebruikt wordt voor de reset code.', + ], + 'session' => [ + 'session' => 'Sessie', + 'session_desc' => 'Voegt de gebruikerssessie toe aan een pagina om pagina toegang te beperken.', + 'security_title' => 'Alleen toegestaan voor', + 'security_desc' => 'Wie toegestaan is om de pagina te bekijken.', + 'all' => 'Alle', + 'users' => 'Gebruikers', + 'guests' => 'Gasten', + 'allowed_groups_title' => 'Toegestane groepen', + 'allowed_groups_description' => 'Kies toegelaten groepen of geen om alle groepen toe te laten', + 'redirect_title' => 'Redirect naar', + 'redirect_desc' => 'Pagina om naar te redirecten als toegang is afgewezen.', + 'logout' => 'U bent succesvol uitgelogd.', + 'stop_impersonate_success' => 'Je doet je niet langer voor als een gebruiker.', + ], +]; diff --git a/plugins/rainlab/user/lang/pl/lang.php b/plugins/rainlab/user/lang/pl/lang.php new file mode 100644 index 0000000..5959c3b --- /dev/null +++ b/plugins/rainlab/user/lang/pl/lang.php @@ -0,0 +1,205 @@ + [ + 'name' => 'Użytkownik', + 'description' => 'Zarządzanie użytkownikami.', + 'tab' => 'Użytkownicy', + 'access_users' => 'Zarządzaj użytkownikami', + 'access_groups' => 'Zarządzaj grupami użytkowników', + 'access_settings' => 'Zarządzaj ustawieniami użytkownika', + 'impersonate_user' => 'Wcielaj się w użytkowników' + ], + 'users' => [ + 'menu_label' => 'Użytkownicy', + 'all_users' => 'Wszyscy użytkownicy', + 'new_user' => 'Nowy użytkownik', + 'list_title' => 'Zarządzaj użytkownikami', + 'trashed_hint_title' => 'Użytkownik dezaktywował swoje konto', + 'trashed_hint_desc' => 'Ten użytkownik dezaktywował swoje konto i nie chce już wyświetlać się na stronie. Może przywrócić konto w dowolnym momencie, logując się z powrotem.', + 'banned_hint_title' => 'Użytkownik został zbanowany', + 'banned_hint_desc' => 'Ten użytkownik został zbanowany przez administratora i nie będzie mógł się zalogować.', + 'guest_hint_title' => 'To jest użytkownik gościnny', + 'guest_hint_desc' => 'Ten użytkownik jest przechowywany wyłącznie w celach informacyjnych i musi się zarejestrować przed zalogowaniem.', + 'activate_warning_title' => 'Użytkownik nie aktywowany!', + 'activate_warning_desc' => 'Ten użytkownik nie został aktywowany i może nie być w stanie się zalogować.', + 'activate_confirm' => 'Czy na pewno chcesz aktywować tego użytkownika?', + 'activated_success' => 'Użytkownik został aktywowany', + 'activate_manually' => 'Aktywuj tego użytkownika ręcznie', + 'convert_guest_confirm' => 'Konwertuj tego gościa do użytkownika?', + 'convert_guest_manually' => 'Konwertuj na zarejestrowanego użytkownika', + 'convert_guest_success' => 'Użytkownik został przekonwertowany na zarejestrowanego', + 'impersonate_user' => 'Wciel się w użytkownika', + 'impersonate_confirm' => 'Wcielić się w tego użytkownika? Możesz powrócić do pierwotnego stanu wylogowując się.', + 'impersonate_success' => 'Wcielasz się w tego użytkownika', + 'delete_confirm' => 'Czy na pewno chcesz usunąć tego użytkownika?', + 'unban_user' => 'Odbanuj tego użytkownika', + 'unban_confirm' => 'Czy na pewno chcesz odbanować tego użytkownika?', + 'unbanned_success' => 'Użytkownik został odbanowany', + 'return_to_list' => 'Wróć do listy użytkowników', + 'update_details' => 'Zaktualizuj szczegóły', + 'bulk_actions' => 'Działania masowe', + 'delete_selected' => 'Usuń wybrane', + 'delete_selected_confirm' => 'Usunąć wybranych użytkowników?', + 'delete_selected_empty' => 'Nie ma wybranych użytkowników do usunięcia.', + 'delete_selected_success' => 'Pomyślnie usunięto wybranych użytkowników.', + 'activate_selected' => 'Aktywuj wybranych', + 'activate_selected_confirm' => 'Aktywować wybranych użytkowników?', + 'activate_selected_empty' => 'Nie ma wybranych użytkowników do aktywacji.', + 'activate_selected_success' => 'Pomyślnie aktywowano wybranych użytkowników.', + 'deactivate_selected' => 'Dezaktywuj wybranych', + 'deactivate_selected_confirm' => 'Dezaktywować wybranych użytkowników?', + 'deactivate_selected_empty' => 'Nie ma wybranych użytkowników do dezaktywacji.', + 'deactivate_selected_success' => 'Pomyślnie dezaktywowano wybranych użytkowników.', + 'restore_selected' => 'Przywrócić wybranych', + 'restore_selected_confirm' => 'Przywrócić wybranych użytkowników?', + 'restore_selected_empty' => 'Nie ma wybranych użytkowników do przywrócenia.', + 'restore_selected_success' => 'Pomyślnie przywrócono wybranych użytkowników.', + 'ban_selected' => 'Zbanuj wybranych', + 'ban_selected_confirm' => 'Zbanować wybranych użytkowników?', + 'ban_selected_empty' => 'Nie ma wybranych użytkowników do banowania.', + 'ban_selected_success' => 'Z powodzeniem zbanowano wybranych użytkowników.', + 'unban_selected' => 'Odbanuj wybranych', + 'unban_selected_confirm' => 'Odbanować wybranych użytkowników?', + 'unban_selected_empty' => 'Nie ma wybranych użytkowników do odbanowania.', + 'unban_selected_success' => 'Z powodzeniem odbanowano wybranych użytkowników.', + ], + 'settings' => [ + 'users' => 'Użytkownicy', + 'menu_label' => 'Ustawienia użytkownika', + 'menu_description' => 'Zarządzaj ogólnymi ustawieniami dla użytkowników.', + 'activation_tab' => 'Aktywacja', + 'signin_tab' => 'Zaloguj się', + 'registration_tab' => 'Rejestracja', + 'notifications_tab' => 'Powiadomienia', + 'allow_registration' => 'Zezwalaj na rejestrację użytkownika', + 'allow_registration_comment' => 'Jeśli jest to wyłączone, użytkownicy mogą być tworzeni tylko przez administratorów.', + 'activate_mode' => 'Tryb aktywacji', + 'activate_mode_comment' => 'Wybierz sposób aktywacji konta użytkownika.', + 'activate_mode_auto' => 'Automatyczny', + 'activate_mode_auto_comment' => 'Aktywowani automatycznie po rejestracji.', + 'activate_mode_user' => 'Użytkownik', + 'activate_mode_user_comment' => 'Użytkownik aktywuje własne konto za pomocą poczty e-mail.', + 'activate_mode_admin' => 'Administrator', + 'activate_mode_admin_comment' => 'Tylko administrator może aktywować użytkownika.', + 'require_activation' => 'Logowanie wymaga aktywacji konta', + 'require_activation_comment' => 'Użytkownicy muszą mieć aktywne konto, aby się zalogować.', + 'use_throttle' => 'Blokada prób logowania', + 'use_throttle_comment' => 'Powtórne nieudane próby zalogowania tymczasowo zawieszają użytkownika.', + 'block_persistence' => 'Zapobiegaj równoległym sesjom', + 'block_persistence_comment' => 'Aktywni użytkownicy nie mogą zalogować się na wielu urządzeniach w tym samym czasie.', + 'login_attribute' => 'Dane do logowania', + 'login_attribute_comment' => 'Wybierz, jakie podstawowe dane użytkownika mają być używane do logowania.', + ], + 'user' => [ + 'label' => 'Użytkownik', + 'id' => 'ID', + 'username' => 'Nazwa użytkownika', + 'name' => 'Imię / nick', + 'name_empty' => 'Anonimowy', + 'surname' => 'Nazwisko', + 'email' => 'Email', + 'created_at' => 'Zarejestrowany', + 'last_seen' => 'Ostatnio widziany', + 'is_guest' => 'Gość', + 'joined' => 'Dołączył', + 'is_online' => 'Online', + 'is_offline' => 'Offline', + 'send_invite' => 'Wyślij zaproszenie pocztą e-mail', + 'send_invite_comment' => 'Wysyła wiadomość powitalną zawierającą dane logowania i hasło.', + 'create_password' => 'Stwórz hasło', + 'create_password_comment' => 'Wprowadź nowe hasło używane do logowania.', + 'reset_password' => 'Zresetuj hasło', + 'reset_password_comment' => 'Aby zresetować hasło użytkownika, wprowadź nowe hasło.', + 'confirm_password' => 'Potwierdzenie hasła', + 'confirm_password_comment' => 'Wprowadź ponownie hasło, aby je potwierdzić.', + 'groups' => 'Grupy', + 'empty_groups' => 'Brak dostępnych grup użytkowników.', + 'avatar' => 'Avatar', + 'details' => 'Szczegóły', + 'account' => 'Konto', + 'block_mail' => 'Zablokuj wszystkie wiadomości wychodzące wysyłane do tego użytkownika.', + 'status_guest' => 'Gość', + 'status_activated' => 'Aktywowany', + 'status_registered' => 'Zarejestrowany', + ], + 'group' => [ + 'label' => 'Grupa', + 'id' => 'ID', + 'name' => 'Nazwa', + 'description_field' => 'Opis', + 'code' => 'Kod', + 'code_comment' => 'Wpisz unikalny kod służący do identyfikacji tej grupy.', + 'created_at' => 'Utworzona', + 'users_count' => 'Użytkownicy' + ], + 'groups' => [ + 'menu_label' => 'Grupy', + 'all_groups' => 'Grupy użytkowników', + 'new_group' => 'Nowa grupa', + 'delete_selected_confirm' => 'Czy na pewno chcesz usunąć wybrane grupy?', + 'list_title' => 'Zarządzaj grupami', + 'delete_confirm' => 'Czy na pewno chcesz usunąć tę grupę?', + 'delete_selected_success' => 'Pomyślnie usunięto wybrane grupy.', + 'delete_selected_empty' => 'Brak wybranych grup do usunięcia.', + 'return_to_list' => 'Powrót do listy grup', + 'return_to_users' => 'Powrót do listy użytkowników', + 'create_title' => 'Utwórz grupę użytkowników', + 'update_title' => 'Edytuj grupę użytkowników', + 'preview_title' => 'Podejrzyj grupę użytkowników' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Nazwa użytkownika' + ], + 'account' => [ + 'account' => 'Konto', + 'account_desc' => 'Formularz zarządzania użytkownikiem.', + 'banned' => 'Przepraszamy, ten użytkownik jest obecnie nieaktywny. Skontaktuj się z nami, aby uzyskać dalszą pomoc.', + 'redirect_to' => 'Przekieruj do', + 'redirect_to_desc' => 'Nazwa strony do przekierowania po aktualizacji, zalogowaniu lub rejestracji.', + 'code_param' => 'Kod aktywacyjny - parametr', + 'code_param_desc' => 'Parametr URL strony używany do rejestracji', + 'force_secure' => 'Wymuś bezpieczny protokół', + 'force_secure_desc' => 'Zawsze przekierowuj adres URL ze schematem HTTPS.', + 'invalid_user' => 'Nie znaleziono użytkownika o podanych danych uwierzytelniających.', + 'invalid_activation_code' => 'Podano niepoprawny kod aktywacyjny.', + 'invalid_deactivation_pass' => 'Podane hasło jest nieprawidłowe.', + 'success_activation' => 'Pomyślnie aktywowałeś swoje konto.', + 'success_deactivation' => 'Pomyślnie dezaktywowaliśmy Twoje konto.', + 'success_saved' => 'Ustawienia zostały zapisane!', + 'login_first' => 'Musisz się najpierw zalogować!', + 'already_active' => 'Twoje konto jest już aktywowane!', + 'activation_email_sent' => 'Email aktywacyjny został wysłany na twój adres e-mail.', + 'registration_disabled' => 'Rejestracja jest obecnie wyłączona.', + 'sign_in' => 'Zaloguj się', + 'register' => 'Rejestracja', + 'full_name' => 'Imię', + 'email' => 'Email', + 'password' => 'Hasło', + 'login' => 'Login', + 'new_password' => 'Nowe hasło', + 'new_password_confirm' => 'Potwierdź nowe hasło' + ], + 'reset_password' => [ + 'reset_password' => 'Zresetuj hasło', + 'reset_password_desc' => 'Formularz zapomnianego hasła.', + 'code_param' => 'Kod do resetu hasła - parametr', + 'code_param_desc' => 'Parametr URL strony używany do resetu hasła' + ], + 'session' => [ + 'session' => 'Sesja', + 'session_desc' => 'Dodaje sesję użytkownika do strony i może ograniczyć dostęp do strony.', + 'security_title' => 'Zezwól tylko', + 'security_desc' => 'Kto ma dostęp do tej strony.', + 'all' => 'Wszyscy', + 'users' => 'Użytkownicy', + 'guests' => 'Goście', + 'allowed_groups_title' => 'Zezwól grupom', + 'allowed_groups_description' => 'Wybierz dozwolone grupy lub brak grup, aby umożliwić wszystkim grupom', + 'redirect_title' => 'Przekieruj do', + 'redirect_desc' => 'Nazwa strony do przekierowania w przypadku odmowy dostępu.', + 'logout' => 'Wylogowałeś się poprawnie!', + 'stop_impersonate_success' => 'Nie wcielasz się już w użytkownika.', + ] +]; diff --git a/plugins/rainlab/user/lang/pt-br/lang.php b/plugins/rainlab/user/lang/pt-br/lang.php new file mode 100644 index 0000000..7341423 --- /dev/null +++ b/plugins/rainlab/user/lang/pt-br/lang.php @@ -0,0 +1,189 @@ + [ + 'name' => 'Usuário', + 'description' => 'Gerenciamento de usuários de front-end.', + 'tab' => 'Usuário', + 'access_users' => 'Gerenciar usuários', + 'access_groups' => 'Gerenciar Grupos de Usuários', + 'access_settings' => 'Gerenciar configurações do usuário' + ], + 'users' => [ + 'menu_label' => 'Usuários', + 'all_users' => 'Todos os Usuários', + 'new_user' => 'Novo Usuário', + 'list_title' => 'Gerenciar Usuários', + 'trashed_hint_title' => 'O usuário desativou sua conta', + 'trashed_hint_desc' => 'Este usuário desativou sua conta e não quer mais aparecer no site. Eles podem restaurar sua conta a qualquer momento, fazendo login novamente.', + 'banned_hint_title' => 'O usuário foi banido', + 'banned_hint_desc' => 'Este usuário foi banido por um administrador e não poderá iniciar sessão.', + 'guest_hint_title' => 'Este é um usuário convidado', + 'guest_hint_desc' => 'Esse usuário é armazenado apenas para fins de referência e precisa se registrar antes de fazer login.', + 'activate_warning_title' => 'Usuário não ativado!', + 'activate_warning_desc' => 'Este usuário ainda não foi ativado e pode ser incapaz de fazer login.', + 'activate_confirm' => 'Deseja realmente ativar este usuário?', + 'activated_success' => 'O usuário foi ativado', + 'activate_manually' => 'Ativar este usuário manualmente', + 'convert_guest_confirm' => 'Converter este convidado para um usuário?', + 'convert_guest_manually' => 'Converter para usuário registrado', + 'convert_guest_success' => 'O usuário foi convertido em uma conta registrada', + 'delete_confirm' => 'Deseja mesmo excluir este usuário?', + 'unban_user' => 'Desbanir este usuário', + 'unban_confirm' => 'Você realmente quer desbanir este usuário?', + 'unbanned_success' => 'O usuário foi desbanido', + 'return_to_list' => 'Voltar à lista de usuários', + 'update_details' => 'Atualizar detalhes', + 'bulk_actions' => 'Ações em massa', + 'delete_selected' => 'Excluir selecionado', + 'delete_selected_confirm' => 'Excluir os usuários selecionados?', + 'delete_selected_empty' => 'Não há usuários selecionados a serem excluídos.', + 'delete_selected_success' => 'Os usuários selecionados foram excluídos com êxito.', + 'deactivate_selected' => 'Desativar selecionado', + 'deactivate_selected_confirm' => 'Desativar os usuários selecionados?', + 'deactivate_selected_empty' => 'Não há usuários selecionados para desativar.', + 'deactivate_selected_success' => 'Os Usuários selecionados foram desativados com sucesso.', + 'restore_selected' => 'Restaurar selecionado', + 'restore_selected_confirm' => 'Restaurar usuários selecionados?', + 'restore_selected_empty' => 'Não há usuários selecionados para restaurar.', + 'restore_selected_success' => 'Os usuários selecionados foram restaurado com sucesso.', + 'ban_selected' => 'Banir selecionado', + 'ban_selected_confirm' => 'Banir os usuários selecionados?', + 'ban_selected_empty' => 'Não há usuários selecionados para banir.', + 'ban_selected_success' => 'Os usuários selecionados foram banidos com sucesso', + 'unban_selected' => 'Desbanir selecionado', + 'unban_selected_confirm' => 'Desbanir os usuários selecionados?', + 'unban_selected_empty' => 'Não há usuários selecionados para desbanir.', + 'unban_selected_success' => 'Os usuários selecionados foram desbanidos com sucesso.', + ], + 'settings' => [ + 'users' => 'Usuários', + 'menu_label' => 'Configurações de usuário', + 'menu_description' => 'Gerenciar configurações relacionadas a usuários.', + 'activation_tab' => 'Ativação', + 'signin_tab' => 'Login', + 'registration_tab' => 'Registração', + 'notifications_tab' => 'Notificações', + 'allow_registration' => 'Permitir o registro do usuário', + 'allow_registration_comment' => 'Se isso estiver desabilitado, os usuários só podem ser criados por administradores.', + 'activate_mode' => 'Modo de ativação', + 'activate_mode_comment' => 'Selecione como uma conta de usuário deve ser ativada.', + 'activate_mode_auto' => 'Automática', + 'activate_mode_auto_comment' => 'Ativada automaticamente mediante o cadastro.', + 'activate_mode_user' => 'Usuário', + 'activate_mode_user_comment' => 'O usuário ativa sua própria conta usando o email.', + 'activate_mode_admin' => 'Administrador', + 'activate_mode_admin_comment' => 'Apenas um Administrador pode ativar um usuário.', + 'require_activation' => 'Login requer ativação', + 'require_activation_comment' => 'Usuários precisam ter uma conta ativada para logar.', + 'use_throttle' => 'Tentativas limitadas', + 'use_throttle_comment' => 'Tentativas repetidas de login mal-sucedidas suspenderão temporariamente o usuário.', + 'login_attribute' => 'Atributo para login', + 'login_attribute_comment' => 'Selecione qual atributo do usuário deve ser usado para logar.', + ], + 'user' => [ + 'label' => 'Usuário', + 'id' => 'ID', + 'username' => 'Nome de usuário', + 'name' => 'Nome', + 'name_empty' => 'Anônimo', + 'surname' => 'Sobrenome', + 'email' => 'Email', + 'created_at' => 'Registrado', + 'last_seen' => 'Visto pela última vez', + 'is_guest' => 'Convidado', + 'joined' => 'Ingressou', + 'is_online' => 'Online agora', + 'is_offline' => 'Affline agora', + 'send_invite' => 'Enviar convite por e-mail', + 'send_invite_comment' => 'Envia uma mensagem de boas-vindas contendo informações de login e senha.', + 'create_password' => 'Criar Senha', + 'create_password_comment' => 'Informe uma senha para login do usuário.', + 'reset_password' => 'Resetar senha', + 'reset_password_comment' => 'Para resetar a senha deste usuário, informe uma nova senha aqui.', + 'confirm_password' => 'Confirmação de Senha', + 'confirm_password_comment' => 'Informe a senha novamente para confirmá-la.', + 'groups' => 'Grupos', + 'empty_groups' => 'Não há grupos disponíveis.', + 'avatar' => 'Avatar', + 'details' => 'Detalhes', + 'account' => 'Conta', + 'block_mail' => 'Bloquear todos os envios de e-mail para este usuário.', + 'status_guest' => 'Convidado', + 'status_activated' => 'Ativado', + 'status_registered' => 'Registrado' + ], + 'group' => [ + 'label' => 'Grupo', + 'id' => 'ID', + 'name' => 'Nome', + 'description_field' => 'Descrição', + 'code' => 'Código', + 'code_comment' => 'Insira um código exclusivo usado para identificar esse grupo.', + 'created_at' => 'Criado', + 'users_count' => 'Usuários' + ], + 'groups' => [ + 'menu_label' => 'Grupos', + 'all_groups' => 'Grupos de Usuários', + 'new_group' => 'Novo grupo', + 'delete_selected_confirm' => 'Deseja realmente excluir grupos selecionados?', + 'list_title' => 'Gerenciar grupos', + 'delete_confirm' => 'Deseja realmente excluir este grupo?', + 'delete_selected_success' => 'Os grupos selecionados foram excluídos com êxito.', + 'delete_selected_empty' => 'Não há grupos selecionados para excluir.', + 'return_to_list' => 'Voltar à lista de grupos', + 'return_to_users' => 'Voltar à lista de usuários', + 'create_title' => 'Criar grupo de Usuários', + 'update_title' => 'Editar grupo de usuários', + 'preview_title' => 'Visualização de grupo de usuário' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Nome de usuário' + ], + 'account' => [ + 'account' => 'Conta', + 'account_desc' => 'Formulário de gerenciamento de usuário.', + 'redirect_to' => 'Redirecionar para', + 'redirect_to_desc' => 'Nome da página para a qual redirecionar após atualização, login ou cadastro.', + 'code_param' => 'Parâmetro de Código de Ativação', + 'code_param_desc' => 'O parâmetro de URL da página usado para o código de ativação de cadastro', + 'invalid_user' => 'Não foi encontrado um usuário com as credenciais informadas.', + 'invalid_activation_code' => 'Código de ativação informado inválido', + 'invalid_deactivation_pass' => 'A senha inserida é inválida.', + 'success_activation' => 'Sua conta foi ativada com sucesso.', + 'success_deactivation' => 'Sua conta foi desativada com sucesso. Lamentamos ver você ir!', + 'success_saved' => 'Configurações salvas com sucesso!', + 'login_first' => 'Você precisa logar primeiro!', + 'already_active' => 'Sua conta já está ativada!', + 'activation_email_sent' => 'Email de ativação foi enviado para o endereço de e-mail informado.', + 'registration_disabled' => 'Atualmente, as inscrições estão desabilitadas.', + 'sign_in' => 'Entrar', + 'register' => 'Cadastrar-se', + 'full_name' => 'Nome Completo', + 'email' => 'Email', + 'password' => 'Senha', + 'login' => 'Entrar', + 'new_password' => 'Nova Senha', + 'new_password_confirm' => 'Confirmar Nova Senha' + ], + 'reset_password' => [ + 'reset_password' => 'Resetar Senha', + 'reset_password_desc' => 'Formulário de resetar senha.', + 'code_param' => 'Parâmetro de código para resetar senha ', + 'code_param_desc' => 'O parâmetro de URL da página usado para o código' + ], + 'session' => [ + 'session' => 'Sessão', + 'session_desc' => 'Adiciona a sessão do usuário a uma página e pode restringir o acesso à página.', + 'security_title' => 'Permitir apenas', + 'security_desc' => 'Quem tem permissão para acessar esta página.', + 'all' => 'Todos', + 'users' => 'Usuários', + 'guests' => 'Convidados', + 'redirect_title' => 'Redirecionar para', + 'redirect_desc' => 'Nome da página para qual redirecionar se o acesso for negado.', + 'logout' => 'Você foi desconectado com sucesso!' + ] +]; diff --git a/plugins/rainlab/user/lang/pt-pt/lang.php b/plugins/rainlab/user/lang/pt-pt/lang.php new file mode 100644 index 0000000..cf2409c --- /dev/null +++ b/plugins/rainlab/user/lang/pt-pt/lang.php @@ -0,0 +1,189 @@ + [ + 'name' => 'Utilizador', + 'description' => 'Gestão de utilizadores de front-end.', + 'tab' => 'Utilizador', + 'access_users' => 'Gerir utilizadores', + 'access_groups' => 'Gerir grupos de utilizadores', + 'access_settings' => 'Gerir definições de utilizador' + ], + 'users' => [ + 'menu_label' => 'Utilizadores', + 'all_users' => 'Todos os utilizadores', + 'new_user' => 'Novo Utilizador', + 'list_title' => 'Gerir utilizadores', + 'trashed_hint_title' => 'O utilizador desactivou esta conta.', + 'trashed_hint_desc' => 'O utilizador desactivou esta conta e não pretende aceder ao site. O mesmo pode restaurar a conta em qualquer altura fazendo novamente a entrada.', + 'banned_hint_title' => 'O utilizador foi banido.', + 'banned_hint_desc' => 'Este utilizador foi banido por um administrador e não conseguirá fazer a entrada.', + 'guest_hint_title' => 'Utilizador convidado.', + 'guest_hint_desc' => 'Utilizador guardado para fins de referência e apenas precisa fazer registo antes de poder entrar.', + 'activate_warning_title' => 'Utilizador não activado!', + 'activate_warning_desc' => 'Este utilizador não foi activado e estará impossibilitado de entrar.', + 'activate_confirm' => 'Deseja ativar este utilizador?', + 'activated_success' => 'O Utilizador foi ativado com sucesso!', + 'activate_manually' => 'Activar este utilizador manualmente', + 'convert_guest_confirm' => 'Converter este convidado para utilizador?', + 'convert_guest_manually' => 'Converter para utilizador registado.', + 'convert_guest_success' => 'O utilizador foi convertido para uma conta registada', + 'delete_confirm' => 'Deseja eliminar este utilizador?', + 'unban_user' => 'Remover banimento a este utilizador', + 'unban_confirm' => 'Pretende remover banimento a este utilizador?', + 'unbanned_success' => 'Foi removido banimento deste utilizador', + 'return_to_list' => 'Regressar à lista de Utilizadores', + 'update_details' => 'Actualizar detalhes', + 'bulk_actions' => 'Acções em bloco', + 'delete_selected' => 'Eliminar seleccionados', + 'delete_selected_confirm' => 'Eliminar os utilizadores selecionados?', + 'delete_selected_empty' => 'Não há utilizadores selecionados para eliminar.', + 'delete_selected_success' => 'Utilizadores selecionados eliminados com sucesso.', + 'deactivate_selected' => 'Inactivar utilizadores seleccionados', + 'deactivate_selected_confirm' => 'Inactivar utilizadores seleccionados?', + 'deactivate_selected_empty' => 'Não existem utilizadores seleccionados para inactivar.', + 'deactivate_selected_success' => 'Utilizadores seleccionados inactivados com sucesso.', + 'restore_selected' => 'Restaurar utilizadores seleccionados', + 'restore_selected_confirm' => 'Restaurar utilizadores seleccionados?', + 'restore_selected_empty' => 'Não existem utilizadores seleccionados para restaurar.', + 'restore_selected_success' => 'Utilizadores seleccionados restaurados com sucesso.', + 'ban_selected' => 'Banir utilizadores seleccionados', + 'ban_selected_confirm' => 'Banir utilizadores seleccionados?', + 'ban_selected_empty' => 'Não existem utilizadores seleccionados para banir.', + 'ban_selected_success' => 'Utilizadores seleccionados banidos com sucesso.', + 'unban_selected' => 'Remover banimento a utilizadores seleccionados', + 'unban_selected_confirm' => 'Remover banimento a utilizadores seleccionados?', + 'unban_selected_empty' => 'Não existem utilizadores seleccionados para remover banimento.', + 'unban_selected_success' => 'Removido banimento com sucesso aos utilizadores seleccionados.', + ], + 'settings' => [ + 'users' => 'Utilizadores', + 'menu_label' => 'Configurações de Utilizador', + 'menu_description' => 'Gerir configurações relacionadas a Utilizadores.', + 'activation_tab' => 'Activação', + 'signin_tab' => 'Entrar', + 'registration_tab' => 'Registo', + 'notifications_tab' => 'Notificatções', + 'allow_registration' => 'Permitir registo de utilizador', + 'allow_registration_comment' => 'Se inactivo os utilizadores só poderão ser criados por administradores.', + 'activate_mode' => 'Modo de activação', + 'activate_mode_comment' => 'Selecione como uma conta de utilizador deve ser activada.', + 'activate_mode_auto' => 'Automático', + 'activate_mode_auto_comment' => 'Activada automaticamente mediante o registo.', + 'activate_mode_user' => 'Utilizador', + 'activate_mode_user_comment' => 'O utilizador activa a própria conta usando o e-mail.', + 'activate_mode_admin' => 'Administrador', + 'activate_mode_admin_comment' => 'Apenas um Administrador pode activar um utilizador.', + 'require_activation' => 'Permissão para entrar requer ativação', + 'require_activation_comment' => 'Utilizadores precisam ter uma conta activada para entrar.', + 'use_throttle' => 'Tentativas limitadas', + 'use_throttle_comment' => 'Tentativas repetidas de entrada mal-sucedidas suspenderão temporariamente o utilizador.', + 'login_attribute' => 'Atributo para entrar', + 'login_attribute_comment' => 'Selecione qual atributo do utilizador deve ser usado para entrar.', + ], + 'user' => [ + 'label' => 'Utilizador', + 'id' => 'ID', + 'username' => 'Nome de utilizador', + 'name' => 'Nome', + 'name_empty' => 'Anonymous', + 'surname' => 'Último nome', + 'email' => 'E-mail', + 'created_at' => 'Registado em', + 'last_seen' => 'Visto por último', + 'is_guest' => 'Convidado', + 'joined' => 'Registou-se a', + 'is_online' => 'Online agora', + 'is_offline' => 'Desligado', + 'send_invite' => 'E-mail de convite enviado', + 'send_invite_comment' => 'Emvia uma mensagem de Boas Vindas contendo informações de acesso.', + 'create_password' => 'Criar password', + 'create_password_comment' => 'Informe uma password para entrada do utilizador.', + 'reset_password' => 'Redefinir password', + 'reset_password_comment' => 'Para redefinir a password deste utilizador, informe uma nova password aqui.', + 'confirm_password' => 'Confirmação de password', + 'confirm_password_comment' => 'Informe a password novamente para confirmá-la.', + 'groups' => 'Grupos', + 'empty_groups' => 'Não há grupos disponíveis.', + 'avatar' => 'Avatar', + 'details' => 'Detalhes', + 'account' => 'Conta', + 'block_mail' => 'Bloquear todos os envios de e-mail para este Utilizador.', + 'status_guest' => 'Convidado', + 'status_activated' => 'Activado', + 'status_registered' => 'Registado', + ], + 'group' => [ + 'label' => 'Grupo', + 'id' => 'ID', + 'name' => 'Nome', + 'description_field' => 'Descrição', + 'code' => 'Código', + 'code_comment' => 'Introduza um código único para identificar este grupo.', + 'created_at' => 'Criado', + 'users_count' => 'Utilizadores' + ], + 'groups' => [ + 'menu_label' => 'Grupos', + 'all_groups' => 'Grupos de utilizador', + 'new_group' => 'Novo grupo', + 'delete_selected_confirm' => 'Pretende eliminar os grupos seleccionados?', + 'list_title' => 'Gerir grupos', + 'delete_confirm' => 'Pretende eliminar este grupo?', + 'delete_selected_success' => 'Grupos seleccionados eliminados com sucesso.', + 'delete_selected_empty' => 'Não existem grupos seleccionados para elimianr.', + 'return_to_list' => 'Regressar à lista de grupos', + 'return_to_users' => 'Regressar à lista de utilizadores', + 'create_title' => 'Criar Grupo de utilizadores', + 'update_title' => 'Editar grupo de utilizadores', + 'preview_title' => 'Previsão de grupo de utilizadores' + ], + 'login' => [ + 'attribute_email' => 'E-mail', + 'attribute_username' => 'Nome de utilizador' + ], + 'account' => [ + 'account' => 'Conta', + 'account_desc' => 'Formulário de gerenciamento de utilizador.', + 'redirect_to' => 'Redirecionar para', + 'redirect_to_desc' => 'Nome da página para a qual redirecionar após atualização, entrada ou registo.', + 'code_param' => 'Parâmetro de Código de Ativação', + 'code_param_desc' => 'O parâmetro de URL da página usado para o código de ativação de registo', + 'invalid_user' => 'Não foi encontrado um utilizador com as credenciais informadas.', + 'invalid_activation_code' => 'Código de ativação inserido é inválido', + 'invalid_deactivation_pass' => 'A password inserida é inválida.', + 'success_activation' => 'Conta foi ativada com sucesso.', + 'success_deactivation' => 'A conta foi inactivada com sucesso. Lamentamos vê-lo ir-se embora!', + 'success_saved' => 'Configurações guardadas com sucesso!', + 'login_first' => 'Precisa efectuar a entrada primeiro!', + 'already_active' => 'A sua conta já está ativada!', + 'activation_email_sent' => 'E-mail de activação foi enviado para o endereço de e-mail fornecido.', + 'registration_disabled' => 'Registrations are currently disabled.', + 'sign_in' => 'Entrar', + 'register' => 'Fazer registo', + 'full_name' => 'Nome Completo', + 'email' => 'E-mail', + 'password' => 'Password', + 'login' => 'Entrar', + 'new_password' => 'Nova Password', + 'new_password_confirm' => 'Confirmar nova password' + ], + 'reset_password' => [ + 'reset_password' => 'Redefinir password', + 'reset_password_desc' => 'Formulário de redefinição de password .', + 'code_param' => 'Parâmetro de código para redefinir password ', + 'code_param_desc' => 'O parâmetro de URL da página usado para o código' + ], + 'session' => [ + 'session' => 'Sessão', + 'session_desc' => 'Adiciona a sessão do utilizador a uma página e pode restringir o acesso à página.', + 'security_title' => 'Permitir apenas', + 'security_desc' => 'Quem tem permissão para aceder a esta página.', + 'all' => 'Todos', + 'users' => 'Utilizadores', + 'guests' => 'Visitantes', + 'redirect_title' => 'Redirecionar para', + 'redirect_desc' => 'Nome da página para qual redirecionar se o acesso for negado.', + 'logout' => 'A sessão foi terminada com sucesso!' + ] +]; diff --git a/plugins/rainlab/user/lang/ru/lang.php b/plugins/rainlab/user/lang/ru/lang.php new file mode 100644 index 0000000..2e22045 --- /dev/null +++ b/plugins/rainlab/user/lang/ru/lang.php @@ -0,0 +1,228 @@ + [ + 'name' => 'Пользователи', + 'description' => 'Фронтенд управление пользователями.', + 'tab' => 'Пользователи', + 'access_users' => 'Управление пользователями', + 'access_groups' => 'Управление группами пользователей', + 'access_settings' => 'Управление настройками пользователей', + 'impersonate_user' => 'Войти как этот пользователь', + ], + 'users' => [ + 'menu_label' => 'Пользователи', + 'all_users' => 'Все пользователи', + 'new_user' => 'Новый пользователь', + 'list_title' => 'Управление пользователями', + 'trashed_hint_title' => 'Пользователь деактивировал свой аккаунт', + 'trashed_hint_desc' => 'Этот пользователь деактивировал свой аккаунт. Он может реактивировать свой аккаунт в любое время.', + 'banned_hint_title' => 'Пользователь заблокирован', + 'banned_hint_desc' => 'Этот пользователь заблокирован администратором и не сможет авторизоваться.', + 'guest_hint_title' => 'Это гостевая учётная запись', + 'guest_hint_desc' => 'Этот пользователь сохранен только для справочных целей и должен быть зарегистрирован, прежде чем сможет выполнить вход.', + 'activate_warning_title' => 'Пользователь не активирован!', + 'activate_warning_desc' => 'Этот пользователь не активирован и не сможет войти.', + 'activate_confirm' => 'Вы действительно хотите активировать данного пользователя?', + 'activated_success' => 'Пользователь был успешно активирован!', + 'activate_manually' => 'Активировать этого пользователя вручную', + 'convert_guest_confirm' => 'Преобразовать гостя в пользователя?', + 'convert_guest_manually' => 'Преобразовать в зарегистрированного пользователя', + 'convert_guest_success' => 'Гостевая учётная запись преобразована в зарегистрированную.', + 'impersonate_user' => 'Войти как этот пользователь', + 'impersonate_confirm' => 'Войти как этот пользователь? Вы сможете вернуться в исходное состояние после разлогинивания.', + 'impersonate_success' => 'Вы теперь представлены как другой пользователь', + 'delete_confirm' => 'Вы действительно хотите удалить этого пользователя?', + 'unban_user' => 'Разблокировать', + 'unban_confirm' => 'Вы уверены, что хотите разблокировать этого пользователя?', + 'unbanned_success' => 'Пользователь разблокирован', + 'return_to_list' => 'Вернуться к списку пользователей', + 'update_details' => 'Изменить данные', + 'bulk_actions' => 'Массовые действия', + 'delete_selected' => 'Удалить выбранные', + 'delete_selected_confirm' => 'Удалить выбранных пользователей?', + 'delete_selected_empty' => 'Нет выбранных пользователей для удаления.', + 'delete_selected_success' => 'Выбранные пользователи успешно удалены.', + 'activate_selected' => 'Активировать выбранные', + 'activate_selected_confirm' => 'Активировать выбранных пользователей?', + 'activate_selected_empty' => 'Нет выбранных пользователей для активации.', + 'activate_selected_success' => 'Выбранные пользователи успешно активированы.', + 'deactivate_selected' => 'Деактивировать выбранные', + 'deactivate_selected_confirm' => 'Деактивировать выбранных пользователей?', + 'deactivate_selected_empty' => 'Нет выбранных пользователей для деактивации.', + 'deactivate_selected_success' => 'Выбранные пользователи успешно деактивированы.', + 'restore_selected' => 'Восстановить выбранные', + 'restore_selected_confirm' => 'Восстановить выбранных пользователей?', + 'restore_selected_empty' => 'Нет выбранных пользователей для восстановления.', + 'restore_selected_success' => 'Выбранные пользователи успешно восстановлены.', + 'ban_selected' => 'Заблокировать выбранные', + 'ban_selected_confirm' => 'Заблокировать выбранных пользователей?', + 'ban_selected_empty' => 'Нет выбранных пользователей для блокировки.', + 'ban_selected_success' => 'Выбранные пользователи успешно заблокированы.', + 'unban_selected' => 'Разблокировать выбранные', + 'unban_selected_confirm' => 'Разблокировать выбранных пользователей?', + 'unban_selected_empty' => 'Нет выбранных пользователей для разблокировки.', + 'unban_selected_success' => 'Выбранные пользователи успешно разблокированы.', + 'unsuspend' => 'Приостановлен', + 'unsuspend_success' => 'Пользователь был приостановлен.', + 'unsuspend_confirm' => 'Приостановить данного пользователя?' + ], + 'settings' => [ + 'users' => 'Пользователи', + 'menu_label' => 'Настройки пользователя', + 'menu_description' => 'Управления параметрами пользователя.', + 'activation_tab' => 'Активация', + 'signin_tab' => 'Авторизация', + 'registration_tab' => 'Регистрация', + 'profile_tab' => 'Профиль', + 'notifications_tab' => 'Оповещения', + 'allow_registration' => 'Разрешить регистрацию', + 'allow_registration_comment' => 'Если эта опция выключена, только администраторы смогут регистрировать пользователей.', + 'activate_mode' => 'Активация', + 'activate_mode_comment' => 'Активация пользователя.', + 'activate_mode_auto' => 'Автоматическая', + 'activate_mode_auto_comment' => 'Автоматическая активация при регистрации.', + 'activate_mode_user' => 'Стандартная', + 'activate_mode_user_comment' => 'Активация при помощи электронной почты.', + 'activate_mode_admin' => 'Ручная', + 'activate_mode_admin_comment' => 'Только администратор может активировать пользователя.', + 'require_activation' => 'Обязательная активация аккаунта', + 'require_activation_comment' => 'Пользователи должны иметь активированный аккаунт для входа.', + 'use_throttle' => 'Отслеживание неудачных попыток авторизации', + 'use_throttle_comment' => 'При множественных неудачных попытках авторизации пользователь будет заморожен.', + 'use_register_throttle' => 'Приостанавливать регистрацию', + 'use_register_throttle_comment' => 'Предотвращение большого количества регистраций с одного IP-адреса в короткий срок.', + 'block_persistence' => 'Запретить параллельные сессии', + 'block_persistence_comment' => 'Если включено, пользователи не могут войти с разных устройств одновременно.', + 'login_attribute' => 'Логин', + 'login_attribute_comment' => 'Поле, используемое в качестве логина пользователя.', + 'remember_login' => 'Режим "Запомнить меня"', + 'remember_login_comment' => 'Выберите, должна ли сессия пользователя быть постоянной.', + 'remember_always' => 'Всегда', + 'remember_never' => 'Никогда', + 'remember_ask' => 'Спросить пользователя при входе', + ], + 'user' => [ + 'label' => 'Пользователь', + 'id' => 'ID', + 'username' => 'Имя пользователя', + 'name' => 'Имя', + 'name_empty' => 'Аноним', + 'surname' => 'Фамилия', + 'email' => 'Email', + 'created_at' => 'Дата регистрации', + 'last_seen' => 'Последняя активность', + 'is_guest' => 'Гость', + 'joined' => 'Зарегистрирован', + 'is_online' => 'В сети', + 'is_offline' => 'Не в сети', + 'send_invite' => 'Отправить приглашение по почте', + 'send_invite_comment' => 'Отправляет приветственнное сообщение на почту с логином и паролем для входа.', + 'create_password' => 'Создать пароль', + 'create_password_comment' => 'Введите новый пароль для пользователя.', + 'reset_password' => 'Сброс пароля', + 'reset_password_comment' => 'Для сброса пароля пользователя введите здесь новый пароль.', + 'confirm_password' => 'Подтверждение пароля', + 'confirm_password_comment' => 'Введите пароль еще раз для подтверждения.', + 'groups' => 'Группы', + 'empty_groups' => 'Нет групп, доступных пользователю.', + 'avatar' => 'Аватар', + 'details' => 'Информация', + 'account' => 'Аккаунт', + 'block_mail' => 'Отключить всю исходящую почту для этого пользователя.', + 'status_label' => 'Статус', + 'status_guest' => 'Гость', + 'status_activated' => 'Активирован', + 'status_registered' => 'Зарегистрирован', + 'created_ip_address' => 'Создан с IP-адреса', + 'last_ip_address' => 'Последний IP-адрес', + ], + 'group' => [ + 'label' => 'Группа', + 'id' => 'ID', + 'name' => 'Имя', + 'description_field' => 'Описание', + 'code' => 'Код', + 'code_comment' => 'Введите уникальный код для идентификации этой группы.', + 'created_at' => 'Дата создания', + 'users_count' => 'Пользователей', + ], + 'groups' => [ + 'menu_label' => 'Группы', + 'all_groups' => 'Группы пользователей', + 'new_group' => 'Новая группа', + 'delete_selected_confirm' => 'Вы действительно хотите удалить выбранные группы?', + 'list_title' => 'Управление группами', + 'delete_confirm' => 'Вы действительно хотите удалить эту группу?', + 'delete_selected_success' => 'Выбранные группы удалены.', + 'delete_selected_empty' => 'Не выбраны группы для удаления.', + 'return_to_list' => 'Вернутся к списку групп', + 'return_to_users' => 'Вернутся к списку пользователей', + 'create_title' => 'Создание группы', + 'update_title' => 'Редактирование группы', + 'preview_title' => 'Предпросмотр группы', + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Имя пользователя', + ], + 'account' => [ + 'account' => 'Аккаунт', + 'account_desc' => 'Управление формой.', + 'banned' => 'Извините, этот пользователь заблокирован. Обратитесь к администратору за помощью.', + 'redirect_to' => 'Перенаправление', + 'redirect_to_desc' => 'Страница для перенаправления после обновления, входа или регистрации.', + 'code_param' => 'Параметр кода', + 'code_param_desc' => 'Параметр, в котором передаётся код активации.', + 'force_secure' => 'Использовать HTTPS', + 'force_secure_desc' => 'Всегда перенаправлять через HTTPS.', + 'invalid_user' => 'Пользователь с такими данным не найден.', + 'invalid_activation_code' => 'Неверный код активации.', + 'invalid_deactivation_pass' => 'Введенный Вами пароль некорректен.', + 'invalid_current_pass' => 'Текущий пароль который вы ввели - недействителен.', + 'success_activation' => 'Успешная активация пользователя.', + 'success_deactivation' => 'Ваш аккаунт был деактивирован.', + 'success_saved' => 'Настройки успешно сохранены!', + 'login_first' => 'Вам необходимо войти под своими данными!', + 'already_active' => 'Ваш аккаунт ещё активирован!', + 'activation_email_sent' => 'Письмо с дальнейшими инструкциями по активации было отправлено на указанный адрес электронной почты.', + 'activation_by_admin' => 'Вы успешно зарегистрировались. Ваша учетная запись пока еще не активна и должна быть одобрена администратором.', + 'registration_disabled' => 'Регистрация сейчас недоступна.', + 'registration_throttled' => 'Регистрация приостановлена. Пожалуйста, попробуйте позже.', + 'sign_in' => 'Авторизация', + 'register' => 'Регистрация', + 'full_name' => 'Полное имя', + 'email' => 'Email', + 'password' => 'Пароль', + 'login' => 'Логин', + 'new_password' => 'Новый пароль', + 'new_password_confirm' => 'Подтверждение пароля', + 'update_requires_password' => 'Подтверждать пароль при обновлении', + 'update_requires_password_comment' => 'Запрашивать текущий пароль пользователя при редактировании его профиля.', + 'activation_page' => 'Страница активации', + 'activation_page_comment' => 'Выберите страницу для активации аккаунта пользователя.', + 'reset_page' => 'Страница сброса пароля', + 'reset_page_comment' => 'Выберите страницу для сброса проля аккаунта.', + ], + 'reset_password' => [ + 'reset_password' => 'Сброс пароля', + 'reset_password_desc' => 'Форма восстановления пароля.', + 'code_param' => 'Параметр кода', + 'code_param_desc' => 'Параметр, в котором передаётся код сброса пароля.', + ], + 'session' => [ + 'session' => 'Сессия', + 'session_desc' => 'Добавление пользовательского сеанса к странице (доступ)', + 'security_title' => 'Доступ к странице', + 'security_desc' => 'Кто имеет право на доступ к этой странице.', + 'all' => 'Все', + 'users' => 'Пользователи', + 'guests' => 'Гости', + 'allowed_groups_title' => 'Разрешённые группы', + 'allowed_groups_description' => 'Выберите разрешённые группы или ничего, чтобы разрешить все', + 'redirect_title' => 'Перенаправление', + 'redirect_desc' => 'Страница для перенаправления при отсутствии доступа.', + 'logout' => 'Вы успешно вышли из системы!', + 'stop_impersonate_success' => 'Вы больше не представлены как другой пользователь.', + ], +]; diff --git a/plugins/rainlab/user/lang/si/lang.php b/plugins/rainlab/user/lang/si/lang.php new file mode 100644 index 0000000..7839608 --- /dev/null +++ b/plugins/rainlab/user/lang/si/lang.php @@ -0,0 +1,228 @@ + [ + 'name' => 'පරිශීලක', + 'description' => 'ඉදිරිපස පරිශීලක කළමනාකරණය.', + 'tab' => 'පරිශීලකයන්', + 'access_users' => 'පරිශීලකයන් කළමනාකරණය කරන්න', + 'access_groups' => 'පරිශීලක කණ්ඩායම් කළමනාකරණය කරන්න', + 'access_settings' => 'පරිශීලක සැකසුම් කළමනාකරණය කරන්න', + 'impersonate_user' => 'පරිශීලකයන් ලෙස පෙනී සිටින්න' + ], + 'users' => [ + 'menu_label' => 'පරිශීලකයන්', + 'all_users' => 'සියලුම පරිශීලකයින්', + 'new_user' => 'නව පරිශීලක', + 'list_title' => 'පරිශීලකයන් කළමනාකරණය කරන්න', + 'trashed_hint_title' => 'පරිශීලකයා ඔවුන්ගේ ගිණුම අක්රිය කර ඇත', + 'trashed_hint_desc' => 'මෙම පරිශීලකයා ඔවුන්ගේ ගිණුම අක්‍රිය කර ඇති අතර තවදුරටත් අඩවියේ පෙනී සිටීමට අවශ්‍ය නැත. ඔවුන්ට නැවත පුරනය වීමෙන් ඕනෑම වේලාවක ඔවුන්ගේ ගිණුම ප්‍රතිසාධනය කළ හැක.', + 'banned_hint_title' => 'පරිශීලකයා තහනම් කර ඇත', + 'banned_hint_desc' => 'මෙම පරිශීලකයා පරිපාලකයෙකු විසින් තහනම් කර ඇති අතර ඔහුට පුරනය වීමට නොහැකි වනු ඇත.', + 'guest_hint_title' => 'මෙය ආගන්තුක පරිශීලකයෙකි', + 'guest_hint_desc' => 'මෙම පරිශීලකයා ගබඩා කර ඇත්තේ යොමු අරමුණු සඳහා පමණක් වන අතර පුරනය වීමට පෙර ලියාපදිංචි වීමට අවශ්‍ය වේ.', + 'activate_warning_title' => 'පරිශීලකයා සක්රිය කර නැත!', + 'activate_warning_desc' => 'මෙම පරිශීලකයා සක්‍රිය කර නොමැති අතර පුරනය වීමට නොහැකි විය හැක.', + 'activate_confirm' => 'ඔබට ඇත්තටම මෙම පරිශීලකයා සක්‍රිය කිරීමට අවශ්‍යද?', + 'activated_success' => 'පරිශීලකයා සක්රිය කර ඇත', + 'activate_manually' => 'මෙම පරිශීලකයා අතින් සක්රිය කරන්න', + 'convert_guest_confirm' => 'මෙම අමුත්තා පරිශීලකයෙකු බවට පරිවර්තනය කරන්නද?', + 'convert_guest_manually' => 'ලියාපදිංචි පරිශීලකයා බවට පරිවර්තනය කරන්න', + 'convert_guest_success' => 'පරිශීලක ලියාපදිංචි ගිණුමක් බවට පරිවර්තනය කර ඇත', + 'impersonate_user' => 'පරිශීලක ලෙස පෙනී සිටින්න', + 'impersonate_confirm' => 'මෙම පරිශීලකයා ලෙස පෙනී සිටින්නද? ලොග් අවුට් වීමෙන් ඔබට ඔබේ මුල් තත්වයට ආපසු යා හැක.', + 'impersonate_success' => 'ඔබ දැන් මෙම පරිශීලකයා ලෙස පෙනී සිටියි', + 'delete_confirm' => 'ඔබට ඇත්තටම මෙම පරිශීලකයා මකා දැමීමට අවශ්‍යද?', + 'unban_user' => 'මෙම පරිශීලක තහනම ඉවත් කරන්න', + 'unban_confirm' => 'ඔබට ඇත්තටම මෙම පරිශීලකයාගේ තහනම ඉවත් කිරීමට අවශ්‍යද?', + 'unbanned_success' => 'පරිශීලක තහනම ඉවත් කර ඇත', + 'return_to_list' => 'පරිශීලක ලැයිස්තුව වෙත ආපසු යන්න', + 'update_details' => 'යාවත්කාලීන විස්තර', + 'bulk_actions' => 'තොග ක්රියාවන්', + 'delete_selected' => 'තෝරාගත් මකන්න', + 'delete_selected_confirm' => 'තෝරාගත් පරිශීලකයින් මකන්නද?', + 'delete_selected_empty' => 'මකා දැමීමට තෝරාගත් පරිශීලකයන් නැත.', + 'delete_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව මකා දමන ලදී.', + 'activate_selected' => 'තෝරාගත් සක්රිය කරන්න', + 'activate_selected_confirm' => 'තෝරාගත් පරිශීලකයන් සක්රිය කරන්නද?', + 'activate_selected_empty' => 'සක්‍රිය කිරීමට තෝරාගත් පරිශීලකයන් නොමැත.', + 'activate_selected_success' => ' තෝරාගත් පරිශීලකයින් සාර්ථකව සක්‍රිය කර ඇත.', + 'deactivate_selected' => 'තෝරාගත් අක්රිය කරන්න', + 'deactivate_selected_confirm' => 'තෝරාගත් පරිශීලකයන් අක්‍රිය කරන්නද?', + 'deactivate_selected_empty' => 'අක්‍රිය කිරීමට තෝරාගත් පරිශීලකයන් නැත.', + 'deactivate_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව අක්‍රිය කර ඇත.', + 'restore_selected' => 'තෝරාගත් ප්‍රතිසාධනය කරන්න', + 'restore_selected_confirm' => 'තෝරාගත් පරිශීලකයන් ප්‍රතිසාධනය කරන්නද?', + 'restore_selected_empty' => 'ප්‍රතිසාධනය කිරීමට තෝරාගත් පරිශීලකයන් නැත.', + 'restore_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව ප්‍රතිසාධනය කරන ලදී.', + 'ban_selected' => 'තහනම් තෝරන ලදී', + 'ban_selected_confirm' => 'තෝරාගත් පරිශීලකයින් තහනම් කරන්නද?', + 'ban_selected_empty' => 'තහනම් කිරීමට තෝරාගත් පරිශීලකයන් නොමැත.', + 'ban_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව තහනම් කරන ලදී.', + 'unban_selected' => 'තහනම් ඉවත් කිරීම තෝරා ඇත', + 'unban_selected_confirm' => 'තෝරාගත් පරිශීලකයින් තහනම් නොකරන්නද?', + 'unban_selected_empty' => 'තහනම් කිරීම ඉවත් කිරීමට තෝරාගත් පරිශීලකයන් නොමැත.', + 'unban_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව තහනම් කිරීම ඉවත් කරන ලදී.', + 'unsuspend' => 'අත්හිටුවීම ඉවත් කරන්න', + 'unsuspend_success' => 'පරිශීලකයාගේ අත්හිටුවීම ඉවත් කර ඇත.', + 'unsuspend_confirm' => 'මෙම පරිශීලකයාගේ අත්හිටුවීම ඉවත් කරන්නද?' + ], + 'settings' => [ + 'users' => 'පරිශීලකයන්', + 'menu_label' => 'පරිශීලක සැකසුම්', + 'menu_description' => 'පරිශීලක සත්‍යාපනය, ලියාපදිංචිය සහ සක්‍රිය කිරීමේ සැකසුම් කළමනාකරණය කරන්න.', + 'activation_tab' => 'සක්රිය කිරීම', + 'signin_tab' => 'පුරන්න', + 'registration_tab' => 'ලියාපදිංචි කිරීම', + 'profile_tab' => 'පැතිකඩ', + 'notifications_tab' => 'දැනුම්දීම්', + 'allow_registration' => 'පරිශීලක ලියාපදිංචියට ඉඩ දෙන්න', + 'allow_registration_comment' => 'මෙය ආබාධිත නම්, පරිශීලකයින් නිර්මාණය කළ හැක්කේ පරිපාලකයින්ට පමණි.', + 'activate_mode' => 'සක්රිය කිරීමේ මාදිලිය', + 'activate_mode_comment' => 'පරිශීලක ගිණුමක් සක්රිය කළ යුතු ආකාරය තෝරන්න.', + 'activate_mode_auto' => 'ස්වයංක්රීය', + 'activate_mode_auto_comment' => 'ලියාපදිංචි වීමෙන් පසු ස්වයංක්රීයව සක්රිය කර ඇත.', + 'activate_mode_user' => 'පරිශීලක', + 'activate_mode_user_comment' => 'පරිශීලකයා තැපෑල භාවිතයෙන් තමන්ගේම ගිණුම සක්රිය කරයි.', + 'activate_mode_admin' => 'පරිපාලක', + 'activate_mode_admin_comment' => 'පරිශීලකයෙකු සක්‍රිය කළ හැක්කේ පරිපාලකයෙකුට පමණි.', + 'require_activation' => 'පුරනය වීමට සක්‍රිය කිරීම අවශ්‍ය වේ', + 'require_activation_comment' => 'පුරනය වීමට පරිශීලකයින්ට සක්‍රිය කළ ගිණුමක් තිබිය යුතුය.', + 'use_throttle' => 'Throttle උත්සාහයන්', + 'use_throttle_comment' => 'නැවත නැවත අසාර්ථක පුරනය වීමේ උත්සාහයන් පරිශීලකයා තාවකාලිකව අත්හිටුවනු ඇත.', + 'use_register_throttle' => 'Throttle ලියාපදිංචිය', + 'use_register_throttle_comment' => 'කෙටි කාලීනව එකම IP වෙතින් බහු ලියාපදිංචි කිරීම් වලක්වන්න.', + 'block_persistence' => 'සමගාමී සැසි වැළැක්වීම', + 'block_persistence_comment' => 'සබල කළ විට පරිශීලකයින්ට එකවර උපාංග කිහිපයකට පුරනය විය නොහැක.', + 'login_attribute' => 'පිවිසුම් ගුණාංගය', + 'login_attribute_comment' => 'පුරනය වීම සඳහා භාවිතා කළ යුතු මූලික පරිශීලක විස්තර තෝරන්න.', + 'remember_login' => 'පිවිසුම් මාදිලිය මතක තබා ගන්න', + 'remember_login_comment' => 'පරිශීලක සැසිය ස්ථීර විය යුතුද යන්න තෝරන්න.', + 'remember_always' => 'සැමවිටම', + 'remember_never' => 'කවදාවත් නැහැ', + 'remember_ask' => 'පුරනය වීමේදී පරිශීලකයාගෙන් විමසන්න', + ], + 'user' => [ + 'label' => 'පරිශීලක', + 'id' => 'හැඳුනුම්පත', + 'username' => 'පරිශීලක නාමය', + 'name' => 'නම', + 'name_empty' => 'නිර්නාමික', + 'surname' => 'වාසගම', + 'email' => 'විද්යුත් තැපෑල', + 'created_at' => 'ලියාපදිංචි', + 'last_seen' => 'අන්තිමට දැක්කේ', + 'is_guest' => 'අමුත්තන්ගේ', + 'joined' => 'එකතු වුණා', + 'is_online' => 'දැන් ඔන්ලයින්', + 'is_offline' => 'දැනට නොබැඳි', + 'send_invite' => 'විද්‍යුත් තැපෑලෙන් ආරාධනාවක් යවන්න', + 'send_invite_comment' => 'පිවිසුම් සහ මුරපද තොරතුරු අඩංගු පිළිගැනීමේ පණිවිඩයක් යවයි.', + 'create_password' => 'මුරපදය සාදන්න', + 'create_password_comment' => 'පුරනය වීමට භාවිතා කරන නව මුරපදයක් ඇතුලත් කරන්න.', + 'reset_password' => 'මුරපදය නැවත සකසන්න', + 'reset_password_comment' => 'මෙම පරිශීලක මුරපදය නැවත සැකසීමට, මෙහි නව මුරපදයක් ඇතුළත් කරන්න.', + 'confirm_password' => 'මුරපදය තහවුරු කිරීම', + 'confirm_password_comment' => 'එය තහවුරු කිරීමට මුරපදය නැවත ඇතුල් කරන්න.', + 'groups' => 'කණ්ඩායම්', + 'empty_groups' => 'ලබා ගත හැකි පරිශීලක කණ්ඩායම් නොමැත.', + 'avatar' => 'පැතිකඩ පින්තූරය', + 'details' => 'විස්තර', + 'account' => 'ගිණුම', + 'block_mail' => 'මෙම පරිශීලකයාට යවන සියලුම පිටතට යන තැපැල් අවහිර කරන්න.', + 'status_label' => 'තත්ත්වය', + 'status_guest' => 'අමුත්තන්ගේ', + 'status_activated' => 'සක්රිය කර ඇත', + 'status_registered' => 'ලියාපදිංචි', + 'created_ip_address' => 'සාදන ලද IP ලිපිනය', + 'last_ip_address' => 'අවසාන IP ලිපිනය', + ], + 'group' => [ + 'label' => 'සමූහය', + 'id' => 'හැඳුනුම්පත', + 'name' => 'නම', + 'description_field' => 'විස්තර', + 'code' => 'කේතය', + 'code_comment' => 'මෙම කණ්ඩායම හඳුනා ගැනීමට භාවිතා කරන අද්විතීය කේතයක් ඇතුළත් කරන්න.', + 'created_at' => 'නිර්මාණය කළා', + 'users_count' => 'පරිශීලකයන්' + ], + 'groups' => [ + 'menu_label' => 'කණ්ඩායම්', + 'all_groups' => 'පරිශීලක කණ්ඩායම්', + 'new_group' => 'නව සමූහය', + 'delete_selected_confirm' => 'ඔබට ඇත්තටම තෝරාගත් කණ්ඩායම් මැකීමට අවශ්‍යද?', + 'list_title' => 'කණ්ඩායම් කළමනාකරණය කරන්න', + 'delete_confirm' => 'ඔබට ඇත්තටම මෙම සමූහය මැකීමට අවශ්‍යද?', + 'delete_selected_success' => 'තෝරාගත් කණ්ඩායම් සාර්ථකව මකා දමන ලදී.', + 'delete_selected_empty' => 'මකා දැමීමට තෝරාගත් කණ්ඩායම් නොමැත.', + 'return_to_list' => 'කණ්ඩායම් ලැයිස්තුව වෙත ආපසු යන්න', + 'return_to_users' => 'පරිශීලක ලැයිස්තුව වෙත ආපසු යන්න', + 'create_title' => 'පරිශීලක කණ්ඩායමක් සාදන්න', + 'update_title' => 'පරිශීලක කණ්ඩායම සංස්කරණය කරන්න', + 'preview_title' => 'පරිශීලක කණ්ඩායම පෙරදසුන් කරන්න' + ], + 'login' => [ + 'attribute_email' => 'විද්යුත් තැපෑල', + 'attribute_username' => 'පරිශීලක නාමය' + ], + 'account' => [ + 'account' => 'ගිණුම', + 'account_desc' => 'පරිශීලක කළමනාකරණ පෝරමය.', + 'banned' => 'සමාවන්න, මෙම පරිශීලකයා දැනට සක්‍රිය කර නැත. වැඩිදුර සහාය සඳහා කරුණාකර අප හා සම්බන්ධ වන්න.', + 'redirect_to' => 'වෙත හරවා යවන්න', + 'redirect_to_desc' => 'යාවත්කාලීන කිරීම, පුරනය වීම හෝ ලියාපදිංචි වීමෙන් පසු නැවත යොමු කිරීමට පිටුවේ නම.', + 'code_param' => 'සක්රිය කිරීමේ කේතය පරාමිතිය', + 'code_param_desc' => 'ලියාපදිංචි සක්‍රිය කිරීමේ කේතය සඳහා භාවිතා කරන පිටු URL පරාමිතිය', + 'force_secure' => 'ආරක්ෂිත ප්‍රොටෝකෝලය බල කරන්න', + 'force_secure_desc' => 'සෑම විටම URL HTTPS ක්‍රමයෙන් හරවා යවන්න.', + 'invalid_user' => 'ලබා දී ඇති අක්තපත්‍ර සමඟ පරිශීලකයෙකු හමු නොවීය.', + 'invalid_activation_code' => 'වලංගු නොවන සක්‍රීය කිරීමේ කේතයක් සපයා ඇත.', + 'invalid_deactivation_pass' => 'ඔබ ඇතුළු කළ මුරපදය වලංගු නොවේ.', + 'invalid_current_pass' => 'ඔබ ඇතුළත් කළ වත්මන් මුරපදය වලංගු නොවේ.', + 'success_activation' => 'ඔබගේ ගිණුම සාර්ථකව සක්‍රිය කර ඇත.', + 'success_deactivation' => 'ඔබගේ ගිණුම සාර්ථකව අක්‍රිය කර ඇත. ඔබ යනවා දැකීම ගැන කණගාටුයි!', + 'success_saved' => 'සැකසීම් සාර්ථකව සුරකින ලදී!', + 'login_first' => 'ඔබ මුලින්ම ලොග් විය යුතුය!', + 'already_active' => 'ඔබගේ ගිණුම දැනටමත් සක්‍රිය කර ඇත!', + 'activation_email_sent' => 'ඔබගේ ඊමේල් ලිපිනයට සක්‍රිය කිරීමේ විද්‍යුත් තැපෑලක් යවා ඇත.', + 'activation_by_admin' => 'ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. ඔබගේ ගිණුම තවමත් සක්‍රිය නොවන අතර පරිපාලකයෙකු විසින් අනුමත කළ යුතුය.', + 'registration_disabled' => 'ලියාපදිංචි කිරීම් දැනට අබල කර ඇත.', + 'registration_throttled' => 'ලියාපදිංචිය අවහිර කර ඇත. කරුණාකර පසුව නැවත උත්සාහ කරන්න.', + 'sign_in' => 'පුරන්න', + 'register' => 'ලියාපදිංචි කරන්න', + 'full_name' => 'සම්පූර්ණ නම', + 'email' => 'විද්යුත් තැපෑල', + 'password' => 'මුරපදය', + 'login' => 'ඇතුල් වන්න', + 'new_password' => 'නව මුරපදය', + 'new_password_confirm' => 'නව මුරපදය තහවුරු කරන්න', + 'update_requires_password' => 'යාවත්කාලීන කිරීමේදී මුරපදය තහවුරු කරන්න', + 'update_requires_password_comment' => 'ඔවුන්ගේ පැතිකඩ වෙනස් කිරීමේදී පරිශීලකයාගේ වත්මන් මුරපදය අවශ්‍ය වේ.', + 'activation_page' => 'සක්රිය කිරීමේ පිටුව', + 'activation_page_comment' => 'පරිශීලක ගිණුම සක්රිය කිරීම සඳහා භාවිතා කිරීමට පිටුවක් තෝරන්න', + 'reset_page' => 'පිටුව යළි පිහිටුවන්න', + 'reset_page_comment' => 'ගිණුමේ මුරපදය යළි පිහිටුවීම සඳහා භාවිතා කිරීමට පිටුවක් තෝරන්න', + ], + 'reset_password' => [ + 'reset_password' => 'මුරපදය නැවත සකසන්න', + 'reset_password_desc' => ' අමතක වූ මුරපද පෝරමය.', + 'code_param' => 'පරාමිතිය කේතය නැවත සකසන්න', + 'code_param_desc' => 'යළි පිහිටුවීමේ කේතය සඳහා භාවිතා කරන ලද පිටු URL පරාමිතිය' + ], + 'session' => [ + 'session' => 'වාරය', + 'session_desc' => 'පරිශීලක සැසිය පිටුවකට එක් කරන අතර පිටු ප්‍රවේශය සීමා කළ හැක.', + 'security_title' => 'පමණක් ඉඩ දෙන්න', + 'security_desc' => 'මෙම පිටුවට ප්‍රවේශ වීමට අවසර ඇත්තේ කාටද.', + 'all' => 'සියලුම', + 'users' => 'පරිශීලකයන්', + 'guests' => 'අමුත්තන්', + 'allowed_groups_title' => 'කණ්ඩායම් වලට ඉඩ දෙන්න', + 'allowed_groups_description' => 'සියලුම කණ්ඩායම්වලට ඉඩ දීමට අවසර දී ඇති කණ්ඩායම් හෝ කිසිවෙකුට ඉඩ නොදෙන්න', + 'redirect_title' => 'වෙත හරවා යවන්න', + 'redirect_desc' => 'ප්‍රවේශය ප්‍රතික්ෂේප කළහොත් යළි-යොමු කිරීමට පිටුවේ නම.', + 'logout' => 'ඔබ සාර්ථකව ලොග් අවුට් වී ඇත!', + 'stop_impersonate_success' => 'ඔබ තවදුරටත් පරිශීලකයෙකු ලෙස පෙනී සිටින්නේ නැත.', + ] +]; diff --git a/plugins/rainlab/user/lang/sk/lang.php b/plugins/rainlab/user/lang/sk/lang.php new file mode 100644 index 0000000..3056aef --- /dev/null +++ b/plugins/rainlab/user/lang/sk/lang.php @@ -0,0 +1,204 @@ + [ + 'name' => 'Požívateľ', + 'description' => 'Správa front-end používateľov.', + 'tab' => 'Požívatelia', + 'access_users' => 'Správa používateľov', + 'access_groups' => 'Správa skupín používateľov', + 'access_settings' => 'Správa používateľských nastavení', + 'impersonate_user' => 'Zosobniť používateľov' + ], + 'users' => [ + 'menu_label' => 'Používatelia', + 'all_users' => 'Všetci používatelia', + 'new_user' => 'Nový používateľ', + 'list_title' => 'Správa používateľov', + 'trashed_hint_title' => 'Používateľ deaktivoval svoj účet', + 'trashed_hint_desc' => 'Tento používateľ deaktivoval svoj účet a už nechce byť zobrazovaný na webe. Môže kedykoľvek obnoviť svoj účet, keď sa prihlási späť.', + 'banned_hint_title' => 'Používateľ bol zakázaný', + 'banned_hint_desc' => 'Tento pouužívateľ bol zakázaný administrátorom a nebude sa môcť prihlásiť.', + 'guest_hint_title' => 'Toto je hosťujúci používateľ', + 'guest_hint_desc' => 'Tento používateľ je uložený iba na účely odkazovania a musí sa zaregistrovať pred prihlásením.', + 'activate_warning_title' => 'Používateľ nie je aktivovaný!', + 'activate_warning_desc' => 'Tento používateľ nebol aktivovaný a nemusí byť schopný sa prihlásiť.', + 'activate_confirm' => 'Naozaj chcete aktivovať tohto používateľa?', + 'activated_success' => 'Používateľ bol aktivovaný', + 'activate_manually' => 'Aktivovať tohto používateľa manuálne', + 'convert_guest_confirm' => 'Konvertovať tohto hosťa na používateľa?', + 'convert_guest_manually' => 'Konvertovať na registrovaného používateľa', + 'convert_guest_success' => 'Používateľ bol prevedený na zaregistrovaný účet', + 'impersonate_user' => 'Zosobniť používateľa', + 'impersonate_confirm' => 'Zosobniť toto používateľa? Môžete sa vrátiť do pôvodného stavu odhlásením.', + 'impersonate_success' => 'Teraz zosobňujete tohoto používateľa', + 'delete_confirm' => 'Naozaj chcete zmazať tohto používateľa?', + 'unban_user' => 'Zrušiť zákaz tohto používateľa', + 'unban_confirm' => 'Naozaj chcete zrušiť zákaz tohto používateľa?', + 'unbanned_success' => 'Zákaz používateľa bol zrušený', + 'return_to_list' => 'Vrátiť sa na zoznam používateľov', + 'update_details' => 'Aktualizujte detaily', + 'bulk_actions' => 'Hromadné akcie', + 'delete_selected' => 'Zmazať označené', + 'delete_selected_confirm' => 'Zmazať vybraných používateľov?', + 'delete_selected_empty' => 'Nie sú vybraní žiadni používatelia na odstránenie.', + 'delete_selected_success' => 'Úspešne ste odstránili vybraných používateľov.', + 'activate_selected' => 'Aktivovať vybraných', + 'activate_selected_confirm' => 'Aktivovať vybraných používateľov?', + 'activate_selected_empty' => 'Nie sú vybraní žiadni používatelia na aktiváciu.', + 'activate_selected_success' => 'Vybraní používatelia boli úspešne aktivovaní.', + 'deactivate_selected' => 'Deaktivovať vybraných', + 'deactivate_selected_confirm' => 'Deaktivovať vybraných používateľov?', + 'deactivate_selected_empty' => 'Nie sú vybraní žiadni používatelia na deaktiváciu.', + 'deactivate_selected_success' => 'Vybraní používatelia boli úspešne deaktivovaní.', + 'restore_selected' => 'Obnoviť vybraných', + 'restore_selected_confirm' => 'Obnoviť vybraných používateľov?', + 'restore_selected_empty' => 'Nie sú vybraní žiadni používatelia na obnovenie.', + 'restore_selected_success' => 'Vybraní používatelia boli úspešne obnovení.', + 'ban_selected' => 'Zakázať vybraných', + 'ban_selected_confirm' => 'Zakázať vybraných používateľov?', + 'ban_selected_empty' => 'Nie sú vybraní žiadni používatelia na zakázanie.', + 'ban_selected_success' => 'Vybraní používatelia boli úspešne zakázaní.', + 'unban_selected' => 'Zrušiť zákaz vybraných', + 'unban_selected_confirm' => 'Zrušiť zakáz vybraných používateľov?', + 'unban_selected_empty' => 'Nie sú vybraní žiadni používatelia na zrušenie zakázu.', + 'unban_selected_success' => 'Vybraným používateľom bol úspešne zrušený zakáz.', + ], + 'settings' => [ + 'users' => 'Používatelia', + 'menu_label' => 'Nastavenie používateľov', + 'menu_description' => 'Správa nastavení používateľov.', + 'activation_tab' => 'Aktivácia', + 'signin_tab' => 'Prihlásenie', + 'registration_tab' => 'Registrácia', + 'notifications_tab' => 'Notifikácie', + 'allow_registration' => 'Povoliť registráciu používateľa', + 'allow_registration_comment' => 'Ak je to zakázané, použávatelia môžu byť vytvorený iba administrátormi.', + 'activate_mode' => 'Režim aktivácie', + 'activate_mode_comment' => 'Vyberte spôsob aktivácie používateľského účtu.', + 'activate_mode_auto' => 'Automatický', + 'activate_mode_auto_comment' => 'Automaticky sa aktivuje pri registrácii.', + 'activate_mode_user' => 'Používateľ', + 'activate_mode_user_comment' => 'Používateľ aktivuje svoj vlastný účet emailom.', + 'activate_mode_admin' => 'Administrátor', + 'activate_mode_admin_comment' => 'Iba Administrátor môže aktivovať používateľa.', + 'require_activation' => 'Prihlásenie vyžaduje aktiváciu', + 'require_activation_comment' => 'Používatelia musia mať aktivovaný účet na prihlásenie.', + 'use_throttle' => 'Obmedziť pokusy', + 'use_throttle_comment' => 'Opakované neúspešné pokusy o prihlásenie používateľov dočasne zablokuje.', + 'block_persistence' => 'Zabrániť súbežným reláciám', + 'block_persistence_comment' => 'Po zapnutí sa používatelia nemôžu prihlásiť do viacerých zariadení súčasne.', + 'login_attribute' => 'Prihlasovací atribút', + 'login_attribute_comment' => 'Vyberte, aké základný údaj používateľa sa má použiť pri prihlasovaní.', + ], + 'user' => [ + 'label' => 'Používateľ', + 'id' => 'ID', + 'username' => 'Užívateľské meno', + 'name' => 'Meno', + 'name_empty' => 'Anonym', + 'surname' => 'Priezvisko', + 'email' => 'E-mail', + 'created_at' => 'Registrovaný', + 'last_seen' => 'Naposledy videný', + 'is_guest' => 'Hosť', + 'joined' => 'Pridaný', + 'is_online' => 'Teraz online', + 'is_offline' => 'Momentálne je offline', + 'send_invite' => 'Poslať pozvánku e-mailom', + 'send_invite_comment' => 'Odošle uvítaciu správu obsahujúcu informácie o prihlásení a hesle.', + 'create_password' => 'Vytvoriť heslo', + 'create_password_comment' => 'Zadajte nové heslo, ktoré sa používa na prihlásenie.', + 'reset_password' => 'Obnoviť heslo', + 'reset_password_comment' => 'Ak chcete obnoviť heslo používateľa, zadajte nové heslo tu.', + 'confirm_password' => 'Potvrdenie hesla', + 'confirm_password_comment' => 'Znova zadajte heslo a potvrďte ho.', + 'groups' => 'Skupiny', + 'empty_groups' => 'Neexistujú žiadne skupiny používateľov.', + 'avatar' => 'Avatar', + 'details' => 'Detaily', + 'account' => '=Účet', + 'block_mail' => 'Zablokujte všetku odchádzajúcu poštu odoslanú tomuto používateľovi.', + 'status_guest' => 'Hosť', + 'status_activated' => 'Aktivovaný', + 'status_registered' => 'Registrovaný', + ], + 'group' => [ + 'label' => 'Skupina', + 'id' => 'ID', + 'name' => 'Meno', + 'description_field' => 'Popis', + 'code' => 'Kód', + 'code_comment' => 'Zadajte jedinečný kód použitý na identifikáciu tejto skupiny.', + 'created_at' => 'Vytvorená', + 'users_count' => 'Používatelia' + ], + 'groups' => [ + 'menu_label' => 'Skupiny', + 'all_groups' => 'Skupiny používateľov', + 'new_group' => 'Nová skupina', + 'delete_selected_confirm' => 'Naozaj chcete odstrániť vybrané skupiny?', + 'list_title' => 'Správa skupín', + 'delete_confirm' => 'Naozaj chcete odstrániť túto skupinu?', + 'delete_selected_success' => 'Vybrané skupiny boli úspešne odstránené.', + 'delete_selected_empty' => 'Nie sú vybrané žiadne skupiny na odstránenie.', + 'return_to_list' => 'Späť na zoznam skupín', + 'return_to_users' => 'Späť na zoznam používateľov', + 'create_title' => 'Vytvoriť skupinu používateľov', + 'update_title' => 'Upraviť skupinu používateľov', + 'preview_title' => 'Ukážka skupiny používateľov' + ], + 'login' => [ + 'attribute_email' => 'E-mail', + 'attribute_username' => 'Užívateľské meno' + ], + 'account' => [ + 'account' => 'Účet', + 'account_desc' => 'Formulár správy používateľov.', + 'banned' => 'Ospravedlňujeme sa, tento používateľ momentálne nie je aktivovaný. Kontaktujte nás pre ďalšiu pomoc.', + 'redirect_to' => 'Presmerovať na', + 'redirect_to_desc' => 'Názov stránky na presmerovanie po aktualizácii, prihlásení alebo registrácii.', + 'code_param' => 'Aktivačný kód Parameter', + 'code_param_desc' => 'Parameter URL stránky použitý ako kód aktivácie registrácie', + 'force_secure' => 'Vynútiť bezpečný protokol', + 'force_secure_desc' => 'Vždy presmerujte adresu URL schémou HTTPS.', + 'invalid_user' => 'Používateľ s uvedenými povereniami nebol nájdený.', + 'invalid_activation_code' => 'Bol zadaný neplatný aktivačný kód.', + 'invalid_deactivation_pass' => 'Zadané heslo je neplatné.', + 'success_activation' => 'Váš účet bol úspešne aktivovaný.', + 'success_deactivation' => 'Váš účet bol úspešne deaktivovaný. Je nám ľúto, že vás odchádzate!', + 'success_saved' => 'Nastavenia boli úspešne uložené!', + 'login_first' => 'Najprv musíte byť prihlásení!', + 'already_active' => 'Váš účet je už aktivovaný!', + 'activation_email_sent' => 'Na vašu e-mailovú adresu bol odoslaný aktivačný e-mail.', + 'registration_disabled' => 'Registrácie sú momentálne nedostupné.', + 'sign_in' => 'Prihlásiť sa', + 'register' => 'Registrovať', + 'full_name' => 'Celé meno', + 'email' => 'E-mail', + 'password' => 'Heslo', + 'login' => 'Prihlásiť sa', + 'new_password' => 'Nové heslo', + 'new_password_confirm' => 'Potvrďte nové heslo' + ], + 'reset_password' => [ + 'reset_password' => 'Obnoviť heslo', + 'reset_password_desc' => 'Formulár pre zabudnuté heslo.', + 'code_param' => 'Obnovovací kód Parameter', + 'code_param_desc' => 'Parameter URL stránky použitý pre obnovovací kód' + ], + 'session' => [ + 'session' => 'Relácia', + 'session_desc' => 'Pridá reláciu používateľa na stránku a môže obmedziť prístup na stránku.', + 'security_title' => 'Povoliť iba', + 'security_desc' => 'Kto má prístup na túto stránku.', + 'all' => 'Všetci', + 'users' => 'Užívatelia', + 'guests' => 'Hostia', + 'allowed_groups_title' => 'Povoliť skupiny', + 'allowed_groups_description' => 'Vyberte povolené skupiny alebo žiadne, aby ste povolili všetky skupiny', + 'redirect_title' => 'Presmerovať na', + 'redirect_desc' => 'Názov stránky pre presmerovanie, ak je prístup zamietnutý.', + 'logout' => 'Úspešne ste sa odhlásili!', + 'stop_impersonate_success' => 'Už sa nezosobňujete používateľa.', + ] +]; diff --git a/plugins/rainlab/user/lang/sl/lang.php b/plugins/rainlab/user/lang/sl/lang.php new file mode 100644 index 0000000..1731116 --- /dev/null +++ b/plugins/rainlab/user/lang/sl/lang.php @@ -0,0 +1,227 @@ + [ + 'name' => 'Uporabniki', + 'description' => 'Upravljanje uporabnikov spletne strani.', + 'tab' => 'Uporabniki', + 'access_users' => 'Upravljanje uporabnikov', + 'access_groups' => 'Upravljanje uporabniških skupin', + 'access_settings' => 'Upravljanje uporabniških nastavitev', + 'impersonate_user' => 'Impersonacija uporabnikov', + ], + 'users' => [ + 'menu_label' => 'Uporabniki', + 'all_users' => 'Vsi uporabniki', + 'new_user' => 'Nov uporabnik', + 'list_title' => 'Upravljanje uporabnikov', + 'trashed_hint_title' => 'Uporabnik je deaktiviral svoj račun', + 'trashed_hint_desc' => 'Ta uporabnik je deaktiviral svoj račun in se ne želi več pojavljati na spletni strani. Svoj račun lahko kadarkoli obnovi s prijavo.', + 'banned_hint_title' => 'Uporabnik je bil blokiran', + 'banned_hint_desc' => 'Tega uporabnika je administrator blokiral in se ne more več prijaviti.', + 'guest_hint_title' => 'Ta uporabnik je gost', + 'guest_hint_desc' => 'Ta uporabnik je shranjen samo za referenčne namene. Če se želi prijaviti, se mora najprej registrirati.', + 'activate_warning_title' => 'Uporabnik ni aktiviran!', + 'activate_warning_desc' => 'Ta uporabnik ni bil aktiviran in se ne more prijaviti.', + 'activate_confirm' => 'Ali ste prepričani, da želite aktivirati tega uporabnika?', + 'activated_success' => 'Uporabnik je bil aktiviran.', + 'activate_manually' => 'Ročno aktivirajte tega uporabnika', + 'convert_guest_confirm' => 'Želite gosta spremeniti v uporabnika?', + 'convert_guest_manually' => 'Spremeni v registriranega uporabnika', + 'convert_guest_success' => 'Uporabnik je bil spremenjen v registriranega uporabnika.', + 'impersonate_user' => 'Impersoniraj uporabnika', + 'impersonate_confirm' => 'Ali ste prepričani, da želite impersonirati tega uporabnika? V prvotno stanje se lahko vrnete tako, da se odjavite.', + 'impersonate_success' => 'Sedaj impersonirate tega uporabnika.', + 'delete_confirm' => 'Ali ste prepričani, da želite izbrisati tega uporabnika?', + 'unban_user' => 'Odblokiranje uporabnika', + 'unban_confirm' => 'Ali ste prepričani, da želite odblokirati tega uporabnika?', + 'unbanned_success' => 'Uporabnik je bil odblokiran.', + 'return_to_list' => 'Vrni se na seznam uporabnikov', + 'update_details' => 'Posodobite podrobnosti', + 'bulk_actions' => 'Skupna dejanja', + 'delete_selected' => 'Izbriši izbrane', + 'delete_selected_confirm' => 'Izbrišem izbrane uporabnike?', + 'delete_selected_empty' => 'Ni izbranih uporabnikov za izbris.', + 'delete_selected_success' => 'Izbrani uporabniki so bili uspešno izbrisani.', + 'activate_selected' => 'Aktiviraj izbrane', + 'activate_selected_confirm' => 'Aktiviram izbrane uporabnike?', + 'activate_selected_empty' => 'Ni izbranih uporabnikov za aktiviranje.', + 'activate_selected_success' => 'Izbrani uporabniki so bili uspešno aktivirani.', + 'deactivate_selected' => 'Deaktiviraj izbrane', + 'deactivate_selected_confirm' => 'Deaktiviram izbrane uporabnike?', + 'deactivate_selected_empty' => 'Ni izbranih uporabnikov za deaktiviranje.', + 'deactivate_selected_success' => 'Izbrani uporabniki so bili uspešno deaktivirani.', + 'restore_selected' => 'Obnovi izbrane', + 'restore_selected_confirm' => 'Obnovim izbrane uporabnike?', + 'restore_selected_empty' => 'Ni izbranih uporabnikov za obnovitev.', + 'restore_selected_success' => 'Izbrani uporabniki so bili uspešno obnovljeni.', + 'ban_selected' => 'Blokiraj izbrane', + 'ban_selected_confirm' => 'Blokiram izbrane uporabnike?', + 'ban_selected_empty' => 'Ni izbranih uporabnikov za blokiranje.', + 'ban_selected_success' => 'Izbrani uporabniki so bili uspešno blokirani.', + 'unban_selected' => 'Odblokiraj izbrane', + 'unban_selected_confirm' => 'Odblokiram izbrane uporabnike?', + 'unban_selected_empty' => 'Ni izbranih uporabnikov za deblokiranje.', + 'unban_selected_success' => 'Izbrani uporabniki so bili uspešno odblokirani.', + 'unsuspend' => 'Odsuspendiraj', + 'unsuspend_success' => 'Uporabnik ni več suspendiran.', + 'unsuspend_confirm' => 'Odsuspendiram tega uporabnika?', + ], + 'settings' => [ + 'users' => 'Uporabniki', + 'menu_label' => 'Nastavitve za uporabnike', + 'menu_description' => 'Upravljanje z nastavitvami za uporabnike.', + 'activation_tab' => 'Aktivacija', + 'signin_tab' => 'Prijava', + 'registration_tab' => 'Registracija', + 'profile_tab' => 'Profil', + 'notifications_tab' => 'Obvestila', + 'allow_registration' => 'Dovoli registracijo uporabnikov', + 'allow_registration_comment' => 'Če je onemogočeno, lahko uporabnike ustvarijo le administratorji.', + 'activate_mode' => 'Način aktivacije', + 'activate_mode_comment' => 'Izberite, na kakšen način naj bo aktiviran uporabniški račun.', + 'activate_mode_auto' => 'Avtomatski', + 'activate_mode_auto_comment' => 'Aktiviranje je avtomatsko in se zgodi takoj po registraciji.', + 'activate_mode_user' => 'Uporabniški', + 'activate_mode_user_comment' => 'Uporabnik sam aktivira svoj račun z uporabo e-pošte.', + 'activate_mode_admin' => 'Administratorski', + 'activate_mode_admin_comment' => 'Uporabnika lahko aktivira le administrator.', + 'require_activation' => 'Prijava zahteva aktiviranje', + 'require_activation_comment' => 'Uporabniki potrebujejo za prijavo aktiviran račun.', + 'use_throttle' => 'Blokiranje večkratnih prijav', + 'use_throttle_comment' => 'Večkratni ponovljeni neuspešni poskusi prijave bodo uporabnika začasno suspendirali.', + 'use_register_throttle' => 'Blokiranje registracij', + 'use_register_throttle_comment' => 'Prepreči več zaporednih registracij z istega IP naslova v kratkem času.', + 'block_persistence' => 'Prepreči sočasne prijave', + 'block_persistence_comment' => 'Če je omogočeno, se uporabniki ne morejo prijaviti v več naprav hkrati.', + 'login_attribute' => 'Atribut prijave', + 'login_attribute_comment' => 'Izberite, kateri primarni atribut uporabnika naj bo uporabljen za prijavo.', + 'remember_login' => 'Zapomni si način prijave', + 'remember_login_comment' => 'Določite ali naj bo uporabniška seja obstojna.', + 'remember_always' => 'Vedno', + 'remember_never' => 'Nikoli', + 'remember_ask' => 'Vprašaj uporabnika ob prijavi', + ], + 'user' => [ + 'label' => 'Uporabnik', + 'id' => 'ID', + 'username' => 'Uporabniško ime', + 'name' => 'Ime', + 'name_empty' => 'Anonimni uporabnik', + 'surname' => 'Priimek', + 'email' => 'E-pošta', + 'created_at' => 'Registriran dne', + 'last_seen' => 'Zadnjič viden', + 'is_guest' => 'Gost', + 'joined' => 'Prijavljen', + 'is_online' => 'Trenutno na spletu', + 'is_offline' => 'Trenutno ni na spletu', + 'send_invite' => 'Pošlji povabilo prek e-pošte', + 'send_invite_comment' => 'Pošlje pozdravno sporočilo, ki vsebuje podatke za prijavo.', + 'create_password' => 'Geslo', + 'create_password_comment' => 'Ustvarite novo geslo, ki se bo uporabljalo za prijavo.', + 'reset_password' => 'Ponastavi geslo', + 'reset_password_comment' => 'Če želite ponastaviti geslo tega uporabnika, vnesite tukaj novo geslo.', + 'confirm_password' => 'Potrditev gesla', + 'confirm_password_comment' => 'Za potrditev ponovno vnesite geslo.', + 'groups' => 'Skupine', + 'empty_groups' => 'Ni uporabniških skupin.', + 'avatar' => 'Avatar', + 'details' => 'Podrobnosti', + 'account' => 'Račun', + 'block_mail' => 'Blokiraj vso odhodno pošto, poslano temu uporabniku.', + 'status_label' => 'Status', + 'status_guest' => 'Gost', + 'status_activated' => 'Aktiviran', + 'status_registered' => 'Registriran', + 'created_ip_address' => 'Ustvarjen IP naslov', + 'last_ip_address' => 'Zadnji IP naslov', + ], + 'group' => [ + 'label' => 'Skupina', + 'id' => 'ID', + 'name' => 'Ime', + 'description_field' => 'Opis', + 'code' => 'Koda', + 'code_comment' => 'Vnesite unikatno kodo za identifikacijo te skupine.', + 'created_at' => 'Ustvarjeno', + 'users_count' => 'Uporabniki', + ], + 'groups' => [ + 'menu_label' => 'Skupine', + 'all_groups' => 'Skupine uporabnikov', + 'new_group' => 'Nova skupina', + 'delete_selected_confirm' => 'Ali ste prepričani, da želite izbrisati izbrane skupine?', + 'list_title' => 'Upravljanje skupin', + 'delete_confirm' => 'Ali ste prepričani, da želite izbrisati to skupino?', + 'delete_selected_success' => 'Izbrane skupine so uspešno izbrisane.', + 'delete_selected_empty' => 'Ni izbranih skupin za izbris.', + 'return_to_list' => 'Nazaj na seznam skupin', + 'return_to_users' => 'Nazaj na seznam uporabnikov', + 'create_title' => 'Ustvari skupino uporabnikov', + 'update_title' => 'Uredi skupino uporabnikov', + 'preview_title' => 'Predogled skupine uporabnikov', + ], + 'login' => [ + 'attribute_email' => 'E-pošta', + 'attribute_username' => 'Uporabniško ime', + ], + 'account' => [ + 'account' => 'Račun', + 'account_desc' => 'Upravljanje uporabnika.', + 'banned' => 'Oprostite, ta uporabnik trenutno ni aktiviran. Prosimo, kontaktirajte nas za nadaljnjo pomoč.', + 'redirect_to' => 'Preusmeritev na', + 'redirect_to_desc' => 'Stran, na katero bo uporabnik preusmerjen po posodobitvi profila, po prijavi ali po registraciji.', + 'code_param' => 'Parameter aktivacijske kode', + 'code_param_desc' => 'Parameter v URL-ju strani, ki se uporablja za aktivacijsko kodo registracije.', + 'force_secure' => 'Vsili zaščitni protokol', + 'force_secure_desc' => 'URL vedno preusmeri s shemo HTTPS.', + 'invalid_user' => 'Uporabnik s podanimi podatki ne obstaja.', + 'invalid_activation_code' => 'Podana je neveljavna aktivacijska koda.', + 'invalid_deactivation_pass' => 'Geslo, ki ste ga vnesli, je neveljavno.', + 'invalid_current_pass' => 'Trenutno geslo, ki ste ga vnesli, je neveljavno.', + 'success_activation' => 'Vaš račun je uspešno aktiviran.', + 'success_deactivation' => 'Vaš račun je bil uspešno deaktiviran. Žal nam je, ker nas zapuščate!', + 'success_saved' => 'Nastavitve so uspešno shranjene.', + 'login_first' => 'Najprej se morate prijaviti.', + 'already_active' => 'Vaš račun je že aktiviran.', + 'activation_email_sent' => 'Aktivacijsko sporočilo je bilo poslano na vaš e-poštni naslov.', + 'registration_disabled' => 'Registracije so trenutno onemogočene.', + 'registration_throttled' => 'Registracija je trenutno onemogočena. Prosimo, poskusite zopet kasneje.', + 'sign_in' => 'Prijava', + 'register' => 'Registracija', + 'full_name' => 'Polno ime', + 'email' => 'E-pošta', + 'password' => 'Geslo', + 'login' => 'Prijava', + 'new_password' => 'Novo geslo', + 'new_password_confirm' => 'Potrdite novo geslo', + 'update_requires_password' => 'Posodobitev zahteva geslo', + 'update_requires_password_comment' => 'Spreminjanje profila uporabnika zahteva vnos trenutnega gesla.', + 'activation_page' => 'Aktivacijska stran', + 'activation_page_comment' => 'Izberite stran za aktiviranje uporabniškega računa.', + 'reset_page' => 'Ponastavitvena stran', + 'reset_page_comment' => 'Izberite stran za ponastavitev gesla računa.', + ], + 'reset_password' => [ + 'reset_password' => 'Ponastavitev gesla', + 'reset_password_desc' => 'Obrazec za pozabljeno geslo.', + 'code_param' => 'Parameter za ponastavitev', + 'code_param_desc' => 'Parameter v URL-ju strani, ki se uporablja za ponastavitev gesla.', + ], + 'session' => [ + 'session' => 'Seja', + 'session_desc' => 'Namestitev uporabniške seje, ki lahko omeji dostop do strani.', + 'security_title' => 'Dovoljenje za dostop', + 'security_desc' => 'Določite, kdo lahko dostopa do te strani.', + 'all' => 'Vsi', + 'users' => 'Uporabniki', + 'guests' => 'Gosti', + 'allowed_groups_title' => 'Dovoljenje za skupine', + 'allowed_groups_description' => 'Določite, katere skupine lahko dostopajo do te strani. Če ne izberete nobene, imajo dovoljenje vse skupine.', + 'redirect_title' => 'Preusmeritev na stran', + 'redirect_desc' => 'Določite stran, na katero je preusmerjen uporabnik, če je dostop onemogočen.', + 'logout' => 'Uspešno ste se odjavili.', + 'stop_impersonate_success' => 'Uporabnika ne impersonirate več.', + ], +]; diff --git a/plugins/rainlab/user/lang/sv/lang.php b/plugins/rainlab/user/lang/sv/lang.php new file mode 100644 index 0000000..e3ad8d0 --- /dev/null +++ b/plugins/rainlab/user/lang/sv/lang.php @@ -0,0 +1,205 @@ + [ + 'name' => 'Användare', + 'description' => 'Hantera front-end användare.', + 'tab' => 'Användare', + 'access_users' => 'Hantera användare', + 'access_groups' => 'Hantera användargrupper', + 'access_settings' => 'Hantera användarinställningar', + 'impersonate_user' => 'Personifiera Användare' + ], + 'users' => [ + 'menu_label' => 'Användare', + 'all_users' => 'Alla användare', + 'new_user' => 'Ny användare', + 'list_title' => 'Hantera användare', + 'trashed_hint_title' => 'Användaren har avaktiverat sitt konto', + 'trashed_hint_desc' => 'Den här användaren har inaktiverat sitt konto och vill inte längre visas på webbplatsen. De kan återställa sitt konto när som helst genom att logga in igen. ', + 'banned_hint_title' => 'Användaren har blivit bannad', + 'banned_hint_desc' => 'Den här användaren har blivit bannad av en administratör och kommer inte att kunna logga in.', + 'guest_hint_title' => 'Detta är en gästanvändare', + 'guest_hint_desc' => 'Den här användaren är endast lagrad för referensändamål och måste registreras innan du loggar in.', + 'activate_warning_title' => 'Användare inte aktiverad!', + 'activate_warning_desc' => 'Den här användaren har inte aktiverats och kan inte logga in.', + 'activate_confirm' => 'Vill du verkligen aktivera den här användaren?', + 'activated_success' => 'Användaren har aktiverats', + 'activate_manually' => 'Aktivera den här användaren manuellt', + 'convert_guest_confirm' => 'Konvertera denna gäst till en användare?', + 'convert_guest_manually' => 'Konvertera till registrerad användare', + 'convert_guest_success' => 'Användaren har konverterats till ett registrerat konto', + 'impersonate_user' => 'Personifiera användaren', + 'impersonate_confirm' => 'Impersonera den här användaren? Du kan återgå till ditt ursprungliga tillstånd genom att logga ut. ', + 'impersonate_success' => 'Du är nu efterliknar den här användaren', + 'delete_confirm' => 'Vill du verkligen radera den här användaren?', + 'unban_user' => 'Unban den här användaren', + 'unban_confirm' => 'Vill du verkligen avbryta denna användare?', + 'unbanned_success' => 'Användaren har blivit unbanned', + 'return_to_list' => 'Återvänd till användarlistan', + 'update_details' => 'Uppdatera detaljer', + 'bulk_actions' => 'Massåtgärder', + 'delete_selected' => 'Radera vald', + 'delete_selected_confirm' => 'Ta bort de valda användarna?', + 'delete_selected_empty' => 'Det finns inga utvalda användare att ta bort.', + 'delete_selected_success' => 'Ta bort de valda användarna framgångsrikt.', + 'activate_selected' => 'Aktivera vald', + 'activate_selected_confirm' => 'Aktivera de valda användarna?', + 'activate_selected_empty' => 'Det finns inga utvalda användare att aktivera.', + 'activate_selected_success' => 'Aktiverade de valda användarna framgångsrikt.', + 'deactivate_selected' => 'Inaktivera vald', + 'deactivate_selected_confirm' => 'Inaktivera de valda användarna?', + 'deactivate_selected_empty' => 'Det finns inga utvalda användare att avaktivera.', + 'deactivate_selected_success' => 'Deaktiverade de valda användarna framgångsrikt.', + 'restore_selected' => 'Återställ valda', + 'restore_selected_confirm' => 'Återställ de valda användarna?', + 'restore_selected_empty' => 'Det finns inga utvalda användare att återställa.', + 'restore_selected_success' => 'Återställde de valda användarna framgångsrikt.', + 'ban_selected' => 'Ban vald', + 'ban_selected_confirm' => 'Förbjud de valda användarna?', + 'ban_selected_empty' => 'Det finns inga utvalda användare att förbuda.', + 'ban_selected_success' => 'Förbannade de valda användarna framgångsrikt.', + 'unban_selected' => 'Unban vald', + 'unban_selected_confirm' => 'Unban de valda användarna?', + 'unban_selected_empty' => 'Det finns inga utvalda användare att unban.', + 'unban_selected_success' => 'Unbanned de utvalda användarna.', + ], + 'settings' => [ + 'users' => 'Användare', + 'menu_label' => 'Användarinställningar', + 'menu_description' => 'Hantera användarbaserade inställningar.', + 'activation_tab' => 'Aktivering', + 'signin_tab' => 'Logga in', + 'registration_tab' => 'Registrering', + 'notifications_tab' => 'Meddelanden', + 'allow_registration' => 'Tillåt användarregistrering', + 'allow_registration_comment' => 'Om detta är inaktiverat kan användare endast skapas av administratörer.', + 'activate_mode' => 'Aktiveringsläge', + 'activate_mode_comment' => 'Välj hur ett användarkonto ska aktiveras.', + 'activate_mode_auto' => 'Automatisk', + 'activate_mode_auto_comment' => 'Aktiveras automatiskt vid registrering.', + 'activate_mode_user' => 'Användare', + 'activate_mode_user_comment' => 'Användaren aktiverar sitt eget konto via e-post.', + 'activate_mode_admin' => 'Administratör', + 'activate_mode_admin_comment' => 'Endast en administratör kan aktivera en användare.', + 'require_activation' => 'Logga in kräver aktivering', + 'require_activation_comment' => 'Användare måste ha ett aktiverat konto för att logga in.', + 'use_throttle' => 'Upprepningsförsök', + 'use_throttle_comment' => 'Upprepade misslyckade inloggningsförsök kommer tillfälligt att stoppa användaren.', + 'block_persistence' => 'Förhindra samtidiga sessioner', + 'block_persistence_comment' => 'När aktiverade användare inte kan logga in på flera enheter samtidigt.', + 'login_attribute' => 'Logga in egenskaper', + 'login_attribute_comment' => 'Välj vilken primär användarinfo som ska användas för inloggning.', + ], + 'user' => [ + 'label' => 'Användare', + 'id' => 'ID', + 'username' => 'Användarnamn', + 'name' => 'Namn', + 'name_empty' => 'Anonym', + 'surname' => 'Efternamn', + 'email' => 'Email', + 'created_at' => 'Registrerad', + 'last_seen' => 'Senast sett', + 'is_guest' => 'Gäst', + 'joined' => 'Anställd', + 'is_online' => 'Online nu', + 'is_offline' => 'För närvarande offline', + 'send_invite' => 'Skicka inbjudan via e-post', + 'send_invite_comment' => 'Skickar ett välkomstmeddelande som innehåller inloggnings- och lösenordsinformation.', + 'create_password' => 'Skapa lösenord', + 'create_password_comment' => 'Ange ett nytt lösenord som används för inloggning.', + 'reset_password' => 'Återställ lösenord', + 'reset_password_comment' => 'För att återställa användarens lösenord, ange ett nytt lösenord här.', + 'confirm_password' => 'Bekräftelse av lösenord', + 'confirm_password_comment' => 'Ange lösenordet igen för att bekräfta det.', + 'groups' => 'Grupper', + 'empty_groups' => 'Det finns inga användargrupper tillgängliga.', + 'avatar' => 'Avatar', + 'details' => 'Detaljer', + 'account' => 'Konto', + 'block_mail' => 'Blockera alla utgående mail som skickas till den här användaren.', + 'status_guest' => 'Gäst', + 'status_activated' => 'Aktiverad', + 'status_registered' => 'Registrerad', + ], + 'group' => [ + 'label' => 'Grupp', + 'id' => 'ID', + 'name' => 'Namn', + 'description_field' => 'Beskrivning', + 'code' => 'Kod', + 'code_comment' => 'Ange en unik kod som används för att identifiera den här gruppen.', + 'created_at' => 'Skapat', + 'users_count' => 'Användare' + ], + 'groups' => [ + 'menu_label' => 'Grupper', + 'all_groups' => 'Användargrupper', + 'new_group' => 'Ny grupp', + 'delete_selected_confirm' => 'Vill du verkligen radera valda grupper?', + 'list_title' => 'Hantera grupper', + 'delete_confirm' => 'Vill du verkligen radera den här gruppen?', + 'delete_selected_success' => 'Tog bort de valda grupperna framgångsrikt', + 'delete_selected_empty' => 'Det finns inga valda grupper att radera.', + 'return_to_list' => 'Tillbaka till grupplista', + 'return_to_users' => 'Tillbaka till användarlistan', + 'create_title' => 'Skapa användargrupp', + 'update_title' => 'Redigera användargrupp', + 'preview_title' => 'Förhandsgranska användargrupp' + ], + 'login' => [ + 'attribute_email' => 'Email', + 'attribute_username' => 'Användarnamn' + ], + 'account' => [ + 'account' => 'Konto', + 'account_desc' => 'Användarhanteringsformulär.', + 'banned' => 'Tyvärr, den här användaren är för närvarande inte aktiverad. Vänligen kontakta oss för ytterligare hjälp. ', + 'redirect_to' => 'Omdirigera till', + 'redirect_to_desc' => 'Sidnamn för att omdirigera till efter uppdatering, logga in eller registrera.', + 'code_param' => 'Aktiveringskod Param', + 'code_param_desc' => 'Sidadressadressparametern som används för registreringsaktiveringskoden', + 'force_secure' => 'Tvinga säkert protokoll', + 'force_secure_desc' => 'Omdirigera alltid URL-adressen med HTTPS-schemat.', + 'invalid_user' => 'En användare kunde inte hittas med angivna referenser.', + 'invalid_activation_code' => 'Ogiltig aktiveringskod medföljer.', + 'invalid_deactivation_pass' => 'Lösenordet du angav var ogiltigt.', + 'success_activation' => 'Aktiverat ditt konto.', + 'success_deactivation' => 'Inaktiverade ditt konto framgångsrikt. Tråkigt att du lämnar oss! ', + 'success_saved' => 'Inställningar sparades framgångsrikt!', + 'login_first' => 'Du måste vara inloggad först!', + 'already_active' => 'Ditt konto är redan aktiverat!', + 'activation_email_sent' => 'Ett aktiverings-e-postmeddelande har skickats till din e-postadress.', + 'registration_disabled' => 'Registreringar är för närvarande inaktiverade.', + 'sign_in' => 'Logga in', + 'register' => 'Registrera', + 'full_name' => 'Fullständigt namn', + 'email' => 'Email', + 'password' => 'Lösenord', + 'login' => 'Logga in', + 'new_password' => 'Nytt lösenord', + 'new_password_confirm' => 'Bekräfta nytt lösenord' + ], + 'reset_password' => [ + 'reset_password' => 'Återställ lösenord', + 'reset_password_desc' => 'Glömt lösenordsformulär.', + 'code_param' => 'Återställ kodparam', + 'code_param_desc' => 'Sidadressparametern som används för återställningskoden' + ], + 'session' => [ + 'session' => 'Session', + 'session_desc' => 'Lägger till användarsessionen på en sida och kan begränsa sidåtkomst.', + 'security_title' => 'Tillåt bara', + 'security_desc' => 'Vem får komma åt denna sida.', + 'all' => 'Alla', + 'users' => 'Användare', + 'guests' => 'Gäster', + 'allowed_groups_title' => 'Tillåt grupper', + 'allowed_groups_description' => 'Välj tillåtna grupper eller ingen för att tillåta alla grupper', + 'redirect_title' => 'Omdirigera till', + 'redirect_desc' => 'Sidnamn att omdirigera om åtkomst nekas.', + 'logout' => 'Du har blivit framgångsrik utloggad!', + 'stop_impersonate_success' => 'Du personifierar inte längre en användare.', + ] +]; diff --git a/plugins/rainlab/user/lang/tr/lang.php b/plugins/rainlab/user/lang/tr/lang.php new file mode 100644 index 0000000..04350d2 --- /dev/null +++ b/plugins/rainlab/user/lang/tr/lang.php @@ -0,0 +1,222 @@ + [ + 'name' => 'Üye', + 'description' => 'Ön-yüz üye yönetimi.', + 'tab' => 'Üyeler', + 'access_users' => 'Üyeleri Yönet', + 'access_groups' => 'Üye Gruplarını Yönet', + 'access_settings' => 'Üye Ayarlarını Yönet', + 'impersonate_user' => 'Üye Gibi Gezin', + ], + 'users' => [ + 'menu_label' => 'Üyeler', + 'all_users' => 'Bütün Üyeler', + 'new_user' => 'Yeni Üye', + 'list_title' => 'Üyeleri Yönet', + 'trashed_hint_title' => 'Üye hesabını pasifleştirmiş', + 'trashed_hint_desc' => 'Üye hesabını pasifleştirmiş ve bu sitede görünmek istemiyor. Tekrar hesabına giriş yaparak hesabını istediği zaman aktifleştirebilir.', + 'banned_hint_title' => 'Üye engellendi.', + 'banned_hint_desc' => 'Üye bir yönetici tarafından engellendi ve giriş yapamayacak.', + 'guest_hint_title' => 'Bu üye ziyaretçi.', + 'guest_hint_desc' => 'Bu üye ziyaretçi olarak eklenmiş ve giriş yapabilmesi için kayıt olması gerekiyor.', + 'activate_warning_title' => 'Üye hesabı aktif edilmemiş!', + 'activate_warning_desc' => 'Bu üye hesabı aktif edilmedi ve oturum açamayacaktır.', + 'activate_confirm' => 'Bu üyeyi gerçekten aktif etmek istediğinize emin misiniz?', + 'activated_success' => 'Üye aktifleştirildi', + 'activate_manually' => 'Bu üyeyi aktif et', + 'convert_guest_confirm' => 'Ziyaretçiyi üyeye çevirmek istiyor musunuz?', + 'convert_guest_manually' => 'Kayıtlı üyeye çevir', + 'convert_guest_success' => 'Ziyaretçi, kayıtlı üyeye çevrildi.', + 'impersonate_user' => 'Üye Gibi Gezin', + 'impersonate_confirm' => 'Bu üye gibi giriş yapmak istediğinize emin misiniz? Çıkış yaparak tekrar orjinal halinize dönebilirsiniz.', + 'impersonate_success' => 'Şimdi üye gibi gezinebilirsiniz.', + 'delete_confirm' => 'Bu üyeyi gerçekten silmek istediğinize emin misiniz?', + 'unban_user' => 'Üyenin engelini kaldır', + 'unban_confirm' => 'Bu üyenin engelini kaldırmak istediğinize emin misiniz?', + 'unbanned_success' => 'Üyenin engeli kaldırıldı', + 'return_to_list' => 'Üye listesine geri dön', + 'update_details' => 'Detayları değiştir', + 'bulk_actions' => 'Toplu işlemler', + 'delete_selected' => 'Seçileni sil', + 'delete_selected_confirm' => 'Seçili üyeleri sil?', + 'delete_selected_empty' => 'Silmek için seçili üye yok.', + 'delete_selected_success' => 'Seçili üyeler başarıyla silindi.', + 'activate_selected' => 'Seçileni etkinleştir', + 'activate_selected_confirm' => 'Seçili kullanıcılar etkinleştirilsin mi?', + 'activate_selected_empty' => 'Etkinleştirilecek seçili kullanıcı yok.', + 'activate_selected_success' => 'Seçilen kullanıcılar başarıyla etkinleştirildi.', + 'deactivate_selected' => 'Seçileni pasifleştir', + 'deactivate_selected_confirm' => 'Seçilen üyeler pasifleştirilsin mi?', + 'deactivate_selected_empty' => 'Pasifleştirmek için üye seçmelisiniz.', + 'deactivate_selected_success' => 'Seçilen üyeler pasifleştirildi.', + 'restore_selected' => 'Seçileni aktifleştir', + 'restore_selected_confirm' => 'Seçilen üyeler aktifleştirilsin mi?', + 'restore_selected_empty' => 'Aktifleştirmek için üye seçmelisiniz.', + 'restore_selected_success' => 'Seçilen üyeler aktifleştirildi.', + 'ban_selected' => 'Seçileni engelle', + 'ban_selected_confirm' => 'Seçilen üyeler engellensin mi?', + 'ban_selected_empty' => 'Engellemek için üye seçmelisiniz.', + 'ban_selected_success' => 'Seçilen üyeler engellendi.', + 'unban_selected' => 'Seçilenin engelini kaldır', + 'unban_selected_confirm' => 'Seçilen üyelerin engeli kaldırılsın mi?', + 'unban_selected_empty' => 'Engeli kaldırmak için üye seçmelisiniz.', + 'unban_selected_success' => 'Seçilen üyelerin engeli kaldırıldı.', + 'unsuspend' => 'Askıya alma', + 'unsuspend_success' => 'Üye askıya alındı.', + 'unsuspend_confirm' => 'Üye askıya alınsın mı?' + ], + 'settings' => [ + 'users' => 'Üyeler', + 'menu_label' => 'Üye ayarları', + 'menu_description' => 'Üye bazlı ayarları yönetin.', + 'activation_tab' => 'Aktivasyon', + 'signin_tab' => 'Oturum Açma', + 'registration_tab' => 'Kayıt', + 'profile_tab' => 'Profil', + 'notifications_tab' => 'Bildirimler', + 'allow_registration' => 'Üye kaydını aktifleştir', + 'allow_registration_comment' => 'Eğer bu seçenek pasifleştirilirse sadece yöneticiler tarafından üye kaydı yapılabilecektir.', + 'min_password_length' => 'Minimum şifre uzunluğu', + 'min_password_length_comment' => 'Üye şifresi için gereken minimum şifre uzunluğu', + 'activate_mode' => 'Aktivasyon Modu', + 'activate_mode_comment' => 'Üyenin nasıl aktif edileceğini seçin.', + 'activate_mode_auto' => 'Otomatik', + 'activate_mode_auto_comment' => 'Üye olduğu an aktif edilsin.', + 'activate_mode_user' => 'Üye', + 'activate_mode_user_comment' => 'Eposta adresini kullanarak aktif etsin.', + 'activate_mode_admin' => 'Yönetici', + 'activate_mode_admin_comment' => 'Sadece yöneticiler aktif edebilsin.', + 'require_activation' => 'Üye girişleri aktivasyon gerektirsin', + 'require_activation_comment' => 'Üyeler oturum açabilmek için aktif edilmiş bir hesaba sahip olmalıdırlar.', + 'use_throttle' => 'Boğma Girişimleri', + 'use_throttle_comment' => 'Tekrarlayan hatalı girişlerde kısa süreliğine üyeyi askıya al.', + 'block_persistence' => 'Eşzamanlı oturumları engelle', + 'block_persistence_comment' => 'Etkinleştirildiğinde, kullanıcılar aynı anda birden fazla cihazda oturum açamazlar.', + 'login_attribute' => 'Oturum Açma Yöntemi', + 'login_attribute_comment' => 'Üye girişlerinde hangi üye detayının kullanılacağını seçin.', + 'remember_login' => 'Şifre hatırlama modu', + 'remember_login_comment' => 'Üye oturumu kalıcı olsun.', + 'remember_always' => 'Her zaman', + 'remember_never' => 'Hiçbir zaman', + 'remember_ask' => 'Üye girişi sırasında sor', + ], + 'user' => [ + 'label' => 'User', + 'id' => 'ID', + 'username' => 'Üye Adı', + 'name' => 'Adı', + 'name_empty' => '-İsimsiz-', + 'surname' => 'Soyadı', + 'email' => 'Eposta', + 'created_at' => 'Kayıtlı', + 'last_seen' => 'Son görülme', + 'is_guest' => 'Ziyaretçi', + 'joined' => 'Katılım Tarihi', + 'is_online' => 'Şuan çevrimiçi', + 'is_offline' => 'Şuan çevrimdışı', + 'send_invite' => 'E-mail ile davet gönder', + 'send_invite_comment' => 'Giriş bilgilerinin bulunduğu bir e-mail gönder.', + 'create_password' => 'Şifre oluştur', + 'create_password_comment' => 'Giriş için bir şifre oluşturun.', + 'reset_password' => 'Şifre sıfırla', + 'reset_password_comment' => 'Bu üyenin parolasını sıfırlamak için buraya yenisini girin.', + 'confirm_password' => 'Parola tekrar', + 'confirm_password_comment' => 'Sıfırlamayı onaylamak için şifreyi tekrar girin.', + 'groups' => 'Gruplar', + 'empty_groups' => 'Gösterilecek grup yok.', + 'avatar' => 'Avatar', + 'details' => 'Detaylar', + 'account' => 'Hesap', + 'block_mail' => 'Bu üyenin mail göndermesini engelle.', + 'status_guest' => 'Ziyaretçi', + 'status_activated' => 'Aktif', + 'status_registered' => 'Kayıtlı', + 'created_ip_address' => 'Kayıt olduğu IP Adresi', + 'last_ip_address' => 'Son IP Adresi', + ], + 'group' => [ + 'label' => 'Grup', + 'id' => 'No', + 'name' => 'İsim', + 'description_field' => 'Açıklama', + 'code' => 'Kod', + 'code_comment' => 'Bu grubu tanımlayan eşsiz bir kod girin.', + 'created_at' => 'Oluşturulma', + 'users_count' => 'Üyeler', + ], + 'groups' => [ + 'menu_label' => 'Gruplar', + 'all_groups' => 'Üye Grupları', + 'new_group' => 'Yeni Grup', + 'delete_selected_confirm' => 'Seçilen grupları silmek istediğinize emin misiniz?', + 'list_title' => 'Grupları Yönet', + 'delete_confirm' => 'Bu grubu silmek istediğinize emin misiniz?', + 'delete_selected_success' => 'Seçilen gruplar silindi.', + 'delete_selected_empty' => 'Silinecek grup seçmelisiniz.', + 'return_to_list' => 'Grup listesine dön', + 'return_to_users' => 'Üye listesine dön', + 'create_title' => 'Üye grubu oluştur', + 'update_title' => 'Üye grubunu düzenle', + 'preview_title' => 'Grubu önizle', + ], + 'login' => [ + 'attribute_email' => 'Eposta', + 'attribute_username' => 'Üye Adı', + ], + 'account' => [ + 'account' => 'Hesap', + 'account_desc' => 'Üye yönetimi formu.', + 'banned' => 'Maalesef, bu kullanıcı şu anda etkin değil. Daha fazla yardım için lütfen bizimle iletişime geçin.', + 'redirect_to' => 'Yönlendir', + 'redirect_to_desc' => 'Güncellemeden sonra yönlendirilecek sayfanın adı, oturum aç ya da kayıt ol.', + 'code_param' => 'Aktivasyon Kodu Parametresi', + 'code_param_desc' => 'Üyelik aktivasyon kodu için sayfanın URL parametresi kullanılır.', + 'force_secure' => 'Güvenli protokole zorla', + 'force_secure_desc' => 'URL’yi her zaman HTTPS şemasına yönlendirin.', + 'invalid_user' => 'Girilen bilgilerle eşleşen bir üye yok.', + 'invalid_activation_code' => 'Geçersiz aktivasyon kodu', + 'invalid_current_pass' => 'Mevcut şifrenizi hatalı girdiniz.', + 'invalid_deactivation_pass' => 'Girdiğiniz şifre geçersiz.', + 'success_activation' => 'Hesabınız başarıyla aktifleştirildi.', + 'success_deactivation' => 'Hesabınız pasifleştirildi. Aramıza tekrar bekleriz!', + 'success_saved' => 'Ayarlar başarıyla kaydedildi!', + 'login_first' => 'Önce oturum açmalısınız!', + 'already_active' => 'Hesabın zaten aktifleştirildi!', + 'activation_email_sent' => 'Tanımladığınız eposta adresine aktivasyon maili gönderildi.', + 'registration_disabled' => 'Üye kaydı geçici olarak durduruldu.', + 'registration_throttled' => 'Üye kayıt işleminiz kısıtlandı ve geçersiz oldu. Lütfen daha sonra tekrar deneyin.', + 'sign_in' => 'Oturum Aç', + 'register' => 'Kayıt Ol', + 'full_name' => 'Tam İsim', + 'email' => 'Email', + 'password' => 'Parola', + 'login' => 'Oturum Aç', + 'new_password' => 'Yeni Parola', + 'new_password_confirm' => 'Yeni Şifre Onayla', + 'update_requires_password' => 'Güncelleme sırasında onay gereksin', + 'update_requires_password_comment' => 'Üye bilgi güncelleme ekranında mevcut şifre zorunlu olsun.' + ], + 'reset_password' => [ + 'reset_password' => 'Parolanızı Sıfırlayın', + 'reset_password_desc' => 'Unutulan şifreyi sıfırlama formu.', + 'code_param' => 'Sıfırlama Kodu Parametresi', + 'code_param_desc' => 'Sıfırlama kodu için sayfanın URL parametresi kullanılır.', + ], + 'session' => [ + 'session' => 'Oturum', + 'session_desc' => 'Üye oturumlarını sayfaya ekler ve sayfaya erişimi kısıtlayın.', + 'security_title' => 'Görüntüleme İzni', + 'security_desc' => 'Bu sayfaya erişim izni olanlar.', + 'all' => 'Hepsi', + 'users' => 'Üyeler', + 'guests' => 'Misafirler', + 'allowed_groups_title' => 'Gruplara izin ver', + 'allowed_groups_description' => 'İzin verilecek grupları seçin, veya "hiçbiri" seçerek tüm gruplara izin verin.', + 'redirect_title' => 'Yönlendir ', + 'redirect_desc' => 'Erişimi engelliyse yönlendirilecek sayfa.', + 'logout' => 'Başarıyla çıkış yaptınız!', + 'stop_impersonate_success' => 'Artık üye gibi gezinmiyorsunuz. Kendi hesabınızı kullanabilirsiniz.', + ], +]; diff --git a/plugins/rainlab/user/lang/zh-cn/lang.php b/plugins/rainlab/user/lang/zh-cn/lang.php new file mode 100644 index 0000000..bb4813e --- /dev/null +++ b/plugins/rainlab/user/lang/zh-cn/lang.php @@ -0,0 +1,231 @@ + [ + 'name' => '用户', + 'description' => '用户管理.', + 'tab' => '用户', + 'access_users' => '管理用戶', + 'access_groups' => '管理用户组', + 'access_settings' => '管理用户设置', + 'impersonate_user' => '模拟用户', + ], + 'users' => [ + 'menu_label' => '用户', + 'all_users' => '所有用户', + 'new_user' => '添加新用户', + 'list_title' => '管理用户', + 'trashed_hint_title' => '用户已停用其帐户', + 'trashed_hint_desc' => '此用户已停用其帐户,不再希望出现在网站上。他们可以在任何时候通过重新登录来恢复帐户。', + 'banned_hint_title' => '用户已被禁止', + 'banned_hint_desc' => '该用户已被管理员禁止,无法登录。', + 'guest_hint_title' => '这是一个游客用户', + 'guest_hint_desc' => '此用户仅供参考,在登录前需要注册。', + 'activate_warning_title' => '用户未激活!', + 'activate_warning_desc' => '用户未激活,无法登录.', + 'activate_confirm' => '确认激活该用户?', + 'activated_success' => '用户激活成功!', + 'activate_manually' => '手动激活该用户', + 'convert_guest_confirm' => '转换访客为用户吗?', + 'convert_guest_manually' => '转换为注册用户', + 'convert_guest_success' => '用户已转换为注册帐户', + 'impersonate_user' => '模拟用户', + 'impersonate_confirm' => '模拟此用户? 您可以通过注销恢复到原始状态。', + 'impersonate_success' => '你现在模拟这个用户', + 'delete_confirm' => '确认删除该用户?', + 'unban_user' => '解禁用户', + 'unban_confirm' => '确定解禁该用户吗?', + 'unbanned_success' => '用户已经解禁', + 'return_to_list' => '返回用户列表', + 'update_details' => '更新详细信息', + 'bulk_actions' => '批量操作', + 'delete_selected' => '删除选中', + 'delete_selected_confirm' => '删除所选用户?', + 'delete_selected_empty' => '未选择任何用户.', + 'delete_selected_success' => '成功删除所选用户.', + 'activate_selected' => '激活选中的', + 'activate_selected_confirm' => '激活选定的用户?', + 'activate_selected_empty' => '没有选定的用户可以激活。', + 'activate_selected_success' => '已成功激活所选用户。', + 'deactivate_selected' => '停用选中', + 'deactivate_selected_confirm' => '确定停用选中的用户吗?', + 'deactivate_selected_empty' => '没有选中任何要停用的用户。', + 'deactivate_selected_success' => '成功停用选定的用户。', + 'restore_selected' => '恢复选中', + 'restore_selected_confirm' => '确定恢复选中的用户吗?', + 'restore_selected_empty' => '没有选中任何要恢复的用户。', + 'restore_selected_success' => '成功恢复选中选中的用户。', + 'ban_selected' => '禁用选中', + 'ban_selected_confirm' => '确定禁止选中的用户吗?', + 'ban_selected_empty' => '没有选中的用户需要禁用。', + 'ban_selected_success' => '成功禁用选中用户', + 'unban_selected' => '启用选中', + 'unban_selected_confirm' => '确定启用选中的用户吗?', + 'unban_selected_empty' => '没有选中的用户可以启用。', + 'unban_selected_success' => '成功启用选中的用户。', + 'unsuspend' => '取消冻结', + 'unsuspend_success' => '用户已解除冻结。', + 'unsuspend_confirm' => '取消冻结该用户?', + 'activating' => '激活中...', + ], + 'settings' => [ + 'users' => '用户', + 'menu_label' => '用户选项', + 'menu_description' => '管理用户选项.', + 'activation_tab' => '激活', + 'signin_tab' => '登录', + 'registration_tab' => '注册', + 'profile_tab' => 'Profile', + 'notifications_tab' => '提醒', + 'allow_registration' => '允许用户注册', + 'allow_registration_comment' => '如果禁用注册,用户只能由管理员创建。', + 'activate_mode' => '激活模式', + 'activate_mode_comment' => '选择激活方式.', + 'activate_mode_auto' => '自动', + 'activate_mode_auto_comment' => '注册成功后自动激活.', + 'activate_mode_user' => '用户', + 'activate_mode_user_comment' => '邮件激活.', + 'activate_mode_admin' => '管理员', + 'activate_mode_admin_comment' => '管理员激活.', + 'require_activation' => '选项', + 'require_activation_comment' => '用户必须激活后才能登录.', + 'use_throttle' => '登录限制', + 'use_throttle_comment' => '用户重复登录失败时禁用用户.', + 'use_register_throttle' => '注册频率', + 'use_register_throttle_comment' => '防止在短时间内从同一 IP 进行多次注册。', + 'block_persistence' => '防止并发会话', + 'block_persistence_comment' => '启用后,用户无法同时登录多个设备。', + 'login_attribute' => '登录字段', + 'login_attribute_comment' => '选择用户登录类型.', + 'remember_login' => '记住登录模式', + 'remember_login_comment' => '选择用户会话是否应该是持久的。', + 'remember_always' => '总是', + 'remember_never' => '绝不', + 'remember_ask' => '在登录时询问用户', + 'welcome_template' => '欢迎模版', + 'welcome_template_comment' => '用户激活成功后邮件模版.', + 'no_mail_template' => '不发送邮件提醒', + 'hint_templates' => '你可以通过管理面板 邮件 > 邮件模版 设置邮件正文模版.', + ], + 'user' => [ + 'label' => '用户', + 'id' => 'ID', + 'username' => '用户名', + 'name' => '名', + 'name_empty' => '匿名的', + 'surname' => '姓', + 'email' => '邮箱', + 'created_at' => '注册时间', + 'last_seen' => '上次登录时间', + 'is_guest' => '访客', + 'joined' => '加入', + 'is_online' => '当前在线', + 'is_offline' => '当前离线', + 'send_invite' => '用邮件发送邀请', + 'send_invite_comment' => '发送一个包含用户名和密码的欢迎消息', + 'create_password' => '创建密码', + 'create_password_comment' => '输入登陆新密码', + 'reset_password' => '重置密码', + 'reset_password_comment' => '请输入新密码.', + 'confirm_password' => '确认密码', + 'confirm_password_comment' => '再次输入密码.', + 'groups' => '群组', + 'empty_groups' => '无可用用户群组', + 'avatar' => '头像', + 'details' => '描述', + 'account' => '帐号', + 'block_mail' => '阻止向该用户发送邮件', + 'status_label' => 'Status', + 'status_guest' => '访客', + 'status_activated' => '活跃的', + 'status_registered' => '在册的', + 'created_ip_address' => '创建的 IP 地址', + 'last_ip_address' => '最后一个 IP 地址', + ], + 'group' => [ + 'label' => '群组', + 'id' => 'ID', + 'name' => '姓名', + 'description_field' => '描述', + 'code' => '编码', + 'code_comment' => '输入一个唯一编码来标志当前用户组', + 'created_at' => '创建', + 'users_count' => '用户', + ], + 'groups' => [ + 'menu_label' => '群组', + 'all_groups' => '用户群组', + 'new_group' => '新的用户组', + 'delete_selected_confirm' => '确定清空选中用户组么?', + 'list_title' => '管理群组', + 'delete_confirm' => '确定要删除该群组吗?', + 'delete_selected_success' => '成功删除选中的群组。', + 'delete_selected_empty' => '没有选中的要删除的群组。', + 'return_to_list' => '返回群组列表', + 'return_to_users' => '返回用户列表', + 'create_title' => '创建群组', + 'update_title' => '编辑群组', + 'preview_title' => '上一个群组', + ], + 'login' => [ + 'attribute_email' => '邮箱', + 'attribute_username' => '用户名', + ], + 'account' => [ + 'account' => '帐号', + 'account_desc' => '用户信息.', + 'banned' => '抱歉,此用户当前未激活。 请联系我们以获得进一步的帮助。', + 'redirect_to' => '跳转至', + 'redirect_to_desc' => '登录或注册成功后跳转页面.', + 'code_param' => '激活码参数。', + 'code_param_desc' => '激活码的验证页面URL参数', + 'force_secure' => '强制安全协议', + 'force_secure_desc' => '始终使用 HTTPS 架构重定向 URL。', + 'invalid_user' => '未找到该用户。', + 'invalid_activation_code' => '错误的激活码', + 'invalid_deactivation_pass' => '密码不正确。', + 'invalid_current_pass' => '您输入的当前密码无效。', + 'success_activation' => '您的帐号已成功激活.', + 'success_deactivation' => '成功停用您的账号,很抱歉看到您离我而去!', + 'success_saved' => '设置保存成功!', + 'login_first' => '您需要先登录帐号才能访问该页面!', + 'already_active' => '您的帐号暂未激活!', + 'activation_email_sent' => '激活邮件已发送至您的邮箱.', + 'activation_by_admin' => '您已经成功注册了。 您的帐户尚未激活,必须得到管理员的批准。', + 'registration_disabled' => '当前已经禁用注册。', + 'registration_throttled' => '注册受到限制。 请稍后再试。', + 'sign_in' => '登录', + 'register' => '注册', + 'full_name' => '全名', + 'email' => '邮箱', + 'password' => '密码', + 'login' => '登录', + 'new_password' => '设置密码', + 'new_password_confirm' => '确认密码', + 'update_requires_password' => '更新时确认密码', + 'update_requires_password_comment' => '更改个人资料时需要用户的当前密码。', + 'activation_page' => '激活页面', + 'activation_page_comment' => '选择用于激活用户帐户的页面', + 'reset_page' => '重置页面', + 'reset_page_comment' => '选择用于重置帐户密码的页面', + ], + 'reset_password' => [ + 'reset_password' => '重置密码', + 'reset_password_desc' => '找回密码.', + 'code_param' => '重置验证码参数', + 'code_param_desc' => '重置密码的验证码页面URL参数', + ], + 'session' => [ + 'session' => '会话', + 'session_desc' => '将用户会话添加到页面,可以限制页访问。', + 'security_title' => '仅允许', + 'security_desc' => '谁可以访问这个页面。', + 'all' => '所有人', + 'users' => '注册用户', + 'guests' => '游客', + 'allowed_groups_title' => '允许组', + 'allowed_groups_description' => '选择允许的组或无以允许所有组', + 'redirect_title' => '跳转至', + 'redirect_desc' => '拒绝访问时重定向到页面的名字。', + 'logout' => '你已经成功退出登陆!', + 'stop_impersonate_success' => '您不再模拟用户。', + ], +]; diff --git a/plugins/rainlab/user/lang/zh-tw/lang.php b/plugins/rainlab/user/lang/zh-tw/lang.php new file mode 100644 index 0000000..19973b9 --- /dev/null +++ b/plugins/rainlab/user/lang/zh-tw/lang.php @@ -0,0 +1,222 @@ + [ + 'name' => '會員', + 'description' => '前台會員管理系統。', + 'tab' => '會員', + 'access_users' => '管理會員', + 'access_groups' => '管理會員群組', + 'access_settings' => '管理會員設定', + 'impersonate_user' => '以指定會員登入', + ], + 'users' => [ + 'menu_label' => '會員', + 'all_users' => '所有會員', + 'new_user' => '新會員', + 'list_title' => '管理會員', + 'trashed_hint_title' => '會員帳號已停用', + 'trashed_hint_desc' => '此會員已主動停用帳號,且不會在網站上出現。會員可隨時登入號以恢復其帳號。', + 'banned_hint_title' => '會員已封鎖', + 'banned_hint_desc' => '此會員已被管理者封鎖,且不能再次登入。', + 'guest_hint_title' => '遊客', + 'guest_hint_desc' => '此會員資料尚未註冊僅供參考。', + 'activate_warning_title' => '帳號未啟用!', + 'activate_warning_desc' => '此帳號尚未啟用,可能無法登入。', + 'activate_confirm' => '是否啟用此帳號?', + 'activated_success' => '帳號已啟用。', + 'activate_manually' => '手動啟用此帳號', + 'convert_guest_confirm' => '是否轉換遊客為正式會員?', + 'convert_guest_manually' => '轉換為正式會員', + 'convert_guest_success' => '帳號轉換成功。', + 'impersonate_user' => '登入此會員', + 'impersonate_confirm' => '是否以此會員登入?你可以登出以切換為原狀態。', + 'impersonate_success' => '你已模仿該會員登入。', + 'delete_confirm' => '是否刪除此會員?', + 'unban_user' => '解除封鎖此會員', + 'unban_confirm' => '是否解除封鎖此會員?', + 'unbanned_success' => '使用者已解除封鎖。', + 'return_to_list' => '返回會員列表', + 'update_details' => '更新資訊', + 'bulk_actions' => '批次處理', + 'delete_selected' => '刪除選取', + 'delete_selected_confirm' => '是否刪除所選的會員?', + 'delete_selected_empty' => '沒有會員被選取。', + 'delete_selected_success' => '已成功刪除會員。', + 'activate_selected' => '啟動帳號', + 'activate_selected_confirm' => '是否啟動所選的帳號?', + 'activate_selected_empty' => '沒有會員被選取。', + 'activate_selected_success' => '已成功啟動會員。', + 'deactivate_selected' => '停用帳號', + 'deactivate_selected_confirm' => '是否停用所選的帳號?', + 'deactivate_selected_empty' => '沒有會員被選取。', + 'deactivate_selected_success' => '已成功停用帳號。', + 'restore_selected' => '復原帳號', + 'restore_selected_confirm' => '是否復原所選的帳號?', + 'restore_selected_empty' => '沒有會員被選取。', + 'restore_selected_success' => '已成功復原帳號。', + 'ban_selected' => '封鎖帳號', + 'ban_selected_confirm' => '是否封鎖所選的帳號?', + 'ban_selected_empty' => '沒有會員被選取。', + 'ban_selected_success' => '已成功封鎖帳號。', + 'unban_selected' => '解除封鎖', + 'unban_selected_confirm' => '是否解除封鎖所選的帳號?', + 'unban_selected_empty' => '沒有會員被選取。', + 'unban_selected_success' => '已成功解除封鎖帳號。', + 'unsuspend' => '解除停用帳號', + 'unsuspend_success' => '帳號已解除停用。', + 'unsuspend_confirm' => '解除停用此帳號?', + ], + 'settings' => [ + 'users' => '會員', + 'menu_label' => '會員設定', + 'menu_description' => '管理會員基本設定。', + 'activation_tab' => '啟用', + 'signin_tab' => '登入', + 'registration_tab' => '註冊', + 'profile_tab' => '會員資料', + 'notifications_tab' => '通知', + 'allow_registration' => '允許會員註冊', + 'allow_registration_comment' => '關閉此項將只有管理員能新增會員帳號。', + 'activate_mode' => '啟用模式', + 'activate_mode_comment' => '選擇會員如何啟用帳號。', + 'activate_mode_auto' => '自動', + 'activate_mode_auto_comment' => '註冊後自動啟用。', + 'activate_mode_user' => '會員', + 'activate_mode_user_comment' => '會員使用電子郵件啟用帳號。', + 'activate_mode_admin' => '管理員', + 'activate_mode_admin_comment' => '僅管理員可啟用帳號。', + 'require_activation' => '需啟動後登入', + 'require_activation_comment' => '會員在首次登入前須先啟動帳號。', + 'use_throttle' => '節制嘗試登入', + 'use_throttle_comment' => '重複登入失敗將會暫時停用帳號。', + 'use_register_throttle' => '節制嘗試註冊', + 'use_register_throttle_comment' => '防止短期間內來自同個 IP 的註冊請求。', + 'block_persistence' => '禁止多重登入', + 'block_persistence_comment' => '開啟後會員將無法在多個裝置同時登入。', + 'login_attribute' => '登入帳號', + 'login_attribute_comment' => '選擇會員登入所使用的帳號資料。', + 'remember_login' => '保留登入狀態', + 'remember_login_comment' => '選擇會員登入狀態是否保留。', + 'remember_always' => '總是', + 'remember_never' => '永不', + 'remember_ask' => '會員登入時決定', + ], + 'user' => [ + 'label' => '會員', + 'id' => 'ID', + 'username' => '會員名稱', + 'name' => '名', + 'name_empty' => 'Anonymous', + 'surname' => '姓', + 'email' => '信箱', + 'created_at' => '註冊日期', + 'last_seen' => '最後上線', + 'is_guest' => '遊客', + 'joined' => '加入時間', + 'is_online' => '線上', + 'is_offline' => '已離線', + 'send_invite' => '寄送邀請函', + 'send_invite_comment' => '寄送一封含有帳號密碼的邀請函。', + 'create_password' => '設定密碼', + 'create_password_comment' => '請出入登入用密碼。', + 'reset_password' => '重設密碼', + 'reset_password_comment' => '請輸入密碼以重設。', + 'confirm_password' => '確認密碼', + 'confirm_password_comment' => '請重新輸入密碼。', + 'groups' => '群組', + 'empty_groups' => '尚無會員群組', + 'avatar' => '頭像', + 'details' => '資訊', + 'account' => '帳號', + 'block_mail' => '取消所有寄送至此帳號的郵件。', + 'status_guest' => '遊客', + 'status_activated' => '已啟用', + 'status_registered' => '已註冊', + 'created_ip_address' => '註冊位置', + 'last_ip_address' => '最後位置', + ], + 'group' => [ + 'label' => '群組', + 'id' => 'ID', + 'name' => '名稱', + 'description_field' => '描述', + 'code' => '代碼', + 'code_comment' => '輸入識別此群組用的唯一代碼。', + 'created_at' => '創建日期', + 'users_count' => '會員數', + ], + 'groups' => [ + 'menu_label' => '群組', + 'all_groups' => '會員群組', + 'new_group' => '新增群組', + 'delete_selected_confirm' => '是否刪除所選的群組?', + 'list_title' => '管理群組', + 'delete_confirm' => '是否刪除此群組?', + 'delete_selected_success' => '已成功刪除群組。', + 'delete_selected_empty' => '沒有會員被選取。', + 'return_to_list' => '回到群組列表', + 'return_to_users' => '回到會員列表', + 'create_title' => '建立群組', + 'update_title' => '編輯群組', + 'preview_title' => '預覽群組', + ], + 'login' => [ + 'attribute_email' => '信箱', + 'attribute_username' => '使用者名稱', + ], + 'account' => [ + 'account' => '帳號', + 'account_desc' => '會員管理表單。', + 'banned' => '很抱歉,此會員尚未啟動,請聯繫我們以取得協助。', + 'redirect_to' => '重新導向', + 'redirect_to_desc' => '成功登入、更新或註冊後重新導向的頁面。', + 'code_param' => '啟動碼參數名稱', + 'code_param_desc' => '用於夾帶啟動碼的網址參數名稱。', + 'force_secure' => '強制使用 HTTPS', + 'force_secure_desc' => '強制使用 HTTPS 重新導向此網址。', + 'invalid_user' => '帳號有誤。', + 'invalid_activation_code' => '啟動碼錯誤。', + 'invalid_deactivation_pass' => '您輸入的密碼有誤。', + 'invalid_current_pass' => '您輸入的密碼有誤。', + 'success_activation' => '已啟用您的帳號。', + 'success_deactivation' => '已停用您的帳號。', + 'success_saved' => '已儲存您的設定。', + 'login_first' => '請先登入您的帳號。', + 'already_active' => '您的帳號已啟動!', + 'activation_email_sent' => '已寄送帳號啟動信件至您的信箱。', + 'registration_disabled' => '目前暫不開放註冊。', + 'registration_throttled' => '註冊狀態異常,請稍後重試。', + 'sign_in' => '登入', + 'register' => '註冊', + 'full_name' => '全名', + 'email' => '信箱', + 'password' => '密碼', + 'login' => '登入', + 'new_password' => '新密碼', + 'new_password_confirm' => '確認新密碼', + 'update_requires_password' => '更新時要求密碼', + 'update_requires_password_comment' => '修改會員資料時須輸入目前的密碼。', + ], + 'reset_password' => [ + 'reset_password' => '重設密碼', + 'reset_password_desc' => '忘記密碼表單。', + 'code_param' => '重設參數名稱', + 'code_param_desc' => '用於重設密碼的網址參數名稱。', + ], + 'session' => [ + 'session' => '工作階段', + 'session_desc' => '工作階段可限制會員存取頁面。', + 'security_title' => '僅允許', + 'security_desc' => '誰可存取此頁面。', + 'all' => '全部', + 'users' => '會員', + 'guests' => '遊客', + 'allowed_groups_title' => '允許群組', + 'allowed_groups_description' => '選擇允許的群組,留白允許全部。', + 'redirect_title' => '重新導向', + 'redirect_desc' => '無法存取的頁面將重新導向至所選的頁面。', + 'logout' => '您已成功登出!', + 'stop_impersonate_success' => '以停止模仿該會員登入狀態。', + ] +]; diff --git a/plugins/rainlab/user/models/MailBlocker.php b/plugins/rainlab/user/models/MailBlocker.php new file mode 100644 index 0000000..da9d53e --- /dev/null +++ b/plugins/rainlab/user/models/MailBlocker.php @@ -0,0 +1,278 @@ + User::class + ]; + + /** + * @var array Templates names that cannot be blocked. + */ + protected static $safeTemplates = [ + 'rainlab.user::mail.restore' + ]; + + /** + * Sets mail blocking preferences for a user. Eg: + * + * MailBlocker::setPreferences($user, [acme.blog::post.new_reply => 0]) + * + * MailBlocker::setPreferences($user, [acme.blog::post.new_reply => 0], [fillable => [acme.blog::post.new_reply]]) + * + * MailBlocker::setPreferences($user, [template_alias => 0], [aliases => [template_alias => acme.blog::post.new_reply]]) + * + * Supported options: + * - aliases: Alias definitions, with alias as key and template as value. + * - fillable: An array of expected templates, undefined templates are ignored. + * - verify: Only allow mail templates that are registered in the system. + * + * @param array $templates Template name as key and boolean as value. If false, template is blocked. + * @param RainLab\User\Models\User $user + * @param array $options + * @return void + */ + public static function setPreferences($user, $templates, $options = []) + { + $templates = (array) $templates; + + if (!$user) { + throw new Exception('A user must be provided for MailBlocker::setPreferences'); + } + + extract(array_merge([ + 'aliases' => [], + 'fillable' => [], + 'verify' => false, + ], $options)); + + if ($aliases) { + $fillable = array_merge($fillable, array_values($aliases)); + $templates = array_build($templates, function($key, $value) use ($aliases) { + return [array_get($aliases, $key, $key), $value]; + }); + } + + if ($fillable) { + $templates = array_intersect_key($templates, array_flip($fillable)); + } + + if ($verify) { + $existing = MailTemplate::listAllTemplates(); + $templates = array_intersect_key($templates, $existing); + } + + $currentBlocks = array_flip(static::checkAllForUser($user)); + foreach ($templates as $template => $value) { + // User wants to receive mail and is blocking + if ($value && isset($currentBlocks[$template])) { + static::removeBlock($template, $user); + } + // User does not want to receive mail and not blocking + elseif (!$value && !isset($currentBlocks[$template])) { + static::addBlock($template, $user); + } + } + } + + /** + * Adds a block for a user and a mail view/template code. + * @param string $template + * @param RainLab\User\Models\User $user + * @return bool + */ + public static function addBlock($template, $user) + { + $blocker = static::where([ + 'template' => $template, + 'user_id' => $user->id + ])->first(); + + if ($blocker && $blocker->email == $user->email) { + return false; + } + + if (!$blocker) { + $blocker = new static; + $blocker->template = $template; + $blocker->user_id = $user->id; + } + + $blocker->email = $user->email; + $blocker->save(); + + return true; + } + + /** + * Removes a block for a user and a mail view/template code. + * @param string $template + * @param RainLab\User\Models\User $user + * @return bool + */ + public static function removeBlock($template, $user) + { + $blocker = static::where([ + 'template' => $template, + 'user_id' => $user->id + ])->orWhere(function ($query) use ($template, $user) { + $query->where([ + 'template' => $template, + 'email' => $user->email + ]); + })->get(); + + if (!$blocker->count()) { + return false; + } + + $blocker->each(function($block) { + $block->delete(); + }); + + return true; + } + + /** + * Blocks all mail messages for a user. + * @param RainLab\User\Models\User $user + * @return bool + */ + public static function blockAll($user) + { + return static::addBlock('*', $user); + } + + /** + * Removes block on all mail messages for a user. + * @param RainLab\User\Models\User $user + * @return bool + */ + public static function unblockAll($user) + { + return static::removeBlock('*', $user); + } + + /** + * Checks if a user is blocking all templates. + * @param RainLab\User\Models\User $user + * @return bool + */ + public static function isBlockAll($user) + { + return count(static::checkForEmail('*', $user->email)) > 0; + } + + /** + * Updates mail blockers for a user if they change their email address + * @param Model $user + * @return mixed + */ + public static function syncUser($user) + { + return static::where('user_id', $user->id)->update(['email' => $user->email]); + } + + /** + * Returns a list of mail templates blocked by the user. + * @param Model $user + * @return array + */ + public static function checkAllForUser($user) + { + return static::where('user_id', $user->id)->lists('template'); + } + + /** + * checkForEmail checks if an email address has blocked a given template, + * returns an array of blocked emails. + * @param string $template + * @param string $email + * @return array + */ + public static function checkForEmail($template, $email) + { + if (in_array($template, static::$safeTemplates)) { + return []; + } + + if (empty($email)) { + return []; + } + + if (!is_array($email)) { + $email = [$email => null]; + } + + $emails = array_keys($email); + + return static::where(function($q) use ($template) { + $q->where('template', $template)->orWhere('template', '*'); + }) + ->whereIn('email', $emails) + ->lists('email'); + } + + /** + * filterMessage filters a Illuminate\Mail\Message and removes blocked recipients. + * If no recipients remain, false is returned. Returns null if mailing + * should proceed. + * @param string $template + * @param Illuminate\Mail\Message $message + * @return bool|null + */ + public static function filterMessage($template, $message) + { + $recipients = $message->getTo(); + $blockedAddresses = static::checkForEmail($template, $recipients); + + if (!count($blockedAddresses)) { + return null; + } + + foreach ($recipients as $index => $address) { + // October v2 + if ($address instanceof \Symfony\Component\Mime\Address) { + if (in_array($address->getAddress(), $blockedAddresses)) { + unset($recipients[$index]); + } + } + // October v1 + else { + // Swift message, index is address + if (in_array($index, $blockedAddresses)) { + unset($recipients[$index]); + } + } + } + + // Override recipients + $message->to($recipients, null, true); + + return count($recipients) ? null : false; + } +} diff --git a/plugins/rainlab/user/models/Settings.php b/plugins/rainlab/user/models/Settings.php new file mode 100644 index 0000000..7355168 --- /dev/null +++ b/plugins/rainlab/user/models/Settings.php @@ -0,0 +1,99 @@ +require_activation = config('rainlab.user::requireActivation', true); + $this->activate_mode = config('rainlab.user::activateMode', self::ACTIVATE_AUTO); + $this->use_throttle = config('rainlab.user::useThrottle', true); + $this->block_persistence = config('rainlab.user::blockPersistence', false); + $this->allow_registration = config('rainlab.user::allowRegistration', true); + $this->login_attribute = config('rainlab.user::loginAttribute', self::LOGIN_EMAIL); + $this->remember_login = config('rainlab.user::rememberLogin', self::REMEMBER_ALWAYS); + $this->use_register_throttle = config('rainlab.user::useRegisterThrottle', true); + } + + public function getActivateModeOptions() + { + return [ + self::ACTIVATE_AUTO => [ + 'rainlab.user::lang.settings.activate_mode_auto', + 'rainlab.user::lang.settings.activate_mode_auto_comment' + ], + self::ACTIVATE_USER => [ + 'rainlab.user::lang.settings.activate_mode_user', + 'rainlab.user::lang.settings.activate_mode_user_comment' + ], + self::ACTIVATE_ADMIN => [ + 'rainlab.user::lang.settings.activate_mode_admin', + 'rainlab.user::lang.settings.activate_mode_admin_comment' + ] + ]; + } + + public function getActivateModeAttribute($value) + { + if (!$value) { + return self::ACTIVATE_AUTO; + } + + return $value; + } + + public function getLoginAttributeOptions() + { + return [ + self::LOGIN_EMAIL => ['rainlab.user::lang.login.attribute_email'], + self::LOGIN_USERNAME => ['rainlab.user::lang.login.attribute_username'] + ]; + } + + public function getRememberLoginOptions() + { + return [ + self::REMEMBER_ALWAYS => [ + 'rainlab.user::lang.settings.remember_always', + ], + self::REMEMBER_NEVER => [ + 'rainlab.user::lang.settings.remember_never', + ], + self::REMEMBER_ASK => [ + 'rainlab.user::lang.settings.remember_ask', + ] + ]; + } + + public function getRememberLoginAttribute($value) + { + if (!$value) { + return self::REMEMBER_ALWAYS; + } + + return $value; + } +} diff --git a/plugins/rainlab/user/models/Throttle.php b/plugins/rainlab/user/models/Throttle.php new file mode 100644 index 0000000..d9b4916 --- /dev/null +++ b/plugins/rainlab/user/models/Throttle.php @@ -0,0 +1,18 @@ + User::class + ]; +} diff --git a/plugins/rainlab/user/models/User.php b/plugins/rainlab/user/models/User.php new file mode 100644 index 0000000..9cfe137 --- /dev/null +++ b/plugins/rainlab/user/models/User.php @@ -0,0 +1,566 @@ + 'required|between:6,255|email|unique:users', + 'avatar' => 'nullable|image|max:4000', + 'username' => 'required|between:2,255|unique:users', + 'password' => 'required:create|between:8,255|confirmed', + 'password_confirmation' => 'required_with:password|between:8,255', + ]; + + /** + * @var array Relations + */ + public $belongsToMany = [ + 'groups' => [UserGroup::class, 'table' => 'users_groups'] + ]; + + public $attachOne = [ + 'avatar' => \System\Models\File::class + ]; + + /** + * @var array The attributes that are mass assignable. + */ + protected $fillable = [ + 'name', + 'surname', + 'login', + 'username', + 'email', + 'password', + 'password_confirmation', + 'created_ip_address', + 'last_ip_address' + ]; + + /** + * Reset guarded fields, because we use $fillable instead. + * @var array The attributes that aren't mass assignable. + */ + protected $guarded = ['*']; + + /** + * Purge attributes from data set. + */ + protected $purgeable = ['password_confirmation', 'send_invite']; + + /** + * @var array dates + */ + protected $dates = [ + 'last_seen', + 'deleted_at', + 'created_at', + 'updated_at', + 'activated_at', + 'last_login' + ]; + + /** + * @var string|null loginAttribute + */ + public static $loginAttribute = null; + + /** + * Sends the confirmation email to a user, after activating. + * @param string $code + * @return bool + */ + public function attemptActivation($code) + { + if ($this->trashed()) { + if ($code === $this->activation_code) { + $this->restore(); + } else { + return false; + } + } else { + $result = parent::attemptActivation($code); + + if ($result === false) { + return false; + } + } + + Event::fire('rainlab.user.activate', [$this]); + + return true; + } + + /** + * Converts a guest user to a registered one and sends an invitation notification. + * @return void + */ + public function convertToRegistered($sendNotification = true) + { + // Already a registered user + if (!$this->is_guest) { + return; + } + + if ($sendNotification) { + $this->generatePassword(); + } + + $this->is_guest = false; + $this->save(); + + if ($sendNotification) { + $this->sendInvitation(); + } + } + + // + // Constructors + // + + /** + * findByEmail looks up a user by their email address. + * @return self + */ + public static function findByEmail($email) + { + if (!$email) { + return; + } + + return self::where('email', $email)->first(); + } + + // + // Getters + // + + /** + * clearPersistCode will forcibly sign the user out + */ + public function clearPersistCode() + { + $this->persist_code = null; + $this->timestamps = false; + $this->save(); + } + + /** + * Gets a code for when the user is persisted to a cookie or session which identifies the user. + * @return string + */ + public function getPersistCode() + { + $block = UserSettings::get('block_persistence', false); + + if ($block || !$this->persist_code) { + return parent::getPersistCode(); + } + + return $this->persist_code; + } + + /** + * Returns the public image file path to this user's avatar. + */ + public function getAvatarThumb($size = 25, $options = null) + { + if (is_string($options)) { + $options = ['default' => $options]; + } + elseif (!is_array($options)) { + $options = []; + } + + // Default is "mm" (Mystery man) + $default = array_get($options, 'default', 'mm'); + + if ($this->avatar) { + return $this->avatar->getThumb($size, $size, $options); + } + else { + return '//www.gravatar.com/avatar/'. + md5(strtolower(trim($this->email))). + '?s='.$size. + '&d='.urlencode($default); + } + } + + /** + * Returns the name for the user's login. + * @return string + */ + public function getLoginName() + { + if (static::$loginAttribute !== null) { + return static::$loginAttribute; + } + + return static::$loginAttribute = UserSettings::get('login_attribute', UserSettings::LOGIN_EMAIL); + } + + /** + * Returns the minimum length for a new password from settings. + * @return int + */ + public static function getMinPasswordLength() + { + return Config::get('rainlab.user::minPasswordLength', 8); + } + + // + // Scopes + // + + /** + * scopeIsActivated + */ + public function scopeIsActivated($query) + { + return $query->where('is_activated', 1); + } + + /** + * scopeFilterByGroup + */ + public function scopeFilterByGroup($query, $filter) + { + return $query->whereHas('groups', function($group) use ($filter) { + $group->whereIn('id', $filter); + }); + } + + // + // Events + // + + /** + * beforeValidate event + * @return void + */ + public function beforeValidate() + { + /* + * Guests are special + */ + if ($this->is_guest && !$this->password) { + $this->generatePassword(); + } + + /* + * When the username is not used, the email is substituted. + */ + if ( + (!$this->username) || + ($this->isDirty('email') && $this->getOriginal('email') == $this->username) + ) { + $this->username = $this->email; + } + + /* + * Apply rules Settings + */ + $minPasswordLength = Settings::get('min_password_length', static::getMinPasswordLength()); + $passwordRule = PasswordRule::min($minPasswordLength); + if (Settings::get('require_mixed_case')) { + $passwordRule->mixedCase(); + } + + if (Settings::get('require_uncompromised')) { + $passwordRule->uncompromised(); + } + + if (Settings::get('require_number')) { + $passwordRule->numbers(); + } + + if (Settings::get('require_symbol')) { + $passwordRule->symbols(); + } + + $this->addValidationRule('password', $passwordRule); + $this->addValidationRule('password_confirmation', $passwordRule); + } + + /** + * afterCreate event + * @return void + */ + public function afterCreate() + { + $this->restorePurgedValues(); + + if ($this->send_invite) { + $this->sendInvitation(); + } + } + + /** + * beforeLogin event + * @return void + */ + public function beforeLogin() + { + if ($this->is_guest) { + $login = $this->getLogin(); + throw new AuthException(sprintf( + 'Cannot login user "%s" as they are not registered.', $login + )); + } + + parent::beforeLogin(); + } + + /** + * afterLogin event + * @return void + */ + public function afterLogin() + { + $this->last_login = $this->freshTimestamp(); + + if ($this->trashed()) { + $this->restore(); + + Mail::sendTo($this, 'rainlab.user::mail.reactivate', [ + 'name' => $this->name + ]); + + Event::fire('rainlab.user.reactivate', [$this]); + } + else { + parent::afterLogin(); + } + + Event::fire('rainlab.user.login', [$this]); + } + + /** + * afterDelete event + * @return void + */ + public function afterDelete() + { + if ($this->isSoftDelete()) { + Event::fire('rainlab.user.deactivate', [$this]); + return; + } + + $this->avatar && $this->avatar->delete(); + + parent::afterDelete(); + } + + // + // Banning + // + + /** + * Ban this user, preventing them from signing in. + * @return void + */ + public function ban() + { + Auth::findThrottleByUserId($this->id)->ban(); + } + + /** + * Remove the ban on this user. + * @return void + */ + public function unban() + { + Auth::findThrottleByUserId($this->id)->unban(); + } + + /** + * Check if the user is banned. + * @return bool + */ + public function isBanned() + { + $throttle = Auth::createThrottleModel()->where('user_id', $this->id)->first(); + return $throttle ? $throttle->is_banned : false; + } + + // + // Suspending + // + + /** + * Check if the user is suspended. + * @return bool + */ + public function isSuspended() + { + return Auth::findThrottleByUserId($this->id)->checkSuspended(); + } + + /** + * Remove the suspension on this user. + * @return void + */ + public function unsuspend() + { + Auth::findThrottleByUserId($this->id)->unsuspend(); + } + + // + // IP Recording and Throttle + // + + /** + * Records the last_ip_address to reflect the last known IP for this user. + * @param string|null $ipAddress + * @return void + */ + public function touchIpAddress($ipAddress) + { + $this + ->newQuery() + ->where('id', $this->id) + ->update(['last_ip_address' => $ipAddress]) + ; + } + + /** + * Returns true if IP address is throttled and cannot register + * again. Maximum 3 registrations every 60 minutes. + * @param string|null $ipAddress + * @return bool + */ + public static function isRegisterThrottled($ipAddress) + { + if (!$ipAddress) { + return false; + } + + $timeLimit = Carbon::now()->subMinutes(60); + $count = static::make() + ->where('created_ip_address', $ipAddress) + ->where('created_at', '>', $timeLimit) + ->count() + ; + + return $count > 2; + } + + // + // Last Seen + // + + /** + * Checks if the user has been seen in the last 5 minutes, and if not, + * updates the last_seen timestamp to reflect their online status. + * @return void + */ + public function touchLastSeen() + { + if ($this->isOnline()) { + return; + } + + $oldTimestamps = $this->timestamps; + $this->timestamps = false; + + $this + ->newQuery() + ->where('id', $this->id) + ->update(['last_seen' => $this->freshTimestamp()]) + ; + + $this->last_seen = $this->freshTimestamp(); + $this->timestamps = $oldTimestamps; + } + + /** + * Returns true if the user has been active within the last 5 minutes. + * @return bool + */ + public function isOnline() + { + if (!$this->last_seen) { + return false; + } + + return $this->last_seen > $this->freshTimestamp()->subMinutes(5); + } + + /** + * Returns the date this user was last seen. + * @deprecated use last_seen attribute + * @return Carbon\Carbon + */ + public function getLastSeen() + { + return $this->last_seen ?: $this->created_at; + } + + // + // Utils + // + + /** + * Returns the variables available when sending a user notification. + * @return array + */ + public function getNotificationVars() + { + $vars = [ + 'name' => $this->name, + 'email' => $this->email, + 'username' => $this->username, + 'login' => $this->getLogin(), + 'password' => $this->getOriginalHashValue('password') + ]; + + /* + * Extensibility + */ + $result = Event::fire('rainlab.user.getNotificationVars', [$this]); + if ($result && is_array($result)) { + $vars = call_user_func_array('array_merge', $result) + $vars; + } + + return $vars; + } + + /** + * sendInvitation sends an invitation to the user using template + * "rainlab.user::mail.invite" + * @return void + */ + protected function sendInvitation() + { + Mail::sendTo($this, 'rainlab.user::mail.invite', $this->getNotificationVars()); + } + + /** + * generatePassword assigns this user with a random password. + * @return void + */ + protected function generatePassword() + { + $this->password = $this->password_confirmation = Str::random(static::getMinPasswordLength()); + } +} diff --git a/plugins/rainlab/user/models/UserGroup.php b/plugins/rainlab/user/models/UserGroup.php new file mode 100644 index 0000000..20496a4 --- /dev/null +++ b/plugins/rainlab/user/models/UserGroup.php @@ -0,0 +1,60 @@ + 'required|between:3,64', + 'code' => 'required|regex:/^[a-zA-Z0-9_\-]+$/|unique:user_groups', + ]; + + /** + * @var array Relations + */ + public $belongsToMany = [ + 'users' => [User::class, 'table' => 'users_groups'], + 'users_count' => [User::class, 'table' => 'users_groups', 'count' => true] + ]; + + /** + * @var array The attributes that are mass assignable. + */ + protected $fillable = [ + 'name', + 'code', + 'description' + ]; + + protected static $guestGroup = null; + + /** + * Returns the guest user group. + * @return RainLab\User\Models\UserGroup + */ + public static function getGuestGroup() + { + if (self::$guestGroup !== null) { + return self::$guestGroup; + } + + $group = self::where('code', self::GROUP_GUEST)->first() ?: false; + + return self::$guestGroup = $group; + } +} diff --git a/plugins/rainlab/user/models/settings/fields.yaml b/plugins/rainlab/user/models/settings/fields.yaml new file mode 100644 index 0000000..15bfc32 --- /dev/null +++ b/plugins/rainlab/user/models/settings/fields.yaml @@ -0,0 +1,107 @@ +# =================================== +# Field Definitions +# =================================== + +tabs: + fields: + # Throttle Sign In + use_throttle: + span: left + label: rainlab.user::lang.settings.use_throttle + comment: rainlab.user::lang.settings.use_throttle_comment + type: switch + tab: rainlab.user::lang.settings.signin_tab + + # Prevent concurrent sessions + block_persistence: + span: right + label: rainlab.user::lang.settings.block_persistence + comment: rainlab.user::lang.settings.block_persistence_comment + type: switch + tab: rainlab.user::lang.settings.signin_tab + + # Login Attribute + login_attribute: + span: left + label: rainlab.user::lang.settings.login_attribute + commentAbove: rainlab.user::lang.settings.login_attribute_comment + type: radio + tab: rainlab.user::lang.settings.signin_tab + + # Remeber Login Mode + remember_login: + span: right + label: rainlab.user::lang.settings.remember_login + commentAbove: rainlab.user::lang.settings.remember_login_comment + type: radio + tab: rainlab.user::lang.settings.signin_tab + + # Require Activation + allow_registration: + span: left + label: rainlab.user::lang.settings.allow_registration + comment: rainlab.user::lang.settings.allow_registration_comment + type: switch + tab: rainlab.user::lang.settings.registration_tab + + # Enable registration throttling + use_register_throttle: + span: right + label: rainlab.user::lang.settings.use_register_throttle + comment: rainlab.user::lang.settings.use_register_throttle_comment + type: switch + tab: rainlab.user::lang.settings.registration_tab + + # Require Activation + require_activation: + span: left + label: rainlab.user::lang.settings.require_activation + comment: rainlab.user::lang.settings.require_activation_comment + type: switch + tab: rainlab.user::lang.settings.activation_tab + + # Activation Mode + activate_mode: + span: left + commentAbove: rainlab.user::lang.settings.activate_mode_comment + label: rainlab.user::lang.settings.activate_mode + type: radio + tab: rainlab.user::lang.settings.activation_tab + + # Min Password Length + min_password_length: + span: left + label: rainlab.user::lang.settings.min_password_length + type: number + comment: rainlab.user::lang.settings.min_password_length_comment + tab: rainlab.user::lang.settings.password_policy_tab + + # Require Mixed Case + require_mixed_case: + span: left + label: rainlab.user::lang.settings.require_mixed_case + type: switch + comment: rainlab.user::lang.settings.require_mixed_case_comment + tab: rainlab.user::lang.settings.password_policy_tab + + # Require Uncompromised + require_uncompromised: + span: right + label: rainlab.user::lang.settings.require_uncompromised + type: switch + comment: rainlab.user::lang.settings.require_uncompromised_comment + tab: rainlab.user::lang.settings.password_policy_tab + + # Require number + require_number: + span: left + label: rainlab.user::lang.settings.require_number + type: switch + tab: rainlab.user::lang.settings.password_policy_tab + + # Require symbol + require_symbol: + span: right + label: rainlab.user::lang.settings.require_symbol + type: switch + tab: rainlab.user::lang.settings.password_policy_tab diff --git a/plugins/rainlab/user/models/user/columns.yaml b/plugins/rainlab/user/models/user/columns.yaml new file mode 100644 index 0000000..f3c27be --- /dev/null +++ b/plugins/rainlab/user/models/user/columns.yaml @@ -0,0 +1,50 @@ +# =================================== +# Column Definitions +# =================================== + +columns: + + id: + label: rainlab.user::lang.user.id + invisible: true + + username: + label: rainlab.user::lang.user.username + searchable: true + invisible: true + + name: + label: rainlab.user::lang.user.name + searchable: true + + surname: + label: rainlab.user::lang.user.surname + searchable: true + invisible: true + + email: + label: rainlab.user::lang.user.email + searchable: true + + created_at: + label: rainlab.user::lang.user.created_at + type: timetense + + last_seen: + label: rainlab.user::lang.user.last_seen + type: timetense + + is_guest: + label: rainlab.user::lang.user.is_guest + type: switch + invisible: true + + created_ip_address: + label: rainlab.user::lang.user.created_ip_address + searchable: true + invisible: true + + last_ip_address: + label: rainlab.user::lang.user.last_ip_address + searchable: true + invisible: true diff --git a/plugins/rainlab/user/models/user/fields.yaml b/plugins/rainlab/user/models/user/fields.yaml new file mode 100755 index 0000000..9faf16d --- /dev/null +++ b/plugins/rainlab/user/models/user/fields.yaml @@ -0,0 +1,90 @@ +fields: + name: + label: 'rainlab.user::lang.user.name' + span: auto + type: text + surname: + label: 'rainlab.user::lang.user.surname' + span: auto + type: text +tabs: + fields: + email: + label: 'rainlab.user::lang.user.email' + tab: 'rainlab.user::lang.user.account' + span: full + type: text + send_invite: + type: checkbox + label: 'rainlab.user::lang.user.send_invite' + comment: 'rainlab.user::lang.user.send_invite_comment' + tab: 'rainlab.user::lang.user.account' + default: true + context: create + block_mail: + label: 'rainlab.user::lang.user.block_mail' + tab: 'rainlab.user::lang.user.account' + type: checkbox + span: full + cssClass: field-align-above + context: update + password@create: + label: 'rainlab.user::lang.user.create_password' + comment: 'rainlab.user::lang.user.create_password_comment' + tab: 'rainlab.user::lang.user.account' + type: password + span: left + password@update: + label: 'rainlab.user::lang.user.reset_password' + comment: 'rainlab.user::lang.user.reset_password_comment' + tab: 'rainlab.user::lang.user.account' + type: password + span: left + password_confirmation: + label: 'rainlab.user::lang.user.confirm_password' + comment: 'rainlab.user::lang.user.confirm_password_comment' + tab: 'rainlab.user::lang.user.account' + type: password + span: right + context: + - create + - update + username: + label: 'rainlab.user::lang.user.username' + tab: 'rainlab.user::lang.user.account' + hidden: true + span: left + type: text + groups: + label: 'rainlab.user::lang.user.groups' + tab: 'rainlab.user::lang.user.account' + type: relation + emptyOption: 'rainlab.user::lang.user.empty_groups' + created_ip_address: + label: 'rainlab.user::lang.user.created_ip_address' + span: auto + disabled: true + tab: 'rainlab.user::lang.user.account' + context: preview + type: text + last_ip_address: + label: 'rainlab.user::lang.user.last_ip_address' + span: auto + disabled: true + tab: 'rainlab.user::lang.user.account' + context: preview + type: text + seller_id: + label: 'Seller Id' + span: auto + type: number + tab: 'Seller Settings' +secondaryTabs: + fields: + avatar: + label: 'rainlab.user::lang.user.avatar' + type: fileupload + mode: image + imageHeight: 260 + imageWidth: 260 + tab: Misc diff --git a/plugins/rainlab/user/models/user/scopes.yaml b/plugins/rainlab/user/models/user/scopes.yaml new file mode 100644 index 0000000..3cd380c --- /dev/null +++ b/plugins/rainlab/user/models/user/scopes.yaml @@ -0,0 +1,30 @@ +# =================================== +# Filter Scope Definitions +# =================================== + +scopes: + + groups: + # Filter name + label: rainlab.user::lang.group.label + # Model Class name + modelClass: RainLab\User\Models\UserGroup + # Model attribute to display for the name + nameFrom: name + # Filter scope + scope: filterByGroup + + created_at: + label: rainlab.user::lang.user.created_at + type: daterange + conditions: created_at >= ':after' AND created_at <= ':before' + + activated: + # Filter name + label: rainlab.user::lang.user.status_activated + # Filter type + type: switch + # SQL conditions + conditions: + - is_activated = '0' + - is_activated = '1' diff --git a/plugins/rainlab/user/models/usergroup/columns.yaml b/plugins/rainlab/user/models/usergroup/columns.yaml new file mode 100644 index 0000000..441a7fd --- /dev/null +++ b/plugins/rainlab/user/models/usergroup/columns.yaml @@ -0,0 +1,26 @@ +# =================================== +# Column Definitions +# =================================== + +columns: + + id: + label: rainlab.user::lang.group.id + invisible: true + + name: + label: rainlab.user::lang.group.name + searchable: true + + code: + label: rainlab.user::lang.group.code + + created_at: + label: rainlab.user::lang.group.created_at + + users_count: + label: rainlab.user::lang.group.users_count + relation: users_count + valueFrom: count + default: 0 + sortable: false diff --git a/plugins/rainlab/user/models/usergroup/fields.yaml b/plugins/rainlab/user/models/usergroup/fields.yaml new file mode 100644 index 0000000..4a3da10 --- /dev/null +++ b/plugins/rainlab/user/models/usergroup/fields.yaml @@ -0,0 +1,19 @@ +# =================================== +# Field Definitions +# =================================== + +fields: + name: + label: rainlab.user::lang.group.name + span: left + + code: + label: rainlab.user::lang.group.code + comment: rainlab.user::lang.group.code_comment + span: right + preset: name + + description: + label: rainlab.user::lang.group.description_field + type: textarea + size: tiny diff --git a/plugins/rainlab/user/notifyrules/UserActivatedEvent.php b/plugins/rainlab/user/notifyrules/UserActivatedEvent.php new file mode 100644 index 0000000..5c3b3f4 --- /dev/null +++ b/plugins/rainlab/user/notifyrules/UserActivatedEvent.php @@ -0,0 +1,18 @@ + 'Activated', + 'description' => 'A user is activated', + 'group' => 'user' + ]; + } +} diff --git a/plugins/rainlab/user/notifyrules/UserAttributeCondition.php b/plugins/rainlab/user/notifyrules/UserAttributeCondition.php new file mode 100644 index 0000000..94a99b3 --- /dev/null +++ b/plugins/rainlab/user/notifyrules/UserAttributeCondition.php @@ -0,0 +1,37 @@ +host; + + $attribute = $hostObj->subcondition; + + if (!$user = array_get($params, 'user')) { + throw new ApplicationException('Error evaluating the user attribute condition: the user object is not found in the condition parameters.'); + } + + return parent::evalIsTrue($user); + } +} diff --git a/plugins/rainlab/user/notifyrules/UserRegisteredEvent.php b/plugins/rainlab/user/notifyrules/UserRegisteredEvent.php new file mode 100644 index 0000000..1aeeab2 --- /dev/null +++ b/plugins/rainlab/user/notifyrules/UserRegisteredEvent.php @@ -0,0 +1,18 @@ + 'Registered', + 'description' => 'A user has registered', + 'group' => 'user' + ]; + } +} diff --git a/plugins/rainlab/user/notifyrules/userattributecondition/attributes.yaml b/plugins/rainlab/user/notifyrules/userattributecondition/attributes.yaml new file mode 100644 index 0000000..2f4c894 --- /dev/null +++ b/plugins/rainlab/user/notifyrules/userattributecondition/attributes.yaml @@ -0,0 +1,17 @@ +# =================================== +# Condition Attribute Definitions +# =================================== + +attributes: + + name: + label: Name + + surname: + label: Surname + + username: + label: Login / Username + + email: + label: Email address diff --git a/plugins/rainlab/user/phpunit.xml b/plugins/rainlab/user/phpunit.xml new file mode 100644 index 0000000..9d275e2 --- /dev/null +++ b/plugins/rainlab/user/phpunit.xml @@ -0,0 +1,42 @@ + + + + + ./tests + + + + + + + + + + + + + ./classes + ./components + ./controllers + ./facades + ./models + ./notifyrules + + + ./Plugin.php + ./tests + ./updates + ./vendor + + + diff --git a/plugins/rainlab/user/tests/UserPluginTestCase.php b/plugins/rainlab/user/tests/UserPluginTestCase.php new file mode 100644 index 0000000..9237b85 --- /dev/null +++ b/plugins/rainlab/user/tests/UserPluginTestCase.php @@ -0,0 +1,34 @@ +logout(); + + // Register the auth facade + $alias = AliasLoader::getInstance(); + $alias->alias('Auth', \RainLab\User\Facades\Auth::class); + + App::singleton('user.auth', function () { + return \RainLab\User\Classes\AuthManager::instance(); + }); + } +} diff --git a/plugins/rainlab/user/tests/unit/facades/AuthFacadeTest.php b/plugins/rainlab/user/tests/unit/facades/AuthFacadeTest.php new file mode 100644 index 0000000..8e0995b --- /dev/null +++ b/plugins/rainlab/user/tests/unit/facades/AuthFacadeTest.php @@ -0,0 +1,74 @@ + 'Some User', + 'email' => 'some@website.tld', + 'password' => 'changeme', + 'password_confirmation' => 'changeme', + ]); + + $this->assertEquals(1, User::count()); + $this->assertInstanceOf(\RainLab\User\Models\User::class, $user); + + $this->assertFalse($user->is_activated); + $this->assertEquals('Some User', $user->name); + $this->assertEquals('some@website.tld', $user->email); + } + + public function testRegisterUserWithAutoActivation() + { + // Stop activation events from other plugins + Event::forget('rainlab.user.activate'); + + $user = Auth::register([ + 'name' => 'Some User', + 'email' => 'some@website.tld', + 'password' => 'changeme', + 'password_confirmation' => 'changeme', + ], true); + + $this->assertTrue($user->is_activated); + + $this->assertTrue(Auth::check()); + } + + public function testRegisterGuest() + { + $guest = Auth::registerGuest(['email' => 'person@acme.tld']); + + $this->assertEquals(1, User::count()); + $this->assertInstanceOf(\RainLab\User\Models\User::class, $guest); + + $this->assertTrue($guest->is_guest); + $this->assertEquals('person@acme.tld', $guest->email); + } + + public function testLoginAndCheckAuth() + { + $this->assertFalse(Auth::check()); + + $user = User::create([ + 'name' => 'Some User', + 'email' => 'some@website.tld', + 'password' => 'changeme', + 'password_confirmation' => 'changeme', + ]); + + $user->is_activated = true; + $user->activated_at = now(); + $user->save(); + + Auth::login($user); + + $this->assertTrue(Auth::check()); + } +} diff --git a/plugins/rainlab/user/updates/create_mail_blockers_table.php b/plugins/rainlab/user/updates/create_mail_blockers_table.php new file mode 100644 index 0000000..043a525 --- /dev/null +++ b/plugins/rainlab/user/updates/create_mail_blockers_table.php @@ -0,0 +1,27 @@ +engine = 'InnoDB'; + $table->increments('id'); + $table->string('email')->index()->nullable(); + $table->string('template')->index()->nullable(); + $table->integer('user_id')->unsigned()->nullable()->index(); + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('rainlab_user_mail_blockers'); + } + +} diff --git a/plugins/rainlab/user/updates/create_throttle_table.php b/plugins/rainlab/user/updates/create_throttle_table.php new file mode 100644 index 0000000..339ae01 --- /dev/null +++ b/plugins/rainlab/user/updates/create_throttle_table.php @@ -0,0 +1,31 @@ +engine = 'InnoDB'; + $table->increments('id'); + $table->integer('user_id')->unsigned()->nullable()->index(); + $table->string('ip_address')->nullable()->index(); + $table->integer('attempts')->default(0); + $table->timestamp('last_attempt_at')->nullable(); + $table->boolean('is_suspended')->default(0); + $table->timestamp('suspended_at')->nullable(); + $table->boolean('is_banned')->default(0); + $table->timestamp('banned_at')->nullable(); + }); + } + + public function down() + { + Schema::dropIfExists('user_throttle'); + } + +} diff --git a/plugins/rainlab/user/updates/create_user_groups_table.php b/plugins/rainlab/user/updates/create_user_groups_table.php new file mode 100644 index 0000000..83884f4 --- /dev/null +++ b/plugins/rainlab/user/updates/create_user_groups_table.php @@ -0,0 +1,36 @@ +engine = 'InnoDB'; + $table->increments('id'); + $table->string('name'); + $table->string('code')->nullable()->index(); + $table->text('description')->nullable(); + $table->timestamps(); + }); + + Schema::create('users_groups', function($table) + { + $table->engine = 'InnoDB'; + $table->integer('user_id')->unsigned(); + $table->integer('user_group_id')->unsigned(); + $table->primary(['user_id', 'user_group_id'], 'rainlab_user_group'); + }); + } + + public function down() + { + Schema::dropIfExists('user_groups'); + Schema::dropIfExists('users_groups'); + } + +} diff --git a/plugins/rainlab/user/updates/create_users_table.php b/plugins/rainlab/user/updates/create_users_table.php new file mode 100644 index 0000000..39f0aa3 --- /dev/null +++ b/plugins/rainlab/user/updates/create_users_table.php @@ -0,0 +1,34 @@ +engine = 'InnoDB'; + $table->increments('id'); + $table->string('name')->nullable(); + $table->string('email')->unique(); + $table->string('password'); + $table->string('activation_code')->nullable()->index(); + $table->string('persist_code')->nullable(); + $table->string('reset_password_code')->nullable()->index(); + $table->text('permissions')->nullable(); + $table->boolean('is_activated')->default(0); + $table->timestamp('activated_at')->nullable(); + $table->timestamp('last_login')->nullable(); + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('users'); + } + +} diff --git a/plugins/rainlab/user/updates/seed_user_groups_table.php b/plugins/rainlab/user/updates/seed_user_groups_table.php new file mode 100644 index 0000000..cce04fa --- /dev/null +++ b/plugins/rainlab/user/updates/seed_user_groups_table.php @@ -0,0 +1,22 @@ + 'Guest', + 'code' => 'guest', + 'description' => 'Default group for guest users.' + ]); + + UserGroup::create([ + 'name' => 'Registered', + 'code' => 'registered', + 'description' => 'Default group for registered users.' + ]); + } +} diff --git a/plugins/rainlab/user/updates/update_timestamp_nullable.php b/plugins/rainlab/user/updates/update_timestamp_nullable.php new file mode 100644 index 0000000..d0ea82f --- /dev/null +++ b/plugins/rainlab/user/updates/update_timestamp_nullable.php @@ -0,0 +1,21 @@ +timestamp('deleted_at')->nullable(); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'deleted_at')) { + Schema::table('users', function($table) + { + $table->dropColumn('deleted_at'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_add_guest_flag.php b/plugins/rainlab/user/updates/users_add_guest_flag.php new file mode 100644 index 0000000..e54018c --- /dev/null +++ b/plugins/rainlab/user/updates/users_add_guest_flag.php @@ -0,0 +1,25 @@ +boolean('is_guest')->default(false); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'is_guest')) { + Schema::table('users', function($table) + { + $table->dropColumn('is_guest'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_add_ip_address.php b/plugins/rainlab/user/updates/users_add_ip_address.php new file mode 100644 index 0000000..8948539 --- /dev/null +++ b/plugins/rainlab/user/updates/users_add_ip_address.php @@ -0,0 +1,31 @@ +string('created_ip_address')->nullable(); + $table->string('last_ip_address')->nullable(); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'created_ip_address')) { + Schema::table('users', function($table) { + $table->dropColumn('created_ip_address'); + }); + } + + if (Schema::hasColumn('users', 'last_ip_address')) { + Schema::table('users', function($table) { + $table->dropColumn('last_ip_address'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_add_last_seen.php b/plugins/rainlab/user/updates/users_add_last_seen.php new file mode 100644 index 0000000..ea985d8 --- /dev/null +++ b/plugins/rainlab/user/updates/users_add_last_seen.php @@ -0,0 +1,26 @@ +timestamp('last_seen')->nullable(); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'last_seen')) { + Schema::table('users', function($table) + { + $table->dropColumn('last_seen'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_add_login_column.php b/plugins/rainlab/user/updates/users_add_login_column.php new file mode 100644 index 0000000..1917462 --- /dev/null +++ b/plugins/rainlab/user/updates/users_add_login_column.php @@ -0,0 +1,40 @@ +string('login')->nullable()->index(); + }); + + /* + * Set login for existing users + */ + $users = User::withTrashed()->get(); + foreach ($users as $user) { + $user->login = $user->email; + $user->save(); + } + + Schema::table('users', function($table) + { + $table->unique('login'); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'login')) { + Schema::table('users', function($table) + { + $table->dropColumn('login'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_add_seller_id.php b/plugins/rainlab/user/updates/users_add_seller_id.php new file mode 100644 index 0000000..250286c --- /dev/null +++ b/plugins/rainlab/user/updates/users_add_seller_id.php @@ -0,0 +1,25 @@ +integer('seller_id')->nullable(); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'seller_id')) { + Schema::table('users', function($table) + { + $table->dropColumn('seller_id'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_add_superuser_flag.php b/plugins/rainlab/user/updates/users_add_superuser_flag.php new file mode 100644 index 0000000..bbab302 --- /dev/null +++ b/plugins/rainlab/user/updates/users_add_superuser_flag.php @@ -0,0 +1,25 @@ +boolean('is_superuser')->default(false); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'is_superuser')) { + Schema::table('users', function($table) + { + $table->dropColumn('is_superuser'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_add_surname.php b/plugins/rainlab/user/updates/users_add_surname.php new file mode 100644 index 0000000..a3b2849 --- /dev/null +++ b/plugins/rainlab/user/updates/users_add_surname.php @@ -0,0 +1,25 @@ +string('surname')->nullable(); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'surname')) { + Schema::table('users', function($table) + { + $table->dropColumn('surname'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/users_rename_login_to_username.php b/plugins/rainlab/user/updates/users_rename_login_to_username.php new file mode 100644 index 0000000..8712111 --- /dev/null +++ b/plugins/rainlab/user/updates/users_rename_login_to_username.php @@ -0,0 +1,26 @@ +renameColumn('login', 'username'); + }); + } + + public function down() + { + if (Schema::hasColumn('users', 'login')) { + Schema::table('users', function($table) + { + $table->renameColumn('username', 'login'); + }); + } + } +} diff --git a/plugins/rainlab/user/updates/version.yaml b/plugins/rainlab/user/updates/version.yaml new file mode 100644 index 0000000..f431c36 --- /dev/null +++ b/plugins/rainlab/user/updates/version.yaml @@ -0,0 +1,90 @@ +v1.0.1: + - Initialize plugin. + - create_users_table.php + - create_throttle_table.php +v1.0.2: Seed tables. +v1.0.3: Translated hard-coded text to language strings. +v1.0.4: Improvements to user-interface for Location manager. +v1.0.5: Added contact details for users. +v1.0.6: + - Added Mail Blocker utility so users can block specific mail templates. + - create_mail_blockers_table.php +v1.0.7: Add back-end Settings page. +v1.0.8: Updated the Settings page. +v1.0.9: Adds new welcome mail message for users and administrators. +v1.0.10: Adds administrator-only activation mode. +v1.0.11: + - Users now have an optional login field that defaults to the email field. + - users_add_login_column.php +v1.0.12: + - Create a dedicated setting for choosing the login mode. + - users_rename_login_to_username.php +v1.0.13: Minor fix to the Account sign in logic. +v1.0.14: Minor improvements to the code. +v1.0.15: + - Adds last name column to users table (surname). + - users_add_surname.php +v1.0.16: Require permissions for settings page too. +v1.1.0: Profile fields and Locations have been removed. +v1.1.1: + - Users can now be added to groups. + - create_user_groups_table.php + - seed_user_groups_table.php +v1.1.2: A raw URL can now be passed as the redirect property in the Account component. +v1.1.3: Adds a super user flag to the users table, reserved for future use. +v1.1.4: User list can be filtered by the group they belong to. +v1.1.5: Adds a new permission to hide the User settings menu item. +v1.2.0: + - Users can now deactivate their own accounts. + - users_add_deleted_at.php +v1.2.1: New feature for checking if a user is recently active/online. +v1.2.2: Add bulk action button to user list. +v1.2.3: Included some descriptive paragraphs in the Reset Password component markup. +v1.2.4: Added a checkbox for blocking all mail sent to the user. +v1.2.5: + - Database maintenance. Updated all timestamp columns to be nullable. + - update_timestamp_nullable.php +v1.2.6: + - Add a dedicated last seen column for users. + - users_add_last_seen.php +v1.2.7: Minor fix to user timestamp attributes. +v1.2.8: Add date range filter to users list. Introduced a logout event. +v1.2.9: Add invitation mail for new accounts created in the back-end. +v1.3.0: + - Introduced guest user accounts. + - users_add_guest_flag.php + - users_add_superuser_flag.php +v1.3.1: User notification variables can now be extended. +v1.3.2: Minor fix to the Auth::register method. +v1.3.3: Allow prevention of concurrent user sessions via the user settings. +v1.3.4: Added force secure protocol property to the account component. +v1.4.0: The Notifications tab in User settings has been removed. +v1.4.1: Added support for user impersonation. +v1.4.2: Fixes security bug in Password Reset component. +v1.4.3: Fixes session handling for AJAX requests. +v1.4.4: Fixes bug where impersonation touches the last seen timestamp. +v1.4.5: Added token fallback process to Account / Reset Password components when parameter is missing. +v1.4.6: Fixes Auth::register method signature mismatch with core October CMS Auth library +v1.4.7: Fixes redirect bug in Account component / Update translations and separate user and group management. +v1.4.8: Fixes a bug where calling MailBlocker::removeBlock could remove all mail blocks for the user. +v1.5.0: Required password length is now a minimum of 8 characters. Previous passwords will not be affected until the next password change. +v1.5.1: + - User IP addresses are now logged. Introduce registration throttle. + - users_add_ip_address.php +v1.5.2: Whitespace from usernames is now trimmed, allowed for username to be added to Reset Password mail templates. +v1.5.3: Fixes a bug in the user update functionality if password is not changed. Added highlighting for banned users in user list. +v1.5.4: Multiple translation improvements. Added view events to extend user preview and user listing toolbars. +v1.5.5: Updated settings icon and description. +v1.6.0: Apply persistence settings on activation and registration. Fixes last seen touched when impersonating. Fixes user suspension not clearing. +v1.6.1: Adds component property for resetPage in ResetPassword component. +v1.6.2: Improve support with October v3 +v1.6.3: Fixes mail blocker logic +v1.6.4: Fixes bulk action button with October v3 +v1.7.0: Add password policy +v1.7.1: Fixes compatibility with legacy sites +v1.7.2: Stability fixes +v2.0.0: Drops compatibility with October v1 and v2 +v2.1.0: Adds bearer token (JWT) support to session component +v2.1.1: + - User seller_id + - users_add_seller_id.php diff --git a/plugins/rainlab/user/views/mail/activate.htm b/plugins/rainlab/user/views/mail/activate.htm new file mode 100644 index 0000000..508cf4a --- /dev/null +++ b/plugins/rainlab/user/views/mail/activate.htm @@ -0,0 +1,12 @@ +subject = "Confirm your account" +description = "Activate a new user" +== +Hello {{ name }} + +We need to verify that this is your email address. + +Please click the link below to confirm your account: + +{% partial 'button' url=link type='positive' body %} +Confirm account +{% endpartial %} diff --git a/plugins/rainlab/user/views/mail/invite.htm b/plugins/rainlab/user/views/mail/invite.htm new file mode 100644 index 0000000..187d364 --- /dev/null +++ b/plugins/rainlab/user/views/mail/invite.htm @@ -0,0 +1,13 @@ +subject = "An account has been created for you" +description = "Invite a new user to the website" +== +Hello {{ name }} + +A user account has been created for you. Please use the following login and password to sign in: + +{% partial 'panel' body %} +- Login: `{{ login }}` +- Password: `{{ password|raw }}` +{% endpartial %} + +After signing in you should change your password as soon as possible. diff --git a/plugins/rainlab/user/views/mail/new_user.htm b/plugins/rainlab/user/views/mail/new_user.htm new file mode 100644 index 0000000..d17619b --- /dev/null +++ b/plugins/rainlab/user/views/mail/new_user.htm @@ -0,0 +1,11 @@ +subject = "A new user has signed up" +description = "Notify admins of a new sign up" +layout = "system" +== +Hello {{ name }} + +A new user has just signed up. Here are there details: + +- ID: `{{ id }}` +- Name: `{{ name }}` +- Email: `{{ email }}` diff --git a/plugins/rainlab/user/views/mail/reactivate.htm b/plugins/rainlab/user/views/mail/reactivate.htm new file mode 100644 index 0000000..a311a5a --- /dev/null +++ b/plugins/rainlab/user/views/mail/reactivate.htm @@ -0,0 +1,8 @@ +subject = "Welcome back! Your account has been reactivated" +description = "User has reactivated their account" +== +Welcome back {{ name }} + +This is a message to inform you that you have successfully signed in and reactivated your account. + +If you did not prompt this, we suggest changing your password before deactivating your account again. diff --git a/plugins/rainlab/user/views/mail/restore.htm b/plugins/rainlab/user/views/mail/restore.htm new file mode 100644 index 0000000..48f9437 --- /dev/null +++ b/plugins/rainlab/user/views/mail/restore.htm @@ -0,0 +1,22 @@ +subject = "Requested Password Reset" +description = "User requests a password reset" +== +Hello {{ name }} + +Somebody has requested a password reset for your account, if this was not you, please ignore this email. + +Use this activation code to restore your password: + +{% partial 'promotion' body %} +{{ code }} +{% endpartial %} + +You can use the following link: + +{% partial 'button' url=link type='positive' body %} +Restore password +{% endpartial %} + +{% partial 'subcopy' body %} + **This is an automatic message. Please do not reply to it.** +{% endpartial %} diff --git a/plugins/rainlab/user/views/mail/welcome.htm b/plugins/rainlab/user/views/mail/welcome.htm new file mode 100644 index 0000000..5f5c32d --- /dev/null +++ b/plugins/rainlab/user/views/mail/welcome.htm @@ -0,0 +1,6 @@ +subject = "Your account has been confirmed!" +description = "User confirmed their account" +== +Hello {{ name }} + +This is a message to inform you that your account has been activated successfully. diff --git a/plugins/romanah/bagisto/Plugin.php b/plugins/romanah/bagisto/Plugin.php index 9853a05..d278784 100755 --- a/plugins/romanah/bagisto/Plugin.php +++ b/plugins/romanah/bagisto/Plugin.php @@ -27,7 +27,8 @@ class Plugin extends PluginBase public function registerComponents() { return [ - 'Romanah\Bagisto\Components\Session' => 'session' + 'Romanah\Bagisto\Components\Session' => 'session', + 'Romanah\Bagisto\Components\Seller' => 'seller' ]; } diff --git a/plugins/romanah/bagisto/components/Seller.php b/plugins/romanah/bagisto/components/Seller.php new file mode 100644 index 0000000..03f1b3b --- /dev/null +++ b/plugins/romanah/bagisto/components/Seller.php @@ -0,0 +1,110 @@ + 'Seller', + 'description' => 'Seller functions' + ]; + } + + function onCreateSellerProd() + { + $dataInput = post(); + + + $response = Http::post('https://nurgul.com.tm/app/api/seller/create/product', function ($http) use($dataInput) { + // $http->header('Content-Type', 'application/json'); + $http->header('Accept', 'application/json'); + + // $data = $dataProd; + $data = [ + $http->data("type", "simple"), + $http->data("marketplace_seller_id", $dataInput["seller_id"]), + $http->data("user", 'romanah_'), + $http->data("password", 'bt110226$$'), + $http->data("sku", $dataInput["sku"]), + ]; + + + $http->setOption(CURLOPT_POSTFIELDS, json_encode($data)); + }); + + $dataqq = json_decode($response); + + // if ($dataqq->status == 200) { + // Flash::success(Message::trans('success.add.prod')); + // return Redirect::to('/seller/product/update/'.$dataqq->data->id); + // } elseif (empty($dataqq)) { + // Flash::error(Message::trans('error')); + // return redirect()->refresh(); + // } + return $dataqq; + } + + + function onUpdateSellerProd() + { + $dataInput = post(); + + + $response = Http::post('https://nurgul.com.tm/app/api/seller/update/product', function ($http) use($dataInput) { + // $http->header('Content-Type', 'application/json'); + $http->header('Accept', 'application/json'); + + // $data = $dataProd; + $data = [ + $http->data("product_id", $this->param("id")), + $http->data("user", 'romanah_'), + $http->data("password", 'bt110226$$'), + $http->data("sku", 'skuq'), + $http->data("channels", "Nurgul"), + $http->data("short_description", $dataInput["short_description"]), // + $http->data("description", $dataInput["description"]), // + $http->data("name", $dataInput["name"]), // + $http->data("url_key", \Str::slug($dataInput["name"])), + $http->data("new", 1), + $http->data("featured", $dataInput["featured"]),// + $http->data("visible_individually", 1), + $http->data("status", $dataInput["status"]),// + $http->data("product_number", $dataInput["product_number"]), // + $http->data("price", $dataInput["price"]),// + $http->data("special_price", $dataInput["special_price"]),// + $http->data("weight", 0), + $http->data("qty", $dataInput["qty"]),// + ]; + + + $http->setOption(CURLOPT_POSTFIELDS, json_encode($data)); + }); + + $dataqq = json_decode($response); + + if ($dataqq->status == 200) { + Flash::success(Message::trans('success.add.prod')); + return Redirect::to('/seller/products'); + } elseif (empty($dataqq)) { + Flash::error(Message::trans('error')); + return redirect()->refresh(); + } + return $dataqq; + } + +} + + + diff --git a/themes/nurgul/assets/jquery.session.js b/themes/nurgul/assets/jquery.session.js new file mode 100644 index 0000000..cd1b877 --- /dev/null +++ b/themes/nurgul/assets/jquery.session.js @@ -0,0 +1,134 @@ +(function($){ + + $.session = { + + _id: null, + + _cookieCache: undefined, + + _init: function() + { + if (!window.name) { + window.name = Math.random(); + } + this._id = window.name; + this._initCache(); + + // See if we've changed protcols + + var matches = (new RegExp(this._generatePrefix() + "=([^;]+);")).exec(document.cookie); + if (matches && document.location.protocol !== matches[1]) { + this._clearSession(); + for (var key in this._cookieCache) { + try { + window.sessionStorage.setItem(key, this._cookieCache[key]); + } catch (e) {}; + } + } + + document.cookie = this._generatePrefix() + "=" + document.location.protocol + ';path=/;expires=' + (new Date((new Date).getTime() + 120000)).toUTCString(); + + }, + + _generatePrefix: function() + { + return '__session:' + this._id + ':'; + }, + + _initCache: function() + { + var cookies = document.cookie.split(';'); + this._cookieCache = {}; + for (var i in cookies) { + var kv = cookies[i].split('='); + if ((new RegExp(this._generatePrefix() + '.+')).test(kv[0]) && kv[1]) { + this._cookieCache[kv[0].split(':', 3)[2]] = kv[1]; + } + } + }, + + _setFallback: function(key, value, onceOnly) + { + var cookie = this._generatePrefix() + key + "=" + value + "; path=/"; + if (onceOnly) { + cookie += "; expires=" + (new Date(Date.now() + 120000)).toUTCString(); + } + document.cookie = cookie; + this._cookieCache[key] = value; + return this; + }, + + _getFallback: function(key) + { + if (!this._cookieCache) { + this._initCache(); + } + return this._cookieCache[key]; + }, + + _clearFallback: function() + { + for (var i in this._cookieCache) { + document.cookie = this._generatePrefix() + i + '=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; + } + this._cookieCache = {}; + }, + + _deleteFallback: function(key) + { + document.cookie = this._generatePrefix() + key + '=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; + delete this._cookieCache[key]; + }, + + get: function(key) + { + return window.sessionStorage.getItem(key) || this._getFallback(key); + }, + + set: function(key, value, onceOnly) + { + try { + window.sessionStorage.setItem(key, value); + } catch (e) { + // doing it after catch defeats purpose of fallback + this._setFallback(key, value, onceOnly || false); + } + return this; + }, + + 'delete': function(key){ + return this.remove(key); + }, + + remove: function(key) + { + try { + window.sessionStorage.removeItem(key); + } catch (e) {}; //here it's correct because get() returns value from any source + this._deleteFallback(key); + return this; + }, + + _clearSession: function() + { + try { + window.sessionStorage.clear(); + } catch (e) { + for (var i in window.sessionStorage) { + window.sessionStorage.removeItem(i); + } + } + }, + + clear: function() + { + this._clearSession(); + this._clearFallback(); + return this; + } + + }; + + $.session._init(); + +})(jQuery); diff --git a/themes/nurgul/assets/logo_white.svg b/themes/nurgul/assets/logo_white.svg new file mode 100644 index 0000000..047c019 --- /dev/null +++ b/themes/nurgul/assets/logo_white.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/profile.jpg b/themes/nurgul/assets/profile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0dbf340bfee341d411d56720e4c195fe0723d4c7 GIT binary patch literal 409752 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�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 z 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 z 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 M{%@& .dropdown-content{ + margin-top: 0.25rem; +} +.dropdown-menu.show > .dropdown-content .tab-content .tab-pane{ + visibility: visible; +} +.dropdown-menu .dropdown-content { + transition: margin-top 0.2s; + box-shadow: 0px 3px 10px #00000017; + position: relative; + margin-top: 1.25rem; + width: 100%; + border-radius: 0.375rem; + padding: 0.5rem; + } +.dropdown-menu .dropdown-content .dropdown-header{ + padding: 0.5rem; + font-weight: 500; +} +.dropdown-menu .dropdown-content .dropdown-divider{ + margin-top: 0.5rem; + margin-bottom: 0.5rem; + margin-left: -0.5rem; + margin-right: -0.5rem; +} +.dropdown-menu .dropdown-content .dropdown-item{ + display: flex; + align-items: center; + border-radius: 0.375rem; + padding: 0.5rem; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.dropdown-menu .dropdown-content .dropdown-footer{ + display: flex; + padding: 0.25rem; +} +.dropdown-menu .dropdown-content .tab-content .tab-pane{ + visibility: hidden; +} +.dropdown-content{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.dark .dropdown-content{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dropdown-divider{ + border-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .dropdown-divider{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dropdown-item:hover{ + background-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .dropdown-item{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .dropdown-item:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.file .file__icon{ + position: relative; + display: block; + background-size: contain; + background-position: center; + background-repeat: no-repeat; +} +.file .file__icon.file__icon--empty-directory { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='786' height='786' viewBox='0 0 786 786'%3E%3Cdefs%3E%3ClinearGradient id='linear-gradient' x1='0.5' x2='0.5' y2='1' gradientUnits='objectBoundingBox'%3E%3Cstop offset='0' stop-color='%238a97ac'/%3E%3Cstop offset='1' stop-color='%235d6c83'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='Group_2' data-name='Group 2' transform='translate(-567 -93)'%3E%3Crect id='Rectangle_4' data-name='Rectangle 4' width='418' height='681' rx='40' transform='translate(896 109)' fill='%2395a5b9'/%3E%3Crect id='Rectangle_3' data-name='Rectangle 3' width='433' height='681' rx='40' transform='translate(606 93)' fill='%23a0aec0'/%3E%3Crect id='Rectangle_2' data-name='Rectangle 2' width='786' height='721' rx='40' transform='translate(567 158)' fill='url(%23linear-gradient)'/%3E%3C/g%3E%3C/svg%3E%0A"); + } +.file .file__icon.file__icon--directory { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='786' height='786' viewBox='0 0 786 786'%3E%3Cdefs%3E%3ClinearGradient id='linear-gradient' x1='0.5' x2='0.5' y2='1' gradientUnits='objectBoundingBox'%3E%3Cstop offset='0' stop-color='%238a97ac'/%3E%3Cstop offset='1' stop-color='%235d6c83'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='Group_3' data-name='Group 3' transform='translate(-567 -93)'%3E%3Crect id='Rectangle_4' data-name='Rectangle 4' width='418' height='681' rx='40' transform='translate(896 109)' fill='%2395a5b9'/%3E%3Crect id='Rectangle_3' data-name='Rectangle 3' width='433' height='681' rx='40' transform='translate(606 93)' fill='%23a0aec0'/%3E%3Crect id='Rectangle_2' data-name='Rectangle 2' width='742' height='734' rx='40' transform='translate(590 145)' fill='%23bec8d9'/%3E%3Crect id='Rectangle_5' data-name='Rectangle 5' width='786' height='692' rx='40' transform='translate(567 187)' fill='url(%23linear-gradient)'/%3E%3C/g%3E%3C/svg%3E%0A"); + } +.file .file__icon.file__icon--file { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='628.027' height='786.012' viewBox='0 0 628.027 786.012'%3E%3Cdefs%3E%3ClinearGradient id='linear-gradient' x1='0.5' x2='0.5' y2='1' gradientUnits='objectBoundingBox'%3E%3Cstop offset='0' stop-color='%238a97ac'/%3E%3Cstop offset='1' stop-color='%235d6c83'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='Group_5' data-name='Group 5' transform='translate(-646 -92.988)'%3E%3Cpath id='Union_2' data-name='Union 2' d='M40,786A40,40,0,0,1,0,746V40A40,40,0,0,1,40,0H501V103h29v24h98V746a40,40,0,0,1-40,40Z' transform='translate(646 93)' fill='url(%23linear-gradient)'/%3E%3Cpath id='Intersection_2' data-name='Intersection 2' d='M.409,162.042l.058-109.9c31.605,29.739,125.37,125.377,125.37,125.377l-109.976.049A20.025,20.025,0,0,1,.409,162.042Z' transform='translate(1147 42)' fill='%23bec8d9' stroke='%23bec8d9' stroke-width='1'/%3E%3C/g%3E%3C/svg%3E%0A"); + } +.file .file__icon.file__icon--image .file__icon--image__preview{ + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; +} +.file .file__icon.file__icon--image .file__icon--image__preview img{ + border-radius: 0.375rem; +} +.file .file__icon .file__icon__file-name{ + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + margin: auto; + display: flex; + align-items: center; + justify-content: center; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.file .file__icon:before { + content: ""; + padding-top: 100%; + display: block; + width: 100%; + } +[type="text"], [type="email"], [type="url"], [type="password"], [type="number"], [type="date"], [type="datetime-local"], [type="month"], [type="search"], [type="tel"], [type="time"], [type="week"], [multiple], textarea, select{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.form-check{ + display: flex; + align-items: center; +} +.form-check-label{ + margin-left: 0.5rem; + cursor: pointer; +} +.form-check-input{ + transition-property: all; + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.form-check-input[type="radio"]{ + cursor: pointer; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.form-check-input[type="radio"]:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; + --tw-ring-offset-width: 0px; +} +.dark .form-check-input[type="radio"]{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="radio"]:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-check-input[type="radio"]:checked{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.1; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.form-check-input[type="radio"]:disabled:not(:checked){ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="radio"]:disabled:not(:checked){ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-check-input[type="radio"]:disabled:checked{ + cursor: not-allowed; + opacity: 0.7; +} +.dark .form-check-input[type="radio"]:disabled:checked{ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-check-input[type="checkbox"]{ + cursor: pointer; + border-radius: 0.25rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.form-check-input[type="checkbox"]:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; + --tw-ring-offset-width: 0px; +} +.dark .form-check-input[type="checkbox"]{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="checkbox"]:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-check-input[type="checkbox"]:checked{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.1; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.form-check-input[type="checkbox"]:disabled:not(:checked){ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="checkbox"]:disabled:not(:checked){ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-check-input[type="checkbox"]:disabled:checked{ + cursor: not-allowed; + opacity: 0.7; +} +.dark .form-check-input[type="checkbox"]:disabled:checked{ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-switch .form-check-input { + width: 38px; + height: 24px; + padding: 1px; + position: relative; + border-radius: 9999px; + background-image: none; + } +.form-switch .form-check-input:before { + content: ""; + width: 20px; + height: 20px; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); + transition-property: margin-left; + position: absolute; + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + border-radius: 9999px; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + } +.dark .form-switch .form-check-input:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.form-switch .form-check-input:checked{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.form-switch .form-check-input:checked::before { + margin-left: 14px; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +/* Default Form Control */ +.form-control{ + width: 100%; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.form-control::-moz-placeholder{ + color: rgb(var(--color-slate-400) / 0.9); +} +.form-control:-ms-input-placeholder{ + color: rgb(var(--color-slate-400) / 0.9); +} +.form-control::placeholder{ + color: rgb(var(--color-slate-400) / 0.9); +} +.form-control:focus{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.4; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .form-control{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + transition-property: none; +} +.dark .form-control::-moz-placeholder{ + color: rgb(var(--color-slate-500) / 0.8); +} +.dark .form-control:-ms-input-placeholder{ + color: rgb(var(--color-slate-500) / 0.8); +} +.dark .form-control::placeholder{ + color: rgb(var(--color-slate-500) / 0.8); +} +.dark .form-control:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-control:disabled, .form-control[readonly]{ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-control:disabled, .dark .form-control[readonly]{ + border-color: transparent; + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +/* Default Sizes */ +.form-control-sm{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + font-size: 0.75rem; + line-height: 1rem; +} +.form-control-lg{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 1rem; + padding-right: 1rem; + font-size: 1.125rem; + line-height: 1.75rem; +} +/* Form Control Rounded */ +.form-control-rounded{ + border-radius: 9999px; +} +.form-help{ + margin-top: 0.5rem; + font-size: 0.75rem; + line-height: 1rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.form-inline{ + display: flex; + align-items: center; +} +.form-inline .form-label{ + margin-bottom: 0px; + margin-right: 1.25rem; + text-align: right; +} +.form-inline .form-control{ + flex: 1 1 0%; +} +.form-label{ + margin-bottom: 0.5rem; + display: inline-block; +} +/* Default Form Select */ +.form-select{ + width: 100%; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 2rem; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.form-select:focus{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.4; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .form-select{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .form-select:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-select:disabled, .form-select[readonly]{ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-select:disabled, .dark .form-select[readonly]{ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +/* Default Sizes */ +.form-select-sm{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 0.5rem; + padding-right: 2rem; + font-size: 0.75rem; + line-height: 1rem; +} +.form-select-lg{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 1rem; + padding-right: 2rem; + font-size: 1.125rem; + line-height: 1.75rem; +} +.image-fit{ + position: relative; +} +.image-fit > img{ + position: absolute; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.input-group{ + display: flex; +} +.input-group .input-group-text{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .input-group .input-group-text{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + background-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.input-group > .input-group-text, .input-group > .form-control{ + border-radius: 0px; +} +.input-group > .input-group-text:not(:first-child), .input-group > .form-control:not(:first-child) { + border-left-color: transparent; + } +.input-group > .input-group-text:first-child, .input-group > .form-control:first-child{ + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.input-group > .input-group-text:last-child, .input-group > .form-control:last-child{ + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} +.input-group > .form-control{ + z-index: 10; +} +.modal { + margin-top: -10000px; + margin-left: -10000px; + background: #000000a6; + transition: visibility 0s linear 0.2s, opacity 0.2s 0s; + visibility: hidden; + position: fixed; + left: 0px; + top: 0px; + height: 100vh; + width: 100vw; + opacity: 0; + } +.modal.modal-overlap { + background: #000000a6; + } +.modal.modal-static .modal-content { + -webkit-animation: modal-static-backdrop 0.3s infinite; + animation: modal-static-backdrop 0.3s infinite; + -webkit-animation-direction: alternate; + animation-direction: alternate; + } +.modal.show { + transition: visibility 0s ease-in-out 0s, opacity 0.4s ease-in-out 0s; + visibility: visible; + opacity: 1; + } +.modal.show > .modal-dialog{ + margin-top: 4rem; +} +.modal .modal-dialog { + width: 90%; + transition: margin-top 0.4s; + margin-left: auto; + margin-right: auto; + margin-top: -4rem; + margin-bottom: 4rem; + } +@media (min-width: 640px) { + .modal .modal-dialog { + width: 460px + } + .modal .modal-dialog.modal-sm { + width: 300px; + } + .modal .modal-dialog.modal-lg { + width: 600px; + } + .modal .modal-dialog.modal-xl { + width: 600px; + } + } +@media (min-width: 1024px) { + .modal .modal-dialog.modal-xl { + width: 900px; + } + } +.modal .modal-dialog .modal-content{ + position: relative; +} +.modal .modal-dialog .modal-content > [data-tw-dismiss="modal"]{ + position: absolute; + right: 0px; + top: 0px; + margin-top: 0.75rem; + margin-right: 0.75rem; +} +.modal.modal-slide-over{ + overflow-x: hidden; +} +.modal.modal-slide-over.modal-static .modal-content{ + -webkit-animation: none; + animation: none; +} +.modal.modal-slide-over.show { + transition: visibility 0s ease-in-out 0s, opacity 0.6s ease-in-out 0s; + visibility: visible; + opacity: 1; + } +.modal.modal-slide-over.show > .modal-dialog{ + margin-right: 0px; +} +.modal.modal-slide-over .modal-dialog { + margin-right: -100%; + transition: margin-right 0.6s; + margin-top: 0px; + margin-bottom: 0px; + } +.modal.modal-slide-over .modal-dialog .modal-content{ + min-height: 100vh; + border-radius: 0px; +} +.modal.modal-slide-over .modal-dialog .modal-content > [data-tw-dismiss="modal"]{ + position: absolute; + top: 0px; + left: 0px; + right: auto; + margin-top: 1rem; + margin-left: -3rem; +} +.modal-content{ + position: relative; + width: 100%; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .modal-content{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.modal-header{ + display: flex; + align-items: center; + border-bottom-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.dark .modal-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.modal-body{ + padding: 1.25rem; +} +.modal-footer{ + border-top-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + text-align: right; +} +.dark .modal-footer{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +@-webkit-keyframes modal-static-backdrop { + 0% { + transform: scale(1); + } + 100% { + transform: scale(1.05); + } + } +@keyframes modal-static-backdrop { + 0% { + transform: scale(1); + } + 100% { + transform: scale(1.05); + } + } +.pagination{ + margin-right: auto; + display: flex; +} +.pagination .page-item.active .page-link { + box-shadow: 0px 3px 20px #0000000b; + position: relative; + border-radius: 0.375rem; + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.dark .pagination .page-item.active .page-link{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.pagination .page-item.active .page-link{ + font-weight: 500; +} +.dark .pagination .page-item.active .page-link{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.pagination .page-item .page-link { + min-width: 40px; + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-weight: 500; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + } +.pagination .page-item .page-link:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .pagination .page-item .page-link{ + transition-property: none; +} +.dark .pagination .page-item .page-link:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.pagination .page-item .page-link:hover:not(:disabled){ + --tw-border-opacity: 0.9; + --tw-bg-opacity: 0.9; +} +.pagination .page-item .page-link:not(button){ + text-align: center; +} +.pagination .page-item .page-link:disabled{ + cursor: not-allowed; + opacity: 0.7; +} +.pagination .page-item .page-link{ + margin-right: 0.5rem; + display: flex; + align-items: center; + justify-content: center; + border-color: transparent; + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .pagination .page-item .page-link{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.progress{ + height: 0.5rem; + width: 100%; + border-radius: 0.25rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.dark .progress{ + background-color: rgb(0 0 0 / 0.2); +} +.progress-bar{ + display: flex; + height: 100%; + align-items: center; + justify-content: center; + border-radius: 0.25rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + font-size: 0.75rem; + line-height: 1rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.scrollbar-hidden::-webkit-scrollbar{ + width: 0px; + background-color: transparent; +} +.nav{ + display: flex; + width: 100%; +} +.nav.nav-tabs{ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.dark .nav.nav-tabs{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.nav.nav-tabs .nav-item{ + margin-bottom: -1px; +} +.nav.nav-tabs .nav-item .nav-link{ + display: block; + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; + border-color: transparent; +} +.nav.nav-tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .nav.nav-tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.nav.nav-tabs .nav-item .nav-link.active{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + border-bottom-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + font-weight: 500; +} +.dark .nav.nav-tabs .nav-item .nav-link.active{ + border-left-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + border-right-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + border-top-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-border-opacity: 1; + border-bottom-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); + background-color: transparent; +} +.nav.nav-pills .nav-item .nav-link{ + border-radius: 0.375rem; + border-width: 0px; +} +.nav.nav-pills .nav-item .nav-link.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.nav.nav-boxed-tabs .nav-item .nav-link { + box-shadow: 0px 3px 20px #0000000b; + border-radius: 0.375rem; + } +.nav.nav-boxed-tabs .nav-item .nav-link.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.nav.nav-link-tabs .nav-item .nav-link{ + border-bottom-width: 2px; + border-color: transparent; +} +.nav.nav-link-tabs .nav-item .nav-link.active{ + --tw-border-opacity: 1; + border-bottom-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + font-weight: 500; +} +.nav-link{ + display: block; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-width: 1px; + border-color: transparent; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.625rem; + padding-bottom: 0.625rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.dark .nav-link{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.nav-link.active{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.dark .nav-link.active{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.tab-content{ + position: relative; +} +.tab-content .tab-pane { + top: -9999px; + left: -9999px; + transition: visibility 0s linear 0.6s, opacity 0.6s 0s; + visibility: hidden; + position: absolute; + opacity: 0; + } +.tab-content .tab-pane.active { + transition: visibility 0s linear 0s, opacity 0.6s 0s; + visibility: visible; + position: static; + opacity: 1; + } +.typing-dots span{ + opacity: 0; +} +.typing-dots span:nth-child(1) { + -webkit-animation: 1s type-animation infinite 0.33333s; + animation: 1s type-animation infinite 0.33333s; + } +.typing-dots span:nth-child(2) { + -webkit-animation: 1s type-animation infinite 0.66666s; + animation: 1s type-animation infinite 0.66666s; + } +.typing-dots span:nth-child(3) { + -webkit-animation: 1s type-animation infinite 0.99999s; + animation: 1s type-animation infinite 0.99999s; + } +@-webkit-keyframes type-animation { + 50%{ + opacity: 1; + } + } +@keyframes type-animation { + 50%{ + opacity: 1; + } + } +.zoom-in{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + cursor: pointer; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.zoom-in:hover{ + --tw-scale-x: 1.05; + --tw-scale-y: 1.05; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.box { + box-shadow: 0px 3px 20px #0000000b; + position: relative; + border-radius: 0.375rem; + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.dark .box{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.visible{ + visibility: visible; +} +.static{ + position: static; +} +.fixed{ + position: fixed; +} +.absolute{ + position: absolute; +} +.relative{ + position: relative; +} +.sticky{ + position: -webkit-sticky; + position: sticky; +} +.inset-y-0{ + top: 0px; + bottom: 0px; +} +.right-0{ + right: 0px; +} +.top-0{ + top: 0px; +} +.left-0{ + left: 0px; +} +.bottom-0{ + bottom: 0px; +} +.z-10{ + z-index: 10; +} +.z-30{ + z-index: 30; +} +.z-40{ + z-index: 40; +} +.z-50{ + z-index: 50; +} +.z-\[51\]{ + z-index: 51; +} +.col-span-12{ + grid-column: span 12 / span 12; +} +.col-span-11{ + grid-column: span 11 / span 11; +} +.col-span-5{ + grid-column: span 5 / span 5; +} +.col-span-2{ + grid-column: span 2 / span 2; +} +.col-span-6{ + grid-column: span 6 / span 6; +} +.col-span-3{ + grid-column: span 3 / span 3; +} +.col-span-4{ + grid-column: span 4 / span 4; +} +.row-start-2{ + grid-row-start: 2; +} +.row-start-4{ + grid-row-start: 4; +} +.float-right{ + float: right; +} +.float-left{ + float: left; +} +.clear-both{ + clear: both; +} +.m-5{ + margin: 1.25rem; +} +.mx-1{ + margin-left: 0.25rem; + margin-right: 0.25rem; +} +.my-auto{ + margin-top: auto; + margin-bottom: auto; +} +.-mx-3{ + margin-left: -0.75rem; + margin-right: -0.75rem; +} +.mx-auto{ + margin-left: auto; + margin-right: auto; +} +.mx-3{ + margin-left: 0.75rem; + margin-right: 0.75rem; +} +.-mx-5{ + margin-left: -1.25rem; + margin-right: -1.25rem; +} +.mx-4{ + margin-left: 1rem; + margin-right: 1rem; +} +.my-4{ + margin-top: 1rem; + margin-bottom: 1rem; +} +.-my-3{ + margin-top: -0.75rem; + margin-bottom: -0.75rem; +} +.my-5{ + margin-top: 1.25rem; + margin-bottom: 1.25rem; +} +.my-10{ + margin-top: 2.5rem; + margin-bottom: 2.5rem; +} +.mx-6{ + margin-left: 1.5rem; + margin-right: 1.5rem; +} +.mx-2{ + margin-left: 0.5rem; + margin-right: 0.5rem; +} +.my-6{ + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} +.mt-1{ + margin-top: 0.25rem; +} +.-ml-5{ + margin-left: -1.25rem; +} +.mr-2{ + margin-right: 0.5rem; +} +.mr-3{ + margin-right: 0.75rem; +} +.mr-1{ + margin-right: 0.25rem; +} +.mt-2{ + margin-top: 0.5rem; +} +.mt-8{ + margin-top: 2rem; +} +.mr-auto{ + margin-right: auto; +} +.mt-5{ + margin-top: 1.25rem; +} +.mt-3{ + margin-top: 0.75rem; +} +.ml-0{ + margin-left: 0px; +} +.mr-0{ + margin-right: 0px; +} +.ml-3{ + margin-left: 0.75rem; +} +.mb-6{ + margin-bottom: 1.5rem; +} +.ml-1{ + margin-left: 0.25rem; +} +.ml-2{ + margin-left: 0.5rem; +} +.mt-10{ + margin-top: 2.5rem; +} +.-mr-2{ + margin-right: -0.5rem; +} +.-mt-2{ + margin-top: -0.5rem; +} +.mr-4{ + margin-right: 1rem; +} +.mt-4{ + margin-top: 1rem; +} +.-mt-0\.5{ + margin-top: -0.125rem; +} +.-mt-0{ + margin-top: -0px; +} +.mb-4{ + margin-bottom: 1rem; +} +.mb-2{ + margin-bottom: 0.5rem; +} +.ml-auto{ + margin-left: auto; +} +.mt-0\.5{ + margin-top: 0.125rem; +} +.mt-0{ + margin-top: 0px; +} +.-ml-4{ + margin-left: -1rem; +} +.mt-6{ + margin-top: 1.5rem; +} +.-mt-12{ + margin-top: -3rem; +} +.mb-5{ + margin-bottom: 1.25rem; +} +.ml-6{ + margin-left: 1.5rem; +} +.ml-4{ + margin-left: 1rem; +} +.-mt-1{ + margin-top: -0.25rem; +} +.-mr-1{ + margin-right: -0.25rem; +} +.ml-5{ + margin-left: 1.25rem; +} +.mr-5{ + margin-right: 1.25rem; +} +.mb-10{ + margin-bottom: 2.5rem; +} +.ml-0\.5{ + margin-left: 0.125rem; +} +.mt-12{ + margin-top: 3rem; +} +.-mb-6{ + margin-bottom: -1.5rem; +} +.mb-3{ + margin-bottom: 0.75rem; +} +.-ml-1{ + margin-left: -0.25rem; +} +.-mb-10{ + margin-bottom: -2.5rem; +} +.-ml-0\.5{ + margin-left: -0.125rem; +} +.-ml-0{ + margin-left: -0px; +} +.mr-0\.5{ + margin-right: 0.125rem; +} +.mt-1\.5{ + margin-top: 0.375rem; +} +.-mb-1\.5{ + margin-bottom: -0.375rem; +} +.-ml-2\.5{ + margin-left: -0.625rem; +} +.-mb-1{ + margin-bottom: -0.25rem; +} +.-ml-2{ + margin-left: -0.5rem; +} +.-mt-3{ + margin-top: -0.75rem; +} +.-mr-12{ + margin-right: -3rem; +} +.mt-14{ + margin-top: 3.5rem; +} +.ml-1\.5{ + margin-left: 0.375rem; +} +.-mt-4{ + margin-top: -1rem; +} +.ml-3\.5{ + margin-left: 0.875rem; +} +.-mb-7{ + margin-bottom: -1.75rem; +} +.-mt-8{ + margin-top: -2rem; +} +.mt-3\.5{ + margin-top: 0.875rem; +} +.-mt-1\.5{ + margin-top: -0.375rem; +} +.mb-8{ + margin-bottom: 2rem; +} +.-mt-10{ + margin-top: -2.5rem; +} +.mr-6{ + margin-right: 1.5rem; +} +.mt-20{ + margin-top: 5rem; +} +.-mt-16{ + margin-top: -4rem; +} +.mt-2\.5{ + margin-top: 0.625rem; +} +.ml-8{ + margin-left: 2rem; +} +.mb-1{ + margin-bottom: 0.25rem; +} +.-mr-5{ + margin-right: -1.25rem; +} +.mr-10{ + margin-right: 2.5rem; +} +.mr-52{ + margin-right: 13rem; +} +.block{ + display: block; +} +.inline-block{ + display: inline-block; +} +.inline{ + display: inline; +} +.flex{ + display: flex; +} +.inline-flex{ + display: inline-flex; +} +.table{ + display: table; +} +.grid{ + display: grid; +} +.hidden{ + display: none; +} +.h-0{ + height: 0px; +} +.h-10{ + height: 2.5rem; +} +.h-4{ + height: 1rem; +} +.h-5{ + height: 1.25rem; +} +.h-28{ + height: 7rem; +} +.h-full{ + height: 100%; +} +.h-6{ + height: 1.5rem; +} +.h-12{ + height: 3rem; +} +.h-40{ + height: 10rem; +} +.h-8{ + height: 2rem; +} +.h-3{ + height: 0.75rem; +} +.h-\[320px\]{ + height: 320px; +} +.h-2{ + height: 0.5rem; +} +.h-px{ + height: 1px; +} +.h-16{ + height: 4rem; +} +.h-\[400px\]{ + height: 400px; +} +.h-20{ + height: 5rem; +} +.h-32{ + height: 8rem; +} +.h-\[275px\]{ + height: 275px; +} +.h-\[213px\]{ + height: 213px; +} +.h-\[90px\]{ + height: 90px; +} +.h-\[58px\]{ + height: 58px; +} +.h-\[79px\]{ + height: 79px; +} +.h-\[208px\]{ + height: 208px; +} +.h-\[290px\]{ + height: 290px; +} +.h-\[215px\]{ + height: 215px; +} +.h-\[110px\]{ + height: 110px; +} +.h-\[196px\]{ + height: 196px; +} +.h-screen{ + height: 100vh; +} +.h-48{ + height: 12rem; +} +.h-64{ + height: 16rem; +} +.h-56{ + height: 14rem; +} +.h-24{ + height: 6rem; +} +.h-\[55px\]{ + height: 55px; +} +.h-\[30px\]{ + height: 30px; +} +.h-1{ + height: 0.25rem; +} +.h-\[51px\]{ + height: 51px; +} +.h-\[420px\]{ + height: 420px; +} +.h-\[212px\]{ + height: 212px; +} +.h-9{ + height: 2.25rem; +} +.h-\[70px\]{ + height: 70px; +} +.h-\[45px\]{ + height: 45px; +} +.max-h-full{ + max-height: 100%; +} +.min-h-screen{ + min-height: 100vh; +} +.w-0{ + width: 0px; +} +.w-10{ + width: 2.5rem; +} +.w-4{ + width: 1rem; +} +.w-full{ + width: 100%; +} +.w-5{ + width: 1.25rem; +} +.w-40{ + width: 10rem; +} +.w-44{ + width: 11rem; +} +.w-20{ + width: 5rem; +} +.w-6{ + width: 1.5rem; +} +.w-56{ + width: 14rem; +} +.w-12{ + width: 3rem; +} +.w-8{ + width: 2rem; +} +.w-3{ + width: 0.75rem; +} +.w-24{ + width: 6rem; +} +.w-32{ + width: 8rem; +} +.w-2{ + width: 0.5rem; +} +.w-16{ + width: 4rem; +} +.w-px{ + width: 1px; +} +.w-52{ + width: 13rem; +} +.w-2\/4{ + width: 50%; +} +.w-\[90px\]{ + width: 90px; +} +.w-4\/5{ + width: 80%; +} +.w-2\/5{ + width: 40%; +} +.w-48{ + width: 12rem; +} +.w-1\/2{ + width: 50%; +} +.w-auto{ + width: auto; +} +.w-3\/4{ + width: 75%; +} +.w-10\/12{ + width: 83.333333%; +} +.w-60{ + width: 15rem; +} +.w-3\/5{ + width: 60%; +} +.w-72{ + width: 18rem; +} +.w-64{ + width: 16rem; +} +.w-1\/4{ + width: 25%; +} +.w-5\/6{ + width: 83.333333%; +} +.w-2\/3{ + width: 66.666667%; +} +.w-9{ + width: 2.25rem; +} +.min-w-\[6rem\]{ + min-width: 6rem; +} +.max-w-\[50\%\]{ + max-width: 50%; +} +.flex-1{ + flex: 1 1 0%; +} +.flex-none{ + flex: none; +} +.rotate-180{ + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-rotate-90{ + --tw-rotate: -90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.scale-110{ + --tw-scale-x: 1.1; + --tw-scale-y: 1.1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.transform{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.cursor-pointer{ + cursor: pointer; +} +.select-none{ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.resize-none{ + resize: none; +} +.resize{ + resize: both; +} +.grid-cols-12{ + grid-template-columns: repeat(12, minmax(0, 1fr)); +} +.grid-cols-11{ + grid-template-columns: repeat(11, minmax(0, 1fr)); +} +.grid-cols-10{ + grid-template-columns: repeat(10, minmax(0, 1fr)); +} +.grid-cols-4{ + grid-template-columns: repeat(4, minmax(0, 1fr)); +} +.grid-cols-3{ + grid-template-columns: repeat(3, minmax(0, 1fr)); +} +.grid-cols-7{ + grid-template-columns: repeat(7, minmax(0, 1fr)); +} +.grid-cols-8{ + grid-template-columns: repeat(8, minmax(0, 1fr)); +} +.grid-cols-2{ + grid-template-columns: repeat(2, minmax(0, 1fr)); +} +.grid-cols-1{ + grid-template-columns: repeat(1, minmax(0, 1fr)); +} +.flex-col{ + flex-direction: column; +} +.flex-col-reverse{ + flex-direction: column-reverse; +} +.flex-wrap{ + flex-wrap: wrap; +} +.items-start{ + align-items: flex-start; +} +.items-end{ + align-items: flex-end; +} +.items-center{ + align-items: center; +} +.justify-start{ + justify-content: flex-start; +} +.justify-end{ + justify-content: flex-end; +} +.justify-center{ + justify-content: center; +} +.gap-6{ + gap: 1.5rem; +} +.gap-5{ + gap: 1.25rem; +} +.gap-2{ + gap: 0.5rem; +} +.gap-4{ + gap: 1rem; +} +.gap-3{ + gap: 0.75rem; +} +.gap-x-6{ + -moz-column-gap: 1.5rem; + column-gap: 1.5rem; +} +.gap-y-6{ + row-gap: 1.5rem; +} +.gap-y-8{ + row-gap: 2rem; +} +.gap-x-10{ + -moz-column-gap: 2.5rem; + column-gap: 2.5rem; +} +.gap-y-3{ + row-gap: 0.75rem; +} +.gap-x-5{ + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; +} +.gap-y-5{ + row-gap: 1.25rem; +} +.overflow-auto{ + overflow: auto; +} +.overflow-hidden{ + overflow: hidden; +} +.overflow-x-auto{ + overflow-x: auto; +} +.overflow-y-auto{ + overflow-y: auto; +} +.overflow-y-hidden{ + overflow-y: hidden; +} +.overflow-y-scroll{ + overflow-y: scroll; +} +.truncate{ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.whitespace-nowrap{ + white-space: nowrap; +} +.rounded-full{ + border-radius: 9999px; +} +.rounded-md{ + border-radius: 0.375rem; +} +.rounded{ + border-radius: 0.25rem; +} +.rounded-lg{ + border-radius: 0.5rem; +} +.rounded-t-md{ + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; +} +.rounded-r-md{ + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.rounded-l-md{ + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} +.rounded-l{ + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.border{ + border-width: 1px; +} +.border-2{ + border-width: 2px; +} +.border-0{ + border-width: 0px; +} +.border-4{ + border-width: 4px; +} +.border-b{ + border-bottom-width: 1px; +} +.border-r{ + border-right-width: 1px; +} +.border-l-2{ + border-left-width: 2px; +} +.border-t{ + border-top-width: 1px; +} +.border-l{ + border-left-width: 1px; +} +.border-b-2{ + border-bottom-width: 2px; +} +.border-dashed{ + border-style: dashed; +} +.border-dotted{ + border-style: dotted; +} +.border-slate-200\/60{ + border-color: rgb(var(--color-slate-200) / 0.6); +} +.border-slate-300{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-300) / var(--tw-border-opacity)); +} +.border-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.border-transparent{ + border-color: transparent; +} +.border-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.border-white{ + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity)); +} +.border-slate-200{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.border-slate-400{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-400) / var(--tw-border-opacity)); +} +.border-black{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.border-slate-500{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-500) / var(--tw-border-opacity)); +} +.border-white\/10{ + border-color: rgb(255 255 255 / 0.1); +} +.border-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.border-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.border-white\/\[0\.08\]{ + border-color: rgb(255 255 255 / 0.08); +} +.border-opacity-10{ + --tw-border-opacity: 0.1; +} +.bg-slate-200{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.bg-danger{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); +} +.bg-slate-50{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-50) / var(--tw-bg-opacity)); +} +.bg-warning\/20{ + background-color: rgb(var(--color-warning) / 0.2); +} +.bg-white{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.bg-slate-500{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-500) / var(--tw-bg-opacity)); +} +.bg-primary\/10{ + background-color: rgb(var(--color-primary) / 0.1); +} +.bg-primary{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.bg-slate-100{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.bg-white\/20{ + background-color: rgb(255 255 255 / 0.2); +} +.bg-pending{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); +} +.bg-warning{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); +} +.bg-success\/20{ + background-color: rgb(var(--color-success) / 0.2); +} +.bg-pending\/20{ + background-color: rgb(var(--color-pending) / 0.2); +} +.bg-success{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); +} +.bg-transparent{ + background-color: transparent; +} +.bg-slate-300\/50{ + background-color: rgb(var(--color-slate-300) / 0.5); +} +.bg-white\/10{ + background-color: rgb(255 255 255 / 0.1); +} +.bg-pending\/80{ + background-color: rgb(var(--color-pending) / 0.8); +} +.bg-pending\/10{ + background-color: rgb(var(--color-pending) / 0.1); +} +.bg-slate-300{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.bg-yellow-200{ + --tw-bg-opacity: 1; + background-color: rgb(254 240 138 / var(--tw-bg-opacity)); +} +.bg-cyan-900{ + --tw-bg-opacity: 1; + background-color: rgb(22 78 99 / var(--tw-bg-opacity)); +} +.bg-blue-800{ + --tw-bg-opacity: 1; + background-color: rgb(30 64 175 / var(--tw-bg-opacity)); +} +.bg-blue-900{ + --tw-bg-opacity: 1; + background-color: rgb(30 58 138 / var(--tw-bg-opacity)); +} +.bg-emerald-900{ + --tw-bg-opacity: 1; + background-color: rgb(6 78 59 / var(--tw-bg-opacity)); +} +.bg-indigo-900{ + --tw-bg-opacity: 1; + background-color: rgb(49 46 129 / var(--tw-bg-opacity)); +} +.bg-primary\/80{ + background-color: rgb(var(--color-primary) / 0.8); +} +.bg-opacity-20{ + --tw-bg-opacity: 0.2; +} +.fill-current{ + fill: currentColor; +} +.fill-pending\/30{ + fill: rgb(var(--color-pending) / 0.3); +} +.p-0{ + padding: 0px; +} +.p-5{ + padding: 1.25rem; +} +.p-3{ + padding: 0.75rem; +} +.p-1{ + padding: 0.25rem; +} +.p-2{ + padding: 0.5rem; +} +.p-8{ + padding: 2rem; +} +.p-10{ + padding: 2.5rem; +} +.py-1{ + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.px-2{ + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.py-0\.5{ + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} +.py-0{ + padding-top: 0px; + padding-bottom: 0px; +} +.px-4{ + padding-left: 1rem; + padding-right: 1rem; +} +.py-10{ + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} +.py-3{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.\!px-2{ + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} +.px-1{ + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.py-4{ + padding-top: 1rem; + padding-bottom: 1rem; +} +.py-6{ + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} +.py-2{ + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.py-5{ + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} +.px-0{ + padding-left: 0px; + padding-right: 0px; +} +.px-8{ + padding-left: 2rem; + padding-right: 2rem; +} +.py-12{ + padding-top: 3rem; + padding-bottom: 3rem; +} +.py-1\.5{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.px-10{ + padding-left: 2.5rem; + padding-right: 2.5rem; +} +.px-3{ + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.px-2\.5{ + padding-left: 0.625rem; + padding-right: 0.625rem; +} +.py-8{ + padding-top: 2rem; + padding-bottom: 2rem; +} +.px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.py-16{ + padding-top: 4rem; + padding-bottom: 4rem; +} +.\!py-4{ + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} +.\!py-3\.5{ + padding-top: 0.875rem !important; + padding-bottom: 0.875rem !important; +} +.\!py-3{ + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} +.\!py-5{ + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; +} +.pb-20{ + padding-bottom: 5rem; +} +.pb-5{ + padding-bottom: 1.25rem; +} +.pt-4{ + padding-top: 1rem; +} +.pl-4{ + padding-left: 1rem; +} +.pr-5{ + padding-right: 1.25rem; +} +.pb-4{ + padding-bottom: 1rem; +} +.pt-5{ + padding-top: 1.25rem; +} +.pt-2{ + padding-top: 0.5rem; +} +.pl-5{ + padding-left: 1.25rem; +} +.\!pl-2{ + padding-left: 0.5rem !important; +} +.\!pr-2{ + padding-right: 0.5rem !important; +} +.\!pl-4{ + padding-left: 1rem !important; +} +.pt-10{ + padding-top: 2.5rem; +} +.pt-3{ + padding-top: 0.75rem; +} +.pr-10{ + padding-right: 2.5rem; +} +.pt-6{ + padding-top: 1.5rem; +} +.pb-6{ + padding-bottom: 1.5rem; +} +.pt-16{ + padding-top: 4rem; +} +.pl-16{ + padding-left: 4rem; +} +.pb-10{ + padding-bottom: 2.5rem; +} +.pb-8{ + padding-bottom: 2rem; +} +.pr-1{ + padding-right: 0.25rem; +} +.pt-1{ + padding-top: 0.25rem; +} +.pl-10{ + padding-left: 2.5rem; +} +.pb-2{ + padding-bottom: 0.5rem; +} +.pt-0\.5{ + padding-top: 0.125rem; +} +.pt-0{ + padding-top: 0px; +} +.pl-3{ + padding-left: 0.75rem; +} +.pl-3\.5{ + padding-left: 0.875rem; +} +.pt-8{ + padding-top: 2rem; +} +.pb-14{ + padding-bottom: 3.5rem; +} +.pb-3{ + padding-bottom: 0.75rem; +} +.pl-12{ + padding-left: 3rem; +} +.pl-1{ + padding-left: 0.25rem; +} +.pr-16{ + padding-right: 4rem; +} +.text-left{ + text-align: left; +} +.text-center{ + text-align: center; +} +.text-right{ + text-align: right; +} +.text-justify{ + text-align: justify; +} +.align-top{ + vertical-align: top; +} +.text-xs{ + font-size: 0.75rem; + line-height: 1rem; +} +.text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; +} +.text-base{ + font-size: 1rem; + line-height: 1.5rem; +} +.text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; +} +.text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; +} +.text-2xl{ + font-size: 1.5rem; + line-height: 2rem; +} +.text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; +} +.text-8xl{ + font-size: 6rem; + line-height: 1; +} +.text-4xl{ + font-size: 2.25rem; + line-height: 2.5rem; +} +.text-5xl{ + font-size: 3rem; + line-height: 1; +} +.font-medium{ + font-weight: 500; +} +.font-normal{ + font-weight: 400; +} +.font-semibold{ + font-weight: 600; +} +.font-bold{ + font-weight: 700; +} +.font-extrabold{ + font-weight: 800; +} +.uppercase{ + text-transform: uppercase; +} +.lowercase{ + text-transform: lowercase; +} +.capitalize{ + text-transform: capitalize; +} +.normal-case{ + text-transform: none; +} +.leading-relaxed{ + line-height: 1.625; +} +.leading-8{ + line-height: 2rem; +} +.leading-\[2\.15rem\]{ + line-height: 2.15rem; +} +.leading-3{ + line-height: .75rem; +} +.leading-6{ + line-height: 1.5rem; +} +.leading-5{ + line-height: 1.25rem; +} +.leading-tight{ + line-height: 1.25; +} +.leading-none{ + line-height: 1; +} +.text-gray-600{ + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity)); +} +.text-slate-500{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.text-success{ + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); +} +.text-danger{ + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.text-slate-600{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.text-red-500{ + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity)); +} +.text-white{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.text-warning{ + --tw-text-opacity: 1; + color: rgb(var(--color-warning) / var(--tw-text-opacity)); +} +.text-primary{ + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.text-slate-800{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.text-warning\/80{ + color: rgb(var(--color-warning) / 0.8); +} +.text-slate-700{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.text-slate-400{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.text-pending{ + --tw-text-opacity: 1; + color: rgb(var(--color-pending) / var(--tw-text-opacity)); +} +.text-white\/70{ + color: rgb(255 255 255 / 0.7); +} +.text-white\/90{ + color: rgb(255 255 255 / 0.9); +} +.text-gray-700{ + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity)); +} +.text-primary\/80{ + color: rgb(var(--color-primary) / 0.8); +} +.text-white\/60{ + color: rgb(255 255 255 / 0.6); +} +.text-opacity-80{ + --tw-text-opacity: 0.8; +} +.text-opacity-70{ + --tw-text-opacity: 0.7; +} +.underline{ + -webkit-text-decoration-line: underline; + text-decoration-line: underline; +} +.decoration-dotted{ + -webkit-text-decoration-style: dotted; + text-decoration-style: dotted; +} +.underline-offset-4{ + text-underline-offset: 4px; +} +.opacity-0{ + opacity: 0; +} +.shadow-md{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-none{ + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-sm{ + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-lg{ + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow{ + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.filter{ + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} +.transition{ + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.duration-300{ + transition-duration: 300ms; +} +.ease-in-out{ + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +/* + |-------------------------------------------------------------------------- + | Colors + |-------------------------------------------------------------------------- + | + | Import all fonts used in the template, the font configuration can be + | seen in "tailwind.config.js". + | + | Please check this link for more details: + | https://tailwindcss.com/docs/theme + | + */ +/* Default colors */ +:root { + --color-primary: 22 78 99; + --color-secondary: 226 232 240; + --color-success: 13 148 136; + --color-info: 6 182 212; + --color-warning: 245 158 11; + --color-pending: 217 119 6; + --color-danger: 185 28 28; + --color-light: 241 245 249; + --color-dark: 30 41 59; + --color-slate-50: 248 250 252; + --color-slate-100: 241 245 249; + --color-slate-200: 226 232 240; + --color-slate-300: 203 213 225; + --color-slate-400: 148 163 184; + --color-slate-500: 100 116 139; + --color-slate-600: 71 85 105; + --color-slate-700: 51 65 85; + --color-slate-800: 30 41 59; + --color-slate-900: 15 23 42; +} +/* Default dark-mode colors */ +.dark { + --color-primary: 21 94 117; + --color-slate-500: 148 163 184; + --color-darkmode-50: 87 103 132; + --color-darkmode-100: 74 90 121; + --color-darkmode-200: 65 81 114; + --color-darkmode-300: 53 69 103; + --color-darkmode-400: 48 61 93; + --color-darkmode-500: 41 53 82; + --color-darkmode-600: 40 51 78; + --color-darkmode-700: 35 45 69; + --color-darkmode-800: 27 37 59; + --color-darkmode-900: 15 23 42; +} +/* Theme 1 colors */ +.theme-1 { + --color-primary: 30 64 175; + --color-secondary: 226 232 240; + --color-success: 132 204 22; + --color-info: 6 182 212; + --color-warning: 250 204 21; + --color-pending: 249 115 22; + --color-danger: 220 38 38; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-1.dark { + --color-primary: 29 78 216; + } +/* Theme 2 colors */ +.theme-2 { + --color-primary: 30 58 138; + --color-secondary: 226 232 240; + --color-success: 13 148 136; + --color-info: 6 182 212; + --color-warning: 245 158 11; + --color-pending: 249 115 22; + --color-danger: 185 28 28; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-2.dark { + --color-primary: 30 64 175; + } +/* Theme 3 colors */ +.theme-3 { + --color-primary: 6 78 59; + --color-secondary: 226 232 240; + --color-success: 5 150 105; + --color-info: 6 182 212; + --color-warning: 250 204 21; + --color-pending: 245 158 11; + --color-danger: 225 29 72; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-3.dark { + --color-primary: 6 95 70; + } +/* Theme 4 colors */ +.theme-4 { + --color-primary: 49 46 129; + --color-secondary: 226 232 240; + --color-success: 5 150 105; + --color-info: 6 182 212; + --color-warning: 234 179 8; + --color-pending: 234 88 12; + --color-danger: 185 28 28; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-4.dark { + --color-primary: 67 56 202; + } +/* + |-------------------------------------------------------------------------- + | Fonts + |-------------------------------------------------------------------------- + | + | Import all fonts used in the template, the font configuration can be + | seen in "tailwind.config.js". + | + | Please check this link for more details: + | https://tailwindcss.com/docs/theme + | + */ +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz0dL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzQdL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzwdL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzMdL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz8dL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz4dL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzAdL-vwnYg.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xFIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xMIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xEIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xLIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xHIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xGIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xIIzIXKMny.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxFIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxMIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxEIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxLIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxHIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxGIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxIIzIXKMny.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* + |-------------------------------------------------------------------------- + | Mixins + |-------------------------------------------------------------------------- + | + | Import helper mixins. + | + */ +/* Breakpoint up */ +/* Breakpoint down */ +/* Breakpoint only */ +/* + |-------------------------------------------------------------------------- + | 3rd Party Libraries + |-------------------------------------------------------------------------- + | + | Import 3rd party library CSS/SASS files. + | + */ +.breadcrumb{ + display: flex; + align-items: center; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .breadcrumb{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.breadcrumb.breadcrumb-light{ + color: rgb(255 255 255 / var(--tw-text-opacity)); + --tw-text-opacity: 0.9; +} +.breadcrumb.breadcrumb-light .breadcrumb-item:not(:first-child):before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23e8eeff' stroke-width='1' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-right breadcrumb__icon'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + } +.breadcrumb.breadcrumb-light .breadcrumb-item.active{ + color: rgb(255 255 255 / var(--tw-text-opacity)); + --tw-text-opacity: 0.8; +} +.breadcrumb .breadcrumb-item:not(:first-child){ + position: relative; + margin-left: 1.25rem; + padding-left: 0.125rem; +} +.breadcrumb .breadcrumb-item:not(:first-child):before { + content: ""; + width: 14px; + height: 14px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-right breadcrumb__icon'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 100%; + margin-left: -1.125rem; + position: absolute; + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + } +.breadcrumb .breadcrumb-item.active{ + cursor: text; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.dark .breadcrumb .breadcrumb-item.active{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .breadcrumb .breadcrumb-item:not(:first-child):before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23718096' stroke-width='1' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-right breadcrumb__icon'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + } +@media (max-width: calc(640px - 1px)) { + .form-inline{ + display: block; + } + .form-inline .form-label{ + margin-bottom: 0.5rem; + margin-right: 0px; + text-align: left; + } + } +* > .intro-x:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .-intro-x:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .intro-y:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .-intro-y:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .intro-x:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .-intro-x:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .intro-y:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .-intro-y:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .intro-x:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .-intro-x:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .intro-y:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .-intro-y:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .intro-x:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .-intro-x:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .intro-y:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .-intro-y:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .intro-x:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .-intro-x:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .intro-y:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .-intro-y:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .intro-x:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .-intro-x:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .intro-y:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .-intro-y:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .intro-x:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .-intro-x:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .intro-y:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .-intro-y:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .intro-x:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .-intro-x:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .intro-y:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .-intro-y:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .intro-x:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .-intro-x:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .intro-y:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .-intro-y:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .intro-x:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .-intro-x:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .intro-y:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .-intro-y:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .intro-x:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .-intro-x:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .intro-y:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .-intro-y:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .intro-x:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .-intro-x:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .intro-y:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .-intro-y:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .intro-x:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .-intro-x:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .intro-y:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .-intro-y:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .intro-x:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .-intro-x:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .intro-y:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .-intro-y:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .intro-x:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .-intro-x:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .intro-y:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .-intro-y:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .intro-x:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .-intro-x:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .intro-y:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .-intro-y:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .intro-x:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .-intro-x:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .intro-y:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .-intro-y:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .intro-x:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .-intro-x:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .intro-y:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .-intro-y:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .intro-x:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .-intro-x:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .intro-y:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .-intro-y:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .intro-x:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .-intro-x:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .intro-y:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .-intro-y:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .intro-x:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .-intro-x:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .intro-y:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .-intro-y:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .intro-x:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .-intro-x:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .intro-y:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .-intro-y:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .intro-x:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .-intro-x:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .intro-y:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .-intro-y:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .intro-x:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .-intro-x:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .intro-y:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .-intro-y:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .intro-x:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .-intro-x:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .intro-y:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .-intro-y:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .intro-x:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .-intro-x:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .intro-y:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .-intro-y:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .intro-x:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .-intro-x:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .intro-y:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .-intro-y:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .intro-x:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .-intro-x:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .intro-y:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .-intro-y:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .intro-x:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .-intro-x:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .intro-y:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .-intro-y:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .intro-x:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .-intro-x:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .intro-y:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .-intro-y:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .intro-x:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .-intro-x:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .intro-y:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .-intro-y:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .intro-x:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .-intro-x:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .intro-y:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .-intro-y:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .intro-x:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .-intro-x:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .intro-y:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .-intro-y:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .intro-x:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .-intro-x:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .intro-y:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .-intro-y:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .intro-x:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .-intro-x:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .intro-y:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .-intro-y:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .intro-x:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .-intro-x:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .intro-y:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .-intro-y:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .intro-x:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .-intro-x:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .intro-y:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .-intro-y:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .intro-x:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .-intro-x:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .intro-y:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .-intro-y:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .intro-x:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .-intro-x:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .intro-y:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .-intro-y:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .intro-x:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .-intro-x:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .intro-y:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .-intro-y:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .intro-x:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .-intro-x:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .intro-y:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .-intro-y:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .intro-x:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .-intro-x:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .intro-y:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .-intro-y:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .intro-x:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .-intro-x:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .intro-y:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .-intro-y:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .intro-x:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .-intro-x:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .intro-y:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .-intro-y:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .intro-x:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .-intro-x:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .intro-y:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .-intro-y:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .intro-x:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .-intro-x:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .intro-y:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .-intro-y:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .intro-x:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .-intro-x:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .intro-y:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .-intro-y:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .intro-x:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .-intro-x:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .intro-y:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .-intro-y:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .intro-x:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .-intro-x:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .intro-y:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .-intro-y:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .intro-x:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +* > .-intro-x:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +* > .intro-y:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +* > .-intro-y:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +@-webkit-keyframes intro-x-animation { + 100% { + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-x-animation { + 100% { + opacity: 1; + transform: translateX(0px); + } +} +@-webkit-keyframes intro-y-animation { + 100% { + opacity: 1; + transform: translateY(0px); + } +} +@keyframes intro-y-animation { + 100% { + opacity: 1; + transform: translateY(0px); + } +} +@media (max-width: calc(640px - 1px)) { + .modal.modal-slide-over.show > .modal-dialog .modal-content > [data-tw-dismiss="modal"]{ + margin-left: -2.5rem; + } + .pagination{ + margin-right: 0px; + width: 100%; + } + .pagination .page-item{ + flex: 1 1 0%; + } + .pagination .page-item:nth-child(1) .page-link, .pagination .page-item:nth-child(2) .page-link, .pagination .page-item:nth-child(3) .page-link, .pagination .page-item:nth-child(7) .page-link, .pagination .page-item:nth-child(8) .page-link, .pagination .page-item:nth-child(9) .page-link{ + padding-left: 0.25rem; + padding-right: 0.25rem; + } + .pagination .page-item .page-link{ + margin-right: 0px; + min-width: 0px; + } + } +.table{ + width: 100%; + text-align: left; +} +.table thead.table-dark{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .table thead.table-dark{ + background-color: rgb(0 0 0 / 0.3); +} +.table thead.table-dark tr th{ + border-bottom-width: 0px; +} +.table thead.table-light{ + background-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .table thead.table-light{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.table thead.table-light tr th{ + border-bottom-width: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.table th{ + border-bottom-width: 2px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + font-weight: 500; +} +.dark .table th{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table td{ + border-bottom-width: 1px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.dark .table td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table.table-dark{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .table.table-dark{ + background-color: rgb(0 0 0 / 0.3); +} +.table.table-dark th{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-600) / var(--tw-border-opacity)); +} +.dark .table.table-dark th{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table.table-dark td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-600) / var(--tw-border-opacity)); +} +.dark .table.table-dark td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table.table-bordered th, .table.table-bordered td{ + border-left-width: 1px; + border-right-width: 1px; + border-top-width: 1px; +} +.table.table-hover tr:hover td{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .table.table-hover tr:hover td{ + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.5; +} +.table.table-striped tr:nth-of-type(odd) td{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .table.table-striped tr:nth-of-type(odd) td{ + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.5; +} +.table.table-sm th{ + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.table.table-sm td{ + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +/* + +github.com style (c) Vasily Polovnyov + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} +.hljs-string, +.hljs-doctag { + color: #d14; +} +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} +.hljs-subst { + font-weight: normal; +} +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} +.hljs-regexp, +.hljs-link { + color: #009926; +} +.hljs-symbol, +.hljs-bullet { + color: #990073; +} +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} +.hljs-meta { + color: #999; + font-weight: bold; +} +.hljs-deletion { + background: #fdd; +} +.hljs-addition { + background: #dfd; +} +.hljs-emphasis { + font-style: italic; +} +.hljs-strong { + font-weight: bold; +} +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0} +[data-tippy-root]{max-width:calc(100vw - 10px)} +.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity} +.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0} +.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top} +.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0} +.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom} +.tippy-box[data-placement^=left]>.tippy-arrow{right:0} +.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left} +.tippy-box[data-placement^=right]>.tippy-arrow{left:0} +.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right} +.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)} +.tippy-arrow{width:16px;height:16px;color:#333} +.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid} +.tippy-content{position:relative;padding:5px 9px;z-index:1} +.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);background-color:#fff} +.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff} +.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff} +.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff} +.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff} +.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff} +.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff} +.tippy-box[data-placement^=top]>.tippy-svg-arrow{bottom:0} +.tippy-box[data-placement^=top]>.tippy-svg-arrow:after,.tippy-box[data-placement^=top]>.tippy-svg-arrow>svg{top:16px;transform:rotate(180deg)} +.tippy-box[data-placement^=bottom]>.tippy-svg-arrow{top:0} +.tippy-box[data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px} +.tippy-box[data-placement^=left]>.tippy-svg-arrow{right:0} +.tippy-box[data-placement^=left]>.tippy-svg-arrow:after,.tippy-box[data-placement^=left]>.tippy-svg-arrow>svg{transform:rotate(90deg);top:calc(50% - 3px);left:11px} +.tippy-box[data-placement^=right]>.tippy-svg-arrow{left:0} +.tippy-box[data-placement^=right]>.tippy-svg-arrow:after,.tippy-box[data-placement^=right]>.tippy-svg-arrow>svg{transform:rotate(-90deg);top:calc(50% - 3px);right:11px} +.tippy-svg-arrow{width:16px;height:16px;fill:#333;text-align:initial} +.tippy-svg-arrow,.tippy-svg-arrow>svg{position:absolute} +.tippy-box[data-animation=shift-away][data-state=hidden]{opacity:0} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=top]{transform:translateY(10px)} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=bottom]{transform:translateY(-10px)} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=left]{transform:translateX(10px)} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=right]{transform:translateX(-10px)} +/*! + * Toastify js 1.11.2 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ +.toastify { + padding: 12px 20px; + color: #ffffff; + display: inline-block; + box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(77, 96, 232, 0.3); + background: linear-gradient(135deg, #73a5ff, #5477f5); + position: fixed; + opacity: 0; + transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1); + border-radius: 2px; + cursor: pointer; + text-decoration: none; + max-width: calc(50% - 20px); + z-index: 2147483647; +} +.toastify.on { + opacity: 1; +} +.toast-close { + opacity: 0.4; + padding: 0 5px; +} +.toastify-right { + right: 15px; +} +.toastify-left { + left: 15px; +} +.toastify-top { + top: -150px; +} +.toastify-bottom { + bottom: -150px; +} +.toastify-rounded { + border-radius: 25px; +} +.toastify-avatar { + width: 1.5em; + height: 1.5em; + margin: -7px 5px; + border-radius: 2px; +} +.toastify-center { + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + max-width: -webkit-fit-content; + max-width: fit-content; + max-width: -moz-fit-content; +} +@media only screen and (max-width: 360px) { + .toastify-right, .toastify-left { + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + max-width: -webkit-fit-content; + max-width: -moz-fit-content; + max-width: fit-content; + } +} +@-webkit-keyframes passing-through { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30%, 70% { + opacity: 1; + transform: translateY(0px); + } + 100% { + opacity: 0; + transform: translateY(-40px); + } +} +@keyframes passing-through { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30%, 70% { + opacity: 1; + transform: translateY(0px); + } + 100% { + opacity: 0; + transform: translateY(-40px); + } +} +@-webkit-keyframes slide-in { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30% { + opacity: 1; + transform: translateY(0px); + } +} +@keyframes slide-in { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30% { + opacity: 1; + transform: translateY(0px); + } +} +@-webkit-keyframes pulse { + 0% { + transform: scale(1); + } + 10% { + transform: scale(1.1); + } + 20% { + transform: scale(1); + } +} +@keyframes pulse { + 0% { + transform: scale(1); + } + 10% { + transform: scale(1.1); + } + 20% { + transform: scale(1); + } +} +.dropzone, .dropzone * { + box-sizing: border-box; +} +.dropzone { + min-height: 150px; + border: 2px solid rgba(0, 0, 0, 0.3); + background: white; + padding: 20px 20px; +} +.dropzone.dz-clickable { + cursor: pointer; +} +.dropzone.dz-clickable * { + cursor: default; +} +.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * { + cursor: pointer; +} +.dropzone.dz-started .dz-message { + display: none; +} +.dropzone.dz-drag-hover { + border-style: solid; +} +.dropzone.dz-drag-hover .dz-message { + opacity: 0.5; +} +.dropzone .dz-message { + text-align: center; + margin: 2em 0; +} +.dropzone .dz-message .dz-button { + background: none; + color: inherit; + border: none; + padding: 0; + font: inherit; + cursor: pointer; + outline: inherit; +} +.dropzone .dz-preview { + position: relative; + display: inline-block; + vertical-align: top; + margin: 16px; + min-height: 100px; +} +.dropzone .dz-preview:hover { + z-index: 1000; +} +.dropzone .dz-preview:hover .dz-details { + opacity: 1; +} +.dropzone .dz-preview.dz-file-preview .dz-image { + border-radius: 20px; + background: #999; + background: linear-gradient(to bottom, #eee, #ddd); +} +.dropzone .dz-preview.dz-file-preview .dz-details { + opacity: 1; +} +.dropzone .dz-preview.dz-image-preview { + background: white; +} +.dropzone .dz-preview.dz-image-preview .dz-details { + transition: opacity 0.2s linear; +} +.dropzone .dz-preview .dz-remove { + font-size: 14px; + text-align: center; + display: block; + cursor: pointer; + border: none; +} +.dropzone .dz-preview .dz-remove:hover { + text-decoration: underline; +} +.dropzone .dz-preview:hover .dz-details { + opacity: 1; +} +.dropzone .dz-preview .dz-details { + z-index: 20; + position: absolute; + top: 0; + left: 0; + opacity: 0; + font-size: 13px; + min-width: 100%; + max-width: 100%; + padding: 2em 1em; + text-align: center; + color: rgba(0, 0, 0, 0.9); + line-height: 150%; +} +.dropzone .dz-preview .dz-details .dz-size { + margin-bottom: 1em; + font-size: 16px; +} +.dropzone .dz-preview .dz-details .dz-filename { + white-space: nowrap; +} +.dropzone .dz-preview .dz-details .dz-filename:hover span { + border: 1px solid rgba(200, 200, 200, 0.8); + background-color: rgba(255, 255, 255, 0.8); +} +.dropzone .dz-preview .dz-details .dz-filename:not(:hover) { + overflow: hidden; + text-overflow: ellipsis; +} +.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { + border: 1px solid transparent; +} +.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { + background-color: rgba(255, 255, 255, 0.4); + padding: 0 0.4em; + border-radius: 3px; +} +.dropzone .dz-preview:hover .dz-image img { + transform: scale(1.05, 1.05); + filter: blur(8px); +} +.dropzone .dz-preview .dz-image { + border-radius: 20px; + overflow: hidden; + width: 120px; + height: 120px; + position: relative; + display: block; + z-index: 10; +} +.dropzone .dz-preview .dz-image img { + display: block; +} +.dropzone .dz-preview.dz-success .dz-success-mark { + -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); +} +.dropzone .dz-preview.dz-error .dz-error-mark { + opacity: 1; + -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); +} +.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { + pointer-events: none; + opacity: 0; + z-index: 500; + position: absolute; + display: block; + top: 50%; + left: 50%; + margin-left: -27px; + margin-top: -27px; +} +.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg { + display: block; + width: 54px; + height: 54px; +} +.dropzone .dz-preview.dz-processing .dz-progress { + opacity: 1; + transition: all 0.2s linear; +} +.dropzone .dz-preview.dz-complete .dz-progress { + opacity: 0; + transition: opacity 0.4s ease-in; +} +.dropzone .dz-preview:not(.dz-processing) .dz-progress { + -webkit-animation: pulse 6s ease infinite; + animation: pulse 6s ease infinite; +} +.dropzone .dz-preview .dz-progress { + opacity: 1; + z-index: 1000; + pointer-events: none; + position: absolute; + height: 16px; + left: 50%; + top: 50%; + margin-top: -8px; + width: 80px; + margin-left: -40px; + background: rgba(255, 255, 255, 0.9); + -webkit-transform: scale(1); + border-radius: 8px; + overflow: hidden; +} +.dropzone .dz-preview .dz-progress .dz-upload { + background: #333; + background: linear-gradient(to bottom, #666, #444); + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 0; + transition: width 300ms ease-in-out; +} +.dropzone .dz-preview.dz-error .dz-error-message { + display: block; +} +.dropzone .dz-preview.dz-error:hover .dz-error-message { + opacity: 1; + pointer-events: auto; +} +.dropzone .dz-preview .dz-error-message { + pointer-events: none; + z-index: 1000; + position: absolute; + display: block; + display: none; + opacity: 0; + transition: opacity 0.3s ease; + border-radius: 8px; + font-size: 13px; + top: 130px; + left: -10px; + width: 140px; + background: #be2626; + background: linear-gradient(to bottom, #be2626, #a92222); + padding: 0.5em 1.2em; + color: white; +} +.dropzone .dz-preview .dz-error-message:after { + content: ""; + position: absolute; + top: -6px; + left: 64px; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #be2626; +} +img[data-action="zoom"] { + cursor: zoom-in; +} +.zoom-img, +.zoom-img-wrap { + position: relative; + z-index: 666; + transition: all 300ms; +} +img.zoom-img { + cursor: zoom-out; +} +.zoom-overlay { + cursor: zoom-out; + z-index: 420; + background: #fff; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + filter: "alpha(opacity=0)"; + opacity: 0; + transition: opacity 300ms; +} +.zoom-overlay-open .zoom-overlay { + filter: "alpha(opacity=100)"; + opacity: 1; +} +/* Tabulator v4.9.3 (c) Oliver Folkerd */ +.tabulator { + position: relative; + border: 1px solid #999; + background-color: #888; + font-size: 14px; + text-align: left; + overflow: hidden; + transform: translatez(0); +} +.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table { + min-width: 100%; +} +.tabulator[tabulator-layout="fitDataTable"] { + display: inline-block; +} +.tabulator.tabulator-block-select { + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; +} +.tabulator .tabulator-header { + position: relative; + box-sizing: border-box; + width: 100%; + border-bottom: 1px solid #999; + background-color: #e6e6e6; + color: #555; + font-weight: bold; + white-space: nowrap; + overflow: hidden; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +.tabulator .tabulator-header.tabulator-header-hidden { + display: none; +} +.tabulator .tabulator-header .tabulator-col { + display: inline-block; + position: relative; + box-sizing: border-box; + border-right: 1px solid #aaa; + background: #e6e6e6; + text-align: left; + vertical-align: bottom; + overflow: hidden; +} +.tabulator .tabulator-header .tabulator-col.tabulator-moving { + position: absolute; + border: 1px solid #999; + background: #cdcdcd; + pointer-events: none; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content { + box-sizing: border-box; + position: relative; + padding: 4px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { + padding: 0 8px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover { + cursor: pointer; + opacity: .6; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { + position: relative; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { + box-sizing: border-box; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: bottom; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { + box-sizing: border-box; + width: 100%; + border: 1px solid #999; + padding: 1px; + background: #fff; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { + width: calc(100% - 22px); +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { + display: flex; + align-items: center; + position: absolute; + top: 0; + bottom: 0; + right: 4px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #bbb; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { + position: relative; + display: flex; + border-top: 1px solid #aaa; + overflow: hidden; + margin-right: -1px; +} +.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { + display: none; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { + position: relative; + box-sizing: border-box; + margin-top: 2px; + width: 100%; + text-align: center; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { + height: auto !important; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { + margin-top: 3px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { + width: 0; + height: 0; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { + padding-right: 25px; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover { + cursor: pointer; + background-color: #cdcdcd; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { + color: #bbb; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + border-top: none; + border-bottom: 6px solid #bbb; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter { + color: #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + border-top: none; + border-bottom: 6px solid #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter { + color: #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + border-bottom: none; + border-top: 6px solid #666; + color: #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { + -ms-writing-mode: tb-rl; + writing-mode: vertical-rl; + text-orientation: mixed; + display: flex; + align-items: center; + justify-content: center; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { + transform: rotate(180deg); +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { + padding-right: 0; + padding-top: 20px; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { + padding-right: 0; + padding-bottom: 20px; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { + justify-content: center; + left: 0; + right: 0; + top: 4px; + bottom: auto; +} +.tabulator .tabulator-header .tabulator-frozen { + display: inline-block; + position: absolute; + z-index: 10; +} +.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { + border-right: 2px solid #aaa; +} +.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { + border-left: 2px solid #aaa; +} +.tabulator .tabulator-header .tabulator-calcs-holder { + box-sizing: border-box; + min-width: 600%; + background: #f3f3f3 !important; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + overflow: hidden; +} +.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { + background: #f3f3f3 !important; +} +.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { + display: none; +} +.tabulator .tabulator-header .tabulator-frozen-rows-holder { + min-width: 600%; +} +.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { + display: none; +} +.tabulator .tabulator-tableHolder { + position: relative; + width: 100%; + white-space: nowrap; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.tabulator .tabulator-tableHolder:focus { + outline: none; +} +.tabulator .tabulator-tableHolder .tabulator-placeholder { + box-sizing: border-box; + display: flex; + align-items: center; + width: 100%; +} +.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] { + min-height: 100%; + min-width: 100%; +} +.tabulator .tabulator-tableHolder .tabulator-placeholder span { + display: inline-block; + margin: 0 auto; + padding: 10px; + color: #ccc; + font-weight: bold; + font-size: 20px; +} +.tabulator .tabulator-tableHolder .tabulator-table { + position: relative; + display: inline-block; + background-color: #fff; + white-space: nowrap; + overflow: visible; + color: #333; +} +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs { + font-weight: bold; + background: #e2e2e2 !important; +} +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { + border-bottom: 2px solid #aaa; +} +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { + border-top: 2px solid #aaa; +} +.tabulator .tabulator-footer { + padding: 5px 10px; + border-top: 1px solid #999; + background-color: #e6e6e6; + text-align: right; + color: #555; + font-weight: bold; + white-space: nowrap; + -ms-user-select: none; + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +.tabulator .tabulator-footer .tabulator-calcs-holder { + box-sizing: border-box; + width: calc(100% + 20px); + margin: -5px -10px 5px -10px; + text-align: left; + background: #f3f3f3 !important; + border-bottom: 1px solid #aaa; + border-top: 1px solid #aaa; + overflow: hidden; +} +.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { + background: #f3f3f3 !important; +} +.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { + display: none; +} +.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { + margin-bottom: -5px; + border-bottom: none; +} +.tabulator .tabulator-footer .tabulator-paginator { + color: #555; + font-family: inherit; + font-weight: inherit; + font-size: inherit; +} +.tabulator .tabulator-footer .tabulator-page-size { + display: inline-block; + margin: 0 5px; + padding: 2px 5px; + border: 1px solid #aaa; + border-radius: 3px; +} +.tabulator .tabulator-footer .tabulator-pages { + margin: 0 7px; +} +.tabulator .tabulator-footer .tabulator-page { + display: inline-block; + margin: 0 2px; + padding: 2px 5px; + border: 1px solid #aaa; + border-radius: 3px; + background: rgba(255, 255, 255, 0.2); +} +.tabulator .tabulator-footer .tabulator-page.active { + color: #d00; +} +.tabulator .tabulator-footer .tabulator-page:disabled { + opacity: .5; +} +.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); + color: #fff; +} +.tabulator .tabulator-col-resize-handle { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 5px; +} +.tabulator .tabulator-col-resize-handle.prev { + left: 0; + right: auto; +} +.tabulator .tabulator-col-resize-handle:hover { + cursor: ew-resize; +} +.tabulator .tabulator-loader { + position: absolute; + display: flex; + align-items: center; + top: 0; + left: 0; + z-index: 100; + height: 100%; + width: 100%; + background: rgba(0, 0, 0, 0.4); + text-align: center; +} +.tabulator .tabulator-loader .tabulator-loader-msg { + display: inline-block; + margin: 0 auto; + padding: 10px 20px; + border-radius: 10px; + background: #fff; + font-weight: bold; + font-size: 16px; +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { + border: 4px solid #333; + color: #000; +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { + border: 4px solid #D00; + color: #590000; +} +.tabulator-row { + position: relative; + box-sizing: border-box; + min-height: 22px; + background-color: #fff; +} +.tabulator-row.tabulator-row-even { + background-color: #EFEFEF; +} +.tabulator-row.tabulator-selectable:hover { + background-color: #bbb; + cursor: pointer; +} +.tabulator-row.tabulator-selected { + background-color: #9ABCEA; +} +.tabulator-row.tabulator-selected:hover { + background-color: #769BCC; + cursor: pointer; +} +.tabulator-row.tabulator-row-moving { + border: 1px solid #000; + background: #fff; +} +.tabulator-row.tabulator-moving { + position: absolute; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + pointer-events: none; + z-index: 15; +} +.tabulator-row .tabulator-row-resize-handle { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 5px; +} +.tabulator-row .tabulator-row-resize-handle.prev { + top: 0; + bottom: auto; +} +.tabulator-row .tabulator-row-resize-handle:hover { + cursor: ns-resize; +} +.tabulator-row .tabulator-frozen { + display: inline-block; + position: absolute; + background-color: inherit; + z-index: 10; +} +.tabulator-row .tabulator-frozen.tabulator-frozen-left { + border-right: 2px solid #aaa; +} +.tabulator-row .tabulator-frozen.tabulator-frozen-right { + border-left: 2px solid #aaa; +} +.tabulator-row .tabulator-responsive-collapse { + box-sizing: border-box; + padding: 5px; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; +} +.tabulator-row .tabulator-responsive-collapse:empty { + display: none; +} +.tabulator-row .tabulator-responsive-collapse table { + font-size: 14px; +} +.tabulator-row .tabulator-responsive-collapse table tr td { + position: relative; +} +.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { + padding-right: 10px; +} +.tabulator-row .tabulator-cell { + display: inline-block; + position: relative; + box-sizing: border-box; + padding: 4px; + border-right: 1px solid #aaa; + vertical-align: middle; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.tabulator-row .tabulator-cell.tabulator-editing { + border: 1px solid #1D68CD; + outline: none; + padding: 0; +} +.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select { + border: 1px; + background: transparent; +} +.tabulator-row .tabulator-cell.tabulator-validation-fail { + border: 1px solid #dd0000; +} +.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select { + border: 1px; + background: transparent; + color: #dd0000; +} +.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { + display: none; +} +.tabulator-row .tabulator-cell.tabulator-row-handle { + display: inline-flex; + align-items: center; + justify-content: center; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { + width: 80%; +} +.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { + width: 100%; + height: 3px; + margin-top: 2px; + background: #666; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-branch { + display: inline-block; + vertical-align: middle; + height: 9px; + width: 7px; + margin-top: -9px; + margin-right: 5px; + border-bottom-left-radius: 1px; + border-left: 2px solid #aaa; + border-bottom: 2px solid #aaa; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control { + display: inline-flex; + justify-content: center; + align-items: center; + vertical-align: middle; + height: 11px; + width: 11px; + margin-right: 5px; + border: 1px solid #333; + border-radius: 2px; + background: rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: transparent; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: #333; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + height: 15px; + width: 15px; + border-radius: 20px; + background: #666; + color: #fff; + font-weight: bold; + font-size: 1.1em; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { + opacity: .7; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { + display: initial; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { + display: none; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { + display: none; +} +.tabulator-row .tabulator-cell .tabulator-traffic-light { + display: inline-block; + height: 14px; + width: 14px; + border-radius: 14px; +} +.tabulator-row.tabulator-group { + box-sizing: border-box; + border-bottom: 1px solid #999; + border-right: 1px solid #aaa; + border-top: 1px solid #999; + padding: 5px; + padding-left: 10px; + background: #ccc; + font-weight: bold; + min-width: 100%; +} +.tabulator-row.tabulator-group:hover { + cursor: pointer; + background-color: rgba(0, 0, 0, 0.1); +} +.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { + margin-right: 10px; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid #666; + border-bottom: 0; +} +.tabulator-row.tabulator-group.tabulator-group-level-1 { + padding-left: 30px; +} +.tabulator-row.tabulator-group.tabulator-group-level-2 { + padding-left: 50px; +} +.tabulator-row.tabulator-group.tabulator-group-level-3 { + padding-left: 70px; +} +.tabulator-row.tabulator-group.tabulator-group-level-4 { + padding-left: 90px; +} +.tabulator-row.tabulator-group.tabulator-group-level-5 { + padding-left: 110px; +} +.tabulator-row.tabulator-group .tabulator-group-toggle { + display: inline-block; +} +.tabulator-row.tabulator-group .tabulator-arrow { + display: inline-block; + width: 0; + height: 0; + margin-right: 16px; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + border-right: 0; + border-left: 6px solid #666; + vertical-align: middle; +} +.tabulator-row.tabulator-group span { + margin-left: 10px; + color: #d00; +} +.tabulator-menu { + position: absolute; + display: inline-block; + box-sizing: border-box; + background: #fff; + border: 1px solid #aaa; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); + font-size: 14px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 10000; +} +.tabulator-menu .tabulator-menu-item { + position: relative; + box-sizing: border-box; + padding: 5px 10px; + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; +} +.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { + opacity: .5; +} +.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { + cursor: pointer; + background: #EFEFEF; +} +.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { + padding-right: 25px; +} +.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { + display: inline-block; + position: absolute; + top: calc(5px + .4em); + right: 10px; + height: 7px; + width: 7px; + content: ''; + border-width: 1px 1px 0 0; + border-style: solid; + border-color: #aaa; + vertical-align: top; + transform: rotate(45deg); +} +.tabulator-menu .tabulator-menu-separator { + border-top: 1px solid #aaa; +} +.tabulator-edit-select-list { + position: absolute; + display: inline-block; + box-sizing: border-box; + max-height: 200px; + background: #fff; + border: 1px solid #aaa; + font-size: 14px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 10000; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item { + padding: 4px; + color: #333; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item.active { + color: #fff; + background: #1D68CD; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { + outline: 1px solid rgba(255, 255, 255, 0.5); +} +.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { + outline: 1px solid #1D68CD; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { + cursor: pointer; + color: #fff; + background: #1D68CD; +} +.tabulator-edit-select-list .tabulator-edit-select-list-notice { + padding: 4px; + color: #333; + text-align: center; +} +.tabulator-edit-select-list .tabulator-edit-select-list-group { + border-bottom: 1px solid #aaa; + padding: 4px; + padding-top: 6px; + color: #333; + font-weight: bold; +} +.tabulator.tabulator-ltr { + direction: ltr; +} +.tabulator.tabulator-rtl { + text-align: initial; + direction: rtl; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col { + text-align: initial; + border-left: 1px solid #aaa; + border-right: initial; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { + margin-right: initial; + margin-left: -1px; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { + padding-right: 0; + padding-left: 25px; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { + left: 8px; + right: initial; +} +.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { + border-right: initial; + border-left: 1px solid #aaa; +} +.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { + margin-right: initial; + margin-left: 5px; + border-bottom-left-radius: initial; + border-bottom-right-radius: 1px; + border-left: initial; + border-right: 2px solid #aaa; +} +.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { + margin-right: initial; + margin-left: 5px; +} +.tabulator.tabulator-rtl .tabulator-col-resize-handle { + position: absolute; + left: 0; + right: auto; +} +.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { + right: 0; + left: auto; +} +.tabulator-print-fullscreen { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 10000; +} +body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { + display: none !important; +} +.tabulator-print-table { + border-collapse: collapse; +} +.tabulator-print-table .tabulator-data-tree-branch { + display: inline-block; + vertical-align: middle; + height: 9px; + width: 7px; + margin-top: -9px; + margin-right: 5px; + border-bottom-left-radius: 1px; + border-left: 2px solid #aaa; + border-bottom: 2px solid #aaa; +} +.tabulator-print-table .tabulator-print-table-group { + box-sizing: border-box; + border-bottom: 1px solid #999; + border-right: 1px solid #aaa; + border-top: 1px solid #999; + padding: 5px; + padding-left: 10px; + background: #ccc; + font-weight: bold; + min-width: 100%; +} +.tabulator-print-table .tabulator-print-table-group:hover { + cursor: pointer; + background-color: rgba(0, 0, 0, 0.1); +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { + margin-right: 10px; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid #666; + border-bottom: 0; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { + padding-left: 30px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { + padding-left: 50px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { + padding-left: 70px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { + padding-left: 90px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { + padding-left: 110px !important; +} +.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { + display: inline-block; +} +.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { + display: inline-block; + width: 0; + height: 0; + margin-right: 16px; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + border-right: 0; + border-left: 6px solid #666; + vertical-align: middle; +} +.tabulator-print-table .tabulator-print-table-group span { + margin-left: 10px; + color: #d00; +} +.tabulator-print-table .tabulator-data-tree-control { + display: inline-flex; + justify-content: center; + align-items: center; + vertical-align: middle; + height: 11px; + width: 11px; + margin-right: 5px; + border: 1px solid #333; + border-radius: 2px; + background: rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.tabulator-print-table .tabulator-data-tree-control:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: transparent; +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: #333; +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +/** + * tom-select.css (v1.7.8) + * Copyright (c) contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy of the License at: + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + * ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + * + */ +.ts-control.plugin-drag_drop.multi > .ts-input > div.ui-sortable-placeholder { + visibility: visible !important; + background: #f2f2f2 !important; + background: rgba(0, 0, 0, 0.06) !important; + border: 0 none !important; + box-shadow: inset 0 0 12px 4px #fff; } +.ts-control.plugin-drag_drop .ui-sortable-placeholder::after { + content: '!'; + visibility: hidden; } +.ts-control.plugin-drag_drop .ui-sortable-helper { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } +.plugin-checkbox_options .option input { + margin-right: 0.5rem; } +.plugin-clear_button .items { + padding-right: calc( 1em + (3 * 6px)) !important; } +.plugin-clear_button .clear-button { + opacity: 0; + position: absolute; + top: 8px; + right: calc(8px - 6px); + margin-right: 0 !important; + background: transparent !important; + transition: opacity 0.5s; + cursor: pointer; } +.plugin-clear_button.single .clear-button { + right: calc(8px - 6px + 2rem); } +.plugin-clear_button .has-items.focus .clear-button, +.plugin-clear_button:hover .has-items .clear-button { + opacity: 1; } +.ts-control .dropdown-header { + position: relative; + padding: 10px 8px; + border-bottom: 1px solid #d0d0d0; + background: #f8f8f8; + border-radius: 3px 3px 0 0; } +.ts-control .dropdown-header-close { + position: absolute; + right: 8px; + top: 50%; + color: #303030; + opacity: 0.4; + margin-top: -12px; + line-height: 20px; + font-size: 20px !important; } +.ts-control .dropdown-header-close:hover { + color: black; } +.plugin-dropdown_input .ts-input.focus { + box-shadow: none; + border: 1px solid #d0d0d0; } +.plugin-dropdown_input .dropdown-input { + border: 1px solid #d0d0d0; + border-width: 0 0 1px 0; + display: block; + padding: 8px 8px; + box-shadow: none; + width: 100%; + background: transparent; } +.ts-control.plugin-input_autogrow .ts-input.has-items > input { + min-width: 0; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input { + flex: none; + min-width: 4px; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input::-moz-placeholder { + color: transparent; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input:-ms-input-placeholder { + color: transparent; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input::placeholder { + color: transparent; } +.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content { + display: flex; } +.ts-dropdown.plugin-optgroup_columns .optgroup { + border-right: 1px solid #f2f2f2; + border-top: 0 none; + flex-grow: 1; + flex-basis: 0; + min-width: 0; } +.ts-dropdown.plugin-optgroup_columns .optgroup:last-child { + border-right: 0 none; } +.ts-dropdown.plugin-optgroup_columns .optgroup:before { + display: none; } +.ts-dropdown.plugin-optgroup_columns .optgroup-header { + border-top: 0 none; } +.ts-control.plugin-remove_button .item { + display: inline-flex; + align-items: center; + padding-right: 0 !important; } +.ts-control.plugin-remove_button .item .remove { + color: inherit; + text-decoration: none; + vertical-align: middle; + display: inline-block; + padding: 2px 6px; + border-left: 1px solid #d0d0d0; + border-radius: 0 2px 2px 0; + box-sizing: border-box; + margin-left: 6px; } +.ts-control.plugin-remove_button .item .remove:hover { + background: rgba(0, 0, 0, 0.05); } +.ts-control.plugin-remove_button .item.active .remove { + border-left-color: #cacaca; } +.ts-control.plugin-remove_button .disabled .item .remove:hover { + background: none; } +.ts-control.plugin-remove_button .disabled .item .remove { + border-left-color: white; } +.ts-control.plugin-remove_button .remove-single { + position: absolute; + right: 0; + top: 0; + font-size: 23px; } +.ts-control { + position: relative; } +.ts-dropdown, +.ts-input, +.ts-input input { + color: #303030; + font-family: inherit; + font-size: 13px; + line-height: 18px; + font-smoothing: inherit; } +.ts-input, +.ts-control.single .ts-input.input-active { + background: #fff; + cursor: text; } +.ts-input { + border: 1px solid #d0d0d0; + padding: 8px 8px; + width: 100%; + overflow: hidden; + position: relative; + z-index: 1; + box-sizing: border-box; + box-shadow: none; + border-radius: 3px; + display: flex; + flex-wrap: wrap; } +.ts-control.multi .ts-input.has-items { + padding: calc( 8px - 2px - 0) 8px calc( 8px - 2px - 3px - 0); } +.ts-input.full { + background-color: #fff; } +.ts-input.disabled, + .ts-input.disabled * { + cursor: default !important; } +.ts-input.focus { + box-shadow: none; } +.ts-input > * { + vertical-align: baseline; + display: inline-block; } +.ts-control.multi .ts-input > div { + cursor: pointer; + margin: 0 3px 3px 0; + padding: 2px 6px; + background: #f2f2f2; + color: #303030; + border: 0 solid #d0d0d0; } +.ts-control.multi .ts-input > div.active { + background: #e8e8e8; + color: #303030; + border: 0 solid #cacaca; } +.ts-control.multi .ts-input.disabled > div, .ts-control.multi .ts-input.disabled > div.active { + color: #7d7c7c; + background: white; + border: 0 solid white; } +.ts-input > input { + flex: 1 1 auto; + min-width: 7rem; + display: inline-block !important; + padding: 0 !important; + min-height: 0 !important; + max-height: none !important; + max-width: 100% !important; + margin: 0 !important; + text-indent: 0 !important; + border: 0 none !important; + background: none !important; + line-height: inherit !important; + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; + box-shadow: none !important; } +.ts-input > input::-ms-clear { + display: none; } +.ts-input > input:focus { + outline: none !important; } +.ts-input.has-items > input { + margin: 0 4px !important; } +.ts-input.dropdown-active::before { + content: ' '; + display: block; + position: absolute; + background: #f0f0f0; + height: 1px; + bottom: 0; + left: 0; + right: 0; } +.ts-input.rtl { + text-align: right; } +.ts-input.rtl.single .ts-input:after { + left: 15px; + right: auto; } +.ts-input.rtl .ts-input > input { + margin: 0 4px 0 -2px !important; } +.ts-input.disabled { + opacity: 0.5; + background-color: #fafafa; } +.input-hidden .ts-input > input { + opacity: 0; + position: absolute; + left: -10000px; } +.ts-dropdown { + position: absolute; + top: 100%; + left: 0; + width: 100%; + z-index: 10; + border: 1px solid #d0d0d0; + background: #fff; + margin: 0.25rem 0 0 0; + border-top: 0 none; + box-sizing: border-box; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0 0 3px 3px; } +.ts-dropdown [data-selectable] { + cursor: pointer; + overflow: hidden; } +.ts-dropdown [data-selectable] .highlight { + background: rgba(125, 168, 208, 0.2); + border-radius: 1px; } +.ts-dropdown .option, + .ts-dropdown .optgroup-header, + .ts-dropdown .no-results, + .ts-dropdown .create { + padding: 5px 8px; } +.ts-dropdown .option, .ts-dropdown [data-disabled], .ts-dropdown [data-disabled] [data-selectable].option { + cursor: inherit; + opacity: 0.5; } +.ts-dropdown [data-selectable].option { + opacity: 1; + cursor: pointer; } +.ts-dropdown .optgroup:first-child .optgroup-header { + border-top: 0 none; } +.ts-dropdown .optgroup-header { + color: #303030; + background: #fff; + cursor: default; } +.ts-dropdown .create:hover, + .ts-dropdown .option:hover, + .ts-dropdown .active { + background-color: #f5fafd; + color: #495c68; } +.ts-dropdown .create:hover.create, + .ts-dropdown .option:hover.create, + .ts-dropdown .active.create { + color: #495c68; } +.ts-dropdown .create { + color: rgba(48, 48, 48, 0.5); } +.ts-dropdown .spinner { + display: inline-block; + width: 30px; + height: 30px; + margin: 5px 8px; } +.ts-dropdown .spinner:after { + content: " "; + display: block; + width: 24px; + height: 24px; + margin: 3px; + border-radius: 50%; + border: 5px solid #d0d0d0; + border-color: #d0d0d0 transparent #d0d0d0 transparent; + -webkit-animation: lds-dual-ring 1.2s linear infinite; + animation: lds-dual-ring 1.2s linear infinite; } +@-webkit-keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } +.ts-dropdown-content { + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + overflow-scrolling: touch; + scroll-behavior: smooth; } +.tns-outer{padding:0 !important} +.tns-outer [hidden]{display:none !important} +.tns-outer [aria-controls],.tns-outer [data-action]{cursor:pointer} +.tns-slider{transition:all 0s} +.tns-slider>.tns-item{box-sizing:border-box} +.tns-horizontal.tns-subpixel{white-space:nowrap} +.tns-horizontal.tns-subpixel>.tns-item{display:inline-block;vertical-align:top;white-space:normal} +.tns-horizontal.tns-no-subpixel:after{content:'';display:table;clear:both} +.tns-horizontal.tns-no-subpixel>.tns-item{float:left} +.tns-horizontal.tns-carousel.tns-no-subpixel>.tns-item{margin-right:-100%} +.tns-no-calc{position:relative;left:0} +.tns-gallery{position:relative;left:0;min-height:1px} +.tns-gallery>.tns-item{position:absolute;left:-100%;transition:transform 0s, opacity 0s} +.tns-gallery>.tns-slide-active{position:relative;left:auto !important} +.tns-gallery>.tns-moving{transition:all 0.25s} +.tns-autowidth{display:inline-block} +.tns-lazy-img{transition:opacity 0.6s;opacity:0.6} +.tns-lazy-img.tns-complete{opacity:1} +.tns-ah{transition:height 0s} +.tns-ovh{overflow:hidden} +.tns-visually-hidden{position:absolute;left:-10000em} +.tns-transparent{opacity:0;visibility:hidden} +.tns-fadeIn{opacity:1;filter:alpha(opacity=100);z-index:0} +.tns-normal,.tns-fadeOut{opacity:0;filter:alpha(opacity=0);z-index:-1} +.tns-vpfix{white-space:nowrap} +.tns-vpfix>div,.tns-vpfix>li{display:inline-block} +.tns-t-subp2{margin:0 auto;width:310px;position:relative;height:10px;overflow:hidden} +.tns-t-ct{width:2333.3333333%;width:calc(100% * 70 / 3);position:absolute;right:0} +.tns-t-ct:after{content:'';display:table;clear:both} +.tns-t-ct>div{width:1.4285714%;width:calc(100% / 70);height:10px;float:left} +[data-simplebar] { + position: relative; + flex-direction: column; + flex-wrap: wrap; + justify-content: flex-start; + align-content: flex-start; + align-items: flex-start; +} +.simplebar-wrapper { + overflow: hidden; + width: inherit; + height: inherit; + max-width: inherit; + max-height: inherit; +} +.simplebar-mask { + direction: inherit; + position: absolute; + overflow: hidden; + padding: 0; + margin: 0; + left: 0; + top: 0; + bottom: 0; + right: 0; + width: auto !important; + height: auto !important; + z-index: 0; +} +.simplebar-offset { + direction: inherit !important; + box-sizing: inherit !important; + resize: none !important; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: 0; + margin: 0; + -webkit-overflow-scrolling: touch; +} +.simplebar-content-wrapper { + direction: inherit; + box-sizing: border-box !important; + position: relative; + display: block; + height: 100%; /* Required for horizontal native scrollbar to not appear if parent is taller than natural height */ + width: auto; + max-width: 100%; /* Not required for horizontal scroll to trigger */ + max-height: 100%; /* Needed for vertical scroll to trigger */ + scrollbar-width: none; + -ms-overflow-style: none; +} +.simplebar-content-wrapper::-webkit-scrollbar, +.simplebar-hide-scrollbar::-webkit-scrollbar { + width: 0; + height: 0; +} +.simplebar-content:before, +.simplebar-content:after { + content: ' '; + display: table; +} +.simplebar-placeholder { + max-height: 100%; + max-width: 100%; + width: 100%; + pointer-events: none; +} +.simplebar-height-auto-observer-wrapper { + box-sizing: inherit !important; + height: 100%; + width: 100%; + max-width: 1px; + position: relative; + float: left; + max-height: 1px; + overflow: hidden; + z-index: -1; + padding: 0; + margin: 0; + pointer-events: none; + flex-grow: inherit; + flex-shrink: 0; + flex-basis: 0; +} +.simplebar-height-auto-observer { + box-sizing: inherit; + display: block; + opacity: 0; + position: absolute; + top: 0; + left: 0; + height: 1000%; + width: 1000%; + min-height: 1px; + min-width: 1px; + overflow: hidden; + pointer-events: none; + z-index: -1; +} +.simplebar-track { + z-index: 1; + position: absolute; + right: 0; + bottom: 0; + pointer-events: none; + overflow: hidden; +} +[data-simplebar].simplebar-dragging .simplebar-content { + pointer-events: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-select: none; +} +[data-simplebar].simplebar-dragging .simplebar-track { + pointer-events: all; +} +.simplebar-scrollbar { + position: absolute; + left: 0; + right: 0; + min-height: 10px; +} +.simplebar-scrollbar:before { + position: absolute; + content: ''; + background: black; + border-radius: 7px; + left: 2px; + right: 2px; + opacity: 0; + transition: opacity 0.2s linear; +} +.simplebar-scrollbar.simplebar-visible:before { + /* When hovered, remove all transitions from drag handle */ + opacity: 0.5; + transition: opacity 0s linear; +} +.simplebar-track.simplebar-vertical { + top: 0; + width: 11px; +} +.simplebar-track.simplebar-vertical .simplebar-scrollbar:before { + top: 2px; + bottom: 2px; +} +.simplebar-track.simplebar-horizontal { + left: 0; + height: 11px; +} +.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before { + height: 100%; + left: 2px; + right: 2px; +} +.simplebar-track.simplebar-horizontal .simplebar-scrollbar { + right: auto; + left: 0; + top: 2px; + height: 7px; + min-height: 0; + min-width: 10px; + width: auto; +} +/* Rtl support */ +[data-simplebar-direction='rtl'] .simplebar-track.simplebar-vertical { + right: auto; + left: 0; +} +.hs-dummy-scrollbar-size { + direction: rtl; + position: fixed; + opacity: 0; + visibility: hidden; + height: 500px; + width: 500px; + overflow-y: hidden; + overflow-x: scroll; +} +.simplebar-hide-scrollbar { + position: fixed; + left: 0; + visibility: hidden; + overflow-y: scroll; + scrollbar-width: none; + -ms-overflow-style: none; +} +/* + |-------------------------------------------------------------------------- + | Components + |-------------------------------------------------------------------------- + | + | Import CSS/SCSS components. + | + */ +html{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +@media (min-width: 768px){ + html{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + } +} +html.dark{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +html.dark body{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +html.dark body *, html.dark body ::before, html.dark body ::after{ + border-color: rgb(255 255 255 / 0.05); +} +html body{ + overflow-x: hidden; + font-family: Roboto; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +@media (max-width: calc(768px - 1px)) { + html body{ + padding-left: 2rem; + padding-right: 2rem; + } + } +@media (max-width: calc(640px - 1px)) { + html body{ + padding-left: 0.75rem; + padding-right: 0.75rem; + } + } +.login{ + position: relative; + overflow: hidden; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-top: 0.75rem; + padding-bottom: 0.75rem; + padding-left: 2rem; + padding-right: 2rem; +} +.dark .login{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .login{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + } + .dark .login{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + } + } +.login:before { + content: ""; + position: absolute; + top: 0px; + bottom: 0px; + left: 0px; + margin-top: -28%; + margin-bottom: -15%; + margin-left: -13%; + width: 57%; + --tw-rotate: -4deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-radius: 100%; + background-color: rgb(var(--color-primary) / 0.2); + } +.dark .login:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .login:before{ + display: none; + } + } +.login:after { + content: ""; + position: absolute; + top: 0px; + bottom: 0px; + left: 0px; + margin-top: -20%; + margin-bottom: -12%; + margin-left: -13%; + width: 57%; + --tw-rotate: -4deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-radius: 100%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + } +.dark .login:after{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .login:after{ + display: none; + } + } +.login .login__input { + min-width: 350px; + } +@media (max-width: calc(1280px - 1px)) { + .login .login__input{ + min-width: 100%; + } + } +.table-report:not(.table-report--bordered):not(.table-report--tabulator) { + border-spacing: 0 10px; + border-collapse: separate; + } +.table-report:not(.table-report--bordered):not(.table-report--tabulator) th{ + border-bottom-width: 0px; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td{ + border-bottom-width: 0px; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.dark .table-report:not(.table-report--bordered):not(.table-report--tabulator) td{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td { + box-shadow: 20px 3px 20px #0000000b; + } +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td:first-child{ + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td:last-child{ + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td.table-report__action{ + position: relative; + padding-top: 0px; + padding-bottom: 0px; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td.table-report__action::before{ + position: absolute; + top: 0px; + bottom: 0px; + left: 0px; + margin-top: auto; + margin-bottom: auto; + display: block; + height: 2rem; + width: 1px; + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.dark .table-report:not(.table-report--bordered):not(.table-report--tabulator) td.table-report__action::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.table-report img { + box-shadow: 0px 0px 0px 2px #fff, 1px 1px 5px rgba(0, 0, 0, 0.32); + } +.table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(3) .tabulator-col-content .tabulator-col-title, .table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(4) .tabulator-col-content .tabulator-col-title, .table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(5) .tabulator-col-content .tabulator-col-title, .table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(6) .tabulator-col-content .tabulator-col-title{ + text-align: center; +} +.dark .table-report img { + box-shadow: 0px 0px 0px 2px #3f4865, 1px 1px 5px rgba(0, 0, 0, 0.32); + } +.report-chart{ + position: relative; +} +.report-chart:before { + content: ""; + position: absolute; + left: 0px; + top: 0px; + bottom: 0px; + margin-left: 2.5rem; + margin-bottom: 1.75rem; + display: block; + width: 4rem; + background-image: linear-gradient(to right, var(--tw-gradient-stops)); + --tw-gradient-from: #fff; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / 0.8), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-to: transparent; + } +.dark .report-chart:before{ + --tw-gradient-from: rgb(var(--color-darkmode-600)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-600) / 0)); +} +.report-chart:after { + content: ""; + position: absolute; + right: 0px; + top: 0px; + bottom: 0px; + margin-bottom: 1.75rem; + display: block; + width: 4rem; + background-image: linear-gradient(to left, var(--tw-gradient-stops)); + --tw-gradient-from: #fff; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / 0.8), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-to: transparent; + } +.dark .report-chart:after{ + --tw-gradient-from: rgb(var(--color-darkmode-600)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-600) / 0)); +} +.search{ + position: relative; +} +.search .search__input{ + width: 14rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + padding-right: 2rem; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: width; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.search .search__input:focus{ + border-color: transparent; +} +.dark .search .search__input{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.search .search__input:focus{ + width: 18rem; +} +.search .search__icon{ + position: absolute; + top: 0px; + bottom: 0px; + right: 0px; + margin-top: auto; + margin-bottom: auto; + margin-right: 0.75rem; + height: 1.25rem; + width: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.notification{ + position: relative; + color: rgb(255 255 255 / 0.7); +} +.notification .notification__icon{ + height: 1.25rem; + width: 1.25rem; +} +.notification.notification--bullet:before { + content: ""; + width: 8px; + height: 8px; + position: absolute; + top: -2px; + right: 0px; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + } +.report-box{ + position: relative; +} +.report-box:before { + content: ""; + width: 90%; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-top: 0.75rem; + height: 100%; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-50) / var(--tw-bg-opacity)); + } +.dark .report-box:before{ + background-color: rgb(var(--color-darkmode-400) / 0.7); +} +.report-box .report-box__icon { + width: 28px; + height: 28px; + } +.report-box .report-box__indicator { + padding-top: 3px; + padding-bottom: 3px; + display: flex; + align-items: center; + border-radius: 9999px; + padding-left: 0.5rem; + padding-right: 0.25rem; + font-size: 0.75rem; + line-height: 1rem; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } +.report-box-2{ + position: relative; +} +.report-box-2:before { + content: ""; + width: 90%; + background: #f9fafc; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-top: 0.75rem; + height: 100%; + border-radius: 0.375rem; + } +.dark .report-box-2:before{ + background-color: rgb(var(--color-darkmode-400) / 0.7); +} +.report-box-2 .report-box-2__indicator { + padding-top: 3px; + padding-bottom: 3px; + margin-top: 0.75rem; + margin-right: auto; + display: flex; + align-items: center; + border-radius: 9999px; + padding-left: 0.5rem; + padding-right: 0.25rem; + font-size: 0.75rem; + line-height: 1rem; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } +.report-box-3 { + margin-left: -22px; + margin-right: -22px; + position: relative; +} +@media (max-width: calc(768px - 1px)) { + .report-box-3 { + margin-left: -16px; + margin-right: -16px; + } + } +.report-box-3:before { + content: ""; + border-radius: 30px 30px 0px 0px; + transform: translatey(35px); + -webkit-animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + position: absolute; + top: 0px; + left: 0px; + right: 0px; + height: 100%; + width: 100%; + background-color: rgb(var(--color-slate-200) / 0.7); + opacity: 0; + } +.dark .report-box-3:before{ + background-color: rgb(var(--color-darkmode-500) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.5; +} +.report-box-3.report-box-3--content { + padding: 0px 22px; + min-height: 400px; + } +.report-box-3.report-box-3--content:before { + content: ""; + border-radius: 30px; + transform: translatey(35px); + -webkit-animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + top: 0px; + left: 0px; + right: 0px; + height: 100%; + width: 100%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + opacity: 0; + } +.dark .report-box-3.report-box-3--content:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .report-box-3.report-box-3--content:before{ + border-top-left-radius: 0px; + border-top-right-radius: 0px; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } + } +@-webkit-keyframes intro-report-box-3-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-report-box-3-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +.report-box-4{ + position: relative; +} +.report-box-4:before { + content: ""; + border-radius: 30px 30px 0px 0px; + transform: translatey(35px); + -webkit-animation: 0.4s intro-report-box-4-animation ease-in-out 0.33333s; + animation: 0.4s intro-report-box-4-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + margin-left: -22px; + margin-right: -22px; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + top: 0px; + left: 0px; + right: 0px; + display: none; + height: 100%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + opacity: 0; + } +.dark .report-box-4:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .report-box-4:before{ + display: block; + } + } +@media (max-width: calc(768px - 1px)) { + .report-box-4:before { + margin-left: -16px; + margin-right: -16px; + } + } +.report-box-4 .report-box-4__content { + flex: 1 1 0; + } +@-webkit-keyframes intro-report-box-4-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-report-box-4-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +.content { + padding: 0px 22px; + position: relative; + margin-top: 0.25rem; + min-height: 100vh; + min-width: 0px; + flex: 1 1 0%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-top: 5rem; + padding-bottom: 2.5rem; +} +.dark .content{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(768px - 1px)) { + .content { + border-radius: 30px; + margin-top: 2.5rem; + max-width: 100%; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0px; + } + } +.content:before { + content: ""; + display: block; + height: 1px; + width: 100%; + } +.content.content--top-nav { + border-radius: 35px 35px 0 0; + margin-top: 1.25rem; + padding-top: 0px; + } +.top-nav { + transform: translatey(35px); + -webkit-animation: 0.4s intro-top-menu-animation ease-in-out 0.33333s; + animation: 0.4s intro-top-menu-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; + position: relative; + z-index: 50; + margin-top: -1rem; + padding-top: 8rem; + opacity: 0; +} +@media (max-width: calc(768px - 1px)) { + .top-nav{ + display: none; + } + } +.top-nav > ul > li:nth-child(1) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.top-nav > ul > li:nth-child(1) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(2) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.top-nav > ul > li:nth-child(2) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(3) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.top-nav > ul > li:nth-child(3) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(4) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.top-nav > ul > li:nth-child(4) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(5) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.top-nav > ul > li:nth-child(5) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(6) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.top-nav > ul > li:nth-child(6) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(7) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.top-nav > ul > li:nth-child(7) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(8) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.top-nav > ul > li:nth-child(8) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(9) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.top-nav > ul > li:nth-child(9) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(10) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.top-nav > ul > li:nth-child(10) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(11) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.top-nav > ul > li:nth-child(11) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(12) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.top-nav > ul > li:nth-child(12) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(13) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.top-nav > ul > li:nth-child(13) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(14) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.top-nav > ul > li:nth-child(14) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(15) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.top-nav > ul > li:nth-child(15) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(16) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.top-nav > ul > li:nth-child(16) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(17) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.top-nav > ul > li:nth-child(17) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(18) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.top-nav > ul > li:nth-child(18) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(19) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.top-nav > ul > li:nth-child(19) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(20) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.top-nav > ul > li:nth-child(20) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(21) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.top-nav > ul > li:nth-child(21) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(22) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.top-nav > ul > li:nth-child(22) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(23) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.top-nav > ul > li:nth-child(23) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(24) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.top-nav > ul > li:nth-child(24) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(25) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.top-nav > ul > li:nth-child(25) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(26) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.top-nav > ul > li:nth-child(26) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(27) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.top-nav > ul > li:nth-child(27) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(28) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.top-nav > ul > li:nth-child(28) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(29) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.top-nav > ul > li:nth-child(29) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(30) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.top-nav > ul > li:nth-child(30) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(31) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.top-nav > ul > li:nth-child(31) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(32) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.top-nav > ul > li:nth-child(32) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(33) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.top-nav > ul > li:nth-child(33) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(34) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.top-nav > ul > li:nth-child(34) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(35) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.top-nav > ul > li:nth-child(35) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(36) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.top-nav > ul > li:nth-child(36) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(37) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.top-nav > ul > li:nth-child(37) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(38) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.top-nav > ul > li:nth-child(38) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(39) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.top-nav > ul > li:nth-child(39) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(40) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.top-nav > ul > li:nth-child(40) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(41) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.top-nav > ul > li:nth-child(41) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(42) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.top-nav > ul > li:nth-child(42) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(43) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.top-nav > ul > li:nth-child(43) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(44) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.top-nav > ul > li:nth-child(44) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(45) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.top-nav > ul > li:nth-child(45) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(46) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.top-nav > ul > li:nth-child(46) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(47) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.top-nav > ul > li:nth-child(47) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(48) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.top-nav > ul > li:nth-child(48) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(49) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.top-nav > ul > li:nth-child(49) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(50) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.top-nav > ul > li:nth-child(50) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul{ + padding: 0px 50px; + display: flex; + flex-wrap: wrap; +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + } +.top-nav > ul > li > .top-menu{ + margin-top: 3px; +} +.top-nav > ul > li > .top-menu > .top-menu__icon{ + margin-top: -3px; +} +.top-nav > ul > li > .top-menu > .top-menu__title{ + margin-top: -3px; +} +.top-nav > ul li{ + position: relative; +} +.top-nav > ul li:hover > .top-menu > .top-menu__title > .top-menu__sub-icon{ + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.top-nav > ul li:hover > ul{ + display: block; +} +.top-nav > ul li:hover > ul li:hover + .top-menu + > .top-menu__title + > .top-menu__sub-icon{ + --tw-rotate: -90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.top-nav > ul li .top-menu { + height: 55px; + position: relative; + margin-right: 0.25rem; + display: flex; + align-items: center; + border-radius: 0.75rem; + padding-left: 1.25rem; + padding-right: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); + } +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu{ + border-radius: 9999px; + } + } +.top-nav > ul li .top-menu.top-menu--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .top-nav > ul li .top-menu.top-menu--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.top-nav > ul li .top-menu.top-menu--active:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .top-nav > ul li .top-menu.top-menu--active:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active:before{ + display: none; + } + } +.top-nav > ul li .top-menu.top-menu--active:after { + content: ""; + width: 20px; + height: 80px; + margin-bottom: -74px; + -webkit-animation: 0.3s active-top-menu-chevron-animation + ease-in-out 0.33333s; + animation: 0.3s active-top-menu-chevron-animation + ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 1s; + animation-delay: 1s; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E"); + position: absolute; + left: 0px; + right: 0px; + bottom: 0px; + margin-left: auto; + margin-right: auto; + --tw-rotate: 90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + background-size: cover; + background-repeat: no-repeat; + opacity: 0; + } +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active:after{ + display: none; + } + } +.dark .top-nav > ul li .top-menu.top-menu--active .top-menu__icon{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active .top-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); + } + } +.top-nav > ul li .top-menu.top-menu--active .top-menu__title{ + font-weight: 500; +} +.dark .top-nav > ul li .top-menu.top-menu--active .top-menu__title{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active .top-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + } + } +.top-nav > ul li .top-menu .top-menu__icon{ + z-index: 10; +} +.dark .top-nav > ul li .top-menu .top-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.top-nav > ul li .top-menu .top-menu__title{ + z-index: 10; +} +.dark .top-nav > ul li .top-menu .top-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.top-nav > ul li .top-menu .top-menu__title{ + margin-left: 0.75rem; + display: flex; + align-items: center; + white-space: nowrap; +} +.top-nav > ul li .top-menu .top-menu__title .top-menu__sub-icon{ + margin-left: 0.5rem; + height: 1rem; + width: 1rem; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu .top-menu__title .top-menu__sub-icon{ + display: none; + } + } +.top-nav > ul li ul { + box-shadow: 0px 3px 20px #00000014; + position: absolute; + z-index: 20; + margin-top: 0.25rem; + display: none; + width: 14rem; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-left: 0px; + padding-right: 0px; + } +.top-nav > ul li ul::before{ + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + height: 100%; + width: 100%; + border-radius: 0.375rem; + content: var(--tw-content); + background-color: rgb(255 255 255 / 0.04); +} +.dark .top-nav > ul li ul::before{ + content: var(--tw-content); + background-color: rgb(0 0 0 / 0.1); +} +.top-nav > ul li ul:after { + content: ""; + position: absolute; + top: 0px; + left: 0px; + margin-top: -0.25rem; + height: 0.25rem; + width: 100%; + cursor: pointer; + } +.top-nav > ul li ul li{ + position: relative; + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.top-nav > ul li ul li .top-menu{ + margin-right: 0px; + padding-left: 0px; + padding-right: 0px; +} +.top-nav > ul li ul li .top-menu .top-menu__icon:before{ + display: none; +} +.top-nav > ul li ul li .top-menu .top-menu__title{ + width: 100%; +} +.top-nav > ul li ul li .top-menu .top-menu__title .top-menu__sub-icon{ + margin-left: auto; +} +.top-nav > ul li ul ul { + left: 100%; + top: 0px; + margin-top: 0px; + margin-left: 0px; + display: none; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + } +.top-nav > ul li ul ul::before{ + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + height: 100%; + width: 100%; + border-radius: 0.375rem; + content: var(--tw-content); + background-color: rgb(255 255 255 / 0.04); +} +.dark .top-nav > ul li ul ul::before{ + content: var(--tw-content); + background-color: rgb(0 0 0 / 0.1); +} +.top-nav > ul > li:hover > .top-menu:not(.top-menu--active){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .top-nav > ul > li:hover > .top-menu:not(.top-menu--active){ + background-color: transparent; +} +.top-nav > ul > li:hover > .top-menu:not(.top-menu--active):before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .top-nav > ul > li:hover > .top-menu:not(.top-menu--active):before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul > li:hover > .top-menu:not(.top-menu--active):before{ + border-radius: 9999px; + } + } +@-webkit-keyframes intro-top-menu-animation { + 100%{ + opacity: 1; + transform: translateY(0px); + } +} +@keyframes intro-top-menu-animation { + 100%{ + opacity: 1; + transform: translateY(0px); + } +} +@-webkit-keyframes intro-active-top-menu-animation { + 100%{ + z-index: 10; + } +} +@keyframes intro-active-top-menu-animation { + 100%{ + z-index: 10; + } +} +@-webkit-keyframes active-top-menu-chevron-animation { + 100% { + margin-bottom: -54px; + opacity: 1; + } +} +@keyframes active-top-menu-chevron-animation { + 100% { + margin-bottom: -54px; + opacity: 1; + } +} +.dark .top-nav > ul li .top-menu.top-menu--active:after { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E"); + } +.dark .top-nav > ul li ul{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .top-nav > ul ul { + box-shadow: 0px 3px 7px #0000001c; + } +.side-nav { + width: 260px; + z-index: 50; + margin-top: -1rem; + overflow-x: hidden; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-bottom: 4rem; + padding-top: 8rem; +} +@media (max-width: calc(1280px - 1px)) { + .side-nav { + width: 105px; + } + } +@media (max-width: calc(768px - 1px)) { + .side-nav{ + display: none; + } + } +.side-nav.side-nav--simple { + width: 105px; + } +.side-nav.side-nav--simple .side-menu .side-menu__title{ + display: none; +} +.side-nav.side-nav--simple .side-menu .side-menu__title .side-menu__sub-icon{ + display: none; +} +.side-nav.side-nav--simple .side-menu:not(.side-menu--active) .side-menu__icon:before{ + display: none; +} +.side-nav .side-nav__devider{ + position: relative; + z-index: 10; + height: 1px; + width: 100%; + background-color: rgb(255 255 255 / 0.08); +} +.dark .side-nav .side-nav__devider{ + background-color: rgb(255 255 255 / 0.07); +} +.side-nav .side-menu{ + position: relative; + margin-bottom: 0.25rem; + display: flex; + height: 50px; + align-items: center; + border-radius: 0.75rem; + padding-left: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .side-nav .side-menu{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav .side-menu .side-menu__title{ + margin-left: 0.75rem; + display: flex; + width: 100%; + align-items: center; +} +.side-nav .side-menu .side-menu__title .side-menu__sub-icon{ + margin-left: auto; + margin-right: 1.25rem; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +.side-nav .side-menu .side-menu__title .side-menu__sub-icon svg{ + height: 1rem; + width: 1rem; +} +@media (max-width: calc(1280px - 1px)) { + .side-nav .side-menu .side-menu__title .side-menu__sub-icon{ + display: none; + } + .side-nav .side-menu .side-menu__title{ + display: none; + } + } +.side-nav > ul > li:nth-child(1).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.side-nav > ul > li:nth-child(1) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.side-nav > ul > li:nth-child(1) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(2).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.side-nav > ul > li:nth-child(2) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.side-nav > ul > li:nth-child(2) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(3).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.side-nav > ul > li:nth-child(3) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.side-nav > ul > li:nth-child(3) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(4).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.side-nav > ul > li:nth-child(4) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.side-nav > ul > li:nth-child(4) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(5).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.side-nav > ul > li:nth-child(5) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.side-nav > ul > li:nth-child(5) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(6).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.side-nav > ul > li:nth-child(6) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.side-nav > ul > li:nth-child(6) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(7).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.side-nav > ul > li:nth-child(7) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.side-nav > ul > li:nth-child(7) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(8).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.side-nav > ul > li:nth-child(8) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.side-nav > ul > li:nth-child(8) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(9).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.side-nav > ul > li:nth-child(9) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.side-nav > ul > li:nth-child(9) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(10).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.side-nav > ul > li:nth-child(10) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.side-nav > ul > li:nth-child(10) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(11).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.side-nav > ul > li:nth-child(11) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.side-nav > ul > li:nth-child(11) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(12).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.side-nav > ul > li:nth-child(12) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.side-nav > ul > li:nth-child(12) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(13).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.side-nav > ul > li:nth-child(13) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.side-nav > ul > li:nth-child(13) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(14).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.side-nav > ul > li:nth-child(14) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.side-nav > ul > li:nth-child(14) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(15).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.side-nav > ul > li:nth-child(15) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.side-nav > ul > li:nth-child(15) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(16).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.side-nav > ul > li:nth-child(16) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.side-nav > ul > li:nth-child(16) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(17).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.side-nav > ul > li:nth-child(17) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.side-nav > ul > li:nth-child(17) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(18).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.side-nav > ul > li:nth-child(18) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.side-nav > ul > li:nth-child(18) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(19).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.side-nav > ul > li:nth-child(19) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.side-nav > ul > li:nth-child(19) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(20).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.side-nav > ul > li:nth-child(20) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.side-nav > ul > li:nth-child(20) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(21).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.side-nav > ul > li:nth-child(21) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.side-nav > ul > li:nth-child(21) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(22).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.side-nav > ul > li:nth-child(22) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.side-nav > ul > li:nth-child(22) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(23).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.side-nav > ul > li:nth-child(23) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.side-nav > ul > li:nth-child(23) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(24).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.side-nav > ul > li:nth-child(24) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.side-nav > ul > li:nth-child(24) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(25).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.side-nav > ul > li:nth-child(25) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.side-nav > ul > li:nth-child(25) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(26).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.side-nav > ul > li:nth-child(26) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.side-nav > ul > li:nth-child(26) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(27).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.side-nav > ul > li:nth-child(27) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.side-nav > ul > li:nth-child(27) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(28).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.side-nav > ul > li:nth-child(28) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.side-nav > ul > li:nth-child(28) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(29).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.side-nav > ul > li:nth-child(29) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.side-nav > ul > li:nth-child(29) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(30).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.side-nav > ul > li:nth-child(30) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.side-nav > ul > li:nth-child(30) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(31).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.side-nav > ul > li:nth-child(31) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.side-nav > ul > li:nth-child(31) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(32).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.side-nav > ul > li:nth-child(32) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.side-nav > ul > li:nth-child(32) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(33).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.side-nav > ul > li:nth-child(33) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.side-nav > ul > li:nth-child(33) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(34).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.side-nav > ul > li:nth-child(34) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.side-nav > ul > li:nth-child(34) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(35).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.side-nav > ul > li:nth-child(35) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.side-nav > ul > li:nth-child(35) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(36).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.side-nav > ul > li:nth-child(36) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.side-nav > ul > li:nth-child(36) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(37).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.side-nav > ul > li:nth-child(37) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.side-nav > ul > li:nth-child(37) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(38).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.side-nav > ul > li:nth-child(38) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.side-nav > ul > li:nth-child(38) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(39).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.side-nav > ul > li:nth-child(39) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.side-nav > ul > li:nth-child(39) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(40).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.side-nav > ul > li:nth-child(40) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.side-nav > ul > li:nth-child(40) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(41).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.side-nav > ul > li:nth-child(41) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.side-nav > ul > li:nth-child(41) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(42).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.side-nav > ul > li:nth-child(42) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.side-nav > ul > li:nth-child(42) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(43).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.side-nav > ul > li:nth-child(43) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.side-nav > ul > li:nth-child(43) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(44).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.side-nav > ul > li:nth-child(44) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.side-nav > ul > li:nth-child(44) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(45).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.side-nav > ul > li:nth-child(45) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.side-nav > ul > li:nth-child(45) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(46).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.side-nav > ul > li:nth-child(46) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.side-nav > ul > li:nth-child(46) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(47).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.side-nav > ul > li:nth-child(47) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.side-nav > ul > li:nth-child(47) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(48).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.side-nav > ul > li:nth-child(48) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.side-nav > ul > li:nth-child(48) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(49).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.side-nav > ul > li:nth-child(49) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.side-nav > ul > li:nth-child(49) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(50).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.side-nav > ul > li:nth-child(50) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.side-nav > ul > li:nth-child(50) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul ul li:nth-child(1) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.side-nav > ul ul li:nth-child(2) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.side-nav > ul ul li:nth-child(3) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.side-nav > ul ul li:nth-child(4) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.side-nav > ul ul li:nth-child(5) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.side-nav > ul ul li:nth-child(6) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.side-nav > ul ul li:nth-child(7) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.side-nav > ul ul li:nth-child(8) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.side-nav > ul ul li:nth-child(9) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.side-nav > ul ul li:nth-child(10) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.side-nav > ul ul li:nth-child(11) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.side-nav > ul ul li:nth-child(12) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.side-nav > ul ul li:nth-child(13) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.side-nav > ul ul li:nth-child(14) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.side-nav > ul ul li:nth-child(15) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.side-nav > ul ul li:nth-child(16) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.side-nav > ul ul li:nth-child(17) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.side-nav > ul ul li:nth-child(18) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.side-nav > ul ul li:nth-child(19) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.side-nav > ul ul li:nth-child(20) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.side-nav > ul ul li:nth-child(21) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.side-nav > ul ul li:nth-child(22) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.side-nav > ul ul li:nth-child(23) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.side-nav > ul ul li:nth-child(24) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.side-nav > ul ul li:nth-child(25) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.side-nav > ul ul li:nth-child(26) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.side-nav > ul ul li:nth-child(27) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.side-nav > ul ul li:nth-child(28) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.side-nav > ul ul li:nth-child(29) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.side-nav > ul ul li:nth-child(30) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.side-nav > ul ul li:nth-child(31) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.side-nav > ul ul li:nth-child(32) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.side-nav > ul ul li:nth-child(33) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.side-nav > ul ul li:nth-child(34) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.side-nav > ul ul li:nth-child(35) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.side-nav > ul ul li:nth-child(36) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.side-nav > ul ul li:nth-child(37) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.side-nav > ul ul li:nth-child(38) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.side-nav > ul ul li:nth-child(39) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.side-nav > ul ul li:nth-child(40) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.side-nav > ul ul li:nth-child(41) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.side-nav > ul ul li:nth-child(42) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.side-nav > ul ul li:nth-child(43) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.side-nav > ul ul li:nth-child(44) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.side-nav > ul ul li:nth-child(45) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.side-nav > ul ul li:nth-child(46) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.side-nav > ul ul li:nth-child(47) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.side-nav > ul ul li:nth-child(48) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.side-nav > ul ul li:nth-child(49) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.side-nav > ul ul li:nth-child(50) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.side-nav > ul ul{ + position: relative; + display: none; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.04); +} +.dark .side-nav > ul ul{ + background-color: transparent; +} +.side-nav > ul ul:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.3); + } +.dark .side-nav > ul ul:before{ + background-color: rgb(var(--color-darkmode-900) / 0.3); +} +.side-nav > ul ul.side-menu__sub-open{ + display: block; +} +.side-nav > ul ul .side-menu__icon:before{ + display: none; +} +.side-nav > ul ul li a:not(.side-menu--active){ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .side-nav > ul ul li a:not(.side-menu--active){ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.side-nav > ul ul li a.side-menu--active .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.dark .side-nav > ul ul li a.side-menu--active .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav > ul ul li a.side-menu--active .side-menu__title{ + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.dark .side-nav > ul ul li a.side-menu--active .side-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav > ul ul ul{ + position: relative; + display: none; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.04); +} +.dark .side-nav > ul ul ul{ + background-color: transparent; +} +.side-nav > ul ul ul:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.3); + } +.dark .side-nav > ul ul ul:before{ + background-color: rgb(var(--color-darkmode-900) / 0.3); +} +.side-nav > ul > li > .side-menu.side-menu--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .side-nav > ul > li > .side-menu.side-menu--active{ + background-color: transparent; +} +.side-nav > ul > li > .side-menu.side-menu--active:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .side-nav > ul > li > .side-menu.side-menu--active:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.side-nav > ul > li > .side-menu.side-menu--active:after { + content: ""; + width: 20px; + height: 80px; + margin-right: -47px; + -webkit-animation: 0.3s active-side-menu-chevron-animation + ease-in-out 0.33333s; + animation: 0.3s active-side-menu-chevron-animation + ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 1s; + animation-delay: 1s; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E"); + position: absolute; + top: 0px; + bottom: 0px; + right: 0px; + margin-top: auto; + margin-bottom: auto; + background-size: cover; + background-repeat: no-repeat; + opacity: 0; + } +.side-nav > ul > li > .side-menu.side-menu--active .side-menu__icon{ + z-index: 10; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu.side-menu--active .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav > ul > li > .side-menu.side-menu--active .side-menu__title{ + z-index: 10; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu.side-menu--active .side-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu .side-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open){ + background-color: transparent; +} +.side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open):before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@-webkit-keyframes intro-devider-animation { + 100%{ + opacity: 1; + } +} +@keyframes intro-devider-animation { + 100%{ + opacity: 1; + } +} +@-webkit-keyframes intro-menu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-menu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@-webkit-keyframes intro-submenu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-submenu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@-webkit-keyframes intro-active-menu-animation { + 100%{ + z-index: 10; + } +} +@keyframes intro-active-menu-animation { + 100%{ + z-index: 10; + } +} +@-webkit-keyframes active-side-menu-chevron-animation { + 100% { + margin-right: -27px; + opacity: 1; + } +} +@keyframes active-side-menu-chevron-animation { + 100% { + margin-right: -27px; + opacity: 1; + } +} +.dark .side-nav > ul > li > .side-menu.side-menu--active:after { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E"); + } +.breadcrumb.breadcrumb-light{ + margin-left: 2.5rem; + height: 100%; + border-left-width: 1px; + border-color: rgb(255 255 255 / 0.08); + padding-left: 1.5rem; +} +.breadcrumb.breadcrumb-light .active{ + color: rgb(255 255 255 / 0.7) !important; +} +@media (max-width: calc(768px - 1px)) { + .breadcrumb.breadcrumb-light{ + margin-left: 0px; + border-left-width: 0px; + padding-left: 0px; + } + } +.toastify { + background: none; + padding: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +@media (max-width: calc(768px - 1px)) { + .toastify { + max-width: calc(100% - 30px); + } + } +.toastify .toast-close{ + position: absolute; + top: 0px; + bottom: 0px; + right: 0px; + display: flex; + align-items: center; + padding-right: 0.75rem; + color: transparent; + opacity: 1; +} +.toastify .toast-close:before { + content: "×"; + margin-top: -0.375rem; + display: block; + font-size: 1.875rem; + line-height: 2.25rem; + font-weight: 300; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); + } +.toastify-content{ + border-radius: 0.5rem; + border-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-top: 1.25rem; + padding-bottom: 1.25rem; + padding-left: 1.25rem; + padding-right: 3.5rem; + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .toastify-content{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.lucide{ + stroke-width: 1.5; +} +.top-bar-boxed.top-bar-boxed--simple-menu .logo{ + width: auto; +} +.top-bar-boxed.top-bar-boxed--simple-menu .logo .logo__text{ + display: none; +} +@media (min-width: 768px){ + .dark .top-bar-boxed.top-bar-boxed--top-menu{ + --tw-gradient-from: rgb(var(--color-darkmode-800)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-800) / 0)); + } +} +.top-bar-boxed.top-bar-boxed--top-menu .logo{ + width: auto; +} +@media (min-width: 768px){ + .top-bar-boxed.top-bar-boxed--top-menu .breadcrumb{ + margin-left: 2.5rem; + padding-left: 2.5rem; + } +} +.top-bar-boxed:not(.top-bar-boxed--top-menu) .logo__text{ + display: none; +} +@media (min-width: 1280px){ + .top-bar-boxed:not(.top-bar-boxed--top-menu) .logo__text{ + display: block; + } +} +.top-bar-boxed:before { + content: ""; + position: absolute; + right: 0px; + bottom: 0px; + left: 0px; + top: 0px; + margin-left: 1.75rem; + margin-right: 1.75rem; + margin-top: 0.75rem; + display: none; + height: 65px; + border-radius: 0.75rem; + background-color: rgb(var(--color-primary) / 0.3); + } +.dark .top-bar-boxed:before{ + background-color: rgb(var(--color-darkmode-600) / 0.3); +} +@media (min-width: 768px){ + .top-bar-boxed:before{ + display: block; + } +} +.top-bar-boxed:after { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + margin-left: 0.75rem; + margin-right: 0.75rem; + margin-top: 1.25rem; + display: none; + height: 65px; + border-radius: 0.75rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.dark .top-bar-boxed:after{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +@media (min-width: 768px){ + .top-bar-boxed:after{ + display: block; + } +} +.mobile-menu{ + position: fixed; + z-index: 60; + margin-left: -2rem; + margin-right: -2rem; + margin-top: -1.25rem; + margin-bottom: 1.5rem; + width: 100%; + border-bottom-width: 1px; + border-color: rgb(255 255 255 / 0.08); + background-color: rgb(var(--color-primary) / 0.9); +} +.dark .mobile-menu{ + background-color: rgb(var(--color-darkmode-800) / 0.9); +} +.mobile-menu:before { + content: ""; + visibility: hidden; + position: fixed; + left: 0px; + right: 0px; + z-index: 10; + height: 100vh; + width: 100%; + background-color: rgb(0 0 0 / 0.9); + opacity: 0; + transition-property: opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + } +.mobile-menu.mobile-menu--active:before { + content: ""; + visibility: visible; + opacity: 1; + } +.mobile-menu.mobile-menu--active .scrollable{ + margin-left: 0px; +} +.mobile-menu.mobile-menu--active .scrollable .mobile-menu-toggler{ + visibility: visible; + opacity: 1; +} +@media (max-width: calc(640px - 1px)) { + .mobile-menu{ + margin-left: -0.75rem; + margin-right: -0.75rem; + } + } +.mobile-menu .mobile-menu-bar { + height: 70px; + display: flex; + align-items: center; + padding-left: 2rem; + padding-right: 2rem; + } +@media (max-width: calc(640px - 1px)) { + .mobile-menu .mobile-menu-bar{ + padding-left: 0.75rem; + padding-right: 0.75rem; + } + } +.mobile-menu .scrollable{ + position: fixed; + top: 0px; + left: 0px; + z-index: 20; + margin-left: -100%; + height: 100vh; + width: 270px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + transition-property: all; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.dark .mobile-menu .scrollable{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.mobile-menu .scrollable .mobile-menu-toggler{ + visibility: hidden; + position: fixed; + top: 0px; + right: 0px; + margin-top: 1rem; + margin-right: 1rem; + opacity: 0; + transition-property: opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.mobile-menu .scrollable .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{ + background-color: rgb(0 0 0 / 0.5); +} +.mobile-menu ul.menu__sub-open{ + display: block; +} +.mobile-menu ul li { + max-width: 1280px; + margin-left: auto; + margin-right: auto; + width: 100%; + } +.mobile-menu ul li ul{ + margin-left: 1rem; + margin-right: 1rem; + margin-top: 0.25rem; + margin-bottom: 0.25rem; + display: none; + border-radius: 0.5rem; + background-color: rgb(0 0 0 / 0.1); +} +.dark .mobile-menu ul li ul{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.mobile-menu ul li ul .menu{ + padding-left: 1rem; + padding-right: 1rem; +} +.mobile-menu ul li ul ul{ + margin-left: 0px; + margin-right: 0px; + display: none; + border-radius: 0.5rem; + background-color: rgb(0 0 0 / 0.1); +} +.dark .mobile-menu ul li ul ul{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.mobile-menu .menu__devider{ + position: relative; + height: 1px; + width: 100%; + background-color: rgb(255 255 255 / 0.08); +} +.mobile-menu .menu { + height: 50px; + display: flex; + align-items: center; + padding-left: 1.5rem; + padding-right: 1.5rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } +.mobile-menu .menu .menu__title{ + margin-left: 0.75rem; + display: flex; + width: 100%; + align-items: center; +} +.mobile-menu .menu .menu__title .menu__sub-icon{ + margin-left: auto; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +.mobile-menu .menu .menu__title .menu__sub-icon svg{ + height: 1.25rem; + width: 1.25rem; +} +.inbox-filter .inbox-filter__dropdown-menu { + width: 250px; +} +.inbox-filter__dropdown-menu .dropdown-content { + margin-left: -228px; + width: auto; +} +.inbox .inbox__item{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + cursor: pointer; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.inbox .inbox__item:hover { + transform: scale(1.02, 1.02); + position: relative; + z-index: 20; + border-radius: 0.25rem; + border-width: 0px; + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.inbox .inbox__item.inbox__item--active{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.dark .inbox .inbox__item.inbox__item--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.inbox .inbox__item.inbox__item--active .inbox__item--sender{ + font-weight: 500; +} +.inbox .inbox__item.inbox__item--active .inbox__item--highlight{ + font-weight: 500; +} +.inbox .inbox__item.inbox__item--active .inbox__item--time{ + font-weight: 500; +} +.inbox .form-check-input{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-400) / var(--tw-border-opacity)); +} +.inbox .form-check-input:checked{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.chat .chat__chat-list{ + height: 525px; +} +.chat .chat__user-list{ + height: 525px; +} +.chat .chat__box{ + height: 782px; +} +.chat .chat__box .chat__box__text-box{ + max-width: 49%; +} +@media (max-width: calc(640px - 1px)) { + .chat .chat__box .chat__box__text-box{ + max-width: 90%; + } + } +.chat .chat__box__input{ + height: 46px; +} +.chat-dropdown{ + margin-top: -364px; + width: 320px; +} +.chat-dropdown .chat-dropdown__box{ + height: 364px; +} +.chat-dropdown .chat-dropdown__box .chat-dropdown__box__tabs .nav-item .nav-link.active{ + border-bottom-width: 0px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .chat-dropdown .chat-dropdown__box .chat-dropdown__box__tabs .nav-item .nav-link.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.news .news__preview { + height: 400px; + } +@media (max-width: calc(768px - 1px)) { + .news .news__preview { + height: 250px; + } + } +.news p { + text-indent: 30px; + } +.news .news__input { + height: 69px; + } +.pricing-tabs.nav.nav-pills .nav-item .nav-link{ + border-radius: 0px; +} +.error-page img { + width: 450px; +} +.search-result { + width: 450px; + visibility: hidden; + position: absolute; + right: 0px; + z-index: 20; + margin-top: 0.25rem; + opacity: 0; + transition: visibility 0s linear 0.2s, opacity 0.2s 0s; +} +.search-result.show { + transition: visibility 0s linear 0s, opacity 0.2s 0s; + visibility: visible; + opacity: 1; + } +.search-result.show > .search-result__content { + margin-top: -1px; + } +.search-result.show > .search-result__content .tab-content .tab-pane{ + visibility: visible; +} +.search-result .search-result__content { + transition: margin-top 0.2s; + box-shadow: 0px 3px 20px #0000000b; + position: relative; + border-radius: 0.375rem; + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.dark .search-result .search-result__content{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.search-result .search-result__content{ + margin-top: 1.25rem; + padding: 1.25rem; +} +.search-result .search-result__content .search-result__content__title{ + margin-bottom: 0.5rem; + font-weight: 500; +} +.notification-content { + width: 350px; +} +@media (max-width: calc(640px - 1px)) { + .notification-content { + width: 280px; + } + } +.notification-content .notification-content__title{ + margin-bottom: 1.25rem; + font-weight: 500; +} +.notification-content .notification-content__box{ + padding: 1.25rem; +} +.report-maps { + height: 310px; +} +.pos-dropdown .pos-dropdown__dropdown-menu { + width: 265px; +} +.post .post__tabs{ + border-color: transparent; +} +.dark .post .post__tabs{ + border-color: transparent; +} +.post .post__tabs .nav-item .nav-link{ + display: flex; + align-items: center; + justify-content: center; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.post .post__tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + border-color: transparent; + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .post .post__tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.post .post__tabs .nav-item .nav-link.active{ + border-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .post .post__tabs .nav-item .nav-link.active{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.litepicker{ + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + font-size: 0.875rem; + line-height: 1.25rem; + z-index: 999999 !important; + margin-top: 7px; + box-shadow: 0px 3px 20px #00000014; +} +@media (max-width: calc(1024px - 1px)) { + .litepicker { + width: 310px; + } + } +@media (max-width: calc(640px - 1px)) { + .litepicker { + left: 0px !important; + right: 0px; + margin-left: auto; + margin-right: auto; + } + } +.litepicker:before { + content: ""; + left: 9px; + top: -7px; + border-bottom-color: #f7f7f7; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #e8e8e8; + position: absolute; + display: inline-block; + } +.litepicker:after { + content: ""; + left: 10px; + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + position: absolute; + display: inline-block; + } +.litepicker .container__months, .litepicker .container__footer{ + background-color: transparent; + padding-top: 0px; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.litepicker .container__footer{ + margin: 0px; + border-top-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + padding: 0.75rem; +} +@media (max-width: calc(1024px - 1px)) { + .litepicker .container__footer{ + display: flex; + flex-direction: column-reverse; + text-align: center; + } + .litepicker .container__footer .preview-date-range{ + order: 1; + margin-bottom: 0.375rem; + display: block; + width: 100%; + } + .litepicker .container__footer .button-cancel { + width: 100% !important; + margin-left: 0px !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + } + .litepicker .container__footer .button-apply { + width: 100% !important; + margin-left: 0px !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + margin-bottom: 0.375rem; + } + } +.litepicker .container__footer .button-apply, .litepicker .container__footer .button-cancel{ + margin-left: 0.25rem; + margin-right: 0px; + width: 5rem; + border-radius: 0.375rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + font-weight: 500; +} +.litepicker .container__footer .button-apply{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.litepicker .container__footer .button-cancel{ + background-color: rgb(var(--color-slate-200) / 0.7); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.litepicker .container__months{ + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.litepicker .container__months .month-item-weekdays-row{ + margin-top: 0.75rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.litepicker .container__months .month-item-header{ + padding-left: 0px; + padding-right: 0px; + padding-bottom: 0px; + padding-top: 0.5rem; +} +.litepicker .container__months .month-item-header .button-previous-month{ + display: flex; + height: 2rem; + width: 2rem; + align-items: center; + justify-content: center; +} +.litepicker .container__months .month-item-header .button-previous-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.litepicker .container__months .month-item-header .button-previous-month svg { + transform: rotate(135deg); + margin-right: -0.25rem; + } +.litepicker .container__months .month-item-header .button-next-month{ + display: flex; + height: 2rem; + width: 2rem; + align-items: center; + justify-content: center; +} +.litepicker .container__months .month-item-header .button-next-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.litepicker .container__months .month-item-header .button-next-month svg { + transform: rotate(-45deg); + margin-left: -0.25rem; + } +.litepicker .container__months .month-item-header .button-previous-month:hover svg, + .litepicker .container__months .month-item-header .button-previous-month svg, + .litepicker .container__months .month-item-header .button-next-month:hover svg, + .litepicker .container__months .month-item-header .button-next-month svg { + fill: transparent; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + border-color: #4a5568; + display: block; + height: 0.5rem; + width: 0.5rem; + } +.litepicker .container__months .month-item-header div > .month-item-name, + .litepicker .container__months .month-item-header div > .month-item-year { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 15px; + background-position: center right 0.6rem; + border-radius: 0.375rem; + border-width: 1px; + background-color: transparent; + background-repeat: no-repeat; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + padding-right: 2rem; + font-size: 0.875rem; + line-height: 1.25rem; + } +.litepicker .container__months .month-item-header div > .month-item-name:focus, .litepicker .container__months .month-item-header div > .month-item-year:focus{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-color: transparent; +} +.litepicker .container__days .day-item{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.litepicker .container__days .day-item:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.litepicker .container__days .day-item.is-today, .litepicker .container__days .day-item.is-today:hover{ + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.litepicker .container__days .day-item.is-start-date, .litepicker .container__days .day-item.is-start-date:hover, .litepicker .container__days .day-item.is-end-date, .litepicker .container__days .day-item.is-end-date:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.litepicker .container__days .day-item.is-in-range, .litepicker .container__days .day-item.is-in-range:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.litepicker .container__days .week-number{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +@media (max-width: calc(1024px - 1px)) { + & :root { + --litepicker-day-width: 35px; + } + } +.dark .litepicker{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .litepicker:before, + .dark .litepicker:after { + border-right-color: transparent; + border-left-color: transparent; + border-bottom-color: rgb(var(--color-darkmode-600)); + } +.dark .litepicker .container__months .button-previous-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__months .button-next-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__months .month-item-header .button-previous-month:hover svg, .dark .litepicker .container__months .month-item-header .button-previous-month svg, .dark .litepicker .container__months .month-item-header .button-next-month:hover svg, .dark .litepicker .container__months .month-item-header .button-next-month svg{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.dark .litepicker .container__months .month-item-header div > .month-item-name, .dark .litepicker .container__months .month-item-header div > .month-item-year{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .litepicker .container__days .day-item{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .litepicker .container__days .day-item:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__days .day-item.is-start-date, .dark .litepicker .container__days .day-item.is-start-date:hover, .dark .litepicker .container__days .day-item.is-end-date, .dark .litepicker .container__days .day-item.is-end-date:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .litepicker .container__days .day-item.is-in-range, .dark .litepicker .container__days .day-item.is-in-range:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__days .day-item.is-today, .dark .litepicker .container__days .day-item.is-today:hover{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .litepicker .container__footer{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .litepicker .container__footer .button-cancel{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .litepicker .container__tooltip{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__tooltip:before, + .dark .litepicker .container__tooltip:after { + border-top-color: rgb(var(--color-darkmode-600)); + } +.tns-outer{ + position: relative; +} +.tns-outer .tns-controls button{ + position: absolute; + top: 0px; + bottom: 0px; + z-index: 10; + margin-top: auto; + margin-bottom: auto; + height: 1.25rem; + width: 1.25rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + color: transparent; + outline: 2px solid transparent; + outline-offset: 2px; +} +.dark .tns-outer .tns-controls button{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.tns-outer .tns-controls button:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.dark .tns-outer .tns-controls button:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-200) / var(--tw-bg-opacity)); +} +.tns-outer .tns-controls button[data-controls="prev"]{ + left: 0px; + margin-left: -1.5rem; +} +.tns-outer .tns-controls button[data-controls="prev"]:before { + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 80%; + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; + --tw-rotate: 90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + background-position: center; + } +.tns-outer .tns-controls button[data-controls="next"]{ + right: 0px; + margin-right: -1.5rem; +} +.tns-outer .tns-controls button[data-controls="next"]:before { + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 80%; + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; + --tw-rotate: -90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + background-position: center; + } +.tns-outer .tns-nav { + margin-bottom: -1.8rem; + position: absolute; + bottom: 0px; + z-index: 10; + display: flex; + width: 100%; + justify-content: center; + } +.tns-outer .tns-nav button{ + margin-left: 0.25rem; + margin-right: 0.25rem; + height: 0.75rem; + width: 0.75rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); + outline: 2px solid transparent; + outline-offset: 2px; +} +.dark .tns-outer .tns-nav button{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.tns-outer .tns-nav button.tns-nav-active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-500) / var(--tw-bg-opacity)); +} +.dark .tns-outer .tns-nav button.tns-nav-active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-200) / var(--tw-bg-opacity)); +} +.tns-outer button[data-action]{ + display: none; +} +.tns-outer .tns-visually-hidden{ + display: none; +} +.tooltip-content { + left: 10000px; + position: fixed; +} +.tippy-box{ + border-radius: 0.375rem; +} +.dark .tippy-box{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tippy-box > .tippy-svg-arrow{ + fill: rgb(var(--color-darkmode-300)); +} +.tippy-box .tippy-content{ + padding-left: 0.75rem; + padding-right: 0.75rem; + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.tippy-popper[x-placement="left"] .tippy-roundarrow, .tippy-popper[x-placement="left"] .tippy-arrow, .tippy-popper[x-placement="right"] .tippy-roundarrow, .tippy-popper[x-placement="right"] .tippy-arrow, .tippy-popper[x-placement="left-start"] .tippy-roundarrow, .tippy-popper[x-placement="left-start"] .tippy-arrow, .tippy-popper[x-placement="left-end"] .tippy-roundarrow, .tippy-popper[x-placement="left-end"] .tippy-arrow, .tippy-popper[x-placement="right-start"] .tippy-roundarrow, .tippy-popper[x-placement="right-start"] .tippy-arrow, .tippy-popper[x-placement="right-end"] .tippy-roundarrow, .tippy-popper[x-placement="right-end"] .tippy-arrow{ + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; +} +.tippy-popper[x-placement="top"] .tippy-roundarrow, .tippy-popper[x-placement="top"] .tippy-arrow, .tippy-popper[x-placement="bottom"] .tippy-roundarrow, .tippy-popper[x-placement="bottom"] .tippy-arrow, .tippy-popper[x-placement="top-start"] .tippy-roundarrow, .tippy-popper[x-placement="top-start"] .tippy-arrow, .tippy-popper[x-placement="top-end"] .tippy-roundarrow, .tippy-popper[x-placement="top-end"] .tippy-arrow, .tippy-popper[x-placement="bottom-start"] .tippy-roundarrow, .tippy-popper[x-placement="bottom-start"] .tippy-arrow, .tippy-popper[x-placement="bottom-end"] .tippy-roundarrow, .tippy-popper[x-placement="bottom-end"] .tippy-arrow{ + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; +} +.dark .tippy-box { + box-shadow: 0 0 20px 4px #00000026, 0 4px 80px -8px #24282f40, + 0 4px 4px -2px #5b5e6926; + } +.tabulator-print-fullscreen-hide:before { + content: ""; + position: fixed; + top: 0px; + left: 0px; + height: 100vh; + width: 100%; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.tabulator{ + overflow: hidden; + border-width: 0px; + background-color: transparent; +} +.tabulator .tabulator-header{ + border-top-width: 1px; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + background-color: transparent; + font-weight: 500; + color: currentColor; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col{ + border-right-width: 0px; + background-color: transparent; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col .tabulator-col-content{ + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col .tabulator-col-content .tabulator-col-title{ + padding-right: 0px; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col .tabulator-col-content .tabulator-arrow { + top: -3px; + border-left-width: 5px; + border-right-width: 5px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + } +.tabulator .tabulator-header .tabulator-headers .tabulator-col.tabulator-sortable[aria-sort="none"] + .tabulator-col-content + .tabulator-arrow { + border-bottom-color: #cbd5e0; + } +.tabulator .tabulator-row{ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.tabulator .tabulator-row:hover, .tabulator .tabulator-row.tabulator-row-even:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-row.tabulator-row-even{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-row .tabulator-cell{ + border-right-width: 0px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle{ + padding-left: 0px; + padding-right: 0px; +} +.tabulator .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{ + margin-right: -1.25rem; + height: 1rem; + width: 1rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-400) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-row .tabulator-responsive-collapse{ + border-bottom-width: 0px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + padding: 0.75rem; +} +.tabulator .tabulator-row .tabulator-responsive-collapse td{ + padding: 0.5rem; +} +.tabulator .tabulator-row .tabulator-responsive-collapse td strong{ + font-weight: 500; +} +.tabulator .tabulator-footer{ + margin-top: 0.5rem; + border-top-width: 0px; + background-color: transparent; + padding: 0px; +} +@media (max-width: calc(768px - 1px)) { + .tabulator .tabulator-footer{ + white-space: normal; + } + } +.tabulator .tabulator-footer .tabulator-paginator{ + display: flex; + align-items: center; +} +@media (max-width: calc(768px - 1px)) { + .tabulator .tabulator-footer .tabulator-paginator{ + display: block; + text-align: left; + } + } +.tabulator .tabulator-footer .tabulator-paginator > label{ + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page-size { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 15px; + background-position: center right 0.6rem; + margin-left: 0.5rem; + margin-right: auto; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + background-repeat: no-repeat; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 2rem; + } +@media (max-width: calc(768px - 1px)) { + .tabulator .tabulator-footer .tabulator-paginator .tabulator-page-size{ + margin-right: 0.75rem; + } + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page { + min-width: 40px; + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-weight: 500; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + transition-property: none; +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:hover:not(:disabled){ + --tw-border-opacity: 0.9; + --tw-bg-opacity: 0.9; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not(button){ + text-align: center; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:disabled{ + cursor: not-allowed; + opacity: 0.7; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + display: inline-flex; + align-items: center; + justify-content: center; + border-color: transparent; + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +@media (max-width: calc(640px - 1px)) { + .tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + margin-right: 0px; + padding-left: 0.25rem; + padding-right: 0.25rem; + } + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + font-weight: 500; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="first"], .tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="prev"], .tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="next"], .tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="last"]{ + width: 1.25rem; + color: transparent; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="first"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='11 17 6 12 11 7'%3E%3C/polyline%3E%3Cpolyline points='18 17 13 12 18 7'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 50%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="prev"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 45%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="next"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 45%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="last"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='13 17 18 12 13 7'%3E%3C/polyline%3E%3Cpolyline points='6 17 11 12 6 7'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 50%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-tableHolder .tabulator-placeholder span{ + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.tabulator .tabulator-loader { + background: #ffffffbd; + } +.tabulator .tabulator-loader .tabulator-loader-msg{ + background-color: transparent; + font-size: 1rem; + line-height: 1.5rem; + font-weight: 400; +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{ + border-width: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{ + border-width: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-header .tabulator-headers .tabulator-col:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-table{ + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-table .tabulator-row{ + border-color: transparent; + background-color: transparent; +} +.dark .tabulator .tabulator-table .tabulator-row:hover, .dark .tabulator .tabulator-table .tabulator-row.tabulator-row-even:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-table .tabulator-row.tabulator-row-even{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator > label{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page-size{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active, .dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-loader{ + background-color: rgb(0 0 0 / 0.3); +} +.dark .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.tom-select .ts-input { + min-height: 40px; + padding: 7.5px 32px 7.5px 12px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 18px; + background-position: center right 0.6rem; + border-radius: 0.25rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + background-repeat: no-repeat; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.tom-select .ts-input .item { + line-height: 22px; + } +.tom-select .ts-input.dropdown-active { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14.828' height='8.414' viewBox='0 0 14.828 8.414'%3E%3Cpath id='chevron' d='M6,9l6,6,6-6' transform='translate(19.414 16) rotate(180)' fill='none' stroke='%234a5568' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E%0A") !important; + background-size: 11px !important; + background-position: center right 0.8rem !important; + background-repeat: no-repeat !important; + } +.tom-select .ts-input input { + height: 23px; + font-size: 0.875rem; + line-height: 1.25rem; + } +.tom-select.multi .ts-input{ + padding-left: 0.375rem; + padding-right: 0.375rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.tom-select.multi .ts-input > div{ + margin-top: 0.125rem; + margin-bottom: 0.125rem; + margin-right: 0.25rem; + border-radius: 0.25rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + padding-left: 0.5rem; + padding-right: 0.5rem; + padding-top: 0px; + padding-bottom: 0px; +} +.tom-select.multi .ts-input > div.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.tom-select.multi .ts-input > div.active .remove{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-400) / var(--tw-border-opacity)); +} +.tom-select.plugin-remove_button .item .remove{ + margin-left: 0.5rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-300) / var(--tw-border-opacity)); + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.tom-select.plugin-dropdown_input .ts-input.focus{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.tom-select .ts-dropdown { + margin-top: -1px; + border-top: 1px solid rgba(226, 232, 240, var(--tw-border-opacity)); + z-index: 50; + border-radius: 0.25rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.tom-select .ts-dropdown .optgroup-header { + padding: 9px 10px; + font-weight: 500; + } +.tom-select .ts-dropdown .option { + padding: 9px 13px; + } +.tom-select .ts-dropdown .option .highlight{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.tom-select .ts-dropdown .option.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.tom-select .ts-dropdown .option:hover:not(.active){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.tom-select .ts-dropdown.plugin-dropdown_input .dropdown-input-wrap{ + padding: 0.5rem; +} +.tom-select .ts-dropdown.plugin-dropdown_input .dropdown-input-wrap input{ + border-radius: 0.25rem; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + outline: 2px solid transparent; + outline-offset: 2px; +} +.tom-select .ts-dropdown .dropdown-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.tom-select .ts-dropdown .dropdown-header .dropdown-header-close{ + margin-right: 0.125rem; + cursor: pointer; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); + opacity: 1; +} +.dark .tom-select .ts-input { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); + } +.dark .tom-select .ts-input.dropdown-active{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14.828' height='8.414' viewBox='0 0 14.828 8.414'%3E%3Cpath id='chevron' d='M6,9l6,6,6-6' transform='translate(19.414 16) rotate(180)' fill='none' stroke='rgb(255 255 255)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E%0A") !important; +} +.dark .tom-select .ts-input.dropdown-active:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .tom-select.multi .ts-input > div{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select.multi .ts-input > div.active{ + background-color: rgb(var(--color-darkmode-400) / 0.8); +} +.dark .tom-select.multi .ts-input > div .remove{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .tom-select.plugin-dropdown_input .ts-input.focus{ + border-color: transparent; +} +.dark .tom-select .ts-dropdown{ + border-color: rgb(var(--color-darkmode-800) / 0.8); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown.plugin-dropdown_input .dropdown-input-wrap input{ + border-color: rgb(var(--color-darkmode-800) / 0.8); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .tom-select .ts-dropdown .optgroup-header{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .create{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .create:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .tom-select .ts-dropdown .option:hover:not(.active){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .dropdown-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-700) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .dropdown-header .dropdown-header-close{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dropzone{ + border-style: dashed; + border-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .dropzone{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.ck-editor, .document-editor, .ck-editor__editable{ + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.document-editor { + display: flex; + max-height: 700px; + flex-flow: column nowrap; + border-radius: var(--ck-border-radius); + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.document-editor .document-editor__toolbar { + z-index: 1; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + } +.document-editor .document-editor__toolbar .ck-toolbar { + border: 0; + border-radius: 0; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + } +.document-editor .document-editor__toolbar .ck-toolbar .ck-icon { + width: 16px; + } +.document-editor .document-editor__editable-container { + overflow-y: scroll; + padding: calc(2 * var(--ck-spacing-large)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + } +.document-editor .document-editor__editable-container .ck-editor__editable { + width: 15.8cm; + margin: 0 auto; + min-height: 21cm; + background: white; + padding: 1cm 2cm 2cm; + border-radius: var(--ck-border-radius); + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.document-editor .ck-heading-dropdown .ck-list .ck-button__label { + line-height: calc( + 1.7 * var(--ck-line-height-base) * var(--ck-font-size-base) + ); + min-width: 6em; + } +.document-editor .ck-heading-dropdown + .ck-list + .ck-button:not(.ck-heading_paragraph) + .ck-button__label { + transform: scale(0.8); + transform-origin: left; + } +.document-editor .ck-content h2, + .document-editor .ck-heading-dropdown .ck-heading_heading1 .ck-button__label { + font-size: 2.18em; + font-weight: normal; + } +.document-editor .ck-content h2 { + line-height: 1.37em; + padding-top: 0.342em; + margin-bottom: 0.142em; + } +.document-editor .ck-content h3, + .document-editor .ck-heading-dropdown .ck-heading_heading2 .ck-button__label { + font-size: 1.75em; + font-weight: normal; + color: hsl(203, 100%, 50%); + } +.document-editor .ck-heading-dropdown .ck-heading_heading2.ck-on .ck-button__label { + color: var(--ck-color-list-button-on-text); + } +.document-editor .ck-content h3 { + line-height: 1.86em; + padding-top: 0.171em; + margin-bottom: 0.357em; + } +.document-editor .ck-content h4, + .document-editor .ck-heading-dropdown .ck-heading_heading3 .ck-button__label { + font-size: 1.31em; + font-weight: bold; + } +.document-editor .ck-content h4 { + line-height: 1.24em; + padding-top: 0.286em; + margin-bottom: 0.952em; + } +.document-editor .ck-content p { + font-size: 1em; + line-height: 1.63em; + padding-top: 0.5em; + margin-bottom: 1.13em; + } +.document-editor .ck-content blockquote { + font-family: Georgia, serif; + margin-left: calc(2 * var(--ck-spacing-large)); + margin-right: calc(2 * var(--ck-spacing-large)); + } +.ck.ck-content { + min-height: 250px; +} +.ck.ck-content.ck-editor__editable_inline{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.ck .ck .ck-content{ + min-height: 250px; +} +.ck .ck .ck-content.ck-editor__editable_inline{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.ck .ck .ck-content blockquote, + .ck .ck .ck-content dl, + .ck .ck .ck-content dd, + .ck .ck .ck-content h1, + .ck .ck .ck-content h2, + .ck .ck .ck-content h3, + .ck .ck .ck-content h4, + .ck .ck .ck-content h5, + .ck .ck .ck-content h6, + .ck .ck .ck-content hr, + .ck .ck .ck-content figure, + .ck .ck .ck-content p, + .ck .ck .ck-content pre { + margin: revert; + } +.ck .ck .ck-content ol, + .ck .ck .ck-content ul { + list-style: revert; + margin: revert; + padding: revert; + } +.ck .ck .ck-content h1, + .ck .ck .ck-content h2, + .ck .ck .ck-content h3, + .ck .ck .ck-content h4, + .ck .ck .ck-content h5, + .ck .ck .ck-content h6 { + font-size: revert; + font-weight: revert; + } +.ck .ck .ck-content img, + .ck .ck .ck-content svg, + .ck .ck .ck-content video, + .ck .ck .ck-content canvas, + .ck .ck .ck-content audio, + .ck .ck .ck-content iframe, + .ck .ck .ck-content embed, + .ck .ck .ck-content object { + display: revert; + vertical-align: revert; + } +.ck .ck.ck-reset_all, .ck .ck.ck-reset_all *{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.ck .ck.ck-toolbar, .ck .ck.ck-balloon-panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.ck .ck.ck-toolbar .ck-icon, .ck .ck.ck-balloon-panel .ck-icon{ + width: 16px; +} +.ck .ck.ck-editor__main > .ck-editor__editable:not(.ck-focused){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.ck .ck.ck-button:not(.ck-disabled):hover, .ck .cka.ck-button:not(.ck-disabled):hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.dark .document-editor{ + border-color: rgb(var(--color-darkmode-900) / 0.3); +} +.dark .document-editor .document-editor__toolbar{ + border-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar{ + background-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck-toolbar__separator{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck-tooltip .ck-tooltip__text{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck-tooltip .ck-tooltip__text:after{ + --tw-border-opacity: 1; + border-bottom-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck.ck-icon :not([fill]){ + fill: rgb(var(--color-slate-300)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck.ck-dropdown__panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck.ck-button.ck-on, .dark .document-editor .document-editor__toolbar .ck-toolbar a.ck.ck-button.ck-on{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .document-editor .document-editor__editable-container{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .document-editor .document-editor__editable-container .ck-editor__editable{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck-content.ck-editor__editable_inline{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck-list{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck-dropdown__panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck.ck-input-text{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .ck.ck.ck-input-text:focus{ + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .ck .ck-insert-table-dropdown-grid-box{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .ck.ck-reset_all, .dark .ck.ck-reset_all *{ + --tw-text-opacity: 1 !important; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)) !important; +} +.dark .ck .ck .ck-content.ck-editor__editable_inline{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-toolbar, .dark .ck .ck.ck-balloon-panel{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-toolbar:before, .dark .ck .ck.ck-balloon-panel:before{ + border-bottom-color: rgb(var(--color-darkmode-900) / 0.2) !important; +} +.dark .ck .ck.ck-toolbar:after, .dark .ck .ck.ck-balloon-panel:after{ + border-bottom-color: rgb(var(--color-darkmode-900) / 0.2) !important; +} +.dark .ck .ck.ck-toolbar .ck-toolbar__separator, .dark .ck .ck.ck-balloon-panel .ck-toolbar__separator{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-toolbar .ck-tooltip .ck-tooltip__text, .dark .ck .ck.ck-balloon-panel .ck-tooltip .ck-tooltip__text{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .ck .ck.ck-toolbar .ck-tooltip .ck-tooltip__text:after, .dark .ck .ck.ck-balloon-panel .ck-tooltip .ck-tooltip__text:after{ + border-bottom-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .ck .ck.ck-toolbar .ck.ck-icon :not([fill]), .dark .ck .ck.ck-balloon-panel .ck.ck-icon :not([fill]){ + fill: rgb(var(--color-slate-300)); +} +.dark .ck .ck.ck-toolbar .ck.ck-dropdown__panel, .dark .ck .ck.ck-balloon-panel .ck.ck-dropdown__panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .ck .ck.ck-toolbar .ck.ck-button.ck-on, .dark .ck .ck.ck-toolbar a.ck.ck-button.ck-on, .dark .ck .ck.ck-balloon-panel .ck.ck-button.ck-on, .dark .ck .ck.ck-balloon-panel a.ck.ck-button.ck-on{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-editor__main > .ck-editor__editable{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-editor__main > .ck-editor__editable:not(.ck-focused){ + border-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .ck .ck.ck-button:not(.ck-disabled):hover, .dark .ck .cka.ck-button:not(.ck-disabled):hover{ + background-color: rgb(var(--color-darkmode-900) / 0.2); +} +.zoom-overlay{ + background-color: rgb(0 0 0 / 0.75); +} +.dark .zoom-overlay{ + background-color: rgb(0 0 0 / 0.4); +} +.dark-mode-switcher .dark-mode-switcher__toggle { + width: 38px; + height: 24px; + padding: 1px; + position: relative; + cursor: pointer; + border-radius: 9999px; + outline: 2px solid transparent; + outline-offset: 2px; + } +.dark-mode-switcher .dark-mode-switcher__toggle:before { + content: ""; + width: 22px; + height: 22px; + transition: all 0.2s ease-in-out; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); + position: absolute; + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + border-radius: 9999px; + } +.dark-mode-switcher .dark-mode-switcher__toggle.dark-mode-switcher__toggle--active{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.dark-mode-switcher .dark-mode-switcher__toggle.dark-mode-switcher__toggle--active::before { + margin-left: 13px; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.source-preview{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} +.source-preview .hljs{ + margin-top: -20px; + margin-bottom: -40px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + font-size: 0.75rem; + line-height: 1rem; + line-height: 1.625; +} +.dark .source-preview .hljs{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.source-preview{ + position: relative; +} +.source-preview code:before { + content: "HTML"; + position: absolute; + top: 0px; + right: 0px; + display: block; + border-bottom-left-radius: 0.25rem; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.7; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + font-family: Roboto; + font-weight: 500; + } +.dark .source-preview code:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.source-preview code.javascript:before { + content: "JS"; + } +@media (max-width: calc(1024px - 1px)) { + .full-calendar .fc-toolbar{ + flex-direction: column; + } + } +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(1){ + order: 3; +} +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(2){ + order: 1; +} +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3){ + order: 2; +} +@media (max-width: calc(1024px - 1px)) { + .full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3){ + margin-top: 0.75rem; + margin-bottom: 0.75rem; + } + } +@media (max-width: calc(640px - 1px)) { + .full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3) .fc-button-group{ + display: block; + } + } +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3) .fc-button-group button{ + width: 5rem; +} +@media (max-width: calc(640px - 1px)) { + .full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3) .fc-button-group button{ + margin-bottom: 0.5rem; + width: 100%; + border-radius: 0.375rem; + } + } +.full-calendar .fc-toolbar .fc-toolbar-title{ + font-size: 1.125rem; + line-height: 1.75rem; + font-weight: 500; +} +.full-calendar .fc-toolbar-chunk .fc-button-primary:first-child{ + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} +.full-calendar .fc-toolbar-chunk .fc-button-primary:last-child{ + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.full-calendar.fc-theme-standard .fc-scrollgrid, .full-calendar.fc-theme-standard th, .full-calendar.fc-theme-standard td, .full-calendar.fc-theme-standard .fc-list{ + border-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .full-calendar.fc-theme-standard .fc-scrollgrid, .dark .full-calendar.fc-theme-standard th, .dark .full-calendar.fc-theme-standard td, .dark .full-calendar.fc-theme-standard .fc-list{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.full-calendar table{ + border-radius: 0.375rem; +} +.full-calendar table tr th .fc-scrollgrid-sync-inner{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.full-calendar .fc-daygrid-event-harness{ + margin-left: 1.25rem; + margin-right: 1.25rem; +} +.full-calendar .fc-h-event{ + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.full-calendar .fc-event-title-container{ + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + font-size: 0.75rem; + line-height: 1rem; +} +.full-calendar .fc-daygrid-event{ + font-size: 0.75rem; + line-height: 1rem; +} +.full-calendar .fc-daygrid-event-dot{ + margin-right: 0.5rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.full-calendar .fc-daygrid-dot-event .fc-event-title{ + font-weight: 500; +} +.full-calendar .fc-col-header-cell-cushion{ + font-weight: 500; +} +@media (max-width: calc(640px - 1px)) { + .full-calendar.fc .fc-view-harness{ + min-height: 400px !important; + } + .full-calendar.fc .fc-daygrid-day-frame{ + min-height: 60px !important; + } + } +.full-calendar .fc-daygrid-more-link{ + font-size: 0.875rem; + line-height: 1.25rem; +} +@media (max-width: calc(768px - 1px)) { + .full-calendar .fc-daygrid-more-link{ + font-size: 10px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); + } + } +@media (max-width: calc(640px - 1px)) { + .full-calendar .fc-daygrid-more-link{ + margin-top: -0.75rem; + display: block; + padding-left: 0px; + line-height: 10px; + } + } +.full-calendar .fc-daygrid-day-bottom{ + padding-top: 0.25rem; +} +.full-calendar .fc-day-other{ + background-color: rgb(var(--color-slate-100) / 0.5); +} +.dark .full-calendar .fc-day-other{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.full-calendar .fc-button-primary{ + display: inline-block !important; + border-color: rgb(var(--color-slate-200) / 0.6) !important; + background-color: transparent !important; + padding-left: 0.65em !important; + padding-right: 0.65em !important; + padding-top: 0.4em !important; + padding-bottom: 0.4em !important; + text-transform: capitalize !important; + --tw-text-opacity: 1 !important; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)) !important; + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-weight: 500; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; +} +.full-calendar .fc-button-primary:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .full-calendar .fc-button-primary{ + transition-property: none; +} +.dark .full-calendar .fc-button-primary:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.full-calendar .fc-button-primary:hover:not(:disabled){ + --tw-border-opacity: 0.9; + --tw-bg-opacity: 0.9; +} +.full-calendar .fc-button-primary:not(button){ + text-align: center; +} +.full-calendar .fc-button-primary:disabled{ + cursor: not-allowed; + opacity: 0.7; +} +.full-calendar .fc-button-primary .fc-icon{ + font-size: 1.2em !important; +} +.full-calendar .fc-button-primary:focus{ + --tw-shadow: 0 0 #0000 !important; + --tw-shadow-colored: 0 0 #0000 !important; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; +} +.full-calendar .fc-button-primary:not(:disabled):active, .full-calendar .fc-button-primary:not(:disabled).fc-button-active{ + --tw-border-opacity: 1 !important; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)) !important; + --tw-bg-opacity: 1 !important; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)) !important; + --tw-text-opacity: 1 !important; + color: rgb(255 255 255 / var(--tw-text-opacity)) !important; +} +.full-calendar .fc-list-day-cushion{ + background-color: rgb(var(--color-slate-100) / 0.5) !important; + padding-left: 1.25rem !important; + padding-right: 1.25rem !important; + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} +.full-calendar .fc-list-event td{ + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.full-calendar .fc-list-event-dot{ + --tw-border-opacity: 1 !important; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)) !important; +} +.full-calendar .fc-event-time{ + padding-left: 0.125rem; + padding-right: 0.125rem; + font-size: 0.75rem !important; +} +.full-calendar .fc-daygrid-more-link{ + padding-left: 0.5rem; +} +.dark .full-calendar .fc-button-primary{ + --tw-border-opacity: 1 !important; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)) !important; + --tw-bg-opacity: 1 !important; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)) !important; +} +.dark .full-calendar .fc-list-day-cushion{ + --tw-bg-opacity: 1 !important; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)) !important; +} +.dark .full-calendar .fc-event:hover td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.has-error .form-control{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.dark .has-error .form-control{ + border-color: rgb(var(--color-danger) / 0.7); +} +.before\:absolute::before{ + content: var(--tw-content); + position: absolute; +} +.before\:inset-0::before{ + content: var(--tw-content); + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; +} +.before\:left-0::before{ + content: var(--tw-content); + left: 0px; +} +.before\:top-0::before{ + content: var(--tw-content); + top: 0px; +} +.before\:bottom-0::before{ + content: var(--tw-content); + bottom: 0px; +} +.before\:z-\[-1\]::before{ + content: var(--tw-content); + z-index: -1; +} +.before\:z-10::before{ + content: var(--tw-content); + z-index: 10; +} +.before\:ml-5::before{ + content: var(--tw-content); + margin-left: 1.25rem; +} +.before\:mt-5::before{ + content: var(--tw-content); + margin-top: 1.25rem; +} +.before\:mt-4::before{ + content: var(--tw-content); + margin-top: 1rem; +} +.before\:block::before{ + content: var(--tw-content); + display: block; +} +.before\:hidden::before{ + content: var(--tw-content); + display: none; +} +.before\:h-4::before{ + content: var(--tw-content); + height: 1rem; +} +.before\:h-full::before{ + content: var(--tw-content); + height: 100%; +} +.before\:h-\[85\%\]::before{ + content: var(--tw-content); + height: 85%; +} +.before\:h-px::before{ + content: var(--tw-content); + height: 1px; +} +.before\:h-\[3px\]::before{ + content: var(--tw-content); + height: 3px; +} +.before\:w-4::before{ + content: var(--tw-content); + width: 1rem; +} +.before\:w-\[2px\]::before{ + content: var(--tw-content); + width: 2px; +} +.before\:w-full::before{ + content: var(--tw-content); + width: 100%; +} +.before\:w-px::before{ + content: var(--tw-content); + width: 1px; +} +.before\:w-20::before{ + content: var(--tw-content); + width: 5rem; +} +.before\:w-\[69\%\]::before{ + content: var(--tw-content); + width: 69%; +} +.before\:rounded-full::before{ + content: var(--tw-content); + border-radius: 9999px; +} +.before\:rounded-md::before{ + content: var(--tw-content); + border-radius: 0.375rem; +} +.before\:bg-primary\/20::before{ + content: var(--tw-content); + background-color: rgb(var(--color-primary) / 0.2); +} +.before\:bg-slate-200::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.before\:bg-slate-100::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.before\:bg-black::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +} +.before\:bg-gradient-to-t::before{ + content: var(--tw-content); + background-image: linear-gradient(to top, var(--tw-gradient-stops)); +} +.before\:from-black\/90::before{ + content: var(--tw-content); + --tw-gradient-from: rgb(0 0 0 / 0.9); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); +} +.before\:from-black::before{ + content: var(--tw-content); + --tw-gradient-from: #000; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); +} +.before\:to-black\/10::before{ + content: var(--tw-content); + --tw-gradient-to: rgb(0 0 0 / 0.1); +} +.before\:pt-\[100\%\]::before{ + content: var(--tw-content); + padding-top: 100%; +} +.before\:content-\[\'\'\]::before{ + --tw-content: ''; + content: var(--tw-content); +} +.after\:absolute::after{ + content: var(--tw-content); + position: absolute; +} +.after\:h-4::after{ + content: var(--tw-content); + height: 1rem; +} +.after\:w-4::after{ + content: var(--tw-content); + width: 1rem; +} +.after\:rounded-full::after{ + content: var(--tw-content); + border-radius: 9999px; +} +.after\:border-4::after{ + content: var(--tw-content); + border-width: 4px; +} +.after\:border-white\/60::after{ + content: var(--tw-content); + border-color: rgb(255 255 255 / 0.6); +} +.after\:bg-primary::after{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.after\:content-\[\'\'\]::after{ + --tw-content: ''; + content: var(--tw-content); +} +.first\:mt-0:first-child{ + margin-top: 0px; +} +.first\:pt-0:first-child{ + padding-top: 0px; +} +.hover\:border-slate-200:hover{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.hover\:bg-slate-100:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.hover\:bg-white\/5:hover{ + background-color: rgb(255 255 255 / 0.05); +} +.hover\:bg-opacity-30:hover{ + --tw-bg-opacity: 0.3; +} +.focus\:border-transparent:focus{ + border-color: transparent; +} +.focus\:outline-none:focus{ + outline: 2px solid transparent; + outline-offset: 2px; +} +.focus\:ring-0:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.dark .dark\:border{ + border-width: 1px; +} +.dark .dark\:border-0{ + border-width: 0px; +} +.dark .dark\:border-darkmode-400{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .dark\:border-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.dark .dark\:border-transparent{ + border-color: transparent; +} +.dark .dark\:border-darkmode-600{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-300{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-800{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-500{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-500) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-100\/40{ + border-color: rgb(var(--color-darkmode-100) / 0.4); +} +.dark .dark\:border-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.dark .dark\:border-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.dark .dark\:border-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-800\/80{ + border-color: rgb(var(--color-darkmode-800) / 0.8); +} +.dark .dark\:bg-darkmode-300{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-transparent{ + background-color: transparent; +} +.dark .dark\:bg-darkmode-800{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-darkmode-400{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-darkmode-600{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-success\/30{ + background-color: rgb(var(--color-success) / 0.3); +} +.dark .dark\:bg-pending\/30{ + background-color: rgb(var(--color-pending) / 0.3); +} +.dark .dark\:bg-primary\/50{ + background-color: rgb(var(--color-primary) / 0.5); +} +.dark .dark\:bg-black\/20{ + background-color: rgb(0 0 0 / 0.2); +} +.dark .dark\:bg-black\/10{ + background-color: rgb(0 0 0 / 0.1); +} +.dark .dark\:bg-darkmode-700{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-darkmode-400\/70{ + background-color: rgb(var(--color-darkmode-400) / 0.7); +} +.dark .dark\:bg-darkmode-500{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-500) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-primary{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-success\/10{ + background-color: rgb(var(--color-success) / 0.1); +} +.dark .dark\:bg-primary\/20{ + background-color: rgb(var(--color-primary) / 0.2); +} +.dark .dark\:text-slate-500{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .dark\:text-slate-400{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .dark\:text-slate-300{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .dark\:text-white{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .dark\:text-slate-200{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .dark\:text-gray-300{ + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); +} +.dark .before\:dark\:bg-darkmode-600::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .before\:dark\:bg-darkmode-400::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .after\:dark\:border-darkmode-300::after{ + content: var(--tw-content); + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.dark .dark\:hover\:bg-darkmode-400:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +@media (min-width: 640px){ + .sm\:static{ + position: static; + } + .sm\:absolute{ + position: absolute; + } + .sm\:relative{ + position: relative; + } + .sm\:col-span-6{ + grid-column: span 6 / span 6; + } + .sm\:col-span-4{ + grid-column: span 4 / span 4; + } + .sm\:col-span-3{ + grid-column: span 3 / span 3; + } + .sm\:col-span-1{ + grid-column: span 1 / span 1; + } + .sm\:mx-0{ + margin-left: 0px; + margin-right: 0px; + } + .sm\:mx-2{ + margin-left: 0.5rem; + margin-right: 0.5rem; + } + .sm\:-mx-8{ + margin-left: -2rem; + margin-right: -2rem; + } + .sm\:ml-auto{ + margin-left: auto; + } + .sm\:mt-0{ + margin-top: 0px; + } + .sm\:\!mr-10{ + margin-right: 2.5rem !important; + } + .sm\:ml-0{ + margin-left: 0px; + } + .sm\:mr-auto{ + margin-right: auto; + } + .sm\:mr-3{ + margin-right: 0.75rem; + } + .sm\:ml-3{ + margin-left: 0.75rem; + } + .sm\:mb-0{ + margin-bottom: 0px; + } + .sm\:mr-5{ + margin-right: 1.25rem; + } + .sm\:mt-5{ + margin-top: 1.25rem; + } + .sm\:mt-2{ + margin-top: 0.5rem; + } + .sm\:mt-10{ + margin-top: 2.5rem; + } + .sm\:ml-40{ + margin-left: 10rem; + } + .sm\:mr-28{ + margin-right: 7rem; + } + .sm\:mr-40{ + margin-right: 10rem; + } + .sm\:mr-20{ + margin-right: 5rem; + } + .sm\:mr-0{ + margin-right: 0px; + } + .sm\:mr-2{ + margin-right: 0.5rem; + } + .sm\:ml-20{ + margin-left: 5rem; + } + .sm\:mr-4{ + margin-right: 1rem; + } + .sm\:ml-1{ + margin-left: 0.25rem; + } + .sm\:ml-2{ + margin-left: 0.5rem; + } + .sm\:mr-6{ + margin-right: 1.5rem; + } + .sm\:block{ + display: block; + } + .sm\:flex{ + display: flex; + } + .sm\:grid{ + display: grid; + } + .sm\:hidden{ + display: none; + } + .sm\:h-10{ + height: 2.5rem; + } + .sm\:h-12{ + height: 3rem; + } + .sm\:h-5{ + height: 1.25rem; + } + .sm\:h-24{ + height: 6rem; + } + .sm\:w-auto{ + width: auto; + } + .sm\:w-20{ + width: 5rem; + } + .sm\:w-10{ + width: 2.5rem; + } + .sm\:w-12{ + width: 3rem; + } + .sm\:w-5{ + width: 1.25rem; + } + .sm\:w-56{ + width: 14rem; + } + .sm\:w-72{ + width: 18rem; + } + .sm\:w-52{ + width: 13rem; + } + .sm\:w-60{ + width: 15rem; + } + .sm\:w-full{ + width: 100%; + } + .sm\:w-64{ + width: 16rem; + } + .sm\:w-3\/4{ + width: 75%; + } + .sm\:w-40{ + width: 10rem; + } + .sm\:w-24{ + width: 6rem; + } + .sm\:w-32{ + width: 8rem; + } + .sm\:w-16{ + width: 4rem; + } + .sm\:flex-row{ + flex-direction: row; + } + .sm\:flex-nowrap{ + flex-wrap: nowrap; + } + .sm\:items-end{ + align-items: flex-end; + } + .sm\:justify-start{ + justify-content: flex-start; + } + .sm\:justify-end{ + justify-content: flex-end; + } + .sm\:gap-10{ + gap: 2.5rem; + } + .sm\:gap-6{ + gap: 1.5rem; + } + .sm\:overflow-x-visible{ + overflow-x: visible; + } + .sm\:whitespace-normal{ + white-space: normal; + } + .sm\:border-0{ + border-width: 0px; + } + .sm\:border-t-0{ + border-top-width: 0px; + } + .sm\:border-l{ + border-left-width: 1px; + } + .sm\:border-b-0{ + border-bottom-width: 0px; + } + .sm\:px-0{ + padding-left: 0px; + padding-right: 0px; + } + .sm\:py-4{ + padding-top: 1rem; + padding-bottom: 1rem; + } + .sm\:px-28{ + padding-left: 7rem; + padding-right: 7rem; + } + .sm\:px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .sm\:px-20{ + padding-left: 5rem; + padding-right: 5rem; + } + .sm\:py-20{ + padding-top: 5rem; + padding-bottom: 5rem; + } + .sm\:px-16{ + padding-left: 4rem; + padding-right: 4rem; + } + .sm\:px-10{ + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .sm\:px-8{ + padding-left: 2rem; + padding-right: 2rem; + } + .sm\:py-0{ + padding-top: 0px; + padding-bottom: 0px; + } + .sm\:py-3{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .sm\:pt-6{ + padding-top: 1.5rem; + } + .sm\:pt-0{ + padding-top: 0px; + } + .sm\:pl-5{ + padding-left: 1.25rem; + } + .sm\:pb-20{ + padding-bottom: 5rem; + } + .sm\:pt-20{ + padding-top: 5rem; + } + .sm\:pb-0{ + padding-bottom: 0px; + } + .sm\:text-left{ + text-align: left; + } + .sm\:text-right{ + text-align: right; + } + .sm\:text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; + } + .sm\:text-2xl{ + font-size: 1.5rem; + line-height: 2rem; + } + .sm\:text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; + } +} +@media (min-width: 768px){ + .md\:fixed{ + position: fixed; + } + .md\:inset-x-0{ + left: 0px; + right: 0px; + } + .md\:top-0{ + top: 0px; + } + .md\:col-span-2{ + grid-column: span 2 / span 2; + } + .md\:col-span-6{ + grid-column: span 6 / span 6; + } + .md\:col-span-4{ + grid-column: span 4 / span 4; + } + .md\:col-span-3{ + grid-column: span 3 / span 3; + } + .md\:row-start-auto{ + grid-row-start: auto; + } + .md\:-mx-0{ + margin-left: -0px; + margin-right: -0px; + } + .md\:ml-0{ + margin-left: 0px; + } + .md\:ml-auto{ + margin-left: auto; + } + .md\:mt-0{ + margin-top: 0px; + } + .md\:block{ + display: block; + } + .md\:flex{ + display: flex; + } + .md\:hidden{ + display: none; + } + .md\:h-\[65px\]{ + height: 65px; + } + .md\:w-52{ + width: 13rem; + } + .md\:flex-row{ + flex-direction: row; + } + .md\:items-center{ + align-items: center; + } + .md\:border-t-0{ + border-top-width: 0px; + } + .md\:border-l{ + border-left-width: 1px; + } + .md\:border-r{ + border-right-width: 1px; + } + .md\:border-l-0{ + border-left-width: 0px; + } + .md\:border-b-0{ + border-bottom-width: 0px; + } + .md\:bg-gradient-to-b{ + background-image: linear-gradient(to bottom, var(--tw-gradient-stops)); + } + .md\:from-slate-100{ + --tw-gradient-from: rgb(var(--color-slate-100)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-slate-100) / 0)); + } + .md\:to-transparent{ + --tw-gradient-to: transparent; + } + .md\:px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .md\:py-0{ + padding-top: 0px; + padding-bottom: 0px; + } + .md\:px-10{ + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .md\:pl-0{ + padding-left: 0px; + } + .md\:pt-10{ + padding-top: 2.5rem; + } + .dark .dark\:md\:from-darkmode-700{ + --tw-gradient-from: rgb(var(--color-darkmode-700)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-700) / 0)); + } +} +@media (min-width: 1024px){ + .lg\:col-span-6{ + grid-column: span 6 / span 6; + } + .lg\:col-span-4{ + grid-column: span 4 / span 4; + } + .lg\:col-span-8{ + grid-column: span 8 / span 8; + } + .lg\:col-span-3{ + grid-column: span 3 / span 3; + } + .lg\:col-span-9{ + grid-column: span 9 / span 9; + } + .lg\:col-span-2{ + grid-column: span 2 / span 2; + } + .lg\:col-span-7{ + grid-column: span 7 / span 7; + } + .lg\:row-start-3{ + grid-row-start: 3; + } + .lg\:mx-auto{ + margin-left: auto; + margin-right: auto; + } + .lg\:mt-5{ + margin-top: 1.25rem; + } + .lg\:mt-6{ + margin-top: 1.5rem; + } + .lg\:mr-20{ + margin-right: 5rem; + } + .lg\:mt-0{ + margin-top: 0px; + } + .lg\:ml-auto{ + margin-left: auto; + } + .lg\:ml-5{ + margin-left: 1.25rem; + } + .lg\:mb-0{ + margin-bottom: 0px; + } + .lg\:ml-8{ + margin-left: 2rem; + } + .lg\:mt-3{ + margin-top: 0.75rem; + } + .lg\:mr-1{ + margin-right: 0.25rem; + } + .lg\:ml-2{ + margin-left: 0.5rem; + } + .lg\:mr-auto{ + margin-right: auto; + } + .lg\:ml-0{ + margin-left: 0px; + } + .lg\:ml-4{ + margin-left: 1rem; + } + .lg\:block{ + display: block; + } + .lg\:flex{ + display: flex; + } + .lg\:h-auto{ + height: auto; + } + .lg\:h-32{ + height: 8rem; + } + .lg\:h-12{ + height: 3rem; + } + .lg\:w-auto{ + width: auto; + } + .lg\:w-2\/4{ + width: 50%; + } + .lg\:w-64{ + width: 16rem; + } + .lg\:w-40{ + width: 10rem; + } + .lg\:w-32{ + width: 8rem; + } + .lg\:w-56{ + width: 14rem; + } + .lg\:w-12{ + width: 3rem; + } + .lg\:w-1\/2{ + width: 50%; + } + .lg\:flex-row{ + flex-direction: row; + } + .lg\:flex-nowrap{ + flex-wrap: nowrap; + } + .lg\:items-start{ + align-items: flex-start; + } + .lg\:justify-start{ + justify-content: flex-start; + } + .lg\:justify-end{ + justify-content: flex-end; + } + .lg\:justify-center{ + justify-content: center; + } + .lg\:overflow-visible{ + overflow: visible; + } + .lg\:border-0{ + border-width: 0px; + } + .lg\:border-t-0{ + border-top-width: 0px; + } + .lg\:border-l{ + border-left-width: 1px; + } + .lg\:border-b-0{ + border-bottom-width: 0px; + } + .lg\:border-r{ + border-right-width: 1px; + } + .lg\:px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .lg\:py-3{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .lg\:px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .lg\:pb-0{ + padding-bottom: 0px; + } + .lg\:pl-5{ + padding-left: 1.25rem; + } + .lg\:pb-20{ + padding-bottom: 5rem; + } + .lg\:pt-0{ + padding-top: 0px; + } + .lg\:text-left{ + text-align: left; + } + .lg\:text-center{ + text-align: center; + } + .lg\:text-right{ + text-align: right; + } + .lg\:text-justify{ + text-align: justify; + } + .lg\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } + .before\:lg\:block::before{ + content: var(--tw-content); + display: block; + } + @-webkit-keyframes ping{ + 75%, 100%{ + content: var(--tw-content); + transform: scale(2); + opacity: 0; + } + } + @keyframes ping{ + 75%, 100%{ + content: var(--tw-content); + transform: scale(2); + opacity: 0; + } + } + .lg\:before\:animate-ping::before{ + content: var(--tw-content); + -webkit-animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + } +} +@media (min-width: 1280px){ + .xl\:absolute{ + position: absolute; + } + .xl\:sticky{ + position: -webkit-sticky; + position: sticky; + } + .xl\:z-auto{ + z-index: auto; + } + .xl\:col-span-4{ + grid-column: span 4 / span 4; + } + .xl\:col-span-8{ + grid-column: span 8 / span 8; + } + .xl\:col-span-3{ + grid-column: span 3 / span 3; + } + .xl\:col-span-12{ + grid-column: span 12 / span 12; + } + .xl\:col-span-6{ + grid-column: span 6 / span 6; + } + .xl\:col-span-9{ + grid-column: span 9 / span 9; + } + .xl\:col-span-1{ + grid-column: span 1 / span 1; + } + .xl\:col-span-2{ + grid-column: span 2 / span 2; + } + .xl\:col-start-1{ + grid-column-start: 1; + } + .xl\:col-start-10{ + grid-column-start: 10; + } + .xl\:row-start-1{ + grid-row-start: 1; + } + .xl\:row-start-2{ + grid-row-start: 2; + } + .xl\:row-start-auto{ + grid-row-start: auto; + } + .xl\:mx-5{ + margin-left: 1.25rem; + margin-right: 1.25rem; + } + .xl\:mx-6{ + margin-left: 1.5rem; + margin-right: 1.5rem; + } + .xl\:my-0{ + margin-top: 0px; + margin-bottom: 0px; + } + .xl\:\!mr-10{ + margin-right: 2.5rem !important; + } + .xl\:mt-0{ + margin-top: 0px; + } + .xl\:ml-5{ + margin-left: 1.25rem; + } + .xl\:ml-20{ + margin-left: 5rem; + } + .xl\:ml-64{ + margin-left: 16rem; + } + .xl\:ml-auto{ + margin-left: auto; + } + .xl\:mt-2{ + margin-top: 0.5rem; + } + .xl\:-mt-5{ + margin-top: -1.25rem; + } + .xl\:mt-8{ + margin-top: 2rem; + } + .xl\:mr-3{ + margin-right: 0.75rem; + } + .xl\:mt-24{ + margin-top: 6rem; + } + .xl\:mr-0{ + margin-right: 0px; + } + .xl\:ml-6{ + margin-left: 1.5rem; + } + .xl\:block{ + display: block; + } + .xl\:flex{ + display: flex; + } + .xl\:grid{ + display: grid; + } + .xl\:hidden{ + display: none; + } + .xl\:h-auto{ + height: auto; + } + .xl\:min-h-0{ + min-height: 0px; + } + .xl\:w-64{ + width: 16rem; + } + .xl\:w-3\/5{ + width: 60%; + } + .xl\:w-auto{ + width: auto; + } + .xl\:w-32{ + width: 8rem; + } + .xl\:w-\[180px\]{ + width: 180px; + } + .xl\:flex-initial{ + flex: 0 1 auto; + } + .xl\:flex-row{ + flex-direction: row; + } + .xl\:flex-nowrap{ + flex-wrap: nowrap; + } + .xl\:items-start{ + align-items: flex-start; + } + .xl\:overflow-y-auto{ + overflow-y: auto; + } + .xl\:bg-transparent{ + background-color: transparent; + } + .xl\:p-0{ + padding: 0px; + } + .xl\:px-0{ + padding-left: 0px; + padding-right: 0px; + } + .xl\:py-0{ + padding-top: 0px; + padding-bottom: 0px; + } + .xl\:pr-10{ + padding-right: 2.5rem; + } + .xl\:pr-20{ + padding-right: 5rem; + } + .xl\:pl-5{ + padding-left: 1.25rem; + } + .xl\:pl-10{ + padding-left: 2.5rem; + } + .xl\:pb-0{ + padding-bottom: 0px; + } + .xl\:pb-16{ + padding-bottom: 4rem; + } + .xl\:text-left{ + text-align: left; + } + .xl\:text-right{ + text-align: right; + } + .xl\:text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; + } + .xl\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } + .xl\:shadow-none{ + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } + .xl\:before\:block::before{ + content: var(--tw-content); + display: block; + } +} +@media (min-width: 1536px){ + .\32xl\:z-10{ + z-index: 10; + } + .\32xl\:col-span-9{ + grid-column: span 9 / span 9; + } + .\32xl\:col-span-3{ + grid-column: span 3 / span 3; + } + .\32xl\:col-span-12{ + grid-column: span 12 / span 12; + } + .\32xl\:col-span-2{ + grid-column: span 2 / span 2; + } + .\32xl\:col-span-10{ + grid-column: span 10 / span 10; + } + .\32xl\:col-span-5{ + grid-column: span 5 / span 5; + } + .\32xl\:col-span-6{ + grid-column: span 6 / span 6; + } + .\32xl\:col-span-8{ + grid-column: span 8 / span 8; + } + .\32xl\:col-span-4{ + grid-column: span 4 / span 4; + } + .\32xl\:col-start-auto{ + grid-column-start: auto; + } + .\32xl\:row-start-auto{ + grid-row-start: auto; + } + .\32xl\:mt-8{ + margin-top: 2rem; + } + .\32xl\:mt-6{ + margin-top: 1.5rem; + } + .\32xl\:mt-24{ + margin-top: 6rem; + } + .\32xl\:mt-0{ + margin-top: 0px; + } + .\32xl\:ml-16{ + margin-left: 4rem; + } + .\32xl\:-ml-20{ + margin-left: -5rem; + } + .\32xl\:mb-0{ + margin-bottom: 0px; + } + .\32xl\:-mt-1\.5{ + margin-top: -0.375rem; + } + .\32xl\:-mt-1{ + margin-top: -0.25rem; + } + .\32xl\:mr-auto{ + margin-right: auto; + } + .\32xl\:-mt-8{ + margin-top: -2rem; + } + .\32xl\:block{ + display: block; + } + .\32xl\:flex{ + display: flex; + } + .\32xl\:h-56{ + height: 14rem; + } + .\32xl\:w-14{ + width: 3.5rem; + } + .\32xl\:w-52{ + width: 13rem; + } + .\32xl\:w-4\/6{ + width: 66.666667%; + } + .\32xl\:w-2\/3{ + width: 66.666667%; + } + .\32xl\:w-full{ + width: 100%; + } + .\32xl\:flex-none{ + flex: none; + } + .\32xl\:grid-cols-7{ + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .\32xl\:justify-center{ + justify-content: center; + } + .\32xl\:gap-x-0{ + -moz-column-gap: 0px; + column-gap: 0px; + } + .\32xl\:overflow-visible{ + overflow: visible; + } + .\32xl\:border-l{ + border-left-width: 1px; + } + .\32xl\:bg-transparent{ + background-color: transparent; + } + .\32xl\:p-0{ + padding: 0px; + } + .\32xl\:px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .\32xl\:pl-6{ + padding-left: 1.5rem; + } + .\32xl\:pt-0{ + padding-top: 0px; + } + .\32xl\:pl-4{ + padding-left: 1rem; + } + .\32xl\:pl-2\.5{ + padding-left: 0.625rem; + } + .\32xl\:pl-2{ + padding-left: 0.5rem; + } + .\32xl\:text-base{ + font-size: 1rem; + line-height: 1.5rem; + } + .\32xl\:text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; + } + .\32xl\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } + .\32xl\:text-2xl{ + font-size: 1.5rem; + line-height: 2rem; + } + .\32xl\:text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; + } + .\32xl\:text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; + } + .\32xl\:leading-5{ + line-height: 1.25rem; + } + .\32xl\:text-success{ + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); + } +} + +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvYXBwLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvX3RhaWx3aW5kLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvX2NvbG9ycy5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2ZvbnRzL19yb2JvdG8uY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9taXhpbnMvX21lZGlhLmNzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX2JyZWFkY3J1bWIuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fZm9ybS1pbmxpbmUuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9faW50cm8uY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fbW9kYWwuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fcGFnaW5hdGlvbi5jc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL190YWJsZS5jc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL3N0eWxlcy9naXRodWIuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RpcHB5LmpzL2Rpc3QvdGlwcHkuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3RoZW1lcy9saWdodC5jc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdGlwcHkuanMvZGlzdC9zdmctYXJyb3cuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RpcHB5LmpzL2FuaW1hdGlvbnMvc2hpZnQtYXdheS5jc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdG9hc3RpZnktanMvc3JjL3RvYXN0aWZ5LmNzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kcm9wem9uZS9kaXN0L2Ryb3B6b25lLmNzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy96b29tLXZhbmlsbGEuanMvY3NzL3pvb20uY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3pvb20tdmFuaWxsYS5qcy9kaXN0L3pvb20uY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RhYnVsYXRvci10YWJsZXMvZGlzdC9jc3MvdGFidWxhdG9yLmNzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy90b20tc2VsZWN0L2Rpc3QvY3NzL3RvbS1zZWxlY3QuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Rpbnktc2xpZGVyL2Rpc3Qvc291cmNlbWFwcy90aW55LXNsaWRlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NpbXBsZWJhci9zcmMvc2ltcGxlYmFyLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fZ2xvYmFsLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fbG9naW4uY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL190YWJsZS1yZXBvcnQuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19yZXBvcnQtY2hhcnQuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19zZWFyY2guY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19ub3RpZmljYXRpb24uY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19yZXBvcnQtYm94LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fcmVwb3J0LWJveC0yLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fcmVwb3J0LWJveC0zLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fcmVwb3J0LWJveC00LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fY29udGVudC5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX3RvcC1uYXYuY3NzIiwiPG5vIHNvdXJjZT4iLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX3NpZGUtbmF2LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fYnJlYWRjcnVtYi5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX3RvYXN0aWZ5LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fdG9hc3RpZnktY29udGVudC5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX2x1Y2lkZS1pY29uLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fdG9wLWJhci1ib3hlZC5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX21vYmlsZS1tZW51LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9faW5ib3gtZmlsdGVyLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9faW5ib3guY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19jaGF0LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fY2hhdC1kcm9wZG93bi5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX25ld3MuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19wcmljaW5nLXRhYnMuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19lcnJvci1wYWdlLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fc2VhcmNoLXJlc3VsdC5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX25vdGlmaWNhdGlvbi1jb250ZW50LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fcmVwb3J0LW1hcHMuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19wb3MtZHJvcGRvd24uY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19wb3N0LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fbGl0ZXBpY2tlci5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX3Rpbnktc2xpZGVyLmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fdGlwcHkuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL190YWJ1bGF0b3IuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL190b20tc2VsZWN0LmNzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9jc3MvY29tcG9uZW50cy9fZHJvcHpvbmUuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19ja2VkaXRvci5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX3pvb20tdmFuaWxsYS5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX2RhcmstbW9kZS1zd2l0Y2hlci5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX2hsanMuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19zb3VyY2UtcHJldmlldy5jc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvY3NzL2NvbXBvbmVudHMvX2Z1bGwtY2FsZW5kYXIuY3NzIiwiLi4vLi4vLi4vcmVzb3VyY2VzL2Nzcy9jb21wb25lbnRzL19wcmlzdGluZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0VBV0U7QUNYRjs7RUFBYztBQUFkOzs7Q0FBYztBQUFkOzs7RUFBQSxzQkFBYyxFQUFkLE1BQWM7RUFBZCxlQUFjLEVBQWQsTUFBYztFQUFkLG1CQUFjLEVBQWQsTUFBYztFQUFkLHFCQUFjLEVBQWQsTUFBYztBQUFBO0FBQWQ7O0VBQUEsZ0JBQWM7QUFBQTtBQUFkOzs7OztDQUFjO0FBQWQ7RUFBQSxnQkFBYyxFQUFkLE1BQWM7RUFBZCw4QkFBYyxFQUFkLE1BQWM7RUFBZCxnQkFBYyxFQUFkLE1BQWM7RUFBZCxjQUFjO0tBQWQsV0FBYyxFQUFkLE1BQWM7RUFBZCw0TkFBYyxFQUFkLE1BQWM7QUFBQTtBQUFkOzs7Q0FBYztBQUFkO0VBQUEsU0FBYyxFQUFkLE1BQWM7RUFBZCxvQkFBYyxFQUFkLE1BQWM7QUFBQTtBQUFkOzs7O0NBQWM7QUFBZDtFQUFBLFNBQWMsRUFBZCxNQUFjO0VBQWQsY0FBYyxFQUFkLE1BQWM7RUFBZCxxQkFBYyxFQUFkLE1BQWM7QUFBQTtBQUFkOztDQUFjO0FBQWQ7RUFBQSx5Q0FBYztVQUFkLGlDQUFjO0FBQUE7QUFBZDs7Q0FBYztBQUFkOzs7Ozs7RUFBQSxrQkFBYztFQUFkLG9CQUFjO0FBQUE7QUFBZDs7Q0FBYztBQUFkO0VBQUEsY0FBYztFQUFkLHdCQUFjO0FBQUE7QUFBZDs7Q0FBYztBQUFkOztFQUFBLG1CQUFjO0FBQUE7QUFBZDs7O0NBQWM7QUFBZDs7OztFQUFBLCtHQUFjLEVBQWQsTUFBYztFQUFkLGNBQWMsRUFBZCxNQUFjO0FBQUE7QUFBZDs7Q0FBYztBQUFkO0VBQUEsY0FBYztBQUFBO0FBQWQ7O0NBQWM7QUFBZDs7RUFBQSxjQUFjO0VBQWQsY0FBYztFQUFkLGtCQUFjO0VBQWQsd0JBQWM7QUFBQTtBQUFkO0VBQUEsZUFBYztBQUFBO0FBQWQ7RUFBQSxXQUFjO0FBQUE7QUFBZDs7OztDQUFjO0FBQWQ7RUFBQSxjQUFjLEVBQWQsTUFBYztFQUFkLHFCQUFjLEVBQWQsTUFBYztFQUFkLHlCQUFjLEVBQWQsTUFBYztBQUFBO0FBQWQ7Ozs7Q0FBYztBQUFkOzs7OztFQUFBLG9CQUFjLEVBQWQsTUFBYztFQUFkLGVBQWMsRUFBZCxNQUFjO0VBQWQsb0JBQWMsRUFBZCxNQUFjO0VBQWQsY0FBYyxFQUFkLE1BQWM7RUFBZCxTQUFjLEVBQWQsTUFBYztFQUFkLFVBQWMsRUFBZCxNQUFjO0FBQUE7QUFBZDs7Q0FBYztBQUFkOztFQUFBLG9CQUFjO0FBQUE7QUFBZDs7O0NBQWM7QUFBZDs7OztFQUFBLDBCQUFjLEVBQWQsTUFBYztFQUFkLDZCQUFjLEVBQWQsTUFBYztFQUFkLHNCQUFjLEVBQWQsTUFBYztBQUFBO0FBQWQ7O0NBQWM7QUFBZDtFQUFBLGFBQWM7QUFBQTtBQUFkOztDQUFjO0FBQWQ7RUFBQSxnQkFBYztBQUFBO0FBQWQ7O0NBQWM7QUFBZDtFQUFBLHdCQUFjO0FBQUE7QUFBZDs7Q0FBYztBQUFkOztFQUFBLFlBQWM7QUFBQTtBQUFkOzs7Q0FBYztBQUFkO0VBQUEsNkJBQWMsRUFBZCxNQUFjO0VBQWQsb0JBQWMsRUFBZCxNQUFjO0FBQUE7QUFBZDs7Q0FBYztBQUFkO0VBQUEsd0JBQWM7QUFBQTtBQUFkOzs7Q0FBYztBQUFkO0VBQUEsMEJBQWMsRUFBZCxNQUFjO0VBQWQsYUFBYyxFQUFkLE1BQWM7QUFBQTtBQUFkOztDQUFjO0FBQWQ7RUFBQSxrQkFBYztBQUFBO0FBQWQ7O0NBQWM7QUFBZDs7Ozs7Ozs7Ozs7OztFQUFBLFNBQWM7QUFBQTtBQUFkO0VBQUEsU0FBYztFQUFkLFVBQWM7QUFBQTtBQUFkO0VBQUEsVUFBYztBQUFBO0FBQWQ7OztFQUFBLGdCQUFjO0VBQWQsU0FBYztFQUFkLFVBQWM7QUFBQTtBQUFkOztDQUFjO0FBQWQ7RUFBQSxnQkFBYztBQUFBO0FBQWQ7OztDQUFjO0FBQWQ7RUFBQSxVQUFjLEVBQWQsTUFBYztFQUFk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cEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsK0NBQW9CO0lBQXBCLG1EQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsdUVBQW9CO0lBQXBCLGtCQUFvQjtJQUFwQix1RUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsa0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLGtCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGlFQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsaUVBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQiwrREFBb0I7SUFBcEIsa0JBQW9CO0lBQXBCLCtEQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSx5QkFBb0I7SUFBcEIsa0JBQW9CO0lBQXBCLHVFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEIsbUJBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsb0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLGtEQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsaUVBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQiwrREFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLHVFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEIsdUJBQW9CO0FBQXBCO0lBQUEsa0VBQW9CO0lBQXBCLHlCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLGtFQUFvQjtJQUFwQixzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsb0VBQW9CO0lBQXBCLG9FQUFvQjtJQUFwQixvQkFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsa0RBQW9CO0lBQXBCLHNEQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxrRUFBb0I7SUFBcEIseUJBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsa0VBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsa0VBQW9CO0lBQXBCLHlCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLGtFQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLGtFQUFvQjtJQUFwQix5QkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxrRUFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxpRUFBb0I7SUFBcEIseUJBQW9CO0lBQXBCLGlFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsaUVBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsK0RBQW9CO0lBQXBCLHlCQUFvQjtJQUFwQiwrREFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLGtEQUFvQjtJQUFwQixzREFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCLG1CQUFvQjtBQUFwQjtJQUFBLG9CQUFvQjtJQUFwQixlQUFvQjtJQUFwQixtQkFBb0I7SUFBcEIsdUJBQW9CO0lBQXBCLHVCQUFvQjtJQUFwQixpQkFBb0I7SUFBcEIsbUJBQW9CO0lBQXBCLHNCQUFvQjtJQUFwQixxQkFBb0I7SUFBcEIsc0JBQW9CO0lBQXBCLGdCQUFvQjtJQUFwQiwwQ0FBb0I7SUFBcEIsdURBQW9CO0lBQXBCLHVHQUFvQjtJQUFwQix3S0FBb0I7SUFBcEIsd0pBQW9CO0lBQXBCLGdOQUFvQjtJQUFwQix3REFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSwyR0FBb0I7SUFBcEIseUdBQW9CO0lBQXBCLDRGQUFvQjtJQUFwQixtRUFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQTtBQUFvQjtBQUFwQjtJQUFBLHFFQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHdCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsbUJBQW9CO0lBQXBCO0FBQW9CO0FBQXBCLGtCQUFvQjtBQUFwQjtJQUFBLHFCQUFvQjtJQUFwQix3QkFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCLHFCQUFvQjtJQUFwQixrQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxxQkFBb0I7SUFBcEIsd0JBQW9CO0lBQXBCLGtCQUFvQjtJQUFwQixtQkFBb0I7SUFBcEIsbUJBQW9CO0lBQXBCO0FBQW9CO0FBQXBCLGtCQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsa0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSwrQ0FBb0I7SUFBcEIsbURBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQix1RUFBb0I7SUFBcEIsa0JBQW9CO0lBQXBCLHVFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsb0VBQW9CO0lBQXBCLGtCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLGtEQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsa0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLGtCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJ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QjtJQUFwQix1RUFBb0I7SUFBcEIsa0JBQW9CO0lBQXBCLHVFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsb0VBQW9CO0lBQXBCLGtCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLGtEQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGlFQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsaUVBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLCtEQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsK0RBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHlCQUFvQjtJQUFwQixrQkFBb0I7SUFBcEIsdUVBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUE7QUFBb0I7QUFBcEIsNEJBQW9CO0FBQXBCO0lBQUEsc0JBQW9C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O0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQTtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQixvRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsa0RBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUE7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsa0VBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLGtFQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQTtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCO0FBQW9CO0FBQXBCO0lBQUE7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsaUVBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBLHNCQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUEsc0JBQW9CO0lBQXBCLCtEQUFvQjtJQUFwQixvQkFBb0I7SUFBcEI7QUFBb0I7QUFBcEI7SUFBQSxzQkFBb0I7SUFBcEIsdUVBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFBO0FBQW9CO0FBQXBCO0lBQUE7QUFBb0I7QUFBcEIsdUJBQW9CO0FBQXBCO0lBQUEsa0VBQW9CO0lBQXBCLHlCQUFvQjtJQUFwQixrRUFBb0I7SUFBcEIsb0JBQW9CO0lBQXBCLG9CQUFvQjtJQUFwQjtBQUFvQjtBQUFwQjtJQUFB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O0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsb0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsZ0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEscUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsaUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsb0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEscUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsaUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsZ0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsb0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsbUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsbUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsbUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQSxtQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxtQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxpQkFBbUI7SUFBbkIsaUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLHlCQUFtQjtPQUFuQixzQkFBbUI7UUFBbkIscUJBQW1CO1lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQSx1QkFBbUI7U0FBbkI7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsdUJBQW1CO1NBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQSx3QkFBbUI7U0FBbkI7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLGdCQUFtQjtJQUFuQix1QkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsZ0NBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsaUNBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsZ0NBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsK0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQSxzQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxzQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLHNCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHNCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHNCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHNCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHNCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHNCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsc0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsc0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQSxrQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxrQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQSxrQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHFCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGdCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG1CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLCtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHFCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHFCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGlCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG1CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG1CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGlCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGlCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHFCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHFCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLHNCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGlCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGlCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLDRCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGdDQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLCtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLCtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsa0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsbUJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsZUFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxrQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxtQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxpQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxtQkFBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxlQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGtCQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLGVBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsb0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsb0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsb0JBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLG9CQUFtQjtJQUFuQjtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBO0FBQW1CO0FBQW5CO0lBQUEsdUNBQW1CO1lBQW5CO0FBQW1CO0FBQW5CO0lBQUEscUNBQW1CO1lBQW5CO0FBQW1CO0FBQW5CO0lBQUE7QUFBbUI7QUFBbkI7SUFBQTtBQUFtQjtBQUFuQjtJQUFBLDZFQUFtQjtJQUFuQixpR0FBbUI7SUFBbkI7QUFBbUI7QUFBbkI7SUFBQSxzQkFBbUI7SUFBbkIsOEJBQW1CO0lBQW5CO0FBQW1CO0FBQW5CO0lBQUEsMENBQW1CO0lBQW5CLHVEQUFtQjtJQUFuQjtBQUFtQjtB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QSxXb0NBQTtJcENBQSxZb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQSxtQm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQSwyQm9DQUE7SXBDQUEsbUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBLG1Cb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQSxxQ29DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQSwyQm9DQUE7SXBDQUEseUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsaUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBLG1Cb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLGlCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBO0NvQ0FBO0FwQ0FBO0lBQUE7Q29DQUE7QXBDQUE7SUFBQSx1Qm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQSxtQm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQTtDb0NBQTtBcENBQTtJQUFBO0NvQ0FBO0FwQ0FBO0lBQUE7Q29DQUE7QXBDQUE7SUFBQSwrQm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQSw0R29DQUE7SXBDQUEsMEdvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUE7Q29DQUE7QXBDQUE7SUFBQTtDb0NBQTtBcENBQTtJQUFBLHVCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLHVCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBO0NvQ0FBO0FwQ0FBO0lBQUEsdUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsdUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsdUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsdUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUE7Q29DQUE7QXBDQUE7SUFBQSx1Qm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQSx1Qm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQSx1Qm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQTtDb0NBQTtBcENBQTtJQUFBLG1Cb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBO0NvQ0FBO0FwQ0FBO0lBQUEsbUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsbUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsbUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUE7Q29DQUE7QXBDQUE7SUFBQTtDb0NBQTtBcENBQTtJQUFBO0NvQ0FBO0FwQ0FBO0lBQUE7Q29DQUE7QXBDQUE7SUFBQTtDb0NBQTtBcENBQTtJQUFBLG1Cb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBO0NvQ0FBO0FwQ0FBO0lBQUEsbUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsbUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUE7Q29DQUE7QXBDQUE7SUFBQTtDb0NBQTtBcENBQTtJQUFBLHFCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLHFCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLHFCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLHFCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLHFCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLHFCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLDJCb0NBQTtJcENBQSxtQm9DQUE7SXBDQUE7Q29DQUE7QXBDQUE7SUFBQSwyQm9DQUE7SXBDQUEsbUJvQ0FBO0lwQ0FBO0NvQ0FBO0FwQ0FBO0lBQUEsMkJvQ0FBO0lwQ0FBLHVCb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBLG1Cb0NBQTtJcENBQTtDb0NBQTtBcENBQTtJQUFBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQSxpQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxvQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxtQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQSxrQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxrQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxtQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxzQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxtQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxrQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxtQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxxQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxtQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxpQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxxQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUEsb0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsa0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsb0JvQ0FBO1FwQ0FBO0tvQ0FBO0NBQUE7QXBDQUE7SUFBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUEsVW9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQSxrQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBLGdEb0NBQTtRcENBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUEsc0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsaUJvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEscUJvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBLG1Eb0NBQTtRcENBQTtLb0NBQTtDQUFBO0FwQ0FBO0lBQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUEsa0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUEscUJvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEscUJvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsc0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBLG9Cb0NBQTtRcENBQTtLb0NBQTtJcENBQTtRQUFBLDJCb0NBQTtRcENBQTtLb0NBQTtJcENBQTtRQUFBO1lBQUEsMkJvQ0FBO1lwQ0FBLG9Cb0NBQTtZcENBQTtTb0NBQTtLQUFBO0lwQ0FBO1FBQUE7WUFBQSwyQm9DQUE7WXBDQUEsb0JvQ0FBO1lwQ0FBO1NvQ0FBO0tBQUE7SXBDQUE7UUFBQSwyQm9DQUE7UXBDQUEsK0RvQ0FBO2dCcENBQTtLb0NBQTtDQUFBO0FwQ0FBO0lBQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBLHlCb0NBQTtRcENBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQSxxQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxvQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxnQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBLGtCb0NBQTtRcENBQTtLb0NBQTtJcENBQTtRQUFBLGlCb0NBQTtRcENBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQSxtQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSxvQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQSx1Qm9DQUE7UXBDQUEsK0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsMkJvQ0FBO1FwQ0FBO0tvQ0FBO0NBQUE7QXBDQUE7SUFBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUEscUJvQ0FBO2FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQSxxQm9DQUE7UXBDQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQTtLb0NBQTtJcENBQTtRQUFBO0tvQ0FBO0lwQ0FBO1FBQUEsZ0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsb0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsb0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsa0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsb0JvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUEsbUJvQ0FBO1FwQ0FBO0tvQ0FBO0lwQ0FBO1FBQUE7S29DQUE7SXBDQUE7UUFBQSxxQm9DQUE7UXBDQUE7S29DQUE7Q0FBQSIsImZpbGUiOiJfYXBwLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gfCBUYWlsd2luZENTUyBEaXJlY3RpdmVzXG4gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gfFxuIHwgSW1wb3J0IFRhaWx3aW5kQ1NTIGRpcmVjdGl2ZXMgYW5kIHN3aXBlIG91dCBhdCBidWlsZC10aW1lIHdpdGggYWxsIG9mXG4gfCB0aGUgc3R5bGVzIGl0IGdlbmVyYXRlcyBiYXNlZCBvbiB5b3VyIGNvbmZpZ3VyZWQgZGVzaWduIHN5c3RlbS5cbiB8XG4gfCBQbGVhc2UgY2hlY2sgdGhpcyBsaW5rIGZvciBtb3JlIGRldGFpbHM6XG4gfCBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvbiNpbmNsdWRlLXRhaWx3aW5kLWluLXlvdXItY3NzXG4gfFxuICovXG5AaW1wb3J0IFwiLi9fdGFpbHdpbmQuY3NzXCI7XG5cbi8qXG4gICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIHwgQ29sb3JzXG4gICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIHxcbiAgIHwgSW1wb3J0IGFsbCBmb250cyB1c2VkIGluIHRoZSB0ZW1wbGF0ZSwgdGhlIGZvbnQgY29uZmlndXJhdGlvbiBjYW4gYmVcbiAgIHwgc2VlbiBpbiBcInRhaWx3aW5kLmNvbmZpZy5qc1wiLlxuICAgfFxuICAgfCBQbGVhc2UgY2hlY2sgdGhpcyBsaW5rIGZvciBtb3JlIGRldGFpbHM6XG4gICB8IGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGhlbWVcbiAgIHxcbiAgICovXG5AaW1wb3J0IFwiLi9fY29sb3JzLmNzc1wiO1xuXG4vKlxuICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICB8IEZvbnRzXG4gICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIHxcbiAgIHwgSW1wb3J0IGFsbCBmb250cyB1c2VkIGluIHRoZSB0ZW1wbGF0ZSwgdGhlIGZvbnQgY29uZmlndXJhdGlvbiBjYW4gYmVcbiAgIHwgc2VlbiBpbiBcInRhaWx3aW5kLmNvbmZpZy5qc1wiLlxuICAgfFxuICAgfCBQbGVhc2UgY2hlY2sgdGhpcyBsaW5rIGZvciBtb3JlIGRldGFpbHM6XG4gICB8IGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGhlbWVcbiAgIHxcbiAgICovXG5AaW1wb3J0IFwiLi9mb250cy9fcm9ib3RvLmNzc1wiO1xuXG4vKlxuICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICB8IE1peGluc1xuICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICB8XG4gICB8IEltcG9ydCBoZWxwZXIgbWl4aW5zLlxuICAgfFxuICAgKi9cbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvbWl4aW5zL19tZWRpYS5jc3NcIjtcblxuLypcbiAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgfCAzcmQgUGFydHkgTGlicmFyaWVzXG4gICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIHxcbiAgIHwgSW1wb3J0IDNyZCBwYXJ0eSBsaWJyYXJ5IENTUy9TQVNTIGZpbGVzLlxuICAgfFxuICAgKi9cbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX2JyZWFkY3J1bWIuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19hY2NvcmRpb24uY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19hbGVydC5jc3NcIjtcbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX2J0bi5jc3NcIjtcbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX2Ryb3Bkb3duLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fZmlsZS5jc3NcIjtcbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX2Zvcm0tcmVzZXQuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19mb3JtLWNoZWNrLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fZm9ybS1jb250cm9sLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fZm9ybS1oZWxwLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fZm9ybS1pbmxpbmUuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19mb3JtLWxhYmVsLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fZm9ybS1zZWxlY3QuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19pbWFnZS1maXQuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19pbnB1dC1ncm91cC5jc3NcIjtcbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX2ludHJvLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fbW9kYWwuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19wYWdpbmF0aW9uLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fcHJvZ3Jlc3MuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL19zY3JvbGxiYXIuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL190YWIuY3NzXCI7XG5AaW1wb3J0IFwiQGxlZnQ0Y29kZS90dy1zdGFydGVyL2Rpc3QvY3NzL190YWJsZS5jc3NcIjtcbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX3R5cGluZy1kb3RzLmNzc1wiO1xuQGltcG9ydCBcIkBsZWZ0NGNvZGUvdHctc3RhcnRlci9kaXN0L2Nzcy9fem9vbS1pbi5jc3NcIjtcbkBpbXBvcnQgXCJAbGVmdDRjb2RlL3R3LXN0YXJ0ZXIvZGlzdC9jc3MvX2JveC5jc3NcIjtcbkBpbXBvcnQgXCJoaWdobGlnaHQuanMvc3R5bGVzL2dpdGh1Yi5jc3NcIjtcbkBpbXBvcnQgXCJ0aXBweS5qcy9kaXN0L3RpcHB5LmNzc1wiO1xuQGltcG9ydCBcInRpcHB5LmpzL3RoZW1lcy9saWdodC5jc3NcIjtcbkBpbXBvcnQgXCJ0aXBweS5qcy9kaXN0L3N2Zy1hcnJvdy5jc3NcIjtcbkBpbXBvcnQgXCJ0aXBweS5qcy9hbmltYXRpb25zL3NoaWZ0LWF3YXkuY3NzXCI7XG5AaW1wb3J0IFwidG9hc3RpZnktanMvc3JjL3RvYXN0aWZ5LmNzc1wiO1xuQGltcG9ydCBcImRyb3B6b25lL2Rpc3QvZHJvcHpvbmUuY3NzXCI7XG5AaW1wb3J0IFwiem9vbS12YW5pbGxhLmpzL2Rpc3Qvem9vbS5jc3NcIjtcbkBpbXBvcnQgXCJ0YWJ1bGF0b3ItdGFibGVzL2Rpc3QvY3NzL3RhYnVsYXRvci5jc3NcIjtcbkBpbXBvcnQgXCJ0b20tc2VsZWN0L2Rpc3QvY3NzL3RvbS1zZWxlY3QuY3NzXCI7XG5AaW1wb3J0IFwidGlueS1zbGlkZXIvZGlzdC90aW55LXNsaWRlci5jc3NcIjtcbkBpbXBvcnQgXCJzaW1wbGViYXIvc3JjL3NpbXBsZWJhci5jc3NcIjtcblxuLypcbiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiB8IENvbXBvbmVudHNcbiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiB8XG4gfCBJbXBvcnQgQ1NTL1NDU1MgY29tcG9uZW50cy5cbiB8XG4gKi9cbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX2dsb2JhbC5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX2xvZ2luLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fdGFibGUtcmVwb3J0LmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fcmVwb3J0LWNoYXJ0LmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fc2VhcmNoLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fbm90aWZpY2F0aW9uLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fcmVwb3J0LWJveC5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3JlcG9ydC1ib3gtMi5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3JlcG9ydC1ib3gtMy5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3JlcG9ydC1ib3gtNC5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX2NvbnRlbnQuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL190b3AtbmF2LmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fc2lkZS1uYXYuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19icmVhZGNydW1iLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fdG9hc3RpZnkuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL190b2FzdGlmeS1jb250ZW50LmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fbHVjaWRlLWljb24uY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL190b3AtYmFyLWJveGVkLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fbW9iaWxlLW1lbnUuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19pbmJveC1maWx0ZXIuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19pbmJveC5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX2NoYXQuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19jaGF0LWRyb3Bkb3duLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fbmV3cy5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3ByaWNpbmctdGFicy5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX2Vycm9yLXBhZ2UuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19zZWFyY2gtcmVzdWx0LmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fbm90aWZpY2F0aW9uLWNvbnRlbnQuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19yZXBvcnQtbWFwcy5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3Bvcy1kcm9wZG93bi5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3Bvc3QuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19saXRlcGlja2VyLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fdGlueS1zbGlkZXIuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL190aXBweS5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3RhYnVsYXRvci5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3RvbS1zZWxlY3QuY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL19kcm9wem9uZS5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX2NrZWRpdG9yLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fem9vbS12YW5pbGxhLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fZGFyay1tb2RlLXN3aXRjaGVyLmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9faGxqcy5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3NvdXJjZS1wcmV2aWV3LmNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9fZnVsbC1jYWxlbmRhci5jc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvX3ByaXN0aW5lLmNzc1wiO1xuIiwiQHRhaWx3aW5kIGJhc2U7XG5AdGFpbHdpbmQgY29tcG9uZW50cztcbkB0YWlsd2luZCB1dGlsaXRpZXM7XG4iLCIvKiBEZWZhdWx0IGNvbG9ycyAqL1xuOnJvb3Qge1xuICAgIC0tY29sb3ItcHJpbWFyeTogdGhlbWUoXCJjb2xvcnMucmdiLmN5YW4uOTAwXCIpO1xuICAgIC0tY29sb3Itc2Vjb25kYXJ5OiB0aGVtZShcImNvbG9ycy5yZ2Iuc2xhdGUuMjAwXCIpO1xuICAgIC0tY29sb3Itc3VjY2VzczogdGhlbWUoXCJjb2xvcnMucmdiLnRlYWwuNjAwXCIpO1xuICAgIC0tY29sb3ItaW5mbzogdGhlbWUoXCJjb2xvcnMucmdiLmN5YW4uNTAwXCIpO1xuICAgIC0tY29sb3Itd2FybmluZzogdGhlbWUoXCJjb2xvcnMucmdiLmFtYmVyLjUwMFwiKTtcbiAgICAtLWNvbG9yLXBlbmRpbmc6IHRoZW1lKFwiY29sb3JzLnJnYi5hbWJlci42MDBcIik7XG4gICAgLS1jb2xvci1kYW5nZXI6IHRoZW1lKFwiY29sb3JzLnJnYi5yZWQuNzAwXCIpO1xuICAgIC0tY29sb3ItbGlnaHQ6IHRoZW1lKFwiY29sb3JzLnJnYi5zbGF0ZS4xMDBcIik7XG4gICAgLS1jb2xvci1kYXJrOiB0aGVtZShcImNvbG9ycy5yZ2Iuc2xhdGUuODAwXCIpO1xuICAgIC0tY29sb3Itc2xhdGUtNTA6IHRoZW1lKFwiY29sb3JzLnJnYi5zbGF0ZS41MFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTEwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjEwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTIwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjIwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTMwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjMwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTQwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjQwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTUwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjUwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTYwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjYwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTcwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjcwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTgwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjgwMFwiKTtcbiAgICAtLWNvbG9yLXNsYXRlLTkwMDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjkwMFwiKTtcbn1cblxuLyogRGVmYXVsdCBkYXJrLW1vZGUgY29sb3JzICovXG4uZGFyayB7XG4gICAgLS1jb2xvci1wcmltYXJ5OiB0aGVtZShcImNvbG9ycy5yZ2IuY3lhbi44MDBcIik7XG4gICAgLS1jb2xvci1zbGF0ZS01MDA6IHRoZW1lKFwiY29sb3JzLnJnYi5zbGF0ZS40MDBcIik7XG4gICAgLS1jb2xvci1kYXJrbW9kZS01MDogODcgMTAzIDEzMjtcbiAgICAtLWNvbG9yLWRhcmttb2RlLTEwMDogNzQgOTAgMTIxO1xuICAgIC0tY29sb3ItZGFya21vZGUtMjAwOiA2NSA4MSAxMTQ7XG4gICAgLS1jb2xvci1kYXJrbW9kZS0zMDA6IDUzIDY5IDEwMztcbiAgICAtLWNvbG9yLWRhcmttb2RlLTQwMDogNDggNjEgOTM7XG4gICAgLS1jb2xvci1kYXJrbW9kZS01MDA6IDQxIDUzIDgyO1xuICAgIC0tY29sb3ItZGFya21vZGUtNjAwOiA0MCA1MSA3ODtcbiAgICAtLWNvbG9yLWRhcmttb2RlLTcwMDogMzUgNDUgNjk7XG4gICAgLS1jb2xvci1kYXJrbW9kZS04MDA6IDI3IDM3IDU5O1xuICAgIC0tY29sb3ItZGFya21vZGUtOTAwOiAxNSAyMyA0Mjtcbn1cblxuLyogVGhlbWUgMSBjb2xvcnMgKi9cbi50aGVtZS0xIHtcbiAgICAtLWNvbG9yLXByaW1hcnk6IHRoZW1lKFwiY29sb3JzLnJnYi5ibHVlLjgwMFwiKTtcbiAgICAtLWNvbG9yLXNlY29uZGFyeTogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjIwMFwiKTtcbiAgICAtLWNvbG9yLXN1Y2Nlc3M6IHRoZW1lKFwiY29sb3JzLnJnYi5saW1lLjUwMFwiKTtcbiAgICAtLWNvbG9yLWluZm86IHRoZW1lKFwiY29sb3JzLnJnYi5jeWFuLjUwMFwiKTtcbiAgICAtLWNvbG9yLXdhcm5pbmc6IHRoZW1lKFwiY29sb3JzLnJnYi55ZWxsb3cuNDAwXCIpO1xuICAgIC0tY29sb3ItcGVuZGluZzogdGhlbWUoXCJjb2xvcnMucmdiLm9yYW5nZS41MDBcIik7XG4gICAgLS1jb2xvci1kYW5nZXI6IHRoZW1lKFwiY29sb3JzLnJnYi5yZWQuNjAwXCIpO1xuICAgIC0tY29sb3ItbGlnaHQ6IHRoZW1lKFwiY29sb3JzLnJnYi5zbGF0ZS4xMDBcIik7XG4gICAgLS1jb2xvci1kYXJrOiB0aGVtZShcImNvbG9ycy5yZ2Iuc2xhdGUuODAwXCIpO1xuICAgICYuZGFyayB7XG4gICAgICAgIC0tY29sb3ItcHJpbWFyeTogdGhlbWUoXCJjb2xvcnMucmdiLmJsdWUuNzAwXCIpO1xuICAgIH1cbn1cblxuLyogVGhlbWUgMiBjb2xvcnMgKi9cbi50aGVtZS0yIHtcbiAgICAtLWNvbG9yLXByaW1hcnk6IHRoZW1lKFwiY29sb3JzLnJnYi5ibHVlLjkwMFwiKTtcbiAgICAtLWNvbG9yLXNlY29uZGFyeTogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjIwMFwiKTtcbiAgICAtLWNvbG9yLXN1Y2Nlc3M6IHRoZW1lKFwiY29sb3JzLnJnYi50ZWFsLjYwMFwiKTtcbiAgICAtLWNvbG9yLWluZm86IHRoZW1lKFwiY29sb3JzLnJnYi5jeWFuLjUwMFwiKTtcbiAgICAtLWNvbG9yLXdhcm5pbmc6IHRoZW1lKFwiY29sb3JzLnJnYi5hbWJlci41MDBcIik7XG4gICAgLS1jb2xvci1wZW5kaW5nOiB0aGVtZShcImNvbG9ycy5yZ2Iub3JhbmdlLjUwMFwiKTtcbiAgICAtLWNvbG9yLWRhbmdlcjogdGhlbWUoXCJjb2xvcnMucmdiLnJlZC43MDBcIik7XG4gICAgLS1jb2xvci1saWdodDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjEwMFwiKTtcbiAgICAtLWNvbG9yLWRhcms6IHRoZW1lKFwiY29sb3JzLnJnYi5zbGF0ZS44MDBcIik7XG4gICAgJi5kYXJrIHtcbiAgICAgICAgLS1jb2xvci1wcmltYXJ5OiB0aGVtZShcImNvbG9ycy5yZ2IuYmx1ZS44MDBcIik7XG4gICAgfVxufVxuXG4vKiBUaGVtZSAzIGNvbG9ycyAqL1xuLnRoZW1lLTMge1xuICAgIC0tY29sb3ItcHJpbWFyeTogdGhlbWUoXCJjb2xvcnMucmdiLmVtZXJhbGQuOTAwXCIpO1xuICAgIC0tY29sb3Itc2Vjb25kYXJ5OiB0aGVtZShcImNvbG9ycy5yZ2Iuc2xhdGUuMjAwXCIpO1xuICAgIC0tY29sb3Itc3VjY2VzczogdGhlbWUoXCJjb2xvcnMucmdiLmVtZXJhbGQuNjAwXCIpO1xuICAgIC0tY29sb3ItaW5mbzogdGhlbWUoXCJjb2xvcnMucmdiLmN5YW4uNTAwXCIpO1xuICAgIC0tY29sb3Itd2FybmluZzogdGhlbWUoXCJjb2xvcnMucmdiLnllbGxvdy40MDBcIik7XG4gICAgLS1jb2xvci1wZW5kaW5nOiB0aGVtZShcImNvbG9ycy5yZ2IuYW1iZXIuNTAwXCIpO1xuICAgIC0tY29sb3ItZGFuZ2VyOiB0aGVtZShcImNvbG9ycy5yZ2Iucm9zZS42MDBcIik7XG4gICAgLS1jb2xvci1saWdodDogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjEwMFwiKTtcbiAgICAtLWNvbG9yLWRhcms6IHRoZW1lKFwiY29sb3JzLnJnYi5zbGF0ZS44MDBcIik7XG4gICAgJi5kYXJrIHtcbiAgICAgICAgLS1jb2xvci1wcmltYXJ5OiB0aGVtZShcImNvbG9ycy5yZ2IuZW1lcmFsZC44MDBcIik7XG4gICAgfVxufVxuXG4vKiBUaGVtZSA0IGNvbG9ycyAqL1xuLnRoZW1lLTQge1xuICAgIC0tY29sb3ItcHJpbWFyeTogdGhlbWUoXCJjb2xvcnMucmdiLmluZGlnby45MDBcIik7XG4gICAgLS1jb2xvci1zZWNvbmRhcnk6IHRoZW1lKFwiY29sb3JzLnJnYi5zbGF0ZS4yMDBcIik7XG4gICAgLS1jb2xvci1zdWNjZXNzOiB0aGVtZShcImNvbG9ycy5yZ2IuZW1lcmFsZC42MDBcIik7XG4gICAgLS1jb2xvci1pbmZvOiB0aGVtZShcImNvbG9ycy5yZ2IuY3lhbi41MDBcIik7XG4gICAgLS1jb2xvci13YXJuaW5nOiB0aGVtZShcImNvbG9ycy5yZ2IueWVsbG93LjUwMFwiKTtcbiAgICAtLWNvbG9yLXBlbmRpbmc6IHRoZW1lKFwiY29sb3JzLnJnYi5vcmFuZ2UuNjAwXCIpO1xuICAgIC0tY29sb3ItZGFuZ2VyOiB0aGVtZShcImNvbG9ycy5yZ2IucmVkLjcwMFwiKTtcbiAgICAtLWNvbG9yLWxpZ2h0OiB0aGVtZShcImNvbG9ycy5yZ2Iuc2xhdGUuMTAwXCIpO1xuICAgIC0tY29sb3ItZGFyazogdGhlbWUoXCJjb2xvcnMucmdiLnNsYXRlLjgwMFwiKTtcbiAgICAmLmRhcmsge1xuICAgICAgICAtLWNvbG9yLXByaW1hcnk6IHRoZW1lKFwiY29sb3JzLnJnYi5pbmRpZ28uNzAwXCIpO1xuICAgIH1cbn1cbiIsIi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBUaGluIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tVGhpbkl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPaUNucUV1OTJGcjFNdTUxUXJFejBkTC12d25ZaDJlZy53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLFxuICAgIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogMTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gVGhpbiBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLVRoaW5JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2lDbnFFdTkyRnIxTXU1MVFyRXpRZEwtdnduWWgyZWcud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuLyogZ3JlZWstZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIFRoaW4gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1UaGluSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9pQ25xRXU5MkZyMU11NTFRckV6d2RMLXZ3blloMmVnLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogMTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gVGhpbiBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLVRoaW5JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2lDbnFFdTkyRnIxTXU1MVFyRXpNZEwtdnduWWgyZWcud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIFRoaW4gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1UaGluSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9pQ25xRXU5MkZyMU11NTFRckV6OGRMLXZ3blloMmVnLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBUaGluIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tVGhpbkl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPaUNucUV1OTJGcjFNdTUxUXJFejRkTC12d25ZaDJlZy53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBUaGluIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tVGhpbkl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPaUNucUV1OTJGcjFNdTUxUXJFekFkTC12d25ZZy53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUxpZ2h0SXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUakFTYzNDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLFxuICAgIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTGlnaHQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1MaWdodEl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVGpBU2MtQ3NUWWw0Qk9RM28ud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuLyogZ3JlZWstZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0IEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRJdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRqQVNjMkNzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTGlnaHQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1MaWdodEl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVGpBU2M1Q3NUWWw0Qk9RM28ud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0IEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRJdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRqQVNjMUNzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUxpZ2h0SXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUakFTYzBDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUxpZ2h0SXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUakFTYzZDc1RZbDRCTy53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNdTUxeEZJeklYS01ueXJZay53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLFxuICAgIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTXU1MXhNSXpJWEtNbnlyWWsud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuLyogZ3JlZWstZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU11NTF4RUl6SVhLTW55cllrLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2tDbnFFdTkyRnIxTXU1MXhMSXpJWEtNbnlyWWsud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU11NTF4SEl6SVhLTW55cllrLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNdTUxeEdJeklYS01ueXJZay53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNdTUxeElJeklYS01ueS53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBNZWRpdW0gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVM3QUNjM0NzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsXG4gICAgVStGRTJFLUZFMkY7XG59XG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBNZWRpdW0gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVM3QUNjLUNzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBNZWRpdW0gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVM3QUNjMkNzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTWVkaXVtIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFTN0FDYzVDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcbn1cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTWVkaXVtIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFTN0FDYzFDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTWVkaXVtIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFTN0FDYzBDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBNZWRpdW0gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1JdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVM3QUNjNkNzVFlsNEJPLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsXG4gICAgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LFxuICAgIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJvbGQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUekJpYzNDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLFxuICAgIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQm9sZCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUJvbGRJdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVR6QmljLUNzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCb2xkIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tQm9sZEl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVHpCaWMyQ3NUWWw0Qk9RM28ud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCb2xkIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tQm9sZEl0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVHpCaWM1Q3NUWWw0Qk9RM28ud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJvbGQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUekJpYzFDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQm9sZCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUJvbGRJdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVR6QmljMENzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLFxuICAgIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJvbGQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUekJpYzZDc1RZbDRCTy53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCbGFjayBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUJsYWNrSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUTEJDYzNDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLFxuICAgIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQmxhY2sgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1CbGFja0l0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVExCQ2MtQ3NUWWw0Qk9RM28ud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuLyogZ3JlZWstZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJsYWNrIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tQmxhY2tJdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRMQkNjMkNzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQmxhY2sgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1CbGFja0l0YWxpY1wiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPakNucUV1OTJGcjFNdTUxVExCQ2M1Q3NUWWw0Qk9RM28ud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJsYWNrIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tQmxhY2tJdGFsaWNcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2pDbnFFdTkyRnIxTXU1MVRMQkNjMUNzVFlsNEJPUTNvLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCbGFjayBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUJsYWNrSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUTEJDYzBDc1RZbDRCT1Ezby53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCbGFjayBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUJsYWNrSXRhbGljXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9qQ25xRXU5MkZyMU11NTFUTEJDYzZDc1RZbDRCTy53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBUaGluXCIpLCBsb2NhbChcIlJvYm90by1UaGluXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU1tZ1Z4Rkl6SVhLTW55cllrLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsXG4gICAgVStGRTJFLUZFMkY7XG59XG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBUaGluXCIpLCBsb2NhbChcIlJvYm90by1UaGluXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU1tZ1Z4TUl6SVhLTW55cllrLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBUaGluXCIpLCBsb2NhbChcIlJvYm90by1UaGluXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU1tZ1Z4RUl6SVhLTW55cllrLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gVGhpblwiKSwgbG9jYWwoXCJSb2JvdG8tVGhpblwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNbWdWeExJeklYS01ueXJZay53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcbn1cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gVGhpblwiKSwgbG9jYWwoXCJSb2JvdG8tVGhpblwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNbWdWeEhJeklYS01ueXJZay53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gVGhpblwiKSwgbG9jYWwoXCJSb2JvdG8tVGhpblwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPa0NucUV1OTJGcjFNbWdWeEdJeklYS01ueXJZay53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBUaGluXCIpLCBsb2NhbChcIlJvYm90by1UaGluXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9rQ25xRXU5MkZyMU1tZ1Z4SUl6SVhLTW55LndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsXG4gICAgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LFxuICAgIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0XCIpLCBsb2NhbChcIlJvYm90by1MaWdodFwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVNVNWZDUmM0QU1QNmxiQlAud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RixcbiAgICBVK0ZFMkUtRkUyRjtcbn1cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0XCIpLCBsb2NhbChcIlJvYm90by1MaWdodFwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVNVNWZBQmM0QU1QNmxiQlAud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuLyogZ3JlZWstZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0XCIpLCBsb2NhbChcIlJvYm90by1MaWdodFwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVNVNWZDQmM0QU1QNmxiQlAud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1TVTVmQnhjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xufVxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1TVTVmQ3hjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1TVTVmQ2hjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLFxuICAgIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0XCIpLCBsb2NhbChcIlJvYm90by1MaWdodFwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVNVNWZCQmM0QU1QNmxRLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsXG4gICAgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LFxuICAgIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvXCIpLCBsb2NhbChcIlJvYm90by1SZWd1bGFyXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9tQ25xRXU5MkZyMU11NzJ4S0tUVTFLdm56LndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsXG4gICAgVStGRTJFLUZFMkY7XG59XG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90b1wiKSwgbG9jYWwoXCJSb2JvdG8tUmVndWxhclwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbUNucUV1OTJGcjFNdTVteEtLVFUxS3Zuei53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG9cIiksIGxvY2FsKFwiUm9ib3RvLVJlZ3VsYXJcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT21DbnFFdTkyRnIxTXU3bXhLS1RVMUt2bnoud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90b1wiKSwgbG9jYWwoXCJSb2JvdG8tUmVndWxhclwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbUNucUV1OTJGcjFNdTRXeEtLVFUxS3Zuei53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcbn1cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG9cIiksIGxvY2FsKFwiUm9ib3RvLVJlZ3VsYXJcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT21DbnFFdTkyRnIxTXU3V3hLS1RVMUt2bnoud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xufVxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvXCIpLCBsb2NhbChcIlJvYm90by1SZWd1bGFyXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9tQ25xRXU5MkZyMU11N0d4S0tUVTFLdm56LndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLFxuICAgIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvXCIpLCBsb2NhbChcIlJvYm90by1SZWd1bGFyXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9tQ25xRXU5MkZyMU11NG14S0tUVTFLZy53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBNZWRpdW1cIiksIGxvY2FsKFwiUm9ib3RvLU1lZGl1bVwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbUVVOWZDUmM0QU1QNmxiQlAud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RixcbiAgICBVK0ZFMkUtRkUyRjtcbn1cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIE1lZGl1bVwiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tRVU5ZkFCYzRBTVA2bGJCUC53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTWVkaXVtXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1cIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1FVTlmQ0JjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTWVkaXVtXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1cIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1FVTlmQnhjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xufVxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBNZWRpdW1cIiksIGxvY2FsKFwiUm9ib3RvLU1lZGl1bVwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbUVVOWZDeGM0QU1QNmxiQlAud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xufVxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIE1lZGl1bVwiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tRVU5ZkNoYzRBTVA2bGJCUC53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBNZWRpdW1cIiksIGxvY2FsKFwiUm9ib3RvLU1lZGl1bVwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbUVVOWZCQmM0QU1QNmxRLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsXG4gICAgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LFxuICAgIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJvbGRcIiksIGxvY2FsKFwiUm9ib3RvLUJvbGRcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1XVWxmQ1JjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsXG4gICAgVStGRTJFLUZFMkY7XG59XG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCb2xkXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tV1VsZkFCYzRBTVA2bGJCUC53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQm9sZFwiKSwgbG9jYWwoXCJSb2JvdG8tQm9sZFwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVdVbGZDQmM0QU1QNmxiQlAud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCb2xkXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tV1VsZkJ4YzRBTVA2bGJCUC53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcbn1cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQm9sZFwiKSwgbG9jYWwoXCJSb2JvdG8tQm9sZFwiKSxcbiAgICB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MjAvS0ZPbENucUV1OTJGcjFNbVdVbGZDeGM0QU1QNmxiQlAud29mZjIpXG4gICAgICBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xufVxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJvbGRcIiksIGxvY2FsKFwiUm9ib3RvLUJvbGRcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1XVWxmQ2hjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLFxuICAgIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIEJvbGRcIiksIGxvY2FsKFwiUm9ib3RvLUJvbGRcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1XVWxmQkJjNEFNUDZsUS53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCbGFja1wiKSwgbG9jYWwoXCJSb2JvdG8tQmxhY2tcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1ZVXRmQ1JjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsXG4gICAgVStGRTJFLUZFMkY7XG59XG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCbGFja1wiKSwgbG9jYWwoXCJSb2JvdG8tQmxhY2tcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1ZVXRmQUJjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCbGFja1wiKSwgbG9jYWwoXCJSb2JvdG8tQmxhY2tcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1ZVXRmQ0JjNEFNUDZsYkJQLndvZmYyKVxuICAgICAgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQmxhY2tcIiksIGxvY2FsKFwiUm9ib3RvLUJsYWNrXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tWVV0ZkJ4YzRBTVA2bGJCUC53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcbn1cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQmxhY2tcIiksIGxvY2FsKFwiUm9ib3RvLUJsYWNrXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tWVV0ZkN4YzRBTVA2bGJCUC53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gQmxhY2tcIiksIGxvY2FsKFwiUm9ib3RvLUJsYWNrXCIpLFxuICAgIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YyMC9LRk9sQ25xRXU5MkZyMU1tWVV0ZkNoYzRBTVA2bGJCUC53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQixcbiAgICBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBCbGFja1wiKSwgbG9jYWwoXCJSb2JvdG8tQmxhY2tcIiksXG4gICAgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjIwL0tGT2xDbnFFdTkyRnIxTW1ZVXRmQkJjNEFNUDZsUS53b2ZmMilcbiAgICAgIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLFxuICAgIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSxcbiAgICBVK0ZFRkYsIFUrRkZGRDtcbn1cbiIsIi8qIEJyZWFrcG9pbnQgdXAgKi9cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRzY3JlZW4pIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6IGNhbGModGhlbWUoXCJzY3JlZW5zLiN7JHNjcmVlbn1cIikgLSAxcHgpKSB7XG4gICAgJiB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLyogQnJlYWtwb2ludCBkb3duICovXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRzY3JlZW4pIHtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IGNhbGModGhlbWUoXCJzY3JlZW5zLiN7JHNjcmVlbn1cIikgLSAxcHgpKSB7XG4gICAgJiB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLyogQnJlYWtwb2ludCBvbmx5ICovXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRzY3JlZW4pIHtcbiAgQG1lZGlhICh3aWR0aDogbWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJHNjcmVlbikpIHtcbiAgICAmIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLmJyZWFkY3J1bWIge1xuICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1wcmltYXJ5IGRhcms6dGV4dC1zbGF0ZS0zMDA7XG4gICYuYnJlYWRjcnVtYi1saWdodCB7XG4gICAgQGFwcGx5IHRleHQtd2hpdGUgdGV4dC1vcGFjaXR5LTkwO1xuICAgIC5icmVhZGNydW1iLWl0ZW0ge1xuICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZThlZWZmJyBzdHJva2Utd2lkdGg9JzEnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgY2xhc3M9J2ZlYXRoZXIgZmVhdGhlci1jaGV2cm9uLXJpZ2h0IGJyZWFkY3J1bWJfX2ljb24nJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc5IDE4IDE1IDEyIDkgNiclM0UlM0MvcG9seWxpbmUlM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgfVxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZSB0ZXh0LW9wYWNpdHktODA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5icmVhZGNydW1iLWl0ZW0ge1xuICAgICY6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlIG1sLTUgcGwtMC41O1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2Utd2lkdGg9JzEnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgY2xhc3M9J2ZlYXRoZXIgZmVhdGhlci1jaGV2cm9uLXJpZ2h0IGJyZWFkY3J1bWJfX2ljb24nJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc5IDE4IDE1IDEyIDkgNiclM0UlM0MvcG9seWxpbmUlM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMS4xMjVyZW07XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSBteS1hdXRvIGluc2V0LXktMDtcbiAgICAgIH1cbiAgICB9XG4gICAgJi5hY3RpdmUge1xuICAgICAgQGFwcGx5IHRleHQtc2xhdGUtODAwIGN1cnNvci10ZXh0IGRhcms6dGV4dC1zbGF0ZS00MDA7XG4gICAgfVxuICB9XG59XG5cbi5kYXJrIHtcbiAgLmJyZWFkY3J1bWIge1xuICAgIC5icmVhZGNydW1iLWl0ZW0ge1xuICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzNzE4MDk2JyBzdHJva2Utd2lkdGg9JzEnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgY2xhc3M9J2ZlYXRoZXIgZmVhdGhlci1jaGV2cm9uLXJpZ2h0IGJyZWFkY3J1bWJfX2ljb24nJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc5IDE4IDE1IDEyIDkgNiclM0UlM0MvcG9seWxpbmUlM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAbGF5ZXIgY29tcG9uZW50cyB7XG4gIC5mb3JtLWlubGluZSB7XG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyO1xuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgIEBhcHBseSBtYi0wIG1yLTUgdGV4dC1yaWdodDtcbiAgICB9XG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICBAYXBwbHkgZmxleC0xO1xuICAgIH1cbiAgfVxufVxuXG4uZm9ybS1pbmxpbmUge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICBAYXBwbHkgYmxvY2s7XG4gIH1cbiAgLmZvcm0tbGFiZWwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgQGFwcGx5IG1iLTIgbXItMCB0ZXh0LWxlZnQ7XG4gICAgfVxuICB9XG59XG4iLCIqIHtcbiAgQGZvciAkaSBmcm9tIDEgdG8gNTAge1xuICAgID4gLmludHJvLXg6bnRoLWNoaWxkKCRpKSB7XG4gICAgICB6LWluZGV4OiBjYWxjKDUwIC0gJGkpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MHB4KTtcbiAgICAgIGFuaW1hdGlvbjogMC40cyBpbnRyby14LWFuaW1hdGlvbiBlYXNlLWluLW91dCAwLjMzMzMzcztcbiAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKCRpICogMC4xcyk7XG4gICAgfVxuICAgID4gLi1pbnRyby14Om50aC1jaGlsZCgkaSkge1xuICAgICAgei1pbmRleDogY2FsYyg1MCAtICRpKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwcHgpO1xuICAgICAgYW5pbWF0aW9uOiAwLjRzIGludHJvLXgtYW5pbWF0aW9uIGVhc2UtaW4tb3V0IDAuMzMzMzNzO1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IGNhbGMoJGkgKiAwLjFzKTtcbiAgICB9XG4gICAgPiAuaW50cm8teTpudGgtY2hpbGQoJGkpIHtcbiAgICAgIHotaW5kZXg6IGNhbGMoNTAgLSAkaSk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwcHgpO1xuICAgICAgYW5pbWF0aW9uOiAwLjRzIGludHJvLXktYW5pbWF0aW9uIGVhc2UtaW4tb3V0IDAuMzMzMzNzO1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IGNhbGMoJGkgKiAwLjFzKTtcbiAgICB9XG4gICAgPiAuLWludHJvLXk6bnRoLWNoaWxkKCRpKSB7XG4gICAgICB6LWluZGV4OiBjYWxjKDUwIC0gJGkpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTBweCk7XG4gICAgICBhbmltYXRpb246IDAuNHMgaW50cm8teS1hbmltYXRpb24gZWFzZS1pbi1vdXQgMC4zMzMzM3M7XG4gICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgIGFuaW1hdGlvbi1kZWxheTogY2FsYygkaSAqIDAuMXMpO1xuICAgIH1cbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGludHJvLXgtYW5pbWF0aW9uIHtcbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTtcbiAgfVxufVxuQGtleWZyYW1lcyBpbnRyby15LWFuaW1hdGlvbiB7XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cbn1cbiIsIkBsYXllciBjb21wb25lbnRzIHtcbiAgLm1vZGFsIHtcbiAgICBtYXJnaW4tdG9wOiAtMTAwMDBweDtcbiAgICBtYXJnaW4tbGVmdDogLTEwMDAwcHg7XG4gICAgYmFja2dyb3VuZDogIzAwMDAwMGE2O1xuICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMHMgbGluZWFyIDAuMnMsIG9wYWNpdHkgMC4ycyAwcztcbiAgICBAYXBwbHkgaW52aXNpYmxlIG9wYWNpdHktMCB3LXNjcmVlbiBoLXNjcmVlbiBmaXhlZCBsZWZ0LTAgdG9wLTA7XG4gICAgJi5tb2RhbC1vdmVybGFwIHtcbiAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDBhNjtcbiAgICB9XG4gICAgJi5tb2RhbC1zdGF0aWMge1xuICAgICAgLm1vZGFsLWNvbnRlbnQge1xuICAgICAgICBhbmltYXRpb246IG1vZGFsLXN0YXRpYy1iYWNrZHJvcCAwLjNzIGluZmluaXRlO1xuICAgICAgICBhbmltYXRpb24tZGlyZWN0aW9uOiBhbHRlcm5hdGU7XG4gICAgICB9XG4gICAgfVxuICAgICYuc2hvdyB7XG4gICAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzIGVhc2UtaW4tb3V0IDBzLCBvcGFjaXR5IDAuNHMgZWFzZS1pbi1vdXQgMHM7XG4gICAgICBAYXBwbHkgdmlzaWJsZSBvcGFjaXR5LTEwMDtcbiAgICAgID4gLm1vZGFsLWRpYWxvZyB7XG4gICAgICAgIEBhcHBseSBtdC0xNjtcbiAgICAgIH1cbiAgICB9XG4gICAgLm1vZGFsLWRpYWxvZyB7XG4gICAgICB3aWR0aDogOTAlO1xuICAgICAgdHJhbnNpdGlvbjogbWFyZ2luLXRvcCAwLjRzO1xuICAgICAgQGFwcGx5IC1tdC0xNiBtYi0xNiBteC1hdXRvO1xuICAgICAgQHNjcmVlbiBzbSB7XG4gICAgICAgIHdpZHRoOiA0NjBweDtcbiAgICAgICAgJi5tb2RhbC1zbSB7XG4gICAgICAgICAgd2lkdGg6IDMwMHB4O1xuICAgICAgICB9XG4gICAgICAgICYubW9kYWwtbGcge1xuICAgICAgICAgIHdpZHRoOiA2MDBweDtcbiAgICAgICAgfVxuICAgICAgICAmLm1vZGFsLXhsIHtcbiAgICAgICAgICB3aWR0aDogNjAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBzY3JlZW4gbGcge1xuICAgICAgICAmLm1vZGFsLXhsIHtcbiAgICAgICAgICB3aWR0aDogOTAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICA+IFtkYXRhLXR3LWRpc21pc3M9XCJtb2RhbFwiXSB7XG4gICAgICAgICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTAgdG9wLTAgbXQtMyBtci0zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICYubW9kYWwtc2xpZGUtb3ZlciB7XG4gICAgICBAYXBwbHkgb3ZlcmZsb3cteC1oaWRkZW47XG4gICAgICAmLm1vZGFsLXN0YXRpYyB7XG4gICAgICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgICAgICBAYXBwbHkgYW5pbWF0ZS1ub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLnNob3cge1xuICAgICAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzIGVhc2UtaW4tb3V0IDBzLCBvcGFjaXR5IDAuNnMgZWFzZS1pbi1vdXQgMHM7XG4gICAgICAgIEBhcHBseSB2aXNpYmxlIG9wYWNpdHktMTAwO1xuICAgICAgICA+IC5tb2RhbC1kaWFsb2cge1xuICAgICAgICAgIEBhcHBseSBtci0wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubW9kYWwtZGlhbG9nIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgICAgICAgdHJhbnNpdGlvbjogbWFyZ2luLXJpZ2h0IDAuNnM7XG4gICAgICAgIEBhcHBseSBtdC0wIG1iLTA7XG4gICAgICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgICAgICBAYXBwbHkgcm91bmRlZC1ub25lIG1pbi1oLXNjcmVlbjtcbiAgICAgICAgICA+IFtkYXRhLXR3LWRpc21pc3M9XCJtb2RhbFwiXSB7XG4gICAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHJpZ2h0LWF1dG8gbXQtNCAtbWwtMTI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5tb2RhbC1jb250ZW50IHtcbiAgICBAYXBwbHkgdy1mdWxsIGJnLXdoaXRlIHJlbGF0aXZlIHJvdW5kZWQtbWQgc2hhZG93LW1kIGRhcms6YmctZGFya21vZGUtNjAwO1xuICB9XG4gIC5tb2RhbC1oZWFkZXIge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBweC01IHB5LTMgYm9yZGVyLWIgYm9yZGVyLXNsYXRlLTIwMC82MCBkYXJrOmJvcmRlci1kYXJrbW9kZS00MDA7XG4gIH1cbiAgLm1vZGFsLWJvZHkge1xuICAgIEBhcHBseSBwLTU7XG4gIH1cbiAgLm1vZGFsLWZvb3RlciB7XG4gICAgQGFwcGx5IHB4LTUgcHktMyB0ZXh0LXJpZ2h0IGJvcmRlci10IGJvcmRlci1zbGF0ZS0yMDAvNjAgZGFyazpib3JkZXItZGFya21vZGUtNDAwO1xuICB9XG5cbiAgQGtleWZyYW1lcyBtb2RhbC1zdGF0aWMtYmFja2Ryb3Age1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICB9XG4gIH1cbn1cblxuLm1vZGFsIHtcbiAgJi5tb2RhbC1zbGlkZS1vdmVyIHtcbiAgICAmLnNob3cge1xuICAgICAgPiAubW9kYWwtZGlhbG9nIHtcbiAgICAgICAgLm1vZGFsLWNvbnRlbnQgPiBbZGF0YS10dy1kaXNtaXNzPVwibW9kYWxcIl0ge1xuICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgICAgICAgQGFwcGx5IC1tbC0xMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBsYXllciBjb21wb25lbnRzIHtcbiAgLnBhZ2luYXRpb24ge1xuICAgIEBhcHBseSBmbGV4IG1yLWF1dG87XG4gICAgLnBhZ2UtaXRlbSB7XG4gICAgICAmLmFjdGl2ZSAucGFnZS1saW5rIHtcbiAgICAgICAgQGFwcGx5IGJveCBmb250LW1lZGl1bSBkYXJrOmJnLWRhcmttb2RlLTQwMDtcbiAgICAgIH1cbiAgICAgIC5wYWdlLWxpbmsge1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIEBhcHBseSBidG4gc2hhZG93LW5vbmUgZm9udC1ub3JtYWwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtc2xhdGUtODAwIG1yLTIgZGFyazp0ZXh0LXNsYXRlLTMwMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLnBhZ2luYXRpb24ge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICBAYXBwbHkgdy1mdWxsIG1yLTA7XG4gIH1cbiAgLnBhZ2UtaXRlbSB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHNtKSB7XG4gICAgICBAYXBwbHkgZmxleC0xO1xuICAgICAgJjpudGgtY2hpbGQoMSksXG4gICAgICAmOm50aC1jaGlsZCgyKSxcbiAgICAgICY6bnRoLWNoaWxkKDMpLFxuICAgICAgJjpudGgtY2hpbGQoNyksXG4gICAgICAmOm50aC1jaGlsZCg4KSxcbiAgICAgICY6bnRoLWNoaWxkKDkpIHtcbiAgICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgICAgQGFwcGx5IHB4LTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLnBhZ2UtbGluayB7XG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgQGFwcGx5IG1pbi13LTAgbXItMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi50YWJsZSB7XG4gIEBhcHBseSB3LWZ1bGwgdGV4dC1sZWZ0O1xuICB0aGVhZCB7XG4gICAgJi50YWJsZS1kYXJrIHtcbiAgICAgIEBhcHBseSBiZy1kYXJrIHRleHQtd2hpdGUgZGFyazpiZy1ibGFjay8zMDtcbiAgICAgIHRyIHRoIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTA7XG4gICAgICB9XG4gICAgfVxuICAgICYudGFibGUtbGlnaHQge1xuICAgICAgQGFwcGx5IGJnLXNsYXRlLTIwMC82MCBkYXJrOmJnLXNsYXRlLTIwMDtcbiAgICAgIHRyIHRoIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTAgdGV4dC1zbGF0ZS03MDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRoIHtcbiAgICBAYXBwbHkgZm9udC1tZWRpdW0gcHgtNSBweS0zIGJvcmRlci1iLTIgZGFyazpib3JkZXItZGFya21vZGUtMzAwO1xuICB9XG4gIHRkIHtcbiAgICBAYXBwbHkgcHgtNSBweS0zIGJvcmRlci1iIGRhcms6Ym9yZGVyLWRhcmttb2RlLTMwMDtcbiAgfVxuICAmLnRhYmxlLWRhcmsge1xuICAgIEBhcHBseSBiZy1kYXJrIHRleHQtd2hpdGUgZGFyazpiZy1ibGFjay8zMDtcbiAgICB0aCB7XG4gICAgICBAYXBwbHkgYm9yZGVyLXNsYXRlLTYwMCBkYXJrOmJvcmRlci1kYXJrbW9kZS0zMDA7XG4gICAgfVxuICAgIHRkIHtcbiAgICAgIEBhcHBseSBib3JkZXItc2xhdGUtNjAwIGRhcms6Ym9yZGVyLWRhcmttb2RlLTMwMDtcbiAgICB9XG4gIH1cbiAgJi50YWJsZS1ib3JkZXJlZCB7XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgQGFwcGx5IGJvcmRlci1sIGJvcmRlci1yIGJvcmRlci10O1xuICAgIH1cbiAgfVxuICAmLnRhYmxlLWhvdmVyIHtcbiAgICB0cjpob3ZlciB7XG4gICAgICB0ZCB7XG4gICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDAgZGFyazpiZy1kYXJrbW9kZS0zMDAgZGFyazpiZy1vcGFjaXR5LTUwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmLnRhYmxlLXN0cmlwZWQge1xuICAgIHRyOm50aC1vZi10eXBlKG9kZCkge1xuICAgICAgdGQge1xuICAgICAgICBAYXBwbHkgYmctc2xhdGUtMTAwIGRhcms6YmctZGFya21vZGUtMzAwIGRhcms6Ymctb3BhY2l0eS01MDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJi50YWJsZS1zbSB7XG4gICAgdGgge1xuICAgICAgQGFwcGx5IHB4LTQgcHktMjtcbiAgICB9XG4gICAgdGQge1xuICAgICAgQGFwcGx5IHB4LTQgcHktMjtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5cbmdpdGh1Yi5jb20gc3R5bGUgKGMpIFZhc2lseSBQb2xvdm55b3YgPHZhc3RAd2hpdGVhbnRzLm5ldD5cblxuKi9cblxuLmhsanMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgcGFkZGluZzogMC41ZW07XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiAjZjhmOGY4O1xufVxuXG4uaGxqcy1jb21tZW50LFxuLmhsanMtcXVvdGUge1xuICBjb2xvcjogIzk5ODtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uaGxqcy1rZXl3b3JkLFxuLmhsanMtc2VsZWN0b3ItdGFnLFxuLmhsanMtc3Vic3Qge1xuICBjb2xvcjogIzMzMztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5obGpzLW51bWJlcixcbi5obGpzLWxpdGVyYWwsXG4uaGxqcy12YXJpYWJsZSxcbi5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLFxuLmhsanMtdGFnIC5obGpzLWF0dHIge1xuICBjb2xvcjogIzAwODA4MDtcbn1cblxuLmhsanMtc3RyaW5nLFxuLmhsanMtZG9jdGFnIHtcbiAgY29sb3I6ICNkMTQ7XG59XG5cbi5obGpzLXRpdGxlLFxuLmhsanMtc2VjdGlvbixcbi5obGpzLXNlbGVjdG9yLWlkIHtcbiAgY29sb3I6ICM5MDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uaGxqcy1zdWJzdCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5obGpzLXR5cGUsXG4uaGxqcy1jbGFzcyAuaGxqcy10aXRsZSB7XG4gIGNvbG9yOiAjNDU4O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmhsanMtdGFnLFxuLmhsanMtbmFtZSxcbi5obGpzLWF0dHJpYnV0ZSB7XG4gIGNvbG9yOiAjMDAwMDgwO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4uaGxqcy1yZWdleHAsXG4uaGxqcy1saW5rIHtcbiAgY29sb3I6ICMwMDk5MjY7XG59XG5cbi5obGpzLXN5bWJvbCxcbi5obGpzLWJ1bGxldCB7XG4gIGNvbG9yOiAjOTkwMDczO1xufVxuXG4uaGxqcy1idWlsdF9pbixcbi5obGpzLWJ1aWx0aW4tbmFtZSB7XG4gIGNvbG9yOiAjMDA4NmIzO1xufVxuXG4uaGxqcy1tZXRhIHtcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uaGxqcy1kZWxldGlvbiB7XG4gIGJhY2tncm91bmQ6ICNmZGQ7XG59XG5cbi5obGpzLWFkZGl0aW9uIHtcbiAgYmFja2dyb3VuZDogI2RmZDtcbn1cblxuLmhsanMtZW1waGFzaXMge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5obGpzLXN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuIiwiLnRpcHB5LWJveFtkYXRhLWFuaW1hdGlvbj1mYWRlXVtkYXRhLXN0YXRlPWhpZGRlbl17b3BhY2l0eTowfVtkYXRhLXRpcHB5LXJvb3Rde21heC13aWR0aDpjYWxjKDEwMHZ3IC0gMTBweCl9LnRpcHB5LWJveHtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ7d2hpdGUtc3BhY2U6bm9ybWFsO291dGxpbmU6MDt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSx2aXNpYmlsaXR5LG9wYWNpdHl9LnRpcHB5LWJveFtkYXRhLXBsYWNlbWVudF49dG9wXT4udGlwcHktYXJyb3d7Ym90dG9tOjB9LnRpcHB5LWJveFtkYXRhLXBsYWNlbWVudF49dG9wXT4udGlwcHktYXJyb3c6YmVmb3Jle2JvdHRvbTotN3B4O2xlZnQ6MDtib3JkZXItd2lkdGg6OHB4IDhweCAwO2JvcmRlci10b3AtY29sb3I6aW5pdGlhbDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciB0b3B9LnRpcHB5LWJveFtkYXRhLXBsYWNlbWVudF49Ym90dG9tXT4udGlwcHktYXJyb3d7dG9wOjB9LnRpcHB5LWJveFtkYXRhLXBsYWNlbWVudF49Ym90dG9tXT4udGlwcHktYXJyb3c6YmVmb3Jle3RvcDotN3B4O2xlZnQ6MDtib3JkZXItd2lkdGg6MCA4cHggOHB4O2JvcmRlci1ib3R0b20tY29sb3I6aW5pdGlhbDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBib3R0b219LnRpcHB5LWJveFtkYXRhLXBsYWNlbWVudF49bGVmdF0+LnRpcHB5LWFycm93e3JpZ2h0OjB9LnRpcHB5LWJveFtkYXRhLXBsYWNlbWVudF49bGVmdF0+LnRpcHB5LWFycm93OmJlZm9yZXtib3JkZXItd2lkdGg6OHB4IDAgOHB4IDhweDtib3JkZXItbGVmdC1jb2xvcjppbml0aWFsO3JpZ2h0Oi03cHg7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgbGVmdH0udGlwcHktYm94W2RhdGEtcGxhY2VtZW50Xj1yaWdodF0+LnRpcHB5LWFycm93e2xlZnQ6MH0udGlwcHktYm94W2RhdGEtcGxhY2VtZW50Xj1yaWdodF0+LnRpcHB5LWFycm93OmJlZm9yZXtsZWZ0Oi03cHg7Ym9yZGVyLXdpZHRoOjhweCA4cHggOHB4IDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOmluaXRpYWw7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgcmlnaHR9LnRpcHB5LWJveFtkYXRhLWluZXJ0aWFdW2RhdGEtc3RhdGU9dmlzaWJsZV17dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC41NCwxLjUsLjM4LDEuMTEpfS50aXBweS1hcnJvd3t3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2NvbG9yOiMzMzN9LnRpcHB5LWFycm93OmJlZm9yZXtjb250ZW50OlwiXCI7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZH0udGlwcHktY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjVweCA5cHg7ei1pbmRleDoxfSIsIi50aXBweS1ib3hbZGF0YS10aGVtZX49bGlnaHRde2NvbG9yOiMyNjMyM2Q7Ym94LXNoYWRvdzowIDAgMjBweCA0cHggcmdiYSgxNTQsMTYxLDE3NywuMTUpLDAgNHB4IDgwcHggLThweCByZ2JhKDM2LDQwLDQ3LC4yNSksMCA0cHggNHB4IC0ycHggcmdiYSg5MSw5NCwxMDUsLjE1KTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnRpcHB5LWJveFtkYXRhLXRoZW1lfj1saWdodF1bZGF0YS1wbGFjZW1lbnRePXRvcF0+LnRpcHB5LWFycm93OmJlZm9yZXtib3JkZXItdG9wLWNvbG9yOiNmZmZ9LnRpcHB5LWJveFtkYXRhLXRoZW1lfj1saWdodF1bZGF0YS1wbGFjZW1lbnRePWJvdHRvbV0+LnRpcHB5LWFycm93OmJlZm9yZXtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LnRpcHB5LWJveFtkYXRhLXRoZW1lfj1saWdodF1bZGF0YS1wbGFjZW1lbnRePWxlZnRdPi50aXBweS1hcnJvdzpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZn0udGlwcHktYm94W2RhdGEtdGhlbWV+PWxpZ2h0XVtkYXRhLXBsYWNlbWVudF49cmlnaHRdPi50aXBweS1hcnJvdzpiZWZvcmV7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmZ9LnRpcHB5LWJveFtkYXRhLXRoZW1lfj1saWdodF0+LnRpcHB5LWJhY2tkcm9we2JhY2tncm91bmQtY29sb3I6I2ZmZn0udGlwcHktYm94W2RhdGEtdGhlbWV+PWxpZ2h0XT4udGlwcHktc3ZnLWFycm93e2ZpbGw6I2ZmZn0iLCIudGlwcHktYm94W2RhdGEtcGxhY2VtZW50Xj10b3BdPi50aXBweS1zdmctYXJyb3d7Ym90dG9tOjB9LnRpcHB5LWJveFtkYXRhLXBsYWNlbWVudF49dG9wXT4udGlwcHktc3ZnLWFycm93OmFmdGVyLC50aXBweS1ib3hbZGF0YS1wbGFjZW1lbnRePXRvcF0+LnRpcHB5LXN2Zy1hcnJvdz5zdmd7dG9wOjE2cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS50aXBweS1ib3hbZGF0YS1wbGFjZW1lbnRePWJvdHRvbV0+LnRpcHB5LXN2Zy1hcnJvd3t0b3A6MH0udGlwcHktYm94W2RhdGEtcGxhY2VtZW50Xj1ib3R0b21dPi50aXBweS1zdmctYXJyb3c+c3Zne2JvdHRvbToxNnB4fS50aXBweS1ib3hbZGF0YS1wbGFjZW1lbnRePWxlZnRdPi50aXBweS1zdmctYXJyb3d7cmlnaHQ6MH0udGlwcHktYm94W2RhdGEtcGxhY2VtZW50Xj1sZWZ0XT4udGlwcHktc3ZnLWFycm93OmFmdGVyLC50aXBweS1ib3hbZGF0YS1wbGFjZW1lbnRePWxlZnRdPi50aXBweS1zdmctYXJyb3c+c3Zne3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RvcDpjYWxjKDUwJSAtIDNweCk7bGVmdDoxMXB4fS50aXBweS1ib3hbZGF0YS1wbGFjZW1lbnRePXJpZ2h0XT4udGlwcHktc3ZnLWFycm93e2xlZnQ6MH0udGlwcHktYm94W2RhdGEtcGxhY2VtZW50Xj1yaWdodF0+LnRpcHB5LXN2Zy1hcnJvdzphZnRlciwudGlwcHktYm94W2RhdGEtcGxhY2VtZW50Xj1yaWdodF0+LnRpcHB5LXN2Zy1hcnJvdz5zdmd7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RvcDpjYWxjKDUwJSAtIDNweCk7cmlnaHQ6MTFweH0udGlwcHktc3ZnLWFycm93e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7ZmlsbDojMzMzO3RleHQtYWxpZ246aW5pdGlhbH0udGlwcHktc3ZnLWFycm93LC50aXBweS1zdmctYXJyb3c+c3Zne3Bvc2l0aW9uOmFic29sdXRlfSIsIi50aXBweS1ib3hbZGF0YS1hbmltYXRpb249c2hpZnQtYXdheV1bZGF0YS1zdGF0ZT1oaWRkZW5de29wYWNpdHk6MH0udGlwcHktYm94W2RhdGEtYW5pbWF0aW9uPXNoaWZ0LWF3YXldW2RhdGEtc3RhdGU9aGlkZGVuXVtkYXRhLXBsYWNlbWVudF49dG9wXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KX0udGlwcHktYm94W2RhdGEtYW5pbWF0aW9uPXNoaWZ0LWF3YXldW2RhdGEtc3RhdGU9aGlkZGVuXVtkYXRhLXBsYWNlbWVudF49Ym90dG9tXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTBweCl9LnRpcHB5LWJveFtkYXRhLWFuaW1hdGlvbj1zaGlmdC1hd2F5XVtkYXRhLXN0YXRlPWhpZGRlbl1bZGF0YS1wbGFjZW1lbnRePWxlZnRde3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwcHgpfS50aXBweS1ib3hbZGF0YS1hbmltYXRpb249c2hpZnQtYXdheV1bZGF0YS1zdGF0ZT1oaWRkZW5dW2RhdGEtcGxhY2VtZW50Xj1yaWdodF17dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwcHgpfSIsIi8qIVxuICogVG9hc3RpZnkganMgMS4xMS4yXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXB2YXJ1bi90b2FzdGlmeS1qc1xuICogQGxpY2Vuc2UgTUlUIGxpY2Vuc2VkXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDE4IFZhcnVuIEEgUFxuICovXG5cbi50b2FzdGlmeSB7XG4gICAgcGFkZGluZzogMTJweCAyMHB4O1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3gtc2hhZG93OiAwIDNweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDEwcHggMzZweCAtNHB4IHJnYmEoNzcsIDk2LCAyMzIsIDAuMyk7XG4gICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoMzE1ZGVnLCAjNzNhNWZmLCAjNTQ3N2Y1KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNzNhNWZmLCAjNTQ3N2Y1KTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBtYXgtd2lkdGg6IGNhbGMoNTAlIC0gMjBweCk7XG4gICAgei1pbmRleDogMjE0NzQ4MzY0Nztcbn1cblxuLnRvYXN0aWZ5Lm9uIHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4udG9hc3QtY2xvc2Uge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgICBwYWRkaW5nOiAwIDVweDtcbn1cblxuLnRvYXN0aWZ5LXJpZ2h0IHtcbiAgICByaWdodDogMTVweDtcbn1cblxuLnRvYXN0aWZ5LWxlZnQge1xuICAgIGxlZnQ6IDE1cHg7XG59XG5cbi50b2FzdGlmeS10b3Age1xuICAgIHRvcDogLTE1MHB4O1xufVxuXG4udG9hc3RpZnktYm90dG9tIHtcbiAgICBib3R0b206IC0xNTBweDtcbn1cblxuLnRvYXN0aWZ5LXJvdW5kZWQge1xuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XG59XG5cbi50b2FzdGlmeS1hdmF0YXIge1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBoZWlnaHQ6IDEuNWVtO1xuICAgIG1hcmdpbjogLTdweCA1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuXG4udG9hc3RpZnktY2VudGVyIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBtYXgtd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIG1heC13aWR0aDogLW1vei1maXQtY29udGVudDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNjBweCkge1xuICAgIC50b2FzdGlmeS1yaWdodCwgLnRvYXN0aWZ5LWxlZnQge1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbWF4LXdpZHRoOiBmaXQtY29udGVudDtcbiAgICB9XG59XG4iLCJALXdlYmtpdC1rZXlmcmFtZXMgcGFzc2luZy10aHJvdWdoIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICB9XG4gIDMwJSwgNzAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTtcbiAgfVxufVxuQC1tb3ota2V5ZnJhbWVzIHBhc3NpbmctdGhyb3VnaCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgfVxuICAzMCUsIDcwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTtcbiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgcGFzc2luZy10aHJvdWdoIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICB9XG4gIDMwJSwgNzAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTtcbiAgfVxufVxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWluIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICB9XG4gIDMwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB9XG59XG5ALW1vei1rZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gIH1cbiAgMzAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gIH1cbiAgMzAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cbn1cbkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuICAxMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgfVxuICAyMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5ALW1vei1rZXlmcmFtZXMgcHVsc2Uge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gIH1cbiAgMjAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxufVxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuICAxMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgfVxuICAyMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG4uZHJvcHpvbmUsIC5kcm9wem9uZSAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLmRyb3B6b25lIHtcbiAgbWluLWhlaWdodDogMTUwcHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIHBhZGRpbmc6IDIwcHggMjBweDtcbn1cbi5kcm9wem9uZS5kei1jbGlja2FibGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uZHJvcHpvbmUuZHotY2xpY2thYmxlICoge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4uZHJvcHpvbmUuZHotY2xpY2thYmxlIC5kei1tZXNzYWdlLCAuZHJvcHpvbmUuZHotY2xpY2thYmxlIC5kei1tZXNzYWdlICoge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uZHJvcHpvbmUuZHotc3RhcnRlZCAuZHotbWVzc2FnZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uZHJvcHpvbmUuZHotZHJhZy1ob3ZlciB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZHJvcHpvbmUuZHotZHJhZy1ob3ZlciAuZHotbWVzc2FnZSB7XG4gIG9wYWNpdHk6IDAuNTtcbn1cbi5kcm9wem9uZSAuZHotbWVzc2FnZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luOiAyZW0gMDtcbn1cbi5kcm9wem9uZSAuZHotbWVzc2FnZSAuZHotYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgZm9udDogaW5oZXJpdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBpbmhlcml0O1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIG1hcmdpbjogMTZweDtcbiAgbWluLWhlaWdodDogMTAwcHg7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXc6aG92ZXIge1xuICB6LWluZGV4OiAxMDAwO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3OmhvdmVyIC5kei1kZXRhaWxzIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldy5kei1maWxlLXByZXZpZXcgLmR6LWltYWdlIHtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgYmFja2dyb3VuZDogIzk5OTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2VlZSwgI2RkZCk7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotZmlsZS1wcmV2aWV3IC5kei1kZXRhaWxzIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldy5kei1pbWFnZS1wcmV2aWV3IHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotaW1hZ2UtcHJldmlldyAuZHotZGV0YWlscyB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjtcbiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgbGluZWFyO1xuICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjtcbiAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotcmVtb3ZlIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotcmVtb3ZlOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXc6aG92ZXIgLmR6LWRldGFpbHMge1xuICBvcGFjaXR5OiAxO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1kZXRhaWxzIHtcbiAgei1pbmRleDogMjA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICBmb250LXNpemU6IDEzcHg7XG4gIG1pbi13aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAyZW0gMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG4gIGxpbmUtaGVpZ2h0OiAxNTAlO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1kZXRhaWxzIC5kei1zaXplIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICBmb250LXNpemU6IDE2cHg7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWRldGFpbHMgLmR6LWZpbGVuYW1lIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZGV0YWlscyAuZHotZmlsZW5hbWU6aG92ZXIgc3BhbiB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAwLCAyMDAsIDIwMCwgMC44KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1kZXRhaWxzIC5kei1maWxlbmFtZTpub3QoOmhvdmVyKSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1kZXRhaWxzIC5kei1maWxlbmFtZTpub3QoOmhvdmVyKSBzcGFuIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWRldGFpbHMgLmR6LWZpbGVuYW1lIHNwYW4sIC5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZGV0YWlscyAuZHotc2l6ZSBzcGFuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICBwYWRkaW5nOiAwIDAuNGVtO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXc6aG92ZXIgLmR6LWltYWdlIGltZyB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjA1LCAxLjA1KTtcbiAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEuMDUsIDEuMDUpO1xuICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjA1LCAxLjA1KTtcbiAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjA1LCAxLjA1KTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1LCAxLjA1KTtcbiAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgZmlsdGVyOiBibHVyKDhweCk7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWltYWdlIHtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2lkdGg6IDEyMHB4O1xuICBoZWlnaHQ6IDEyMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB6LWluZGV4OiAxMDtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotaW1hZ2UgaW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotc3VjY2VzcyAuZHotc3VjY2Vzcy1tYXJrIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IHBhc3NpbmctdGhyb3VnaCAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpO1xuICAtbW96LWFuaW1hdGlvbjogcGFzc2luZy10aHJvdWdoIDNzIGN1YmljLWJlemllcigwLjc3LCAwLCAwLjE3NSwgMSk7XG4gIC1tcy1hbmltYXRpb246IHBhc3NpbmctdGhyb3VnaCAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpO1xuICAtby1hbmltYXRpb246IHBhc3NpbmctdGhyb3VnaCAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpO1xuICBhbmltYXRpb246IHBhc3NpbmctdGhyb3VnaCAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3LmR6LWVycm9yIC5kei1lcnJvci1tYXJrIHtcbiAgb3BhY2l0eTogMTtcbiAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDNzIGN1YmljLWJlemllcigwLjc3LCAwLCAwLjE3NSwgMSk7XG4gIC1tb3otYW5pbWF0aW9uOiBzbGlkZS1pbiAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpO1xuICAtbXMtYW5pbWF0aW9uOiBzbGlkZS1pbiAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpO1xuICAtby1hbmltYXRpb246IHNsaWRlLWluIDNzIGN1YmljLWJlemllcigwLjc3LCAwLCAwLjE3NSwgMSk7XG4gIGFuaW1hdGlvbjogc2xpZGUtaW4gM3MgY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotc3VjY2Vzcy1tYXJrLCAuZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWVycm9yLW1hcmsge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogNTAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTI3cHg7XG4gIG1hcmdpbi10b3A6IC0yN3B4O1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1zdWNjZXNzLW1hcmsgc3ZnLCAuZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWVycm9yLW1hcmsgc3ZnIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA1NHB4O1xuICBoZWlnaHQ6IDU0cHg7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotcHJvY2Vzc2luZyAuZHotcHJvZ3Jlc3Mge1xuICBvcGFjaXR5OiAxO1xuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGxpbmVhcjtcbiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXI7XG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXI7XG4gIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGxpbmVhcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgbGluZWFyO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3LmR6LWNvbXBsZXRlIC5kei1wcm9ncmVzcyB7XG4gIG9wYWNpdHk6IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UtaW47XG4gIC1tb3otdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UtaW47XG4gIC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZS1pbjtcbiAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UtaW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3Om5vdCguZHotcHJvY2Vzc2luZykgLmR6LXByb2dyZXNzIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IHB1bHNlIDZzIGVhc2UgaW5maW5pdGU7XG4gIC1tb3otYW5pbWF0aW9uOiBwdWxzZSA2cyBlYXNlIGluZmluaXRlO1xuICAtbXMtYW5pbWF0aW9uOiBwdWxzZSA2cyBlYXNlIGluZmluaXRlO1xuICAtby1hbmltYXRpb246IHB1bHNlIDZzIGVhc2UgaW5maW5pdGU7XG4gIGFuaW1hdGlvbjogcHVsc2UgNnMgZWFzZSBpbmZpbml0ZTtcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotcHJvZ3Jlc3Mge1xuICBvcGFjaXR5OiAxO1xuICB6LWluZGV4OiAxMDAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBoZWlnaHQ6IDE2cHg7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiA1MCU7XG4gIG1hcmdpbi10b3A6IC04cHg7XG4gIHdpZHRoOiA4MHB4O1xuICBtYXJnaW4tbGVmdDogLTQwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LXByb2dyZXNzIC5kei11cGxvYWQge1xuICBiYWNrZ3JvdW5kOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNjY2LCAjNDQ0KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMzAwbXMgZWFzZS1pbi1vdXQ7XG4gIC1tb3otdHJhbnNpdGlvbjogd2lkdGggMzAwbXMgZWFzZS1pbi1vdXQ7XG4gIC1tcy10cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBlYXNlLWluLW91dDtcbiAgLW8tdHJhbnNpdGlvbjogd2lkdGggMzAwbXMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zaXRpb246IHdpZHRoIDMwMG1zIGVhc2UtaW4tb3V0O1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3LmR6LWVycm9yIC5kei1lcnJvci1tZXNzYWdlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotZXJyb3I6aG92ZXIgLmR6LWVycm9yLW1lc3NhZ2Uge1xuICBvcGFjaXR5OiAxO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cbi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZXJyb3ItbWVzc2FnZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAxMDAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBkaXNwbGF5OiBub25lO1xuICBvcGFjaXR5OiAwO1xuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG4gIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIHRvcDogMTMwcHg7XG4gIGxlZnQ6IC0xMHB4O1xuICB3aWR0aDogMTQwcHg7XG4gIGJhY2tncm91bmQ6ICNiZTI2MjY7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNiZTI2MjYsICNhOTIyMjIpO1xuICBwYWRkaW5nOiAwLjVlbSAxLjJlbTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1lcnJvci1tZXNzYWdlOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC02cHg7XG4gIGxlZnQ6IDY0cHg7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlci1sZWZ0OiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiA2cHggc29saWQgI2JlMjYyNjtcbn0iLCJpbWdbZGF0YS1hY3Rpb249XCJ6b29tXCJdIHtcbiAgY3Vyc29yOiB6b29tLWluO1xufVxuLnpvb20taW1nLFxuLnpvb20taW1nLXdyYXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDY2NjtcbiAgdHJhbnNpdGlvbjogYWxsIDMwMG1zO1xufVxuaW1nLnpvb20taW1nIHtcbiAgY3Vyc29yOiB6b29tLW91dDtcbn1cbi56b29tLW92ZXJsYXkge1xuICBjdXJzb3I6IHpvb20tb3V0O1xuICB6LWluZGV4OiA0MjA7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBmaWx0ZXI6IFwiYWxwaGEob3BhY2l0eT0wKVwiO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiAgICAgIG9wYWNpdHkgMzAwbXM7XG59XG4uem9vbS1vdmVybGF5LW9wZW4gLnpvb20tb3ZlcmxheSB7XG4gIGZpbHRlcjogXCJhbHBoYShvcGFjaXR5PTEwMClcIjtcbiAgb3BhY2l0eTogMTtcbn1cbiIsImltZ1tkYXRhLWFjdGlvbj1cInpvb21cIl0ge1xuICBjdXJzb3I6IHpvb20taW47XG59XG4uem9vbS1pbWcsXG4uem9vbS1pbWctd3JhcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogNjY2O1xuICB0cmFuc2l0aW9uOiBhbGwgMzAwbXM7XG59XG5pbWcuem9vbS1pbWcge1xuICBjdXJzb3I6IHpvb20tb3V0O1xufVxuLnpvb20tb3ZlcmxheSB7XG4gIGN1cnNvcjogem9vbS1vdXQ7XG4gIHotaW5kZXg6IDQyMDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGZpbHRlcjogXCJhbHBoYShvcGFjaXR5PTApXCI7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246ICAgICAgb3BhY2l0eSAzMDBtcztcbn1cbi56b29tLW92ZXJsYXktb3BlbiAuem9vbS1vdmVybGF5IHtcbiAgZmlsdGVyOiBcImFscGhhKG9wYWNpdHk9MTAwKVwiO1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUwyTnpjeTk2YjI5dExtTnpjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVR0RlFVTkZMR2RDUVVGblFqdERRVU5xUWp0QlFVTkVPenRGUVVWRkxHMUNRVUZ0UWp0RlFVTnVRaXhoUVVGaE8wVkJRMklzYzBKQlFYTkNPME5CUTNaQ08wRkJRMFE3UlVGRFJTeHBRa0ZCYVVJN1EwRkRiRUk3UVVGRFJEdEZRVU5GTEdsQ1FVRnBRanRGUVVOcVFpeGhRVUZoTzBWQlEySXNhVUpCUVdsQ08wVkJRMnBDTEdkQ1FVRm5RanRGUVVOb1FpeFBRVUZQTzBWQlExQXNVVUZCVVR0RlFVTlNMRk5CUVZNN1JVRkRWQ3hWUVVGVk8wVkJRMVlzTWtKQlFUSkNPMFZCUXpOQ0xGZEJRVmM3UlVGRFdDd3JRa0ZCSzBJN1EwRkRhRU03UVVGRFJEdEZRVU5GTERaQ1FVRTJRanRGUVVNM1FpeFhRVUZYTzBOQlExb2lMQ0ptYVd4bElqb2llbTl2YlM1amMzTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYldkYlpHRjBZUzFoWTNScGIyNDlYQ0o2YjI5dFhDSmRJSHRjYmlBZ1kzVnljMjl5T2lCNmIyOXRMV2x1TzF4dWZWeHVMbnB2YjIwdGFXMW5MRnh1TG5wdmIyMHRhVzFuTFhkeVlYQWdlMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNGdJSG90YVc1a1pYZzZJRFkyTmp0Y2JpQWdkSEpoYm5OcGRHbHZiam9nWVd4c0lETXdNRzF6TzF4dWZWeHVhVzFuTG5wdmIyMHRhVzFuSUh0Y2JpQWdZM1Z5YzI5eU9pQjZiMjl0TFc5MWREdGNibjFjYmk1NmIyOXRMVzkyWlhKc1lYa2dlMXh1SUNCamRYSnpiM0k2SUhwdmIyMHRiM1YwTzF4dUlDQjZMV2x1WkdWNE9pQTBNakE3WEc0Z0lHSmhZMnRuY205MWJtUTZJQ05tWm1ZN1hHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNiaUFnZEc5d09pQXdPMXh1SUNCc1pXWjBPaUF3TzF4dUlDQnlhV2RvZERvZ01EdGNiaUFnWW05MGRHOXRPaUF3TzF4dUlDQm1hV3gwWlhJNklGd2lZV3h3YUdFb2IzQmhZMmwwZVQwd0tWd2lPMXh1SUNCdmNHRmphWFI1T2lBd08xeHVJQ0IwY21GdWMybDBhVzl1T2lBZ0lDQWdJRzl3WVdOcGRIa2dNekF3YlhNN1hHNTlYRzR1ZW05dmJTMXZkbVZ5YkdGNUxXOXdaVzRnTG5wdmIyMHRiM1psY214aGVTQjdYRzRnSUdacGJIUmxjam9nWENKaGJIQm9ZU2h2Y0dGamFYUjVQVEV3TUNsY0lqdGNiaUFnYjNCaFkybDBlVG9nTVR0Y2JuMWNiaUpkZlE9PSAqLyIsIi8qIFRhYnVsYXRvciB2NC45LjMgKGMpIE9saXZlciBGb2xrZXJkICovXG4udGFidWxhdG9yIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODg4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZXooMCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRleigwKTtcbn1cblxuLnRhYnVsYXRvclt0YWJ1bGF0b3ItbGF5b3V0PVwiZml0RGF0YUZpbGxcIl0gLnRhYnVsYXRvci10YWJsZUhvbGRlciAudGFidWxhdG9yLXRhYmxlIHtcbiAgbWluLXdpZHRoOiAxMDAlO1xufVxuXG4udGFidWxhdG9yW3RhYnVsYXRvci1sYXlvdXQ9XCJmaXREYXRhVGFibGVcIl0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi50YWJ1bGF0b3IudGFidWxhdG9yLWJsb2NrLXNlbGVjdCB7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzk5OTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgY29sb3I6ICM1NTU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1vLXVzZXItc2VsZWN0OiBub25lO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyLnRhYnVsYXRvci1oZWFkZXItaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYWFhO1xuICBiYWNrZ3JvdW5kOiAjZTZlNmU2O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sLnRhYnVsYXRvci1tb3Zpbmcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7XG4gIGJhY2tncm91bmQ6ICNjZGNkY2Q7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sIC50YWJ1bGF0b3ItY29sLWNvbnRlbnQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDRweDtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbCAudGFidWxhdG9yLWNvbC1jb250ZW50IC50YWJ1bGF0b3ItaGVhZGVyLW1lbnUtYnV0dG9uIHtcbiAgcGFkZGluZzogMCA4cHg7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWhlYWRlci1tZW51LWJ1dHRvbjpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3BhY2l0eTogLjY7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWNvbC10aXRsZS1ob2xkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWNvbC10aXRsZSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbCAudGFidWxhdG9yLWNvbC1jb250ZW50IC50YWJ1bGF0b3ItY29sLXRpdGxlIC50YWJ1bGF0b3ItdGl0bGUtZWRpdG9yIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7XG4gIHBhZGRpbmc6IDFweDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbCAudGFidWxhdG9yLWNvbC1jb250ZW50IC50YWJ1bGF0b3ItY29sLXRpdGxlIC50YWJ1bGF0b3ItaGVhZGVyLW1lbnUtYnV0dG9uICsgLnRhYnVsYXRvci10aXRsZS1lZGl0b3Ige1xuICB3aWR0aDogY2FsYygxMDAlIC0gMjJweCk7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWNvbC1zb3J0ZXIge1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiA0cHg7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWNvbC1zb3J0ZXIgLnRhYnVsYXRvci1hcnJvdyB7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlci1sZWZ0OiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiA2cHggc29saWQgI2JiYjtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbC50YWJ1bGF0b3ItY29sLWdyb3VwIC50YWJ1bGF0b3ItY29sLWdyb3VwLWNvbHMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2FhYTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLXJpZ2h0OiAtMXB4O1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sOmZpcnN0LWNoaWxkIC50YWJ1bGF0b3ItY29sLXJlc2l6ZS1oYW5kbGUucHJldiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1oZWFkZXItZmlsdGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW4tdG9wOiAycHg7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1oZWFkZXItZmlsdGVyIHRleHRhcmVhIHtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1oZWFkZXItZmlsdGVyIHN2ZyB7XG4gIG1hcmdpbi10b3A6IDNweDtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbCAudGFidWxhdG9yLWhlYWRlci1maWx0ZXIgaW5wdXQ6Oi1tcy1jbGVhciB7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wudGFidWxhdG9yLXNvcnRhYmxlIC50YWJ1bGF0b3ItY29sLXRpdGxlIHtcbiAgcGFkZGluZy1yaWdodDogMjVweDtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbC50YWJ1bGF0b3Itc29ydGFibGU6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZGNkY2Q7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wudGFidWxhdG9yLXNvcnRhYmxlW2FyaWEtc29ydD1cIm5vbmVcIl0gLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWNvbC1zb3J0ZXIge1xuICBjb2xvcjogI2JiYjtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbC50YWJ1bGF0b3Itc29ydGFibGVbYXJpYS1zb3J0PVwibm9uZVwiXSAudGFidWxhdG9yLWNvbC1jb250ZW50IC50YWJ1bGF0b3ItY29sLXNvcnRlciAudGFidWxhdG9yLWFycm93IHtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkICNiYmI7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wudGFidWxhdG9yLXNvcnRhYmxlW2FyaWEtc29ydD1cImFzY1wiXSAudGFidWxhdG9yLWNvbC1jb250ZW50IC50YWJ1bGF0b3ItY29sLXNvcnRlciB7XG4gIGNvbG9yOiAjNjY2O1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sLnRhYnVsYXRvci1zb3J0YWJsZVthcmlhLXNvcnQ9XCJhc2NcIl0gLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWNvbC1zb3J0ZXIgLnRhYnVsYXRvci1hcnJvdyB7XG4gIGJvcmRlci10b3A6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDZweCBzb2xpZCAjNjY2O1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sLnRhYnVsYXRvci1zb3J0YWJsZVthcmlhLXNvcnQ9XCJkZXNjXCJdIC50YWJ1bGF0b3ItY29sLWNvbnRlbnQgLnRhYnVsYXRvci1jb2wtc29ydGVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wudGFidWxhdG9yLXNvcnRhYmxlW2FyaWEtc29ydD1cImRlc2NcIl0gLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWNvbC1zb3J0ZXIgLnRhYnVsYXRvci1hcnJvdyB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIGJvcmRlci10b3A6IDZweCBzb2xpZCAjNjY2O1xuICBjb2xvcjogIzY2Njtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbC50YWJ1bGF0b3ItY29sLXZlcnRpY2FsIC50YWJ1bGF0b3ItY29sLWNvbnRlbnQgLnRhYnVsYXRvci1jb2wtdGl0bGUge1xuICAtbXMtd3JpdGluZy1tb2RlOiB0Yi1ybDtcbiAgICAgIHdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7XG4gIHRleHQtb3JpZW50YXRpb246IG1peGVkO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sLnRhYnVsYXRvci1jb2wtdmVydGljYWwudGFidWxhdG9yLWNvbC12ZXJ0aWNhbC1mbGlwIC50YWJ1bGF0b3ItY29sLXRpdGxlIHtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sLnRhYnVsYXRvci1jb2wtdmVydGljYWwudGFidWxhdG9yLXNvcnRhYmxlIC50YWJ1bGF0b3ItY29sLXRpdGxlIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wudGFidWxhdG9yLWNvbC12ZXJ0aWNhbC50YWJ1bGF0b3Itc29ydGFibGUudGFidWxhdG9yLWNvbC12ZXJ0aWNhbC1mbGlwIC50YWJ1bGF0b3ItY29sLXRpdGxlIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wudGFidWxhdG9yLWNvbC12ZXJ0aWNhbC50YWJ1bGF0b3Itc29ydGFibGUgLnRhYnVsYXRvci1jb2wtc29ydGVyIHtcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDRweDtcbiAgYm90dG9tOiBhdXRvO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItZnJvemVuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItZnJvemVuLnRhYnVsYXRvci1mcm96ZW4tbGVmdCB7XG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNhYWE7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1mcm96ZW4udGFidWxhdG9yLWZyb3plbi1yaWdodCB7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2FhYTtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNhbGNzLWhvbGRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi13aWR0aDogNjAwJTtcbiAgYmFja2dyb3VuZDogI2YzZjNmMyAhaW1wb3J0YW50O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2FhYTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNhYWE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jYWxjcy1ob2xkZXIgLnRhYnVsYXRvci1yb3cge1xuICBiYWNrZ3JvdW5kOiAjZjNmM2YzICFpbXBvcnRhbnQ7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jYWxjcy1ob2xkZXIgLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jb2wtcmVzaXplLWhhbmRsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1mcm96ZW4tcm93cy1ob2xkZXIge1xuICBtaW4td2lkdGg6IDYwMCU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1mcm96ZW4tcm93cy1ob2xkZXI6ZW1wdHkge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItdGFibGVIb2xkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogYXV0bztcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItdGFibGVIb2xkZXI6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItdGFibGVIb2xkZXIgLnRhYnVsYXRvci1wbGFjZWhvbGRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci10YWJsZUhvbGRlciAudGFidWxhdG9yLXBsYWNlaG9sZGVyW3RhYnVsYXRvci1yZW5kZXItbW9kZT1cInZpcnR1YWxcIl0ge1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBtaW4td2lkdGg6IDEwMCU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci10YWJsZUhvbGRlciAudGFidWxhdG9yLXBsYWNlaG9sZGVyIHNwYW4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAxMHB4O1xuICBjb2xvcjogI2NjYztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLXRhYmxlSG9sZGVyIC50YWJ1bGF0b3ItdGFibGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGNvbG9yOiAjMzMzO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItdGFibGVIb2xkZXIgLnRhYnVsYXRvci10YWJsZSAudGFidWxhdG9yLXJvdy50YWJ1bGF0b3ItY2FsY3Mge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgYmFja2dyb3VuZDogI2UyZTJlMiAhaW1wb3J0YW50O1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItdGFibGVIb2xkZXIgLnRhYnVsYXRvci10YWJsZSAudGFidWxhdG9yLXJvdy50YWJ1bGF0b3ItY2FsY3MudGFidWxhdG9yLWNhbGNzLXRvcCB7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjYWFhO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItdGFibGVIb2xkZXIgLnRhYnVsYXRvci10YWJsZSAudGFidWxhdG9yLXJvdy50YWJ1bGF0b3ItY2FsY3MudGFidWxhdG9yLWNhbGNzLWJvdHRvbSB7XG4gIGJvcmRlci10b3A6IDJweCBzb2xpZCAjYWFhO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItZm9vdGVyIHtcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjOTk5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgY29sb3I6ICM1NTU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtby11c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWZvb3RlciAudGFidWxhdG9yLWNhbGNzLWhvbGRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiBjYWxjKDEwMCUgKyAyMHB4KTtcbiAgbWFyZ2luOiAtNXB4IC0xMHB4IDVweCAtMTBweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYmFja2dyb3VuZDogI2YzZjNmMyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FhYTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNhYWE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1mb290ZXIgLnRhYnVsYXRvci1jYWxjcy1ob2xkZXIgLnRhYnVsYXRvci1yb3cge1xuICBiYWNrZ3JvdW5kOiAjZjNmM2YzICFpbXBvcnRhbnQ7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1mb290ZXIgLnRhYnVsYXRvci1jYWxjcy1ob2xkZXIgLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jb2wtcmVzaXplLWhhbmRsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1mb290ZXIgLnRhYnVsYXRvci1jYWxjcy1ob2xkZXI6b25seS1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IC01cHg7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1mb290ZXIgLnRhYnVsYXRvci1wYWdpbmF0b3Ige1xuICBjb2xvcjogIzU1NTtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1mb290ZXIgLnRhYnVsYXRvci1wYWdlLXNpemUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMCA1cHg7XG4gIHBhZGRpbmc6IDJweCA1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWZvb3RlciAudGFidWxhdG9yLXBhZ2VzIHtcbiAgbWFyZ2luOiAwIDdweDtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWZvb3RlciAudGFidWxhdG9yLXBhZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDJweCA1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItZm9vdGVyIC50YWJ1bGF0b3ItcGFnZS5hY3RpdmUge1xuICBjb2xvcjogI2QwMDtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWZvb3RlciAudGFidWxhdG9yLXBhZ2U6ZGlzYWJsZWQge1xuICBvcGFjaXR5OiAuNTtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWZvb3RlciAudGFidWxhdG9yLXBhZ2U6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1jb2wtcmVzaXplLWhhbmRsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogNXB4O1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItY29sLXJlc2l6ZS1oYW5kbGUucHJldiB7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiBhdXRvO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItY29sLXJlc2l6ZS1oYW5kbGU6aG92ZXIge1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbn1cblxuLnRhYnVsYXRvciAudGFidWxhdG9yLWxvYWRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50YWJ1bGF0b3IgLnRhYnVsYXRvci1sb2FkZXIgLnRhYnVsYXRvci1sb2FkZXItbXNnIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMTBweCAyMHB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItbG9hZGVyIC50YWJ1bGF0b3ItbG9hZGVyLW1zZy50YWJ1bGF0b3ItbG9hZGluZyB7XG4gIGJvcmRlcjogNHB4IHNvbGlkICMzMzM7XG4gIGNvbG9yOiAjMDAwO1xufVxuXG4udGFidWxhdG9yIC50YWJ1bGF0b3ItbG9hZGVyIC50YWJ1bGF0b3ItbG9hZGVyLW1zZy50YWJ1bGF0b3ItZXJyb3Ige1xuICBib3JkZXI6IDRweCBzb2xpZCAjRDAwO1xuICBjb2xvcjogIzU5MDAwMDtcbn1cblxuLnRhYnVsYXRvci1yb3cge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi1oZWlnaHQ6IDIycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1yb3ctZXZlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFRkVGRUY7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1zZWxlY3RhYmxlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiYjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4udGFidWxhdG9yLXJvdy50YWJ1bGF0b3Itc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOUFCQ0VBO1xufVxuXG4udGFidWxhdG9yLXJvdy50YWJ1bGF0b3Itc2VsZWN0ZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzY5QkNDO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1yb3ctbW92aW5nIHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbn1cblxuLnRhYnVsYXRvci1yb3cudGFidWxhdG9yLW1vdmluZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTU7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3Itcm93LXJlc2l6ZS1oYW5kbGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogNXB4O1xufVxuXG4udGFidWxhdG9yLXJvdyAudGFidWxhdG9yLXJvdy1yZXNpemUtaGFuZGxlLnByZXYge1xuICB0b3A6IDA7XG4gIGJvdHRvbTogYXV0bztcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1yb3ctcmVzaXplLWhhbmRsZTpob3ZlciB7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xufVxuXG4udGFidWxhdG9yLXJvdyAudGFidWxhdG9yLWZyb3plbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICB6LWluZGV4OiAxMDtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1mcm96ZW4udGFidWxhdG9yLWZyb3plbi1sZWZ0IHtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2FhYTtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1mcm96ZW4udGFidWxhdG9yLWZyb3plbi1yaWdodCB7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2FhYTtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1yZXNwb25zaXZlLWNvbGxhcHNlIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogNXB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2FhYTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNhYWE7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItcmVzcG9uc2l2ZS1jb2xsYXBzZTplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItcmVzcG9uc2l2ZS1jb2xsYXBzZSB0YWJsZSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1yZXNwb25zaXZlLWNvbGxhcHNlIHRhYmxlIHRyIHRkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udGFidWxhdG9yLXJvdyAudGFidWxhdG9yLXJlc3BvbnNpdmUtY29sbGFwc2UgdGFibGUgdHIgdGQ6Zmlyc3Qtb2YtdHlwZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiA0cHg7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNhYWE7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4udGFidWxhdG9yLXJvdyAudGFidWxhdG9yLWNlbGwudGFidWxhdG9yLWVkaXRpbmcge1xuICBib3JkZXI6IDFweCBzb2xpZCAjMUQ2OENEO1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4udGFidWxhdG9yLXJvdyAudGFidWxhdG9yLWNlbGwudGFidWxhdG9yLWVkaXRpbmcgaW5wdXQsIC50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbC50YWJ1bGF0b3ItZWRpdGluZyBzZWxlY3Qge1xuICBib3JkZXI6IDFweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbC50YWJ1bGF0b3ItdmFsaWRhdGlvbi1mYWlsIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkMDAwMDtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsLnRhYnVsYXRvci12YWxpZGF0aW9uLWZhaWwgaW5wdXQsIC50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbC50YWJ1bGF0b3ItdmFsaWRhdGlvbi1mYWlsIHNlbGVjdCB7XG4gIGJvcmRlcjogMXB4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICNkZDAwMDA7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbDpmaXJzdC1jaGlsZCAudGFidWxhdG9yLWNvbC1yZXNpemUtaGFuZGxlLnByZXYge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udGFidWxhdG9yLXJvdyAudGFidWxhdG9yLWNlbGwudGFidWxhdG9yLXJvdy1oYW5kbGUge1xuICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW8tdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbC50YWJ1bGF0b3Itcm93LWhhbmRsZSAudGFidWxhdG9yLXJvdy1oYW5kbGUtYm94IHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsLnRhYnVsYXRvci1yb3ctaGFuZGxlIC50YWJ1bGF0b3Itcm93LWhhbmRsZS1ib3ggLnRhYnVsYXRvci1yb3ctaGFuZGxlLWJhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDNweDtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBiYWNrZ3JvdW5kOiAjNjY2O1xufVxuXG4udGFidWxhdG9yLXJvdyAudGFidWxhdG9yLWNlbGwgLnRhYnVsYXRvci1kYXRhLXRyZWUtYnJhbmNoIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBoZWlnaHQ6IDlweDtcbiAgd2lkdGg6IDdweDtcbiAgbWFyZ2luLXRvcDogLTlweDtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDFweDtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjYWFhO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2FhYTtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2wge1xuICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGhlaWdodDogMTFweDtcbiAgd2lkdGg6IDExcHg7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMzMzO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2w6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2wgLnRhYnVsYXRvci1kYXRhLXRyZWUtY29udHJvbC1jb2xsYXBzZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDdweDtcbiAgd2lkdGg6IDFweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCAudGFidWxhdG9yLWRhdGEtdHJlZS1jb250cm9sIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2wtY29sbGFwc2U6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGxlZnQ6IC0zcHg7XG4gIHRvcDogM3B4O1xuICBoZWlnaHQ6IDFweDtcbiAgd2lkdGg6IDdweDtcbiAgYmFja2dyb3VuZDogIzMzMztcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2wgLnRhYnVsYXRvci1kYXRhLXRyZWUtY29udHJvbC1leHBhbmQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiA3cHg7XG4gIHdpZHRoOiAxcHg7XG4gIGJhY2tncm91bmQ6ICMzMzM7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCAudGFidWxhdG9yLWRhdGEtdHJlZS1jb250cm9sIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2wtZXhwYW5kOmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjb250ZW50OiBcIlwiO1xuICBsZWZ0OiAtM3B4O1xuICB0b3A6IDNweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiA3cHg7XG4gIGJhY2tncm91bmQ6ICMzMzM7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCAudGFidWxhdG9yLXJlc3BvbnNpdmUtY29sbGFwc2UtdG9nZ2xlIHtcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1vLXVzZXItc2VsZWN0OiBub25lO1xuICBoZWlnaHQ6IDE1cHg7XG4gIHdpZHRoOiAxNXB4O1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjNjY2O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCAudGFidWxhdG9yLXJlc3BvbnNpdmUtY29sbGFwc2UtdG9nZ2xlOmhvdmVyIHtcbiAgb3BhY2l0eTogLjc7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCAudGFidWxhdG9yLXJlc3BvbnNpdmUtY29sbGFwc2UtdG9nZ2xlLm9wZW4gLnRhYnVsYXRvci1yZXNwb25zaXZlLWNvbGxhcHNlLXRvZ2dsZS1jbG9zZSB7XG4gIGRpc3BsYXk6IGluaXRpYWw7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCAudGFidWxhdG9yLXJlc3BvbnNpdmUtY29sbGFwc2UtdG9nZ2xlLm9wZW4gLnRhYnVsYXRvci1yZXNwb25zaXZlLWNvbGxhcHNlLXRvZ2dsZS1vcGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsIC50YWJ1bGF0b3ItcmVzcG9uc2l2ZS1jb2xsYXBzZS10b2dnbGUgLnRhYnVsYXRvci1yZXNwb25zaXZlLWNvbGxhcHNlLXRvZ2dsZS1jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCAudGFidWxhdG9yLXRyYWZmaWMtbGlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMTRweDtcbiAgd2lkdGg6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE0cHg7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1ncm91cCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTk5O1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYWFhO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgIzk5OTtcbiAgcGFkZGluZzogNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIGJhY2tncm91bmQ6ICNjY2M7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtaW4td2lkdGg6IDEwMCU7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1ncm91cDpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4udGFidWxhdG9yLXJvdy50YWJ1bGF0b3ItZ3JvdXAudGFidWxhdG9yLWdyb3VwLXZpc2libGUgLnRhYnVsYXRvci1hcnJvdyB7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci10b3A6IDZweCBzb2xpZCAjNjY2O1xuICBib3JkZXItYm90dG9tOiAwO1xufVxuXG4udGFidWxhdG9yLXJvdy50YWJ1bGF0b3ItZ3JvdXAudGFidWxhdG9yLWdyb3VwLWxldmVsLTEge1xuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1ncm91cC50YWJ1bGF0b3ItZ3JvdXAtbGV2ZWwtMiB7XG4gIHBhZGRpbmctbGVmdDogNTBweDtcbn1cblxuLnRhYnVsYXRvci1yb3cudGFidWxhdG9yLWdyb3VwLnRhYnVsYXRvci1ncm91cC1sZXZlbC0zIHtcbiAgcGFkZGluZy1sZWZ0OiA3MHB4O1xufVxuXG4udGFidWxhdG9yLXJvdy50YWJ1bGF0b3ItZ3JvdXAudGFidWxhdG9yLWdyb3VwLWxldmVsLTQge1xuICBwYWRkaW5nLWxlZnQ6IDkwcHg7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1ncm91cC50YWJ1bGF0b3ItZ3JvdXAtbGV2ZWwtNSB7XG4gIHBhZGRpbmctbGVmdDogMTEwcHg7XG59XG5cbi50YWJ1bGF0b3Itcm93LnRhYnVsYXRvci1ncm91cCAudGFidWxhdG9yLWdyb3VwLXRvZ2dsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLnRhYnVsYXRvci1yb3cudGFidWxhdG9yLWdyb3VwIC50YWJ1bGF0b3ItYXJyb3cge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMTZweDtcbiAgYm9yZGVyLXRvcDogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjNjY2O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4udGFidWxhdG9yLXJvdy50YWJ1bGF0b3ItZ3JvdXAgc3BhbiB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBjb2xvcjogI2QwMDtcbn1cblxuLnRhYnVsYXRvci1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJveC1zaGFkb3c6IDAgMCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB6LWluZGV4OiAxMDAwMDtcbn1cblxuLnRhYnVsYXRvci1tZW51IC50YWJ1bGF0b3ItbWVudS1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLnRhYnVsYXRvci1tZW51IC50YWJ1bGF0b3ItbWVudS1pdGVtLnRhYnVsYXRvci1tZW51LWl0ZW0tZGlzYWJsZWQge1xuICBvcGFjaXR5OiAuNTtcbn1cblxuLnRhYnVsYXRvci1tZW51IC50YWJ1bGF0b3ItbWVudS1pdGVtOm5vdCgudGFidWxhdG9yLW1lbnUtaXRlbS1kaXNhYmxlZCk6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6ICNFRkVGRUY7XG59XG5cbi50YWJ1bGF0b3ItbWVudSAudGFidWxhdG9yLW1lbnUtaXRlbS50YWJ1bGF0b3ItbWVudS1pdGVtLXN1Ym1lbnUge1xuICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xufVxuXG4udGFidWxhdG9yLW1lbnUgLnRhYnVsYXRvci1tZW51LWl0ZW0udGFidWxhdG9yLW1lbnUtaXRlbS1zdWJtZW51OjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoNXB4ICsgLjRlbSk7XG4gIHJpZ2h0OiAxMHB4O1xuICBoZWlnaHQ6IDdweDtcbiAgd2lkdGg6IDdweDtcbiAgY29udGVudDogJyc7XG4gIGJvcmRlci13aWR0aDogMXB4IDFweCAwIDA7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci1jb2xvcjogI2FhYTtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbn1cblxuLnRhYnVsYXRvci1tZW51IC50YWJ1bGF0b3ItbWVudS1zZXBhcmF0b3Ige1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2FhYTtcbn1cblxuLnRhYnVsYXRvci1lZGl0LXNlbGVjdC1saXN0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xuICBmb250LXNpemU6IDE0cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgei1pbmRleDogMTAwMDA7XG59XG5cbi50YWJ1bGF0b3ItZWRpdC1zZWxlY3QtbGlzdCAudGFidWxhdG9yLWVkaXQtc2VsZWN0LWxpc3QtaXRlbSB7XG4gIHBhZGRpbmc6IDRweDtcbiAgY29sb3I6ICMzMzM7XG59XG5cbi50YWJ1bGF0b3ItZWRpdC1zZWxlY3QtbGlzdCAudGFidWxhdG9yLWVkaXQtc2VsZWN0LWxpc3QtaXRlbS5hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogIzFENjhDRDtcbn1cblxuLnRhYnVsYXRvci1lZGl0LXNlbGVjdC1saXN0IC50YWJ1bGF0b3ItZWRpdC1zZWxlY3QtbGlzdC1pdGVtLmFjdGl2ZS5mb2N1c2VkIHtcbiAgb3V0bGluZTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbn1cblxuLnRhYnVsYXRvci1lZGl0LXNlbGVjdC1saXN0IC50YWJ1bGF0b3ItZWRpdC1zZWxlY3QtbGlzdC1pdGVtLmZvY3VzZWQge1xuICBvdXRsaW5lOiAxcHggc29saWQgIzFENjhDRDtcbn1cblxuLnRhYnVsYXRvci1lZGl0LXNlbGVjdC1saXN0IC50YWJ1bGF0b3ItZWRpdC1zZWxlY3QtbGlzdC1pdGVtOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogIzFENjhDRDtcbn1cblxuLnRhYnVsYXRvci1lZGl0LXNlbGVjdC1saXN0IC50YWJ1bGF0b3ItZWRpdC1zZWxlY3QtbGlzdC1ub3RpY2Uge1xuICBwYWRkaW5nOiA0cHg7XG4gIGNvbG9yOiAjMzMzO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50YWJ1bGF0b3ItZWRpdC1zZWxlY3QtbGlzdCAudGFidWxhdG9yLWVkaXQtc2VsZWN0LWxpc3QtZ3JvdXAge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FhYTtcbiAgcGFkZGluZzogNHB4O1xuICBwYWRkaW5nLXRvcDogNnB4O1xuICBjb2xvcjogIzMzMztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi50YWJ1bGF0b3IudGFidWxhdG9yLWx0ciB7XG4gIGRpcmVjdGlvbjogbHRyO1xufVxuXG4udGFidWxhdG9yLnRhYnVsYXRvci1ydGwge1xuICB0ZXh0LWFsaWduOiBpbml0aWFsO1xuICBkaXJlY3Rpb246IHJ0bDtcbn1cblxuLnRhYnVsYXRvci50YWJ1bGF0b3ItcnRsIC50YWJ1bGF0b3ItaGVhZGVyIC50YWJ1bGF0b3ItY29sIHtcbiAgdGV4dC1hbGlnbjogaW5pdGlhbDtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjYWFhO1xuICBib3JkZXItcmlnaHQ6IGluaXRpYWw7XG59XG5cbi50YWJ1bGF0b3IudGFidWxhdG9yLXJ0bCAudGFidWxhdG9yLWhlYWRlciAudGFidWxhdG9yLWNvbC50YWJ1bGF0b3ItY29sLWdyb3VwIC50YWJ1bGF0b3ItY29sLWdyb3VwLWNvbHMge1xuICBtYXJnaW4tcmlnaHQ6IGluaXRpYWw7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xufVxuXG4udGFidWxhdG9yLnRhYnVsYXRvci1ydGwgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wudGFidWxhdG9yLXNvcnRhYmxlIC50YWJ1bGF0b3ItY29sLXRpdGxlIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAyNXB4O1xufVxuXG4udGFidWxhdG9yLnRhYnVsYXRvci1ydGwgLnRhYnVsYXRvci1oZWFkZXIgLnRhYnVsYXRvci1jb2wgLnRhYnVsYXRvci1jb2wtY29udGVudCAudGFidWxhdG9yLWFycm93IHtcbiAgbGVmdDogOHB4O1xuICByaWdodDogaW5pdGlhbDtcbn1cblxuLnRhYnVsYXRvci50YWJ1bGF0b3ItcnRsIC50YWJ1bGF0b3Itcm93IC50YWJ1bGF0b3ItY2VsbCB7XG4gIGJvcmRlci1yaWdodDogaW5pdGlhbDtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjYWFhO1xufVxuXG4udGFidWxhdG9yLnRhYnVsYXRvci1ydGwgLnRhYnVsYXRvci1yb3cgLnRhYnVsYXRvci1jZWxsIC50YWJ1bGF0b3ItZGF0YS10cmVlLWJyYW5jaCB7XG4gIG1hcmdpbi1yaWdodDogaW5pdGlhbDtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogaW5pdGlhbDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDFweDtcbiAgYm9yZGVyLWxlZnQ6IGluaXRpYWw7XG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNhYWE7XG59XG5cbi50YWJ1bGF0b3IudGFidWxhdG9yLXJ0bCAudGFidWxhdG9yLXJvdyAudGFidWxhdG9yLWNlbGwgLnRhYnVsYXRvci1kYXRhLXRyZWUtY29udHJvbCB7XG4gIG1hcmdpbi1yaWdodDogaW5pdGlhbDtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuLnRhYnVsYXRvci50YWJ1bGF0b3ItcnRsIC50YWJ1bGF0b3ItY29sLXJlc2l6ZS1oYW5kbGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiBhdXRvO1xufVxuXG4udGFidWxhdG9yLnRhYnVsYXRvci1ydGwgLnRhYnVsYXRvci1jb2wtcmVzaXplLWhhbmRsZS5wcmV2IHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGF1dG87XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtZnVsbHNjcmVlbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB6LWluZGV4OiAxMDAwMDtcbn1cblxuYm9keS50YWJ1bGF0b3ItcHJpbnQtZnVsbHNjcmVlbi1oaWRlID4gKjpub3QoLnRhYnVsYXRvci1wcmludC1mdWxsc2NyZWVuKSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnRhYnVsYXRvci1wcmludC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1kYXRhLXRyZWUtYnJhbmNoIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBoZWlnaHQ6IDlweDtcbiAgd2lkdGg6IDdweDtcbiAgbWFyZ2luLXRvcDogLTlweDtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDFweDtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjYWFhO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2FhYTtcbn1cblxuLnRhYnVsYXRvci1wcmludC10YWJsZSAudGFidWxhdG9yLXByaW50LXRhYmxlLWdyb3VwIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM5OTk7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjOTk5O1xuICBwYWRkaW5nOiA1cHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgYmFja2dyb3VuZDogI2NjYztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1pbi13aWR0aDogMTAwJTtcbn1cblxuLnRhYnVsYXRvci1wcmludC10YWJsZSAudGFidWxhdG9yLXByaW50LXRhYmxlLWdyb3VwOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1wcmludC10YWJsZS1ncm91cC50YWJ1bGF0b3ItZ3JvdXAtdmlzaWJsZSAudGFidWxhdG9yLWFycm93IHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXRvcDogNnB4IHNvbGlkICM2NjY7XG4gIGJvcmRlci1ib3R0b206IDA7XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1wcmludC10YWJsZS1ncm91cC50YWJ1bGF0b3ItZ3JvdXAtbGV2ZWwtMSB0ZCB7XG4gIHBhZGRpbmctbGVmdDogMzBweCAhaW1wb3J0YW50O1xufVxuXG4udGFidWxhdG9yLXByaW50LXRhYmxlIC50YWJ1bGF0b3ItcHJpbnQtdGFibGUtZ3JvdXAudGFidWxhdG9yLWdyb3VwLWxldmVsLTIgdGQge1xuICBwYWRkaW5nLWxlZnQ6IDUwcHggIWltcG9ydGFudDtcbn1cblxuLnRhYnVsYXRvci1wcmludC10YWJsZSAudGFidWxhdG9yLXByaW50LXRhYmxlLWdyb3VwLnRhYnVsYXRvci1ncm91cC1sZXZlbC0zIHRkIHtcbiAgcGFkZGluZy1sZWZ0OiA3MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1wcmludC10YWJsZS1ncm91cC50YWJ1bGF0b3ItZ3JvdXAtbGV2ZWwtNCB0ZCB7XG4gIHBhZGRpbmctbGVmdDogOTBweCAhaW1wb3J0YW50O1xufVxuXG4udGFidWxhdG9yLXByaW50LXRhYmxlIC50YWJ1bGF0b3ItcHJpbnQtdGFibGUtZ3JvdXAudGFidWxhdG9yLWdyb3VwLWxldmVsLTUgdGQge1xuICBwYWRkaW5nLWxlZnQ6IDExMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1wcmludC10YWJsZS1ncm91cCAudGFidWxhdG9yLWdyb3VwLXRvZ2dsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLnRhYnVsYXRvci1wcmludC10YWJsZSAudGFidWxhdG9yLXByaW50LXRhYmxlLWdyb3VwIC50YWJ1bGF0b3ItYXJyb3cge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMTZweDtcbiAgYm9yZGVyLXRvcDogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjNjY2O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4udGFidWxhdG9yLXByaW50LXRhYmxlIC50YWJ1bGF0b3ItcHJpbnQtdGFibGUtZ3JvdXAgc3BhbiB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBjb2xvcjogI2QwMDtcbn1cblxuLnRhYnVsYXRvci1wcmludC10YWJsZSAudGFidWxhdG9yLWRhdGEtdHJlZS1jb250cm9sIHtcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBoZWlnaHQ6IDExcHg7XG4gIHdpZHRoOiAxMXB4O1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgIzMzMztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1kYXRhLXRyZWUtY29udHJvbDpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4udGFidWxhdG9yLXByaW50LXRhYmxlIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2wgLnRhYnVsYXRvci1kYXRhLXRyZWUtY29udHJvbC1jb2xsYXBzZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDdweDtcbiAgd2lkdGg6IDFweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1kYXRhLXRyZWUtY29udHJvbCAudGFidWxhdG9yLWRhdGEtdHJlZS1jb250cm9sLWNvbGxhcHNlOmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjb250ZW50OiBcIlwiO1xuICBsZWZ0OiAtM3B4O1xuICB0b3A6IDNweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiA3cHg7XG4gIGJhY2tncm91bmQ6ICMzMzM7XG59XG5cbi50YWJ1bGF0b3ItcHJpbnQtdGFibGUgLnRhYnVsYXRvci1kYXRhLXRyZWUtY29udHJvbCAudGFidWxhdG9yLWRhdGEtdHJlZS1jb250cm9sLWV4cGFuZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDdweDtcbiAgd2lkdGg6IDFweDtcbiAgYmFja2dyb3VuZDogIzMzMztcbn1cblxuLnRhYnVsYXRvci1wcmludC10YWJsZSAudGFidWxhdG9yLWRhdGEtdHJlZS1jb250cm9sIC50YWJ1bGF0b3ItZGF0YS10cmVlLWNvbnRyb2wtZXhwYW5kOmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjb250ZW50OiBcIlwiO1xuICBsZWZ0OiAtM3B4O1xuICB0b3A6IDNweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiA3cHg7XG4gIGJhY2tncm91bmQ6ICMzMzM7XG59XG4iLCIvKipcbiAqIHRvbS1zZWxlY3QuY3NzICh2Ly9AQHZlcnNpb24pXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cbi50cy1jb250cm9sLnBsdWdpbi1kcmFnX2Ryb3AubXVsdGkgPiAudHMtaW5wdXQgPiBkaXYudWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICNmMmYyZjIgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA2KSAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgbm9uZSAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMTJweCA0cHggI2ZmZjsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4tZHJhZ19kcm9wIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlcjo6YWZ0ZXIge1xuICBjb250ZW50OiAnISc7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4tZHJhZ19kcm9wIC51aS1zb3J0YWJsZS1oZWxwZXIge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9XG5cbi5wbHVnaW4tY2hlY2tib3hfb3B0aW9ucyAub3B0aW9uIGlucHV0IHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07IH1cblxuLnBsdWdpbi1jbGVhcl9idXR0b24gLml0ZW1zIHtcbiAgcGFkZGluZy1yaWdodDogY2FsYyggMWVtICsgKDMgKiA2cHgpKSAhaW1wb3J0YW50OyB9XG5cbi5wbHVnaW4tY2xlYXJfYnV0dG9uIC5jbGVhci1idXR0b24ge1xuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogOHB4O1xuICByaWdodDogY2FsYyg4cHggLSA2cHgpO1xuICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuLnBsdWdpbi1jbGVhcl9idXR0b24uc2luZ2xlIC5jbGVhci1idXR0b24ge1xuICByaWdodDogY2FsYyg4cHggLSA2cHggKyAgMnJlbSk7IH1cblxuLnBsdWdpbi1jbGVhcl9idXR0b24gLmhhcy1pdGVtcy5mb2N1cyAuY2xlYXItYnV0dG9uLFxuLnBsdWdpbi1jbGVhcl9idXR0b246aG92ZXIgLmhhcy1pdGVtcyAuY2xlYXItYnV0dG9uIHtcbiAgb3BhY2l0eTogMTsgfVxuXG4udHMtY29udHJvbCAuZHJvcGRvd24taGVhZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAxMHB4IDhweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkMGQwZDA7XG4gIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG4gIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOyB9XG5cbi50cy1jb250cm9sIC5kcm9wZG93bi1oZWFkZXItY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA4cHg7XG4gIHRvcDogNTAlO1xuICBjb2xvcjogIzMwMzAzMDtcbiAgb3BhY2l0eTogMC40O1xuICBtYXJnaW4tdG9wOiAtMTJweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50OyB9XG5cbi50cy1jb250cm9sIC5kcm9wZG93bi1oZWFkZXItY2xvc2U6aG92ZXIge1xuICBjb2xvcjogYmxhY2s7IH1cblxuLnBsdWdpbi1kcm9wZG93bl9pbnB1dCAudHMtaW5wdXQuZm9jdXMge1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDBkMGQwOyB9XG5cbi5wbHVnaW4tZHJvcGRvd25faW5wdXQgLmRyb3Bkb3duLWlucHV0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2QwZDBkMDtcbiAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA4cHggOHB4O1xuICBib3gtc2hhZG93OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cblxuLnRzLWNvbnRyb2wucGx1Z2luLWlucHV0X2F1dG9ncm93IC50cy1pbnB1dC5oYXMtaXRlbXMgPiBpbnB1dCB7XG4gIG1pbi13aWR0aDogMDsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4taW5wdXRfYXV0b2dyb3cgLnRzLWlucHV0LmZvY3VzLmhhcy1pdGVtcyA+IGlucHV0IHtcbiAgZmxleDogbm9uZTtcbiAgbWluLXdpZHRoOiA0cHg7IH1cbiAgLnRzLWNvbnRyb2wucGx1Z2luLWlucHV0X2F1dG9ncm93IC50cy1pbnB1dC5mb2N1cy5oYXMtaXRlbXMgPiBpbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udHMtZHJvcGRvd24ucGx1Z2luLW9wdGdyb3VwX2NvbHVtbnMgLnRzLWRyb3Bkb3duLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4OyB9XG5cbi50cy1kcm9wZG93bi5wbHVnaW4tb3B0Z3JvdXBfY29sdW1ucyAub3B0Z3JvdXAge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZjJmMmYyO1xuICBib3JkZXItdG9wOiAwIG5vbmU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZmxleC1iYXNpczogMDtcbiAgbWluLXdpZHRoOiAwOyB9XG5cbi50cy1kcm9wZG93bi5wbHVnaW4tb3B0Z3JvdXBfY29sdW1ucyAub3B0Z3JvdXA6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yaWdodDogMCBub25lOyB9XG5cbi50cy1kcm9wZG93bi5wbHVnaW4tb3B0Z3JvdXBfY29sdW1ucyAub3B0Z3JvdXA6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4udHMtZHJvcGRvd24ucGx1Z2luLW9wdGdyb3VwX2NvbHVtbnMgLm9wdGdyb3VwLWhlYWRlciB7XG4gIGJvcmRlci10b3A6IDAgbm9uZTsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4tcmVtb3ZlX2J1dHRvbiAuaXRlbSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cblxuLnRzLWNvbnRyb2wucGx1Z2luLXJlbW92ZV9idXR0b24gLml0ZW0gLnJlbW92ZSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZDBkMGQwO1xuICBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luLWxlZnQ6IDZweDsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4tcmVtb3ZlX2J1dHRvbiAuaXRlbSAucmVtb3ZlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA1KTsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4tcmVtb3ZlX2J1dHRvbiAuaXRlbS5hY3RpdmUgLnJlbW92ZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjY2FjYWNhOyB9XG5cbi50cy1jb250cm9sLnBsdWdpbi1yZW1vdmVfYnV0dG9uIC5kaXNhYmxlZCAuaXRlbSAucmVtb3ZlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4tcmVtb3ZlX2J1dHRvbiAuZGlzYWJsZWQgLml0ZW0gLnJlbW92ZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB3aGl0ZTsgfVxuXG4udHMtY29udHJvbC5wbHVnaW4tcmVtb3ZlX2J1dHRvbiAucmVtb3ZlLXNpbmdsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgZm9udC1zaXplOiAyM3B4OyB9XG5cbi50cy1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG5cbi50cy1kcm9wZG93bixcbi50cy1pbnB1dCxcbi50cy1pbnB1dCBpbnB1dCB7XG4gIGNvbG9yOiAjMzAzMDMwO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7IH1cblxuLnRzLWlucHV0LFxuLnRzLWNvbnRyb2wuc2luZ2xlIC50cy1pbnB1dC5pbnB1dC1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBjdXJzb3I6IHRleHQ7IH1cblxuLnRzLWlucHV0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2QwZDBkMDtcbiAgcGFkZGluZzogOHB4IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7IH1cbiAgLnRzLWNvbnRyb2wubXVsdGkgLnRzLWlucHV0Lmhhcy1pdGVtcyB7XG4gICAgcGFkZGluZzogY2FsYyggOHB4IC0gMnB4IC0gMCkgOHB4IGNhbGMoIDhweCAtIDJweCAtIDNweCAtIDApOyB9XG4gIC50cy1pbnB1dC5mdWxsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9XG4gIC50cy1pbnB1dC5kaXNhYmxlZCxcbiAgLnRzLWlucHV0LmRpc2FibGVkICoge1xuICAgIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OyB9XG4gIC50cy1pbnB1dC5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogbm9uZTsgfVxuICAudHMtaW5wdXQgPiAqIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG4gIC50cy1jb250cm9sLm11bHRpIC50cy1pbnB1dCA+IGRpdiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbjogMCAzcHggM3B4IDA7XG4gICAgcGFkZGluZzogMnB4IDZweDtcbiAgICBiYWNrZ3JvdW5kOiAjZjJmMmYyO1xuICAgIGNvbG9yOiAjMzAzMDMwO1xuICAgIGJvcmRlcjogMCBzb2xpZCAjZDBkMGQwOyB9XG4gICAgLnRzLWNvbnRyb2wubXVsdGkgLnRzLWlucHV0ID4gZGl2LmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZThlOGU4O1xuICAgICAgY29sb3I6ICMzMDMwMzA7XG4gICAgICBib3JkZXI6IDAgc29saWQgI2NhY2FjYTsgfVxuICAudHMtY29udHJvbC5tdWx0aSAudHMtaW5wdXQuZGlzYWJsZWQgPiBkaXYsIC50cy1jb250cm9sLm11bHRpIC50cy1pbnB1dC5kaXNhYmxlZCA+IGRpdi5hY3RpdmUge1xuICAgIGNvbG9yOiAjN2Q3YzdjO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlcjogMCBzb2xpZCB3aGl0ZTsgfVxuICAudHMtaW5wdXQgPiBpbnB1dCB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWluLXdpZHRoOiA3cmVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIHRleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAwIG5vbmUgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICB1c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxuICAgIC50cy1pbnB1dCA+IGlucHV0OjotbXMtY2xlYXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC50cy1pbnB1dCA+IGlucHV0OmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgfVxuICAudHMtaW5wdXQuaGFzLWl0ZW1zID4gaW5wdXQge1xuICAgIG1hcmdpbjogMCA0cHggIWltcG9ydGFudDsgfVxuICAudHMtaW5wdXQuZHJvcGRvd24tYWN0aXZlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZDogI2YwZjBmMDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDsgfVxuICAudHMtaW5wdXQucnRsIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAgIC50cy1pbnB1dC5ydGwuc2luZ2xlIC50cy1pbnB1dDphZnRlciB7XG4gICAgICBsZWZ0OiAxNXB4O1xuICAgICAgcmlnaHQ6IGF1dG87IH1cbiAgICAudHMtaW5wdXQucnRsIC50cy1pbnB1dCA+IGlucHV0IHtcbiAgICAgIG1hcmdpbjogMCA0cHggMCAtMnB4ICFpbXBvcnRhbnQ7IH1cbiAgLnRzLWlucHV0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsgfVxuICAuaW5wdXQtaGlkZGVuIC50cy1pbnB1dCA+IGlucHV0IHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAtMTAwMDBweDsgfVxuXG4udHMtZHJvcGRvd24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDEwO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDBkMGQwO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBtYXJnaW46IDAuMjVyZW0gMCAwIDA7XG4gIGJvcmRlci10b3A6IDAgbm9uZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDNweCAzcHg7IH1cbiAgLnRzLWRyb3Bkb3duIFtkYXRhLXNlbGVjdGFibGVdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAgIC50cy1kcm9wZG93biBbZGF0YS1zZWxlY3RhYmxlXSAuaGlnaGxpZ2h0IHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxNjgsIDIwOCwgMC4yKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDFweDsgfVxuICAudHMtZHJvcGRvd24gLm9wdGlvbixcbiAgLnRzLWRyb3Bkb3duIC5vcHRncm91cC1oZWFkZXIsXG4gIC50cy1kcm9wZG93biAubm8tcmVzdWx0cyxcbiAgLnRzLWRyb3Bkb3duIC5jcmVhdGUge1xuICAgIHBhZGRpbmc6IDVweCA4cHg7IH1cbiAgLnRzLWRyb3Bkb3duIC5vcHRpb24sIC50cy1kcm9wZG93biBbZGF0YS1kaXNhYmxlZF0sIC50cy1kcm9wZG93biBbZGF0YS1kaXNhYmxlZF0gW2RhdGEtc2VsZWN0YWJsZV0ub3B0aW9uIHtcbiAgICBjdXJzb3I6IGluaGVyaXQ7XG4gICAgb3BhY2l0eTogMC41OyB9XG4gIC50cy1kcm9wZG93biBbZGF0YS1zZWxlY3RhYmxlXS5vcHRpb24ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC50cy1kcm9wZG93biAub3B0Z3JvdXA6Zmlyc3QtY2hpbGQgLm9wdGdyb3VwLWhlYWRlciB7XG4gICAgYm9yZGVyLXRvcDogMCBub25lOyB9XG4gIC50cy1kcm9wZG93biAub3B0Z3JvdXAtaGVhZGVyIHtcbiAgICBjb2xvcjogIzMwMzAzMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGN1cnNvcjogZGVmYXVsdDsgfVxuICAudHMtZHJvcGRvd24gLmNyZWF0ZTpob3ZlcixcbiAgLnRzLWRyb3Bkb3duIC5vcHRpb246aG92ZXIsXG4gIC50cy1kcm9wZG93biAuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmYWZkO1xuICAgIGNvbG9yOiAjNDk1YzY4OyB9XG4gICAgLnRzLWRyb3Bkb3duIC5jcmVhdGU6aG92ZXIuY3JlYXRlLFxuICAgIC50cy1kcm9wZG93biAub3B0aW9uOmhvdmVyLmNyZWF0ZSxcbiAgICAudHMtZHJvcGRvd24gLmFjdGl2ZS5jcmVhdGUge1xuICAgICAgY29sb3I6ICM0OTVjNjg7IH1cbiAgLnRzLWRyb3Bkb3duIC5jcmVhdGUge1xuICAgIGNvbG9yOiByZ2JhKDQ4LCA0OCwgNDgsIDAuNSk7IH1cbiAgLnRzLWRyb3Bkb3duIC5zcGlubmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIG1hcmdpbjogNXB4IDhweDsgfVxuICAgIC50cy1kcm9wZG93biAuc3Bpbm5lcjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICBtYXJnaW46IDNweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJvcmRlcjogNXB4IHNvbGlkICNkMGQwZDA7XG4gICAgICBib3JkZXItY29sb3I6ICNkMGQwZDAgdHJhbnNwYXJlbnQgI2QwZDBkMCB0cmFuc3BhcmVudDtcbiAgICAgIGFuaW1hdGlvbjogbGRzLWR1YWwtcmluZyAxLjJzIGxpbmVhciBpbmZpbml0ZTsgfVxuXG5Aa2V5ZnJhbWVzIGxkcy1kdWFsLXJpbmcge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XG5cbi50cy1kcm9wZG93bi1jb250ZW50IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7IH1cbiIsIi8vIFZlcnNpb246IDIuOS4zXG5cbi50bnMtb3V0ZXIge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8vIHJlbW92ZSBwYWRkaW5nOiBjbGllbnRXaWR0aCA9IHdpZHRoICsgcGFkZGluZyAoMCkgPSB3aWR0aFxuICBbaGlkZGVuXSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICBbYXJpYS1jb250cm9sc10sIFtkYXRhLWFjdGlvbl0geyBjdXJzb3I6IHBvaW50ZXI7IH1cbn1cbi50bnMtc2xpZGVyIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMHM7XG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIDBzO1xuICB0cmFuc2l0aW9uOiBhbGwgMHM7XG4gID4gLnRucy1pdGVtIHtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbn1cblxuLnRucy1ob3Jpem9udGFsIHtcbiAgJi50bnMtc3VicGl4ZWwge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgPiAudG5zLWl0ZW0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgfVxuICB9XG4gICYudG5zLW5vLXN1YnBpeGVsIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gICAgPiAudG5zLWl0ZW0ge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuICB9XG4gICYudG5zLWNhcm91c2VsIHtcbiAgICAmLnRucy1uby1zdWJwaXhlbCB7XG4gICAgICA+IC50bnMtaXRlbSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4udG5zLW5vLWNhbGMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IDA7XG59XG4udG5zLWdhbGxlcnkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IDA7XG4gIG1pbi1oZWlnaHQ6IDFweDsgLy8gbWFrZSBzdXJlIHNsaWRlciBjb250YWluZXIgaXMgdmlzaWJsZVxuICAvLyBvdmVyZmxvdzogaGlkZGVuO1xuICA+IC50bnMtaXRlbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogdHJhbnNmb3JtIDBzLCBvcGFjaXR5IDBzO1xuICAgIC1tb3otdHJhbnNpdGlvbjogdHJhbnNmb3JtIDBzLCBvcGFjaXR5IDBzO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwcywgb3BhY2l0eSAwcztcbiAgfVxuICA+IC50bnMtc2xpZGUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gID4gLnRucy1tb3Zpbmcge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xuICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cztcbiAgfVxufVxuLnRucy1hdXRvd2lkdGggeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbi50bnMtbGF6eS1pbWcge1xuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC42cztcbiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnM7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cztcbiAgb3BhY2l0eTogMC42O1xuICAmLnRucy1jb21wbGV0ZSB7IG9wYWNpdHk6IDE7IH1cbn1cbi50bnMtYWgge1xuICAtd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAwcztcbiAgLW1vei10cmFuc2l0aW9uOiBoZWlnaHQgMHM7XG4gIHRyYW5zaXRpb246IGhlaWdodCAwcztcbn1cbi50bnMtb3ZoIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuLnRucy12aXN1YWxseS1oaWRkZW4geyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC0xMDAwMGVtOyB9XG4udG5zLXRyYW5zcGFyZW50IHsgb3BhY2l0eTogMDsgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG5cbi50bnMtZmFkZUluIHtcbiAgb3BhY2l0eTogMTtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7XG4gIHotaW5kZXg6IDA7XG59XG4udG5zLW5vcm1hbCwgLnRucy1mYWRlT3V0IHtcbiAgb3BhY2l0eTogMDtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApO1xuICB6LWluZGV4OiAtMTtcbn1cblxuXG4vLyAqKiogRml4IGEgdmlld3BvcnQgaXNzdWUgaW4gaW5pdGlhbGl6YXRpb25cbi50bnMtdnBmaXgge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICA+IGRpdiwgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi8vICoqKiBEZXRlY3RpbmcgYnJvd3NlciBjYXBhYmlsaXR5ICoqKlxuJHdpZHRoOiAzMTBweDtcbiRoZWlnaHQ6IDEwcHg7XG4kY291bnQ6IDcwO1xuJHBlcnBhZ2U6IDM7XG5cbi50bnMtdCB7XG4gICYtc3VicDIge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG4gICYtY3Qge1xuICAgIHdpZHRoOiAoMTAwJSAqICRjb3VudCAvICRwZXJwYWdlKTtcbiAgICB3aWR0aDogLXdlYmtpdC1jYWxjKDEwMCUgKiAjeyRjb3VudH0gLyAjeyRwZXJwYWdlfSk7XG4gICAgd2lkdGg6IC1tb3otY2FsYygxMDAlICogI3skY291bnR9IC8gI3skcGVycGFnZX0pO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKiAjeyRjb3VudH0gLyAjeyRwZXJwYWdlfSk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICA+IGRpdiB7XG4gICAgICB3aWR0aDogKDEwMCUgLyAkY291bnQpO1xuICAgICAgd2lkdGg6IC13ZWJraXQtY2FsYygxMDAlIC8gI3skY291bnR9KTtcbiAgICAgIHdpZHRoOiAtbW96LWNhbGMoMTAwJSAvICN7JGNvdW50fSk7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC8gI3skY291bnR9KTtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cbiAgfVxufVxuIiwiW2RhdGEtc2ltcGxlYmFyXSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4uc2ltcGxlYmFyLXdyYXBwZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogaW5oZXJpdDtcbiAgaGVpZ2h0OiBpbmhlcml0O1xuICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gIG1heC1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi5zaW1wbGViYXItbWFzayB7XG4gIGRpcmVjdGlvbjogaW5oZXJpdDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDA7XG59XG5cbi5zaW1wbGViYXItb2Zmc2V0IHtcbiAgZGlyZWN0aW9uOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gIGJveC1zaXppbmc6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgcmVzaXplOiBub25lICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuLnNpbXBsZWJhci1jb250ZW50LXdyYXBwZXIge1xuICBkaXJlY3Rpb246IGluaGVyaXQ7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAxMDAlOyAvKiBSZXF1aXJlZCBmb3IgaG9yaXpvbnRhbCBuYXRpdmUgc2Nyb2xsYmFyIHRvIG5vdCBhcHBlYXIgaWYgcGFyZW50IGlzIHRhbGxlciB0aGFuIG5hdHVyYWwgaGVpZ2h0ICovXG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIE5vdCByZXF1aXJlZCBmb3IgaG9yaXpvbnRhbCBzY3JvbGwgdG8gdHJpZ2dlciAqL1xuICBtYXgtaGVpZ2h0OiAxMDAlOyAvKiBOZWVkZWQgZm9yIHZlcnRpY2FsIHNjcm9sbCB0byB0cmlnZ2VyICovXG4gIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4uc2ltcGxlYmFyLWNvbnRlbnQtd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXIsXG4uc2ltcGxlYmFyLWhpZGUtc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG59XG5cbi5zaW1wbGViYXItY29udGVudDpiZWZvcmUsXG4uc2ltcGxlYmFyLWNvbnRlbnQ6YWZ0ZXIge1xuICBjb250ZW50OiAnICc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uc2ltcGxlYmFyLXBsYWNlaG9sZGVyIHtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5zaW1wbGViYXItaGVpZ2h0LWF1dG8tb2JzZXJ2ZXItd3JhcHBlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1heC1oZWlnaHQ6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgei1pbmRleDogLTE7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGZsZXgtZ3JvdzogaW5oZXJpdDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGZsZXgtYmFzaXM6IDA7XG59XG5cbi5zaW1wbGViYXItaGVpZ2h0LWF1dG8tb2JzZXJ2ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwMCU7XG4gIHdpZHRoOiAxMDAwJTtcbiAgbWluLWhlaWdodDogMXB4O1xuICBtaW4td2lkdGg6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IC0xO1xufVxuXG4uc2ltcGxlYmFyLXRyYWNrIHtcbiAgei1pbmRleDogMTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuW2RhdGEtc2ltcGxlYmFyXS5zaW1wbGViYXItZHJhZ2dpbmcgLnNpbXBsZWJhci1jb250ZW50IHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xufVxuXG5bZGF0YS1zaW1wbGViYXJdLnNpbXBsZWJhci1kcmFnZ2luZyAuc2ltcGxlYmFyLXRyYWNrIHtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbn1cblxuLnNpbXBsZWJhci1zY3JvbGxiYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBtaW4taGVpZ2h0OiAxMHB4O1xufVxuXG4uc2ltcGxlYmFyLXNjcm9sbGJhcjpiZWZvcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGNvbnRlbnQ6ICcnO1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgYm9yZGVyLXJhZGl1czogN3B4O1xuICBsZWZ0OiAycHg7XG4gIHJpZ2h0OiAycHg7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBsaW5lYXI7XG59XG5cbi5zaW1wbGViYXItc2Nyb2xsYmFyLnNpbXBsZWJhci12aXNpYmxlOmJlZm9yZSB7XG4gIC8qIFdoZW4gaG92ZXJlZCwgcmVtb3ZlIGFsbCB0cmFuc2l0aW9ucyBmcm9tIGRyYWcgaGFuZGxlICovXG4gIG9wYWNpdHk6IDAuNTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwcyBsaW5lYXI7XG59XG5cbi5zaW1wbGViYXItdHJhY2suc2ltcGxlYmFyLXZlcnRpY2FsIHtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTFweDtcbn1cblxuLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItdmVydGljYWwgLnNpbXBsZWJhci1zY3JvbGxiYXI6YmVmb3JlIHtcbiAgdG9wOiAycHg7XG4gIGJvdHRvbTogMnB4O1xufVxuXG4uc2ltcGxlYmFyLXRyYWNrLnNpbXBsZWJhci1ob3Jpem9udGFsIHtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxMXB4O1xufVxuXG4uc2ltcGxlYmFyLXRyYWNrLnNpbXBsZWJhci1ob3Jpem9udGFsIC5zaW1wbGViYXItc2Nyb2xsYmFyOmJlZm9yZSB7XG4gIGhlaWdodDogMTAwJTtcbiAgbGVmdDogMnB4O1xuICByaWdodDogMnB4O1xufVxuXG4uc2ltcGxlYmFyLXRyYWNrLnNpbXBsZWJhci1ob3Jpem9udGFsIC5zaW1wbGViYXItc2Nyb2xsYmFyIHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IDA7XG4gIHRvcDogMnB4O1xuICBoZWlnaHQ6IDdweDtcbiAgbWluLWhlaWdodDogMDtcbiAgbWluLXdpZHRoOiAxMHB4O1xuICB3aWR0aDogYXV0bztcbn1cblxuLyogUnRsIHN1cHBvcnQgKi9cbltkYXRhLXNpbXBsZWJhci1kaXJlY3Rpb249J3J0bCddIC5zaW1wbGViYXItdHJhY2suc2ltcGxlYmFyLXZlcnRpY2FsIHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IDA7XG59XG5cbi5ocy1kdW1teS1zY3JvbGxiYXItc2l6ZSB7XG4gIGRpcmVjdGlvbjogcnRsO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgaGVpZ2h0OiA1MDBweDtcbiAgd2lkdGg6IDUwMHB4O1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbn1cblxuLnNpbXBsZWJhci1oaWRlLXNjcm9sbGJhciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbGVmdDogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuIiwiaHRtbCB7XG4gICAgQGFwcGx5IGJnLXByaW1hcnkgbWQ6Ymctc2xhdGUtMjAwO1xuICAgICYuZGFyayB7XG4gICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS04MDA7XG4gICAgICAgIGJvZHkge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtMzAwO1xuICAgICAgICAgICAgKixcbiAgICAgICAgICAgIDo6YmVmb3JlLFxuICAgICAgICAgICAgOjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci13aGl0ZS81O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGJvZHkge1xuICAgICAgICBAYXBwbHkgYW50aWFsaWFzZWQgb3ZlcmZsb3cteC1oaWRkZW4gZm9udC1yb2JvdG8gdGV4dC1zbSB0ZXh0LXNsYXRlLTgwMDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAgICAgICBAYXBwbHkgcHgtODtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgICAgIEBhcHBseSBweC0zO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmxvZ2luIHtcbiAgICBAYXBwbHkgcHktMyBweC04IHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiBiZy13aGl0ZSBkYXJrOmJnLWRhcmttb2RlLTYwMDtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oeGwpIHtcbiAgICAgICAgQGFwcGx5IGJnLXByaW1hcnkgZGFyazpiZy1kYXJrbW9kZS04MDA7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgQGFwcGx5IHctWzU3JV0gLW10LVsyOCVdIC1tYi1bMTUlXSAtbWwtWzEzJV0gYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCB0cmFuc2Zvcm0gcm90YXRlLVstNGRlZ10gYmctcHJpbWFyeS8yMCByb3VuZGVkLVsxMDAlXSBkYXJrOmJnLWRhcmttb2RlLTQwMDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICBAYXBwbHkgaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBAYXBwbHkgdy1bNTclXSAtbXQtWzIwJV0gLW1iLVsxMiVdIC1tbC1bMTMlXSBhYnNvbHV0ZSBpbnNldC15LTAgbGVmdC0wIHRyYW5zZm9ybSByb3RhdGUtWy00ZGVnXSBiZy1wcmltYXJ5IHJvdW5kZWQtWzEwMCVdIGRhcms6YmctZGFya21vZGUtNzAwO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oeGwpIHtcbiAgICAgICAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxvZ2luX19pbnB1dCB7XG4gICAgICAgIG1pbi13aWR0aDogMzUwcHg7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bih4bCkge1xuICAgICAgICAgICAgQGFwcGx5IG1pbi13LWZ1bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIudGFibGUtcmVwb3J0IHtcbiAgICAmOm5vdCgudGFibGUtcmVwb3J0LS1ib3JkZXJlZCk6bm90KC50YWJsZS1yZXBvcnQtLXRhYnVsYXRvcikge1xuICAgICAgICBib3JkZXItc3BhY2luZzogMCAxMHB4O1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXNlcGFyYXRlO1xuICAgICAgICB0aCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWItMDtcbiAgICAgICAgfVxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBAYXBwbHkgYmctd2hpdGUgYm9yZGVyLWItMCBkYXJrOmJnLWRhcmttb2RlLTYwMDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDIwcHggM3B4IDIwcHggIzAwMDAwMDBiO1xuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHJvdW5kZWQtbC1tZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHJvdW5kZWQtci1tZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYudGFibGUtcmVwb3J0X19hY3Rpb24ge1xuICAgICAgICAgICAgICAgIEBhcHBseSBweS0wIHJlbGF0aXZlIGJlZm9yZTpibG9jayBiZWZvcmU6dy1weCBiZWZvcmU6aC04IGJlZm9yZTpiZy1zbGF0ZS0yMDAgYmVmb3JlOmFic29sdXRlIGJlZm9yZTpsZWZ0LTAgYmVmb3JlOmluc2V0LXktMCBiZWZvcmU6bXktYXV0byBiZWZvcmU6ZGFyazpiZy1kYXJrbW9kZS00MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW1nIHtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMnB4ICNmZmYsIDFweCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4zMik7XG4gICAgfVxuICAgICYudGFibGUtcmVwb3J0LS10YWJ1bGF0b3JcbiAgICAgICAgLnRhYnVsYXRvci1oZWFkZXJcbiAgICAgICAgLnRhYnVsYXRvci1oZWFkZXJzXG4gICAgICAgIC50YWJ1bGF0b3ItY29sIHtcbiAgICAgICAgJjpudGgtY2hpbGQoMyksXG4gICAgICAgICY6bnRoLWNoaWxkKDQpLFxuICAgICAgICAmOm50aC1jaGlsZCg1KSxcbiAgICAgICAgJjpudGgtY2hpbGQoNikge1xuICAgICAgICAgICAgLnRhYnVsYXRvci1jb2wtY29udGVudCB7XG4gICAgICAgICAgICAgICAgLnRhYnVsYXRvci1jb2wtdGl0bGUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgdGV4dC1jZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGFyayB7XG4gICAgLnRhYmxlLXJlcG9ydCB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAycHggIzNmNDg2NSwgMXB4IDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5yZXBvcnQtY2hhcnQge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIEBhcHBseSBibG9jayBhYnNvbHV0ZSB3LTE2IGxlZnQtMCB0b3AtMCBib3R0b20tMCBtbC0xMCBtYi03IGJnLWdyYWRpZW50LXRvLXIgZnJvbS13aGl0ZSB2aWEtd2hpdGUvODAgdG8tdHJhbnNwYXJlbnQgZGFyazpmcm9tLWRhcmttb2RlLTYwMDtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIEBhcHBseSBibG9jayBhYnNvbHV0ZSB3LTE2IHJpZ2h0LTAgdG9wLTAgYm90dG9tLTAgbWItNyBiZy1ncmFkaWVudC10by1sIGZyb20td2hpdGUgdmlhLXdoaXRlLzgwIHRvLXRyYW5zcGFyZW50IGRhcms6ZnJvbS1kYXJrbW9kZS02MDA7XG4gICAgfVxufVxuIiwiLnNlYXJjaCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgIC5zZWFyY2hfX2lucHV0IHtcbiAgICAgICAgQGFwcGx5IHctNTYgc2hhZG93LW5vbmUgcm91bmRlZC1mdWxsIGJnLXNsYXRlLTIwMCBwci04IHRyYW5zaXRpb24tW3dpZHRoXSBkdXJhdGlvbi0zMDAgZWFzZS1pbi1vdXQgZm9jdXM6Ym9yZGVyLXRyYW5zcGFyZW50IGRhcms6YmctZGFya21vZGUtNDAwO1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIEBhcHBseSB3LTcyO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zZWFyY2hfX2ljb24ge1xuICAgICAgICBAYXBwbHkgdy01IGgtNSBhYnNvbHV0ZSBteS1hdXRvIGluc2V0LXktMCBtci0zIHJpZ2h0LTAgdGV4dC1zbGF0ZS02MDA7XG4gICAgfVxufVxuIiwiLm5vdGlmaWNhdGlvbiB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIHRleHQtd2hpdGUvNzA7XG4gICAgLm5vdGlmaWNhdGlvbl9faWNvbiB7XG4gICAgICAgIEBhcHBseSB3LTUgaC01O1xuICAgIH1cbiAgICAmLm5vdGlmaWNhdGlvbi0tYnVsbGV0OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHdpZHRoOiA4cHg7XG4gICAgICAgIGhlaWdodDogOHB4O1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1mdWxsIGFic29sdXRlIHRvcC1bLTJweF0gcmlnaHQtMCBiZy1kYW5nZXI7XG4gICAgfVxufVxuIiwiLnJlcG9ydC1ib3gge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMjBweCAjMDAwMDAwMGI7XG4gICAgICAgIEBhcHBseSBiZy1zbGF0ZS01MCBoLWZ1bGwgbXQtMyBhYnNvbHV0ZSByb3VuZGVkLW1kIG14LWF1dG8gaW5zZXQteC0wIGRhcms6YmctZGFya21vZGUtNDAwLzcwO1xuICAgIH1cbiAgICAucmVwb3J0LWJveF9faWNvbiB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgfVxuICAgIC5yZXBvcnQtYm94X19pbmRpY2F0b3Ige1xuICAgICAgICBwYWRkaW5nLXRvcDogM3B4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogM3B4O1xuICAgICAgICBAYXBwbHkgZmxleCByb3VuZGVkLWZ1bGwgdGV4dC13aGl0ZSB0ZXh0LXhzIHBsLTIgcHItMSBpdGVtcy1jZW50ZXIgZm9udC1tZWRpdW07XG4gICAgfVxufVxuIiwiLnJlcG9ydC1ib3gtMiB7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y5ZmFmYztcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCAyMHB4ICMwMDAwMDAwYjtcbiAgICAgICAgQGFwcGx5IGgtZnVsbCBtdC0zIGFic29sdXRlIHJvdW5kZWQtbWQgbXgtYXV0byBpbnNldC14LTAgZGFyazpiZy1kYXJrbW9kZS00MDAvNzA7XG4gICAgfVxuICAgIC5yZXBvcnQtYm94LTJfX2luZGljYXRvciB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAzcHg7XG4gICAgICAgIEBhcHBseSBmbGV4IHJvdW5kZWQtZnVsbCB0ZXh0LXdoaXRlIHRleHQteHMgcGwtMiBwci0xIG10LTMgbXItYXV0byBpdGVtcy1jZW50ZXIgZm9udC1tZWRpdW07XG4gICAgfVxufVxuIiwiLnJlcG9ydC1ib3gtMyB7XG4gICAgbWFyZ2luLWxlZnQ6IC0yMnB4O1xuICAgIG1hcmdpbi1yaWdodDogLTIycHg7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgICBtYXJnaW4tbGVmdDogLTE2cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLTE2cHg7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweCAzMHB4IDBweCAwcHg7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRleSgzNXB4KTtcbiAgICAgICAgYW5pbWF0aW9uOiAwLjRzIGludHJvLXJlcG9ydC1ib3gtMy1hbmltYXRpb24gZWFzZS1pbi1vdXQgMC4zMzMzM3M7XG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMXM7XG4gICAgICAgIEBhcHBseSB3LWZ1bGwgaC1mdWxsIGJnLXNsYXRlLTIwMC83MCBkYXJrOmJnLW9wYWNpdHktNTAgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHJpZ2h0LTAgb3BhY2l0eS0wIGRhcms6YmctZGFya21vZGUtNTAwO1xuICAgIH1cbiAgICAmLnJlcG9ydC1ib3gtMy0tY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDBweCAyMnB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MDBweDtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZXkoMzVweCk7XG4gICAgICAgICAgICBhbmltYXRpb246IDAuNHMgaW50cm8tcmVwb3J0LWJveC0zLWFuaW1hdGlvbiBlYXNlLWluLW91dCAwLjMzMzMzcztcbiAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjFzO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCAyMHB4ICMwMDAwMDAwYjtcbiAgICAgICAgICAgIEBhcHBseSB3LWZ1bGwgaC1mdWxsIGJnLXNsYXRlLTEwMCBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgcmlnaHQtMCBvcGFjaXR5LTAgZGFyazpiZy1kYXJrbW9kZS03MDA7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oeGwpIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgc2hhZG93LW5vbmUgcm91bmRlZC10LW5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgaW50cm8tcmVwb3J0LWJveC0zLWFuaW1hdGlvbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTEwMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCk7XG4gICAgfVxufVxuIiwiLnJlcG9ydC1ib3gtNCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweCAzMHB4IDBweCAwcHg7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRleSgzNXB4KTtcbiAgICAgICAgYW5pbWF0aW9uOiAwLjRzIGludHJvLXJlcG9ydC1ib3gtNC1hbmltYXRpb24gZWFzZS1pbi1vdXQgMC4zMzMzM3M7XG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMXM7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMjJweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjJweDtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCAyMHB4ICMwMDAwMDAwYjtcbiAgICAgICAgQGFwcGx5IGgtZnVsbCBiZy1zbGF0ZS0xMDAgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHJpZ2h0LTAgb3BhY2l0eS0wIGhpZGRlbiBkYXJrOmJnLWRhcmttb2RlLTcwMDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICBAYXBwbHkgYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogLTE2cHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xNnB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5yZXBvcnQtYm94LTRfX2NvbnRlbnQge1xuICAgICAgICBmbGV4OiAxIDEgMDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgaW50cm8tcmVwb3J0LWJveC00LWFuaW1hdGlvbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTEwMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCk7XG4gICAgfVxufVxuIiwiLmNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDBweCAyMnB4O1xuICAgIEBhcHBseSBtaW4tdy0wIG1pbi1oLXNjcmVlbiBiZy1zbGF0ZS0xMDAgZmxleC0xIHB0LTIwIHBiLTEwIG10LTEgcmVsYXRpdmUgZGFyazpiZy1kYXJrbW9kZS03MDA7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7XG4gICAgICAgIEBhcHBseSBweC00IG1heC13LWZ1bGwgcHQtMCBtdC0xMDtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBAYXBwbHkgdy1mdWxsIGgtcHggYmxvY2s7XG4gICAgfVxuICAgICYuY29udGVudC0tdG9wLW5hdiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDM1cHggMzVweCAwIDA7XG4gICAgICAgIEBhcHBseSBwdC0wIG10LTU7XG4gICAgfVxufVxuIiwiLnRvcC1uYXYge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRleSgzNXB4KTtcbiAgICBhbmltYXRpb246IDAuNHMgaW50cm8tdG9wLW1lbnUtYW5pbWF0aW9uIGVhc2UtaW4tb3V0IDAuMzMzMzNzO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgIGFuaW1hdGlvbi1kZWxheTogMC4ycztcbiAgICBAYXBwbHkgei01MCByZWxhdGl2ZSBvcGFjaXR5LTAgcHQtMzIgLW10LTQ7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgfVxuICAgID4gdWwge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDUwIHtcbiAgICAgICAgICAgID4gbGk6bnRoLWNoaWxkKCRpKSB7XG4gICAgICAgICAgICAgICAgJiA+IGEge1xuICAgICAgICAgICAgICAgICAgICAmOm5vdCgudG9wLW1lbnUtLWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IG9wYWNpdHktMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogMC40c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvLW1lbnUtYW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZS1pbi1vdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMzMzMzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKCRpICogMC4xcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJi50b3AtbWVudS0tYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogMC40c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvLWFjdGl2ZS1tZW51LWFuaW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2UtaW4tb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzMzM3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYWRkaW5nOiAwcHggNTBweDtcbiAgICAgICAgQGFwcGx5IGZsZXggZmxleC13cmFwO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oeGwpIHtcbiAgICAgICAgICAgIEBhcHBseSBweC02O1xuICAgICAgICB9XG4gICAgICAgID4gbGkgPiAudG9wLW1lbnUge1xuICAgICAgICAgICAgQGFwcGx5IG10LVszcHhdO1xuICAgICAgICAgICAgPiAudG9wLW1lbnVfX2ljb24ge1xuICAgICAgICAgICAgICAgIEBhcHBseSAtbXQtWzNweF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA+IC50b3AtbWVudV9fdGl0bGUge1xuICAgICAgICAgICAgICAgIEBhcHBseSAtbXQtWzNweF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgPiAudG9wLW1lbnUgPiAudG9wLW1lbnVfX3RpdGxlID4gLnRvcC1tZW51X19zdWItaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSByb3RhdGUtMTgwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+IHVsIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBsaTpob3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvcC1tZW51XG4gICAgICAgICAgICAgICAgICAgICAgICA+IC50b3AtbWVudV9fdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgID4gLnRvcC1tZW51X19zdWItaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgLXJvdGF0ZS05MDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC50b3AtbWVudSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1NXB4O1xuICAgICAgICAgICAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBweC01IG1yLTEgdGV4dC1zbGF0ZS02MDAgcmVsYXRpdmUgcm91bmRlZC14bDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oeGwpIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHJvdW5kZWQtZnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJi50b3AtbWVudS0tYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTEwMCB0ZXh0LXByaW1hcnkgZGFyazpiZy1kYXJrbW9kZS03MDA7XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmxvY2sgaW5zZXQtMCByb3VuZGVkLXhsIGFic29sdXRlIGJvcmRlci1iLVszcHhdIGJvcmRlci1zb2xpZCBib3JkZXItYmxhY2svWzAuMDhdIGRhcms6YmctZGFya21vZGUtNzAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogODBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC03NHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAwLjNzIGFjdGl2ZS10b3AtbWVudS1jaGV2cm9uLWFuaW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2UtaW4tb3V0IDAuMzMzMzNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwJyBoZWlnaHQ9JzgwJyB2aWV3Qm94PScwIDAgMjAgMTIyLjEnJTNFJTNDcGF0aCBkYXRhLW5hbWU9J1VuaW9uIDEnIGQ9J00xNi4wMzggMTIySDE2di0yLjIxM2E5NS44MDUgOTUuODA1IDAgMDAtMi44ODYtMjAuNzM1IDk0Ljg5NCA5NC44OTQgMCAwMC03Ljc4My0yMC40MzRBMzkuMDM5IDM5LjAzOSAwIDAxMCA2MS4wNTFhMzkuMDM1IDM5LjAzNSAwIDAxNS4zMzEtMTcuNTY3IDk0LjkgOTQuOSAwIDAwNy43ODMtMjAuNDM1QTk1Ljc0NiA5NS43NDYgMCAwMDE2IDIuMzE0VjBoNHYxMjJoLTMuOTYxdi4xbC0uMDAxLS4xeicgZmlsbD0nJTIzZjFmNWY4Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLW5vLXJlcGVhdCBiZy1jb3ZlciBhYnNvbHV0ZSBsZWZ0LTAgcmlnaHQtMCBib3R0b20tMCBteC1hdXRvIHRyYW5zZm9ybSByb3RhdGUtOTAgb3BhY2l0eS0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAudG9wLW1lbnVfX2ljb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGRhcms6dGV4dC13aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bih4bCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXByaW1hcnk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLnRvcC1tZW51X190aXRsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgZm9udC1tZWRpdW0gZGFyazp0ZXh0LXdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtODAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC50b3AtbWVudV9faWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSB6LTEwIGRhcms6dGV4dC1zbGF0ZS00MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC50b3AtbWVudV9fdGl0bGUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgei0xMCBkYXJrOnRleHQtc2xhdGUtNDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAudG9wLW1lbnVfX3RpdGxlIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IG1sLTMgZmxleCBpdGVtcy1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXA7XG4gICAgICAgICAgICAgICAgICAgIC50b3AtbWVudV9fc3ViLWljb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xMDAgdy00IGgtNCBtbC0yO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDIwcHggIzAwMDAwMDE0O1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDAgaGlkZGVuIHctNTYgYWJzb2x1dGUgcm91bmRlZC1tZCB6LTIwIHB4LTAgbXQtMSBiZWZvcmU6YmxvY2sgYmVmb3JlOmFic29sdXRlIGJlZm9yZTp3LWZ1bGwgYmVmb3JlOmgtZnVsbCBiZWZvcmU6Ymctd2hpdGUvWzAuMDRdIGJlZm9yZTppbnNldC0wIGJlZm9yZTpyb3VuZGVkLW1kIGJlZm9yZTp6LVstMV0gZGFyazpiZWZvcmU6YmctYmxhY2svMTA7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSB3LWZ1bGwgaC0xIGFic29sdXRlIHRvcC0wIGxlZnQtMCAtbXQtMSBjdXJzb3ItcG9pbnRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgcHgtNSByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgLnRvcC1tZW51IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBweC0wIG1yLTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAudG9wLW1lbnVfX2ljb246YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvcC1tZW51X190aXRsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHctZnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9wLW1lbnVfX3N1Yi1pY29uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IG1sLWF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTEwMCBoaWRkZW4gcm91bmRlZC1tZCBtdC0wIG1sLTAgdG9wLTAgYmVmb3JlOmJsb2NrIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6dy1mdWxsIGJlZm9yZTpoLWZ1bGwgYmVmb3JlOmJnLXdoaXRlL1swLjA0XSBiZWZvcmU6aW5zZXQtMCBiZWZvcmU6cm91bmRlZC1tZCBiZWZvcmU6ei1bLTFdIGRhcms6YmVmb3JlOmJnLWJsYWNrLzEwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA+IGxpOmhvdmVyID4gLnRvcC1tZW51Om5vdCgudG9wLW1lbnUtLWFjdGl2ZSkge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTEwMCBkYXJrOmJnLXRyYW5zcGFyZW50O1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJsb2NrIGluc2V0LTAgcm91bmRlZC14bCBhYnNvbHV0ZSB6LVstMV0gYm9yZGVyLWItWzNweF0gYm9yZGVyLXNvbGlkIGJvcmRlci1ibGFjay9bMC4wOF0gZGFyazpiZy1kYXJrbW9kZS03MDA7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSByb3VuZGVkLWZ1bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGludHJvLXRvcC1tZW51LWFuaW1hdGlvbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTEwMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGludHJvLWFjdGl2ZS10b3AtbWVudS1hbmltYXRpb24ge1xuICAgIDEwMCUge1xuICAgICAgICBAYXBwbHkgei0xMDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgYWN0aXZlLXRvcC1tZW51LWNoZXZyb24tYW5pbWF0aW9uIHtcbiAgICAxMDAlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTU0cHg7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTEwMDtcbiAgICB9XG59XG5cbi5kYXJrIHtcbiAgICAudG9wLW5hdiB7XG4gICAgICAgID4gdWwge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIC50b3AtbWVudSB7XG4gICAgICAgICAgICAgICAgICAgICYudG9wLW1lbnUtLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjAnIGhlaWdodD0nODAnIHZpZXdCb3g9JzAgMCAyMCAxMjIuMSclM0UlM0NwYXRoIGRhdGEtbmFtZT0nVW5pb24gMScgZD0nTTE2LjAzOCAxMjJIMTZ2LTIuMjEzYTk1LjgwNSA5NS44MDUgMCAwMC0yLjg4Ni0yMC43MzUgOTQuODk0IDk0Ljg5NCAwIDAwLTcuNzgzLTIwLjQzNEEzOS4wMzkgMzkuMDM5IDAgMDEwIDYxLjA1MWEzOS4wMzUgMzkuMDM1IDAgMDE1LjMzMS0xNy41NjcgOTQuOSA5NC45IDAgMDA3Ljc4My0yMC40MzVBOTUuNzQ2IDk1Ljc0NiAwIDAwMTYgMi4zMTRWMGg0djEyMmgtMy45NjF2LjFsLS4wMDEtLjF6JyBmaWxsPSclMjMyMzJlNDUnLyUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNjAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDdweCAjMDAwMDAwMWM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLG51bGwsIi5zaWRlLW5hdiB7XG4gICAgd2lkdGg6IDI2MHB4O1xuICAgIEBhcHBseSBweC01IHBiLTE2IG92ZXJmbG93LXgtaGlkZGVuIHotNTAgcHQtMzIgLW10LTQ7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgIHdpZHRoOiAxMDVweDtcbiAgICB9XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgfVxuICAgICYuc2lkZS1uYXYtLXNpbXBsZSB7XG4gICAgICAgIHdpZHRoOiAxMDVweDtcbiAgICAgICAgLnNpZGUtbWVudSB7XG4gICAgICAgICAgICAuc2lkZS1tZW51X190aXRsZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAuc2lkZS1tZW51X19zdWItaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpub3QoLnNpZGUtbWVudS0tYWN0aXZlKSAuc2lkZS1tZW51X19pY29uOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2lkZS1uYXZfX2RldmlkZXIge1xuICAgICAgICBAYXBwbHkgdy1mdWxsIGgtcHggYmctd2hpdGUvWzAuMDhdIHotMTAgcmVsYXRpdmUgZGFyazpiZy13aGl0ZS9bMC4wN107XG4gICAgfVxuICAgIC5zaWRlLW1lbnUge1xuICAgICAgICBAYXBwbHkgaC1bNTBweF0gZmxleCBpdGVtcy1jZW50ZXIgcGwtNSB0ZXh0LXNsYXRlLTYwMCBtYi0xIHJlbGF0aXZlIHJvdW5kZWQteGwgZGFyazp0ZXh0LXNsYXRlLTMwMDtcbiAgICAgICAgLnNpZGUtbWVudV9fdGl0bGUge1xuICAgICAgICAgICAgQGFwcGx5IHctZnVsbCBtbC0zIGZsZXggaXRlbXMtY2VudGVyO1xuICAgICAgICAgICAgLnNpZGUtbWVudV9fc3ViLWljb24ge1xuICAgICAgICAgICAgICAgIEBhcHBseSB0cmFuc2l0aW9uIGVhc2UtaW4gZHVyYXRpb24tMTAwIG1sLWF1dG8gbXItNTtcbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgdy00IGgtNDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhsKSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICA+IHVsIHtcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA1MCB7XG4gICAgICAgICAgICA+IGxpOm50aC1jaGlsZCgkaSkge1xuICAgICAgICAgICAgICAgICYuc2lkZS1uYXZfX2RldmlkZXIge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgb3BhY2l0eS0wO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IDAuNHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGludHJvLWRldmlkZXItYW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBlYXNlLWluLW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzMzM3M7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IGNhbGMoJGkgKiAwLjFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJiA+IGEge1xuICAgICAgICAgICAgICAgICAgICAmOm5vdCguc2lkZS1tZW51LS1hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBvcGFjaXR5LTA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTBweCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IDAuNHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyby1tZW51LWFuaW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2UtaW4tb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzMzM3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogY2FsYygkaSAqIDAuMXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICYuc2lkZS1tZW51LS1hY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAwLjRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cm8tYWN0aXZlLW1lbnUtYW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZS1pbi1vdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMzMzMzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggNTAge1xuICAgICAgICAgICAgICAgIGxpOm50aC1jaGlsZCgkaSkge1xuICAgICAgICAgICAgICAgICAgICAmID4gYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgb3BhY2l0eS0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwcHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAwLjJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cm8tc3VibWVudS1hbmltYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlLWluLW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzMzMzNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IGNhbGMoJGkgKiAwLjFzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBhcHBseSBoaWRkZW4gYmctd2hpdGUvWzAuMDRdIHJvdW5kZWQteGwgcmVsYXRpdmUgZGFyazpiZy10cmFuc3BhcmVudDtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIEBhcHBseSBibG9jayBpbnNldC0wIGJnLXdoaXRlLzMwIHJvdW5kZWQteGwgYWJzb2x1dGUgei1bLTFdIGRhcms6YmctZGFya21vZGUtOTAwLzMwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5zaWRlLW1lbnVfX3N1Yi1vcGVuIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuc2lkZS1tZW51X19pY29uOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpIGEge1xuICAgICAgICAgICAgICAgICY6bm90KC5zaWRlLW1lbnUtLWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgdGV4dC1zbGF0ZS02MDAgZGFyazp0ZXh0LXNsYXRlLTQwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJi5zaWRlLW1lbnUtLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIC5zaWRlLW1lbnVfX2ljb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtNzAwIGRhcms6dGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLnNpZGUtbWVudV9fdGl0bGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtNzAwIGZvbnQtbWVkaXVtIGRhcms6dGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbiBiZy13aGl0ZS9bMC4wNF0gcm91bmRlZC14bCByZWxhdGl2ZSBkYXJrOmJnLXRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJsb2NrIGluc2V0LTAgYmctd2hpdGUvMzAgcm91bmRlZC14bCBhYnNvbHV0ZSB6LVstMV0gZGFyazpiZy1kYXJrbW9kZS05MDAvMzA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYgPiBsaSB7XG4gICAgICAgICAgICAmID4gLnNpZGUtbWVudSB7XG4gICAgICAgICAgICAgICAgJi5zaWRlLW1lbnUtLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDAgZGFyazpiZy10cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBibG9jayBpbnNldC0wIHJvdW5kZWQteGwgYWJzb2x1dGUgYm9yZGVyLWItWzNweF0gYm9yZGVyLXNvbGlkIGJvcmRlci1ibGFjay9bMC4wOF0gZGFyazpiZy1kYXJrbW9kZS03MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC00N3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAwLjNzIGFjdGl2ZS1zaWRlLW1lbnUtY2hldnJvbi1hbmltYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNlLWluLW91dCAwLjMzMzMzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAxcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyMCcgaGVpZ2h0PSc4MCcgdmlld0JveD0nMCAwIDIwIDEyMi4xJyUzRSUzQ3BhdGggZGF0YS1uYW1lPSdVbmlvbiAxJyBkPSdNMTYuMDM4IDEyMkgxNnYtMi4yMTNhOTUuODA1IDk1LjgwNSAwIDAwLTIuODg2LTIwLjczNSA5NC44OTQgOTQuODk0IDAgMDAtNy43ODMtMjAuNDM0QTM5LjAzOSAzOS4wMzkgMCAwMTAgNjEuMDUxYTM5LjAzNSAzOS4wMzUgMCAwMTUuMzMxLTE3LjU2NyA5NC45IDk0LjkgMCAwMDcuNzgzLTIwLjQzNUE5NS43NDYgOTUuNzQ2IDAgMDAxNiAyLjMxNFYwaDR2MTIyaC0zLjk2MXYuMWwtLjAwMS0uMXonIGZpbGw9JyUyM2YxZjVmOCcvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1uby1yZXBlYXQgYmctY292ZXIgYWJzb2x1dGUgdG9wLTAgYm90dG9tLTAgcmlnaHQtMCBteS1hdXRvIG9wYWNpdHktMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAuc2lkZS1tZW51X19pY29uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXByaW1hcnkgei0xMCBkYXJrOnRleHQtc2xhdGUtMzAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5zaWRlLW1lbnVfX3RpdGxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXByaW1hcnkgZm9udC1tZWRpdW0gei0xMCBkYXJrOnRleHQtc2xhdGUtMzAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5zaWRlLW1lbnVfX2ljb24ge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgZGFyazp0ZXh0LXNsYXRlLTQwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnNpZGUtbWVudV9fdGl0bGUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgZGFyazp0ZXh0LXNsYXRlLTQwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpob3Zlcjpub3QoLnNpZGUtbWVudS0tYWN0aXZlKTpub3QoLnNpZGUtbWVudS0tb3Blbikge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctc2xhdGUtMTAwIGRhcms6YmctdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmxvY2sgaW5zZXQtMCByb3VuZGVkLXhsIGFic29sdXRlIHotWy0xXSBib3JkZXItYi1bM3B4XSBib3JkZXItc29saWQgYm9yZGVyLWJsYWNrL1swLjA4XSBkYXJrOmJnLWRhcmttb2RlLTcwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGtleWZyYW1lcyBpbnRyby1kZXZpZGVyLWFuaW1hdGlvbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTEwMDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgaW50cm8tbWVudS1hbmltYXRpb24ge1xuICAgIDEwMCUge1xuICAgICAgICBAYXBwbHkgb3BhY2l0eS0xMDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBpbnRyby1zdWJtZW51LWFuaW1hdGlvbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTEwMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGludHJvLWFjdGl2ZS1tZW51LWFuaW1hdGlvbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIEBhcHBseSB6LTEwO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBhY3RpdmUtc2lkZS1tZW51LWNoZXZyb24tYW5pbWF0aW9uIHtcbiAgICAxMDAlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjdweDtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktMTAwO1xuICAgIH1cbn1cblxuLmRhcmsge1xuICAgIC5zaWRlLW5hdiB7XG4gICAgICAgID4gdWwge1xuICAgICAgICAgICAgJiA+IGxpIHtcbiAgICAgICAgICAgICAgICAmID4gLnNpZGUtbWVudSB7XG4gICAgICAgICAgICAgICAgICAgICYuc2lkZS1tZW51LS1hY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwJyBoZWlnaHQ9JzgwJyB2aWV3Qm94PScwIDAgMjAgMTIyLjEnJTNFJTNDcGF0aCBkYXRhLW5hbWU9J1VuaW9uIDEnIGQ9J00xNi4wMzggMTIySDE2di0yLjIxM2E5NS44MDUgOTUuODA1IDAgMDAtMi44ODYtMjAuNzM1IDk0Ljg5NCA5NC44OTQgMCAwMC03Ljc4My0yMC40MzRBMzkuMDM5IDM5LjAzOSAwIDAxMCA2MS4wNTFhMzkuMDM1IDM5LjAzNSAwIDAxNS4zMzEtMTcuNTY3IDk0LjkgOTQuOSAwIDAwNy43ODMtMjAuNDM1QTk1Ljc0NiA5NS43NDYgMCAwMDE2IDIuMzE0VjBoNHYxMjJoLTMuOTYxdi4xbC0uMDAxLS4xeicgZmlsbD0nJTIzMjMyZTQ1Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmJyZWFkY3J1bWIge1xuICAgICYuYnJlYWRjcnVtYi1saWdodCB7XG4gICAgICAgIEBhcHBseSBoLWZ1bGwgbWwtMTAgcGwtNiBib3JkZXItbCBib3JkZXItd2hpdGUvWzAuMDhdO1xuICAgICAgICAuYWN0aXZlIHtcbiAgICAgICAgICAgIEBhcHBseSAhdGV4dC13aGl0ZS83MDtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcbiAgICAgICAgICAgIEBhcHBseSBtbC0wIHBsLTAgYm9yZGVyLWwtMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi50b2FzdGlmeSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBAYXBwbHkgc2hhZG93LW5vbmUgdGV4dC1zbGF0ZS03MDAgcC0wO1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpO1xuICAgIH1cbiAgICAudG9hc3QtY2xvc2Uge1xuICAgICAgICBAYXBwbHkgdGV4dC10cmFuc3BhcmVudCBhYnNvbHV0ZSBvcGFjaXR5LTEwMCBpbnNldC15LTAgcmlnaHQtMCBwci0zIGZsZXggaXRlbXMtY2VudGVyO1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIsOXXCI7XG4gICAgICAgICAgICBAYXBwbHkgYmxvY2sgdGV4dC1zbGF0ZS01MDAgdGV4dC0zeGwgLW10LTEuNSBmb250LWxpZ2h0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnRvYXN0aWZ5LWNvbnRlbnQge1xuICAgIEBhcHBseSBweS01IHBsLTUgcHItMTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAvNjAgcm91bmRlZC1sZyBzaGFkb3cteGwgZGFyazpiZy1kYXJrbW9kZS02MDAgZGFyazp0ZXh0LXNsYXRlLTMwMCBkYXJrOmJvcmRlci1kYXJrbW9kZS02MDA7XG59XG4iLCIubHVjaWRlIHtcbiAgICBAYXBwbHkgc3Ryb2tlLTEuNTtcbn1cbiIsIi50b3AtYmFyLWJveGVkIHtcbiAgICAmLnRvcC1iYXItYm94ZWQtLXNpbXBsZS1tZW51IHtcbiAgICAgICAgLmxvZ28ge1xuICAgICAgICAgICAgQGFwcGx5IHctYXV0bztcbiAgICAgICAgICAgIC5sb2dvX190ZXh0IHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgaGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICYudG9wLWJhci1ib3hlZC0tdG9wLW1lbnUge1xuICAgICAgICBAYXBwbHkgZGFyazptZDpmcm9tLWRhcmttb2RlLTgwMDtcbiAgICAgICAgLmxvZ28ge1xuICAgICAgICAgICAgQGFwcGx5IHctYXV0bztcbiAgICAgICAgfVxuICAgICAgICAuYnJlYWRjcnVtYiB7XG4gICAgICAgICAgICBAYXBwbHkgbWQ6bWwtMTAgbWQ6cGwtMTA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJjpub3QoLnRvcC1iYXItYm94ZWQtLXRvcC1tZW51KSB7XG4gICAgICAgIC5sb2dvX190ZXh0IHtcbiAgICAgICAgICAgIEBhcHBseSBoaWRkZW4geGw6YmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBAYXBwbHkgYWJzb2x1dGUgaC1bNjVweF0gaW5zZXQtMCB0b3AtMCBteC03IGJnLXByaW1hcnkvMzAgbXQtMyByb3VuZGVkLXhsIGhpZGRlbiBtZDpibG9jayBkYXJrOmJnLWRhcmttb2RlLTYwMC8zMDtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSBpbnNldC0wIGgtWzY1cHhdIG14LTMgYmctcHJpbWFyeSBtdC01IHJvdW5kZWQteGwgc2hhZG93LW1kIGhpZGRlbiBtZDpibG9jayBkYXJrOmJnLWRhcmttb2RlLTYwMDtcbiAgICB9XG59XG4iLCIubW9iaWxlLW1lbnUge1xuICAgIEBhcHBseSB3LWZ1bGwgZml4ZWQgYmctcHJpbWFyeS85MCB6LVs2MF0gYm9yZGVyLWIgYm9yZGVyLXdoaXRlL1swLjA4XSAtbXQtNSAtbXgtOCBtYi02IGRhcms6YmctZGFya21vZGUtODAwLzkwO1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgQGFwcGx5IHctZnVsbCBoLXNjcmVlbiB6LTEwIGZpeGVkIGluc2V0LXgtMCBiZy1ibGFjay85MCBpbnZpc2libGUgb3BhY2l0eS0wIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXQ7XG4gICAgfVxuICAgICYubW9iaWxlLW1lbnUtLWFjdGl2ZSB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBAYXBwbHkgdmlzaWJsZSBvcGFjaXR5LTEwMDtcbiAgICAgICAgfVxuICAgICAgICAuc2Nyb2xsYWJsZSB7XG4gICAgICAgICAgICBAYXBwbHkgbWwtMDtcbiAgICAgICAgICAgIC5tb2JpbGUtbWVudS10b2dnbGVyIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgdmlzaWJsZSBvcGFjaXR5LTEwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgQGFwcGx5IC1teC0zO1xuICAgIH1cbiAgICAubW9iaWxlLW1lbnUtYmFyIHtcbiAgICAgICAgaGVpZ2h0OiA3MHB4O1xuICAgICAgICBAYXBwbHkgcHgtOCBmbGV4IGl0ZW1zLWNlbnRlcjtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHNtKSB7XG4gICAgICAgICAgICBAYXBwbHkgcHgtMztcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIEBhcHBseSBoLXNjcmVlbiB6LTIwIGZpeGVkIHRvcC0wIGxlZnQtMCB3LVsyNzBweF0gLW1sLVsxMDAlXSBiZy1wcmltYXJ5IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBlYXNlLWluLW91dCBkYXJrOmJnLWRhcmttb2RlLTgwMDtcbiAgICAgICAgLm1vYmlsZS1tZW51LXRvZ2dsZXIge1xuICAgICAgICAgICAgQGFwcGx5IGZpeGVkIHRvcC0wIHJpZ2h0LTAgbXQtNCBtci00IGludmlzaWJsZSBvcGFjaXR5LTAgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTIwMCBlYXNlLWluLW91dDtcbiAgICAgICAgfVxuICAgICAgICAuc2ltcGxlYmFyLXRyYWNrLnNpbXBsZWJhci12ZXJ0aWNhbCB7XG4gICAgICAgICAgICAuc2ltcGxlYmFyLXNjcm9sbGJhcjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1ibGFjay81MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB1bCB7XG4gICAgICAgICYubWVudV9fc3ViLW9wZW4ge1xuICAgICAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTI4MHB4O1xuICAgICAgICAgICAgQGFwcGx5IHctZnVsbCBteC1hdXRvO1xuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIEBhcHBseSBoaWRkZW4gYmctYmxhY2svMTAgcm91bmRlZC1sZyBteC00IG15LTEgZGFyazpiZy1kYXJrbW9kZS03MDA7XG4gICAgICAgICAgICAgICAgLm1lbnUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgcHgtNDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgaGlkZGVuIGJnLWJsYWNrLzEwIHJvdW5kZWQtbGcgbXgtMCBkYXJrOmJnLWRhcmttb2RlLTYwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm1lbnVfX2RldmlkZXIge1xuICAgICAgICBAYXBwbHkgdy1mdWxsIGgtcHggYmctd2hpdGUvWzAuMDhdIHJlbGF0aXZlO1xuICAgIH1cbiAgICAubWVudSB7XG4gICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHRleHQtd2hpdGUgcHgtNjtcbiAgICAgICAgLm1lbnVfX3RpdGxlIHtcbiAgICAgICAgICAgIEBhcHBseSB3LWZ1bGwgbWwtMyBmbGV4IGl0ZW1zLWNlbnRlcjtcbiAgICAgICAgICAgIC5tZW51X19zdWItaWNvbiB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xMDAgbWwtYXV0bztcbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgdy01IGgtNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuaW5ib3gtZmlsdGVyIC5pbmJveC1maWx0ZXJfX2Ryb3Bkb3duLW1lbnUge1xuICAgIHdpZHRoOiAyNTBweDtcbn1cblxuLmluYm94LWZpbHRlcl9fZHJvcGRvd24tbWVudSAuZHJvcGRvd24tY29udGVudCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0yMjhweDtcbiAgICBAYXBwbHkgdy1hdXRvO1xufVxuIiwiLmluYm94IHtcbiAgICAuaW5ib3hfX2l0ZW0ge1xuICAgICAgICBAYXBwbHkgdHJhbnNpdGlvbiBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXQgdHJhbnNmb3JtIGN1cnNvci1wb2ludGVyO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMiwgMS4wMik7XG4gICAgICAgICAgICBAYXBwbHkgcmVsYXRpdmUgei0yMCBzaGFkb3ctbWQgYm9yZGVyLTAgcm91bmRlZDtcbiAgICAgICAgfVxuICAgICAgICAmLmluYm94X19pdGVtLS1hY3RpdmUge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXdoaXRlIHRleHQtc2xhdGUtODAwIGRhcms6dGV4dC1zbGF0ZS0zMDAgZGFyazpiZy1kYXJrbW9kZS02MDA7XG4gICAgICAgICAgICAuaW5ib3hfX2l0ZW0tLXNlbmRlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGZvbnQtbWVkaXVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmluYm94X19pdGVtLS1oaWdobGlnaHQge1xuICAgICAgICAgICAgICAgIEBhcHBseSBmb250LW1lZGl1bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pbmJveF9faXRlbS0tdGltZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGZvbnQtbWVkaXVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1zbGF0ZS00MDA7XG4gICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuY2hhdCB7XG4gICAgLmNoYXRfX2NoYXQtbGlzdCB7XG4gICAgICAgIEBhcHBseSBoLVs1MjVweF07XG4gICAgfVxuICAgIC5jaGF0X191c2VyLWxpc3Qge1xuICAgICAgICBAYXBwbHkgaC1bNTI1cHhdO1xuICAgIH1cbiAgICAuY2hhdF9fYm94IHtcbiAgICAgICAgQGFwcGx5IGgtWzc4MnB4XTtcbiAgICAgICAgLmNoYXRfX2JveF9fdGV4dC1ib3gge1xuICAgICAgICAgICAgQGFwcGx5IG1heC13LVs0OSVdO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHNtKSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IG1heC13LVs5MCVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5jaGF0X19ib3hfX2lucHV0IHtcbiAgICAgICAgQGFwcGx5IGgtWzQ2cHhdO1xuICAgIH1cbn1cbiIsIi5jaGF0LWRyb3Bkb3duIHtcbiAgICBAYXBwbHkgdy1bMzIwcHhdIC1tdC1bMzY0cHhdO1xuICAgIC5jaGF0LWRyb3Bkb3duX19ib3gge1xuICAgICAgICBAYXBwbHkgaC1bMzY0cHhdO1xuICAgICAgICAuY2hhdC1kcm9wZG93bl9fYm94X190YWJzIHtcbiAgICAgICAgICAgIC5uYXYtaXRlbSAubmF2LWxpbmsge1xuICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTIwMCBib3JkZXItYi0wIHRleHQtc2xhdGUtNjAwIGRhcms6YmctZGFya21vZGUtMzAwIGRhcms6dGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLm5ld3Mge1xuICAgIC5uZXdzX19wcmV2aWV3IHtcbiAgICAgICAgaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDI1MHB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIHAge1xuICAgICAgICB0ZXh0LWluZGVudDogMzBweDtcbiAgICB9XG4gICAgLm5ld3NfX2lucHV0IHtcbiAgICAgICAgaGVpZ2h0OiA2OXB4O1xuICAgIH1cbn1cbiIsIi5wcmljaW5nLXRhYnMubmF2Lm5hdi1waWxscyB7XG4gICAgLm5hdi1pdGVtIC5uYXYtbGluayB7XG4gICAgICAgIEBhcHBseSByb3VuZGVkLW5vbmU7XG4gICAgfVxufVxuIiwiLmVycm9yLXBhZ2UgaW1nIHtcbiAgICB3aWR0aDogNDUwcHg7XG59XG4iLCIuc2VhcmNoLXJlc3VsdCB7XG4gICAgd2lkdGg6IDQ1MHB4O1xuICAgIEBhcHBseSB6LTIwIGFic29sdXRlIHJpZ2h0LTAgbXQtMSBpbnZpc2libGUgb3BhY2l0eS0wO1xuICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMHMgbGluZWFyIDAuMnMsIG9wYWNpdHkgMC4ycyAwcztcbiAgICAmLnNob3cge1xuICAgICAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzIGxpbmVhciAwcywgb3BhY2l0eSAwLjJzIDBzO1xuICAgICAgICBAYXBwbHkgdmlzaWJsZSBvcGFjaXR5LTEwMDtcbiAgICAgICAgPiAuc2VhcmNoLXJlc3VsdF9fY29udGVudCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICAgICAgICAgICAgLnRhYi1jb250ZW50IC50YWItcGFuZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHZpc2libGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnNlYXJjaC1yZXN1bHRfX2NvbnRlbnQge1xuICAgICAgICB0cmFuc2l0aW9uOiBtYXJnaW4tdG9wIDAuMnM7XG4gICAgICAgIEBhcHBseSBib3ggcC01IG10LTU7XG4gICAgICAgIC5zZWFyY2gtcmVzdWx0X19jb250ZW50X190aXRsZSB7XG4gICAgICAgICAgICBAYXBwbHkgZm9udC1tZWRpdW0gbWItMjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ub3RpZmljYXRpb24tY29udGVudCB7XG4gICAgd2lkdGg6IDM1MHB4O1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgICB3aWR0aDogMjgwcHg7XG4gICAgfVxuICAgIC5ub3RpZmljYXRpb24tY29udGVudF9fdGl0bGUge1xuICAgICAgICBAYXBwbHkgZm9udC1tZWRpdW0gbWItNTtcbiAgICB9XG4gICAgLm5vdGlmaWNhdGlvbi1jb250ZW50X19ib3gge1xuICAgICAgICBAYXBwbHkgcC01O1xuICAgIH1cbn1cbiIsIi5yZXBvcnQtbWFwcyB7XG4gICAgaGVpZ2h0OiAzMTBweDtcbn1cbiIsIi5wb3MtZHJvcGRvd24gLnBvcy1kcm9wZG93bl9fZHJvcGRvd24tbWVudSB7XG4gICAgd2lkdGg6IDI2NXB4O1xufVxuIiwiLnBvc3Qge1xuICAgIC5wb3N0X190YWJzIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci10cmFuc3BhcmVudCBkYXJrOmJvcmRlci10cmFuc3BhcmVudDtcbiAgICAgICAgLm5hdi1pdGVtIC5uYXYtbGluayB7XG4gICAgICAgICAgICBAYXBwbHkgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdGV4dC1zbGF0ZS01MDA7XG4gICAgICAgICAgICAmOmhvdmVyOm5vdCguZGlzYWJsZWQpOm5vdCguYWN0aXZlKTpob3ZlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci10cmFuc3BhcmVudCBiZy10cmFuc3BhcmVudCB0ZXh0LXNsYXRlLTYwMCBkYXJrOmJnLXRyYW5zcGFyZW50IGRhcms6dGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHRleHQtcHJpbWFyeSBib3JkZXItdHJhbnNwYXJlbnQgZGFyazpiZy1kYXJrbW9kZS02MDAgZGFyazpib3JkZXItdHJhbnNwYXJlbnQgZGFyazp0ZXh0LXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmxpdGVwaWNrZXIge1xuICAgIEBhcHBseSBiZy13aGl0ZSByb3VuZGVkLW1kIHRleHQtc207XG4gICAgei1pbmRleDogOTk5OTk5ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXRvcDogN3B4O1xuICAgIGJveC1zaGFkb3c6IDBweCAzcHggMjBweCAjMDAwMDAwMTQ7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGxnKSB7XG4gICAgICAgIHdpZHRoOiAzMTBweDtcbiAgICB9XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHNtKSB7XG4gICAgICAgIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICBAYXBwbHkgcmlnaHQtMCBteC1hdXRvO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGxlZnQ6IDlweDtcbiAgICAgICAgdG9wOiAtN3B4O1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZjdmN2Y3O1xuICAgICAgICBib3JkZXItcmlnaHQ6IDdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogN3B4IHNvbGlkICNlOGU4ZTg7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBsZWZ0OiAxMHB4O1xuICAgICAgICB0b3A6IC02cHg7XG4gICAgICAgIGJvcmRlci1yaWdodDogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tOiA2cHggc29saWQgI2ZmZjtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgLmNvbnRhaW5lcl9fbW9udGhzLFxuICAgIC5jb250YWluZXJfX2Zvb3RlciB7XG4gICAgICAgIEBhcHBseSBzaGFkb3ctbm9uZSBiZy10cmFuc3BhcmVudCBwdC0wO1xuICAgIH1cbiAgICAuY29udGFpbmVyX19mb290ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXQgYm9yZGVyLXNsYXRlLTIwMC82MCBtLTAgcC0zO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgICAgIEBhcHBseSBmbGV4IGZsZXgtY29sLXJldmVyc2UgdGV4dC1jZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLnByZXZpZXctZGF0ZS1yYW5nZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgdy1mdWxsIGJsb2NrIG9yZGVyLTEgbWItMS41O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5idXR0b24tY2FuY2VsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwLjM3NXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5idXR0b24tYXBwbHkge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGxnKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDAuMzc1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgQGFwcGx5IG1iLTEuNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuYnV0dG9uLWFwcGx5LFxuICAgICAgICAuYnV0dG9uLWNhbmNlbCB7XG4gICAgICAgICAgICBAYXBwbHkgdy0yMCBweS0xIHB4LTIgcm91bmRlZC1tZCBmb250LW1lZGl1bSBtbC0xIG1yLTA7XG4gICAgICAgIH1cbiAgICAgICAgLmJ1dHRvbi1hcHBseSB7XG4gICAgICAgICAgICBAYXBwbHkgYmctcHJpbWFyeSB0ZXh0LXdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIC5idXR0b24tY2FuY2VsIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0yMDAvNzAgdGV4dC1zbGF0ZS01MDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmNvbnRhaW5lcl9fbW9udGhzIHtcbiAgICAgICAgQGFwcGx5IHB4LTE7XG4gICAgICAgIC5tb250aC1pdGVtLXdlZWtkYXlzLXJvdyB7XG4gICAgICAgICAgICBAYXBwbHkgdGV4dC1zbGF0ZS00MDAgbXQtMztcbiAgICAgICAgfVxuICAgICAgICAubW9udGgtaXRlbS1oZWFkZXIge1xuICAgICAgICAgICAgQGFwcGx5IHB4LTAgcGItMCBwdC0yO1xuICAgICAgICAgICAgLmJ1dHRvbi1wcmV2aW91cy1tb250aCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHctOCBoLTg7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSAtbXItMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYnV0dG9uLW5leHQtbW9udGgge1xuICAgICAgICAgICAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LTggaC04O1xuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctc2xhdGUtMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgLW1sLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmJ1dHRvbi1wcmV2aW91cy1tb250aDpob3ZlciBzdmcsXG4gICAgICAgICAgICAuYnV0dG9uLXByZXZpb3VzLW1vbnRoIHN2ZyxcbiAgICAgICAgICAgIC5idXR0b24tbmV4dC1tb250aDpob3ZlciBzdmcsXG4gICAgICAgICAgICAuYnV0dG9uLW5leHQtbW9udGggc3ZnIHtcbiAgICAgICAgICAgICAgICBmaWxsOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrO1xuICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjNGE1NTY4O1xuICAgICAgICAgICAgICAgIEBhcHBseSB3LTIgaC0yIGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGl2ID4gLm1vbnRoLWl0ZW0tbmFtZSxcbiAgICAgICAgICAgIGRpdiA+IC5tb250aC1pdGVtLXllYXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0ncmdiKDc0LCA4NSwgMTA0KScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGNsYXNzPSdsdWNpZGUgbHVjaWRlLWNoZXZyb24tZG93biclM0UlM0Nwb2x5bGluZSBwb2ludHM9JzYgOSAxMiAxNSAxOCA5Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTVweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgcmlnaHQgMC42cmVtO1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCB0ZXh0LXNtIGJvcmRlciBiZy1uby1yZXBlYXQgcHktMSBwbC0yIHByLTggcm91bmRlZC1tZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6Ym9yZGVyLXNsYXRlLTIwMCBmb2N1czpyaW5nLXRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5jb250YWluZXJfX2RheXMge1xuICAgICAgICAuZGF5LWl0ZW0ge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtODAwO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHNoYWRvdy1ub25lIGJnLXNsYXRlLTEwMCB0ZXh0LXNsYXRlLTgwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuaXMtdG9kYXksXG4gICAgICAgICAgICAmLmlzLXRvZGF5OmhvdmVyIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgZm9udC1tZWRpdW0gdGV4dC1wcmltYXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5pcy1zdGFydC1kYXRlLFxuICAgICAgICAgICAgJi5pcy1zdGFydC1kYXRlOmhvdmVyLFxuICAgICAgICAgICAgJi5pcy1lbmQtZGF0ZSxcbiAgICAgICAgICAgICYuaXMtZW5kLWRhdGU6aG92ZXIge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1wcmltYXJ5IHRleHQtd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmlzLWluLXJhbmdlLFxuICAgICAgICAgICAgJi5pcy1pbi1yYW5nZTpob3ZlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTEwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAud2Vlay1udW1iZXIge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtNDAwO1xuICAgICAgICB9XG4gICAgfVxufVxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGxnKSB7XG4gICAgOnJvb3Qge1xuICAgICAgICAtLWxpdGVwaWNrZXItZGF5LXdpZHRoOiAzNXB4O1xuICAgIH1cbn1cblxuLmRhcmsge1xuICAgIC5saXRlcGlja2VyIHtcbiAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTYwMDtcbiAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRoZW1lKFwiY29sb3JzLmRhcmttb2RlLjYwMFwiKTtcbiAgICAgICAgfVxuICAgICAgICAuY29udGFpbmVyX19tb250aHMge1xuICAgICAgICAgICAgLmJ1dHRvbi1wcmV2aW91cy1tb250aDpob3ZlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTQwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5idXR0b24tbmV4dC1tb250aDpob3ZlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTQwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5tb250aC1pdGVtLWhlYWRlciB7XG4gICAgICAgICAgICAgICAgLmJ1dHRvbi1wcmV2aW91cy1tb250aDpob3ZlciBzdmcsXG4gICAgICAgICAgICAgICAgLmJ1dHRvbi1wcmV2aW91cy1tb250aCBzdmcsXG4gICAgICAgICAgICAgICAgLmJ1dHRvbi1uZXh0LW1vbnRoOmhvdmVyIHN2ZyxcbiAgICAgICAgICAgICAgICAuYnV0dG9uLW5leHQtbW9udGggc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1zbGF0ZS0yMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRpdiA+IC5tb250aC1pdGVtLW5hbWUsXG4gICAgICAgICAgICAgICAgZGl2ID4gLm1vbnRoLWl0ZW0teWVhciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXNsYXRlLTIwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGl2ID4gLm1vbnRoLWl0ZW0tbmFtZSxcbiAgICAgICAgICAgICAgICBkaXYgPiAubW9udGgtaXRlbS15ZWFyIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1kYXJrbW9kZS00MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5jb250YWluZXJfX2RheXMge1xuICAgICAgICAgICAgLmRheS1pdGVtIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgdGV4dC1zbGF0ZS0yMDA7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS00MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYuaXMtc3RhcnQtZGF0ZSxcbiAgICAgICAgICAgICAgICAmLmlzLXN0YXJ0LWRhdGU6aG92ZXIsXG4gICAgICAgICAgICAgICAgJi5pcy1lbmQtZGF0ZSxcbiAgICAgICAgICAgICAgICAmLmlzLWVuZC1kYXRlOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLXByaW1hcnkgdGV4dC1zbGF0ZS0yMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYuaXMtaW4tcmFuZ2UsXG4gICAgICAgICAgICAgICAgJi5pcy1pbi1yYW5nZTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS00MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYuaXMtdG9kYXksXG4gICAgICAgICAgICAgICAgJi5pcy10b2RheTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXNsYXRlLTIwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRhaW5lcl9fZm9vdGVyIHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItZGFya21vZGUtNDAwO1xuICAgICAgICAgICAgLmJ1dHRvbi1jYW5jZWwge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS00MDAgdGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRhaW5lcl9fdG9vbHRpcCB7XG4gICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNDAwO1xuICAgICAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtZShcImNvbG9ycy5kYXJrbW9kZS42MDBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIudG5zLW91dGVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgLnRucy1jb250cm9scyBidXR0b24ge1xuICAgICAgICBAYXBwbHkgdy01IGgtNSBiZy1zbGF0ZS0yMDAgdGV4dC10cmFuc3BhcmVudCByb3VuZGVkLWZ1bGwgYWJzb2x1dGUgaW5zZXQteS0wIG15LWF1dG8gei0xMCBvdXRsaW5lLW5vbmUgZGFyazpiZy1kYXJrbW9kZS0zMDA7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTMwMCBkYXJrOmJnLWRhcmttb2RlLTIwMDtcbiAgICAgICAgfVxuICAgICAgICAmW2RhdGEtY29udHJvbHM9XCJwcmV2XCJdIHtcbiAgICAgICAgICAgIEBhcHBseSBsZWZ0LTAgLW1sLTY7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyBmaWxsPSdub25lJyBzdHJva2U9J3JnYigxMDIgMTEzIDEzMiknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBjbGFzcz0nbHVjaWRlIGx1Y2lkZS1jaGV2cm9uLWRvd24nJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc2IDkgMTIgMTUgMTggOScvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDgwJTtcbiAgICAgICAgICAgICAgICBAYXBwbHkgdy1mdWxsIGgtZnVsbCBiZy1jZW50ZXIgdHJhbnNmb3JtIHJvdGF0ZS05MCBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJltkYXRhLWNvbnRyb2xzPVwibmV4dFwiXSB7XG4gICAgICAgICAgICBAYXBwbHkgcmlnaHQtMCAtbXItNjtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0ncmdiKDEwMiAxMTMgMTMyKScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGNsYXNzPSdsdWNpZGUgbHVjaWRlLWNoZXZyb24tZG93biclM0UlM0Nwb2x5bGluZSBwb2ludHM9JzYgOSAxMiAxNSAxOCA5Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogODAlO1xuICAgICAgICAgICAgICAgIEBhcHBseSB3LWZ1bGwgaC1mdWxsIGJnLWNlbnRlciB0cmFuc2Zvcm0gLXJvdGF0ZS05MCBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnRucy1uYXYge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMS44cmVtO1xuICAgICAgICBAYXBwbHkgdy1mdWxsIGFic29sdXRlIGJvdHRvbS0wIHotMTAgZmxleCBqdXN0aWZ5LWNlbnRlcjtcbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0zMDAgdy0zIGgtMyByb3VuZGVkLWZ1bGwgbXgtMSBvdXRsaW5lLW5vbmUgZGFyazpiZy1kYXJrbW9kZS0zMDA7XG4gICAgICAgICAgICAmLnRucy1uYXYtYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctc2xhdGUtNTAwIGRhcms6YmctZGFya21vZGUtMjAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGJ1dHRvbltkYXRhLWFjdGlvbl0ge1xuICAgICAgICBAYXBwbHkgaGlkZGVuO1xuICAgIH1cbiAgICAudG5zLXZpc3VhbGx5LWhpZGRlbiB7XG4gICAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgfVxufVxuIiwiLnRvb2x0aXAtY29udGVudCB7XG4gICAgbGVmdDogMTAwMDBweDtcbiAgICBAYXBwbHkgZml4ZWQ7XG59XG4udGlwcHktYm94IHtcbiAgICBAYXBwbHkgcm91bmRlZC1tZCBkYXJrOnRleHQtc2xhdGUtMzAwIGRhcms6YmctZGFya21vZGUtMzAwO1xuICAgICYgPiAudGlwcHktc3ZnLWFycm93IHtcbiAgICAgICAgQGFwcGx5IGRhcms6ZmlsbC1kYXJrbW9kZS0zMDA7XG4gICAgfVxuICAgIC50aXBweS1jb250ZW50IHtcbiAgICAgICAgQGFwcGx5IHB4LTMgcHktMS41O1xuICAgIH1cbn1cbi50aXBweS1wb3BwZXIge1xuICAgICZbeC1wbGFjZW1lbnQ9XCJsZWZ0XCJdLFxuICAgICZbeC1wbGFjZW1lbnQ9XCJyaWdodFwiXSxcbiAgICAmW3gtcGxhY2VtZW50PVwibGVmdC1zdGFydFwiXSxcbiAgICAmW3gtcGxhY2VtZW50PVwibGVmdC1lbmRcIl0sXG4gICAgJlt4LXBsYWNlbWVudD1cInJpZ2h0LXN0YXJ0XCJdLFxuICAgICZbeC1wbGFjZW1lbnQ9XCJyaWdodC1lbmRcIl0ge1xuICAgICAgICAudGlwcHktcm91bmRhcnJvdyxcbiAgICAgICAgLnRpcHB5LWFycm93IHtcbiAgICAgICAgICAgIEBhcHBseSB0b3AtMCBib3R0b20tMCBteS1hdXRvO1xuICAgICAgICB9XG4gICAgfVxuICAgICZbeC1wbGFjZW1lbnQ9XCJ0b3BcIl0sXG4gICAgJlt4LXBsYWNlbWVudD1cImJvdHRvbVwiXSxcbiAgICAmW3gtcGxhY2VtZW50PVwidG9wLXN0YXJ0XCJdLFxuICAgICZbeC1wbGFjZW1lbnQ9XCJ0b3AtZW5kXCJdLFxuICAgICZbeC1wbGFjZW1lbnQ9XCJib3R0b20tc3RhcnRcIl0sXG4gICAgJlt4LXBsYWNlbWVudD1cImJvdHRvbS1lbmRcIl0ge1xuICAgICAgICAudGlwcHktcm91bmRhcnJvdyxcbiAgICAgICAgLnRpcHB5LWFycm93IHtcbiAgICAgICAgICAgIEBhcHBseSBsZWZ0LTAgcmlnaHQtMCBteC1hdXRvO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGFyayB7XG4gICAgLnRpcHB5LWJveCB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAyMHB4IDRweCAjMDAwMDAwMjYsIDAgNHB4IDgwcHggLThweCAjMjQyODJmNDAsXG4gICAgICAgICAgICAwIDRweCA0cHggLTJweCAjNWI1ZTY5MjY7XG4gICAgfVxufVxuIiwiLnRhYnVsYXRvci1wcmludC1mdWxsc2NyZWVuLWhpZGU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIEBhcHBseSBmaXhlZCBiZy13aGl0ZSB0b3AtMCBsZWZ0LTAgdy1mdWxsIGgtc2NyZWVuO1xufVxuLnRhYnVsYXRvciB7XG4gICAgQGFwcGx5IG92ZXJmbG93LWhpZGRlbiBib3JkZXItMCBiZy10cmFuc3BhcmVudDtcbiAgICAudGFidWxhdG9yLWhlYWRlciB7XG4gICAgICAgIEBhcHBseSBmb250LW1lZGl1bSB0ZXh0LWN1cnJlbnQgYm9yZGVyLXQgYm9yZGVyLWIgYm9yZGVyLXNsYXRlLTIwMCBiZy10cmFuc3BhcmVudDtcbiAgICAgICAgLnRhYnVsYXRvci1oZWFkZXJzIHtcbiAgICAgICAgICAgIC50YWJ1bGF0b3ItY29sIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgYm9yZGVyLXItMDtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnRhYnVsYXRvci1jb2wtY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBweC01IHB5LTM7XG4gICAgICAgICAgICAgICAgICAgIC50YWJ1bGF0b3ItY29sLXRpdGxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBwci0wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC50YWJ1bGF0b3ItYXJyb3cge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAtM3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodC13aWR0aDogNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJvdHRvbS0wIG15LWF1dG87XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJi50YWJ1bGF0b3Itc29ydGFibGVbYXJpYS1zb3J0PVwibm9uZVwiXVxuICAgICAgICAgICAgICAgICAgICAudGFidWxhdG9yLWNvbC1jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIC50YWJ1bGF0b3ItYXJyb3cge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjY2JkNWUwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAudGFidWxhdG9yLXJvdyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItYiBib3JkZXItc2xhdGUtMjAwO1xuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLnRhYnVsYXRvci1yb3ctZXZlbjpob3ZlciB7XG4gICAgICAgICAgICBAYXBwbHkgYmctc2xhdGUtMjAwO1xuICAgICAgICB9XG4gICAgICAgICYudGFidWxhdG9yLXJvdy1ldmVuIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDA7XG4gICAgICAgIH1cbiAgICAgICAgLnRhYnVsYXRvci1jZWxsIHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItci0wIHB4LTUgcHktMztcbiAgICAgICAgICAgICYudGFidWxhdG9yLXJvdy1oYW5kbGUge1xuICAgICAgICAgICAgICAgIEBhcHBseSBweC0wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnRhYnVsYXRvci1yZXNwb25zaXZlLWNvbGxhcHNlLXRvZ2dsZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHctNCBoLTQgLW1yLTUgYmctc2xhdGUtNDAwIHJvdW5kZWQtZnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAudGFidWxhdG9yLXJlc3BvbnNpdmUtY29sbGFwc2Uge1xuICAgICAgICAgICAgQGFwcGx5IHAtMyBib3JkZXItc2xhdGUtMjAwIGJvcmRlci1iLTA7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHAtMjtcbiAgICAgICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgZm9udC1tZWRpdW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC50YWJ1bGF0b3ItZm9vdGVyIHtcbiAgICAgICAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IGJvcmRlci10LTAgcC0wIG10LTI7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgICAgICAgQGFwcGx5IHdoaXRlc3BhY2Utbm9ybWFsO1xuICAgICAgICB9XG4gICAgICAgIC50YWJ1bGF0b3ItcGFnaW5hdG9yIHtcbiAgICAgICAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlcjtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgICAgICAgICAgIEBhcHBseSBibG9jayB0ZXh0LWxlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA+IGxhYmVsIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgZm9udC1ub3JtYWwgdGV4dC1zbGF0ZS03MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAudGFidWxhdG9yLXBhZ2Utc2l6ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgc3Ryb2tlPSdyZ2IoNzQsIDg1LCAxMDQpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgY2xhc3M9J2x1Y2lkZSBsdWNpZGUtY2hldnJvbi1kb3duJyUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nNiA5IDEyIDE1IDE4IDknLyUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciByaWdodCAwLjZyZW07XG4gICAgICAgICAgICAgICAgQGFwcGx5IHB5LTIgcGwtMyBwci04IG1sLTIgbXItYXV0byByb3VuZGVkLW1kIGFwcGVhcmFuY2Utbm9uZSBiZy13aGl0ZSBib3JkZXItc2xhdGUtMjAwIGJnLW5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IG1yLTM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnRhYnVsYXRvci1wYWdlIHtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJ0biBmb250LW5vcm1hbCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtc2xhdGUtNzAwO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgbXItMCBweC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTIwMCB0ZXh0LXNsYXRlLTcwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctc2xhdGUtMTAwIGZvbnQtbWVkaXVtO1xuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJltkYXRhLXBhZ2U9XCJmaXJzdFwiXSxcbiAgICAgICAgICAgICAgICAmW2RhdGEtcGFnZT1cInByZXZcIl0sXG4gICAgICAgICAgICAgICAgJltkYXRhLXBhZ2U9XCJuZXh0XCJdLFxuICAgICAgICAgICAgICAgICZbZGF0YS1wYWdlPVwibGFzdFwiXSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSB3LTUgdGV4dC10cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJltkYXRhLXBhZ2U9XCJmaXJzdFwiXSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgc3Ryb2tlPSclMjMyZDM3NDgnIHN0cm9rZS13aWR0aD0nMS4xJyBmaWxsPSdub25lJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGNsYXNzPSdjc3MtaTZkenExJyUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nMTEgMTcgNiAxMiAxMSA3JyUzRSUzQy9wb2x5bGluZSUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nMTggMTcgMTMgMTIgMTggNyclM0UlM0MvcG9seWxpbmUlM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLWNlbnRlciBiZy1uby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICZbZGF0YS1wYWdlPVwicHJldlwiXSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgc3Ryb2tlPSclMjMyZDM3NDgnIHN0cm9rZS13aWR0aD0nMS4xJyBmaWxsPSdub25lJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGNsYXNzPSdjc3MtaTZkenExJyUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nMTUgMTggOSAxMiAxNSA2JyUzRSUzQy9wb2x5bGluZSUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogNDUlO1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctY2VudGVyIGJnLW5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJltkYXRhLXBhZ2U9XCJuZXh0XCJdIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyBzdHJva2U9JyUyMzJkMzc0OCcgc3Ryb2tlLXdpZHRoPScxLjEnIGZpbGw9J25vbmUnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgY2xhc3M9J2Nzcy1pNmR6cTEnJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc5IDE4IDE1IDEyIDkgNiclM0UlM0MvcG9seWxpbmUlM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDQ1JTtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLWNlbnRlciBiZy1uby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICZbZGF0YS1wYWdlPVwibGFzdFwiXSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgc3Ryb2tlPSclMjMyZDM3NDgnIHN0cm9rZS13aWR0aD0nMS4xJyBmaWxsPSdub25lJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGNsYXNzPSdjc3MtaTZkenExJyUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nMTMgMTcgMTggMTIgMTMgNyclM0UlM0MvcG9seWxpbmUlM0UlM0Nwb2x5bGluZSBwb2ludHM9JzYgMTcgMTEgMTIgNiA3JyUzRSUzQy9wb2x5bGluZSUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogNTAlO1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctY2VudGVyIGJnLW5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnRhYnVsYXRvci10YWJsZUhvbGRlciAudGFidWxhdG9yLXBsYWNlaG9sZGVyIHNwYW4ge1xuICAgICAgICBAYXBwbHkgdGV4dC1zbGF0ZS01MDAgZm9udC1ub3JtYWwgdGV4dC1zbTtcbiAgICB9XG4gICAgLnRhYnVsYXRvci1sb2FkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmYmQ7XG4gICAgICAgIC50YWJ1bGF0b3ItbG9hZGVyLW1zZyB7XG4gICAgICAgICAgICBAYXBwbHkgZm9udC1ub3JtYWwgdGV4dC1iYXNlIGJnLXRyYW5zcGFyZW50O1xuICAgICAgICAgICAgJi50YWJ1bGF0b3ItbG9hZGluZyB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci0wIHRleHQtc2xhdGUtNzAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi50YWJ1bGF0b3ItZXJyb3Ige1xuICAgICAgICAgICAgICAgIEBhcHBseSBib3JkZXItMCB0ZXh0LWRhbmdlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRhcmsge1xuICAgIC50YWJ1bGF0b3Ige1xuICAgICAgICAudGFidWxhdG9yLWhlYWRlciB7XG4gICAgICAgICAgICBAYXBwbHkgdGV4dC1zbGF0ZS0zMDAgYm9yZGVyLWRhcmttb2RlLTQwMDtcbiAgICAgICAgICAgIC50YWJ1bGF0b3ItaGVhZGVycyAudGFidWxhdG9yLWNvbDpob3ZlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTMwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAudGFidWxhdG9yLXRhYmxlIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCB0ZXh0LXNsYXRlLTIwMDtcbiAgICAgICAgICAgIC50YWJ1bGF0b3Itcm93IHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgYm9yZGVyLXRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgJi50YWJ1bGF0b3Itcm93LWV2ZW46aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNzAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmLnRhYnVsYXRvci1yb3ctZXZlbiB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS00MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC50YWJ1bGF0b3ItZm9vdGVyIHtcbiAgICAgICAgICAgIC50YWJ1bGF0b3ItcGFnaW5hdG9yIHtcbiAgICAgICAgICAgICAgICA+IGxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtMjAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAudGFidWxhdG9yLXBhZ2Utc2l6ZSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS0zMDAgYm9yZGVyLWRhcmttb2RlLTYwMCB0ZXh0LXNsYXRlLTIwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnRhYnVsYXRvci1wYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IHRleHQtc2xhdGUtMjAwO1xuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS03MDAgdGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJi5hY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICYuYWN0aXZlOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS0zMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnRhYnVsYXRvci1sb2FkZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLWJsYWNrLzMwO1xuICAgICAgICAgICAgLnRhYnVsYXRvci1sb2FkZXItbXNnLnRhYnVsYXRvci1sb2FkaW5nIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgdGV4dC1zbGF0ZS0yMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIudG9tLXNlbGVjdCB7XG4gICAgLnRzLWlucHV0IHtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICAgICAgcGFkZGluZzogNy41cHggMzJweCA3LjVweCAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyBmaWxsPSdub25lJyBzdHJva2U9J3JnYig3NCA4NSAxMDQpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgY2xhc3M9J2x1Y2lkZSBsdWNpZGUtY2hldnJvbi1kb3duJyUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nNiA5IDEyIDE1IDE4IDknLyUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIHJpZ2h0IDAuNnJlbTtcbiAgICAgICAgQGFwcGx5IHRleHQtc20gc2hhZG93LXNtIGJvcmRlci1zbGF0ZS0yMDAgYmctbm8tcmVwZWF0IHJvdW5kZWQ7XG4gICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICAgICAgICB9XG4gICAgICAgICYuZHJvcGRvd24tYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTQuODI4JyBoZWlnaHQ9JzguNDE0JyB2aWV3Qm94PScwIDAgMTQuODI4IDguNDE0JyUzRSUzQ3BhdGggaWQ9J2NoZXZyb24nIGQ9J002LDlsNiw2LDYtNicgdHJhbnNmb3JtPSd0cmFuc2xhdGUoMTkuNDE0IDE2KSByb3RhdGUoMTgwKScgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjM0YTU1NjgnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPScyJy8lM0UlM0Mvc3ZnJTNFJTBBXCIpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDExcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciByaWdodCAwLjhyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDIzcHg7XG4gICAgICAgICAgICBAYXBwbHkgdGV4dC1zbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLm11bHRpIC50cy1pbnB1dCB7XG4gICAgICAgIEBhcHBseSBweC0xLjUgcHktMTtcbiAgICAgICAgJiA+IGRpdiB7XG4gICAgICAgICAgICBAYXBwbHkgcm91bmRlZCBteS0wLjUgbXItMSBweC0yIHB5LTAgYmctc2xhdGUtMjAwO1xuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAgICAgLnJlbW92ZSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBib3JkZXItc2xhdGUtNDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAmLnBsdWdpbi1yZW1vdmVfYnV0dG9uIC5pdGVtIC5yZW1vdmUge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXNsYXRlLTMwMCBtbC0yIHB4LTI7XG4gICAgfVxuICAgICYucGx1Z2luLWRyb3Bkb3duX2lucHV0IC50cy1pbnB1dC5mb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXItc2xhdGUtMjAwO1xuICAgIH1cbiAgICAudHMtZHJvcGRvd24ge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMjYsIDIzMiwgMjQwLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xuICAgICAgICBAYXBwbHkgei01MCB0ZXh0LXNtIHNoYWRvdy1zbSBib3JkZXItc2xhdGUtMjAwIHJvdW5kZWQ7XG4gICAgICAgIC5vcHRncm91cC1oZWFkZXIge1xuICAgICAgICAgICAgcGFkZGluZzogOXB4IDEwcHg7XG4gICAgICAgICAgICBAYXBwbHkgZm9udC1tZWRpdW07XG4gICAgICAgIH1cbiAgICAgICAgLm9wdGlvbiB7XG4gICAgICAgICAgICBwYWRkaW5nOiA5cHggMTNweDtcbiAgICAgICAgICAgIC5oaWdobGlnaHQge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYW5nZXIgdGV4dC13aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctcHJpbWFyeSB0ZXh0LXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1zbGF0ZS0yMDAgdGV4dC1zbGF0ZS04MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5wbHVnaW4tZHJvcGRvd25faW5wdXQgLmRyb3Bkb3duLWlucHV0LXdyYXAge1xuICAgICAgICAgICAgQGFwcGx5IHAtMjtcbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgb3V0bGluZS1ub25lIGJvcmRlciBib3JkZXItc2xhdGUtMjAwIHJvdW5kZWQgcHktMiBweC0zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5kcm9wZG93bi1oZWFkZXIge1xuICAgICAgICAgICAgQGFwcGx5IHB4LTMgYmctc2xhdGUtMTAwIGJvcmRlci1zbGF0ZS0yMDA7XG4gICAgICAgICAgICAuZHJvcGRvd24taGVhZGVyLWNsb3NlIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0xMDAgdGV4dC1zbGF0ZS00MDAgbXItMC41O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGFyayB7XG4gICAgLnRvbS1zZWxlY3Qge1xuICAgICAgICAudHMtaW5wdXQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgc3Ryb2tlPSdyZ2IoMjU1IDI1NSAyNTUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgY2xhc3M9J2x1Y2lkZSBsdWNpZGUtY2hldnJvbi1kb3duJyUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nNiA5IDEyIDE1IDE4IDknLyUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtODAwIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LXNsYXRlLTMwMDtcbiAgICAgICAgICAgICYuZHJvcGRvd24tYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtODAwIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LXNsYXRlLTMwMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzE0LjgyOCcgaGVpZ2h0PSc4LjQxNCcgdmlld0JveD0nMCAwIDE0LjgyOCA4LjQxNCclM0UlM0NwYXRoIGlkPSdjaGV2cm9uJyBkPSdNNiw5bDYsNiw2LTYnIHRyYW5zZm9ybT0ndHJhbnNsYXRlKDE5LjQxNCAxNikgcm90YXRlKDE4MCknIGZpbGw9J25vbmUnIHN0cm9rZT0ncmdiKDI1NSAyNTUgMjU1KScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzInLyUzRSUzQy9zdmclM0UlMEFcIikgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS04MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYubXVsdGkgLnRzLWlucHV0IHtcbiAgICAgICAgICAgICYgPiBkaXYge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS02MDAgYm9yZGVyIGJvcmRlci1kYXJrbW9kZS00MDAgdGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNDAwLzgwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucmVtb3ZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1kYXJrbW9kZS00MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYucGx1Z2luLWRyb3Bkb3duX2lucHV0IC50cy1pbnB1dC5mb2N1cyB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLXRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIC50cy1kcm9wZG93biB7XG4gICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNzAwIGJvcmRlci1kYXJrbW9kZS04MDAvODAgdGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAmLnBsdWdpbi1kcm9wZG93bl9pbnB1dCAuZHJvcGRvd24taW5wdXQtd3JhcCBpbnB1dCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTYwMCBib3JkZXItZGFya21vZGUtODAwLzgwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm9wdGdyb3VwLWhlYWRlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTgwMCB0ZXh0LXNsYXRlLTQwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5jcmVhdGUge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS04MDAgdGV4dC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS02MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm9wdGlvbiB7XG4gICAgICAgICAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNjAwIHRleHQtc2xhdGUtMzAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5kcm9wZG93bi1oZWFkZXIge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS04MDAgYm9yZGVyLWRhcmttb2RlLTcwMCB0ZXh0LXNsYXRlLTMwMDtcbiAgICAgICAgICAgICAgICAuZHJvcGRvd24taGVhZGVyLWNsb3NlIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtMzAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5kcm9wem9uZSB7XG4gICAgQGFwcGx5IGJvcmRlci1zbGF0ZS0yMDAvNjAgYm9yZGVyLWRhc2hlZCBkYXJrOmJnLWRhcmttb2RlLTYwMDtcbn1cbiIsIi5jay1lZGl0b3IsXG4uZG9jdW1lbnQtZWRpdG9yLFxuLmNrLWVkaXRvcl9fZWRpdGFibGUge1xuICAgIEBhcHBseSBzaGFkb3ctc207XG59XG5cbi5kb2N1bWVudC1lZGl0b3Ige1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWF4LWhlaWdodDogNzAwcHg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNrLWJvcmRlci1yYWRpdXMpO1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLXNsYXRlLTIwMDtcbiAgICAuZG9jdW1lbnQtZWRpdG9yX190b29sYmFyIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iIGJvcmRlci1zbGF0ZS0yMDA7XG4gICAgfVxuICAgIC5kb2N1bWVudC1lZGl0b3JfX3Rvb2xiYXIgLmNrLXRvb2xiYXIge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDA7XG4gICAgICAgIC5jay1pY29uIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kb2N1bWVudC1lZGl0b3JfX2VkaXRhYmxlLWNvbnRhaW5lciB7XG4gICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgICAgcGFkZGluZzogY2FsYygyICogdmFyKC0tY2stc3BhY2luZy1sYXJnZSkpO1xuICAgICAgICBAYXBwbHkgYmctc2xhdGUtMTAwO1xuICAgIH1cbiAgICAuZG9jdW1lbnQtZWRpdG9yX19lZGl0YWJsZS1jb250YWluZXIgLmNrLWVkaXRvcl9fZWRpdGFibGUge1xuICAgICAgICB3aWR0aDogMTUuOGNtO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgbWluLWhlaWdodDogMjFjbTtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIHBhZGRpbmc6IDFjbSAyY20gMmNtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jay1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItc2xhdGUtMjAwIHNoYWRvdy1tZDtcbiAgICB9XG4gICAgLmNrLWhlYWRpbmctZHJvcGRvd24gLmNrLWxpc3QgLmNrLWJ1dHRvbl9fbGFiZWwge1xuICAgICAgICBsaW5lLWhlaWdodDogY2FsYyhcbiAgICAgICAgICAgIDEuNyAqIHZhcigtLWNrLWxpbmUtaGVpZ2h0LWJhc2UpICogdmFyKC0tY2stZm9udC1zaXplLWJhc2UpXG4gICAgICAgICk7XG4gICAgICAgIG1pbi13aWR0aDogNmVtO1xuICAgIH1cbiAgICAuY2staGVhZGluZy1kcm9wZG93blxuICAgICAgICAuY2stbGlzdFxuICAgICAgICAuY2stYnV0dG9uOm5vdCguY2staGVhZGluZ19wYXJhZ3JhcGgpXG4gICAgICAgIC5jay1idXR0b25fX2xhYmVsIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICAgIH1cbiAgICAuY2stY29udGVudCBoMixcbiAgICAuY2staGVhZGluZy1kcm9wZG93biAuY2staGVhZGluZ19oZWFkaW5nMSAuY2stYnV0dG9uX19sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMi4xOGVtO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIH1cbiAgICAuY2stY29udGVudCBoMiB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM3ZW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjM0MmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjE0MmVtO1xuICAgIH1cbiAgICAuY2stY29udGVudCBoMyxcbiAgICAuY2staGVhZGluZy1kcm9wZG93biAuY2staGVhZGluZ19oZWFkaW5nMiAuY2stYnV0dG9uX19sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS43NWVtO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBjb2xvcjogaHNsKDIwMywgMTAwJSwgNTAlKTtcbiAgICB9XG4gICAgLmNrLWhlYWRpbmctZHJvcGRvd24gLmNrLWhlYWRpbmdfaGVhZGluZzIuY2stb24gLmNrLWJ1dHRvbl9fbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2stY29sb3ItbGlzdC1idXR0b24tb24tdGV4dCk7XG4gICAgfVxuICAgIC5jay1jb250ZW50IGgzIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuODZlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMTcxZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMzU3ZW07XG4gICAgfVxuICAgIC5jay1jb250ZW50IGg0LFxuICAgIC5jay1oZWFkaW5nLWRyb3Bkb3duIC5jay1oZWFkaW5nX2hlYWRpbmczIC5jay1idXR0b25fX2xhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjMxZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAuY2stY29udGVudCBoNCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0ZW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjI4NmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjk1MmVtO1xuICAgIH1cbiAgICAuY2stY29udGVudCBwIHtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjYzZW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjVlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS4xM2VtO1xuICAgIH1cbiAgICAuY2stY29udGVudCBibG9ja3F1b3RlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IEdlb3JnaWEsIHNlcmlmO1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygyICogdmFyKC0tY2stc3BhY2luZy1sYXJnZSkpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMiAqIHZhcigtLWNrLXNwYWNpbmctbGFyZ2UpKTtcbiAgICB9XG59XG5cbi5jay5jay1jb250ZW50IHtcbiAgICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgICAmLmNrLWVkaXRvcl9fZWRpdGFibGVfaW5saW5lIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItc2xhdGUtMjAwO1xuICAgIH1cbn1cblxuLmNrIC5jayB7XG4gICAgLmNrLWNvbnRlbnQge1xuICAgICAgICBAYXBwbHkgbWluLWgtWzI1MHB4XTtcbiAgICAgICAgJi5jay1lZGl0b3JfX2VkaXRhYmxlX2lubGluZSB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDA7XG4gICAgICAgIH1cbiAgICAgICAgYmxvY2txdW90ZSxcbiAgICAgICAgZGwsXG4gICAgICAgIGRkLFxuICAgICAgICBoMSxcbiAgICAgICAgaDIsXG4gICAgICAgIGgzLFxuICAgICAgICBoNCxcbiAgICAgICAgaDUsXG4gICAgICAgIGg2LFxuICAgICAgICBocixcbiAgICAgICAgZmlndXJlLFxuICAgICAgICBwLFxuICAgICAgICBwcmUge1xuICAgICAgICAgICAgbWFyZ2luOiByZXZlcnQ7XG4gICAgICAgIH1cbiAgICAgICAgb2wsXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IHJldmVydDtcbiAgICAgICAgICAgIG1hcmdpbjogcmV2ZXJ0O1xuICAgICAgICAgICAgcGFkZGluZzogcmV2ZXJ0O1xuICAgICAgICB9XG4gICAgICAgIGgxLFxuICAgICAgICBoMixcbiAgICAgICAgaDMsXG4gICAgICAgIGg0LFxuICAgICAgICBoNSxcbiAgICAgICAgaDYge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZXZlcnQ7XG4gICAgICAgICAgICBmb250LXdlaWdodDogcmV2ZXJ0O1xuICAgICAgICB9XG4gICAgICAgIGltZyxcbiAgICAgICAgc3ZnLFxuICAgICAgICB2aWRlbyxcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBhdWRpbyxcbiAgICAgICAgaWZyYW1lLFxuICAgICAgICBlbWJlZCxcbiAgICAgICAgb2JqZWN0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IHJldmVydDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiByZXZlcnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5jay1yZXNldF9hbGwsXG4gICAgJi5jay1yZXNldF9hbGwgKiB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXNsYXRlLTgwMDtcbiAgICB9XG4gICAgJi5jay10b29sYmFyLFxuICAgICYuY2stYmFsbG9vbi1wYW5lbCB7XG4gICAgICAgIEBhcHBseSBiZy1zbGF0ZS0xMDAgYm9yZGVyLXNsYXRlLTIwMDtcbiAgICAgICAgLmNrLWljb24ge1xuICAgICAgICAgICAgQGFwcGx5IHctWzE2cHhdO1xuICAgICAgICB9XG4gICAgfVxuICAgICYuY2stZWRpdG9yX19tYWluID4gLmNrLWVkaXRvcl9fZWRpdGFibGU6bm90KC5jay1mb2N1c2VkKSB7XG4gICAgICAgIEBhcHBseSBib3JkZXItc2xhdGUtMjAwO1xuICAgIH1cbiAgICAmLmNrLWJ1dHRvbjpub3QoLmNrLWRpc2FibGVkKTpob3ZlcixcbiAgICAmYS5jay1idXR0b246bm90KC5jay1kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYmctc2xhdGUtMjAwO1xuICAgIH1cbn1cblxuLmRhcmsge1xuICAgIC5kb2N1bWVudC1lZGl0b3Ige1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWRhcmttb2RlLTkwMC8zMDtcbiAgICAgICAgLmRvY3VtZW50LWVkaXRvcl9fdG9vbGJhciB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWRhcmttb2RlLTkwMC8yMDtcbiAgICAgICAgfVxuICAgICAgICAuZG9jdW1lbnQtZWRpdG9yX190b29sYmFyIC5jay10b29sYmFyIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS05MDAvMjA7XG4gICAgICAgICAgICAuY2stdG9vbGJhcl9fc2VwYXJhdG9yIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtODAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNrLXRvb2x0aXAgLmNrLXRvb2x0aXBfX3RleHQge1xuICAgICAgICAgICAgICAgIEBhcHBseSB0ZXh0LXNsYXRlLTIwMCBiZy1kYXJrbW9kZS04MDA7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBib3JkZXItYi1kYXJrbW9kZS04MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNrLmNrLWljb24gOm5vdChbZmlsbF0pIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgZmlsbC1zbGF0ZS0zMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY2suY2stZHJvcGRvd25fX3BhbmVsIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWRhcmttb2RlLTgwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5jay5jay1idXR0b24uY2stb24sXG4gICAgICAgICAgICBhLmNrLmNrLWJ1dHRvbi5jay1vbiB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTgwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZG9jdW1lbnQtZWRpdG9yX19lZGl0YWJsZS1jb250YWluZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTYwMDtcbiAgICAgICAgfVxuICAgICAgICAuZG9jdW1lbnQtZWRpdG9yX19lZGl0YWJsZS1jb250YWluZXIgLmNrLWVkaXRvcl9fZWRpdGFibGUge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1kYXJrbW9kZS05MDAvMjAgYmctZGFya21vZGUtODAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNrLmNrLWNvbnRlbnQuY2stZWRpdG9yX19lZGl0YWJsZV9pbmxpbmUge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWRhcmttb2RlLTkwMC8yMCBiZy1kYXJrbW9kZS04MDA7XG4gICAgfVxuXG4gICAgLmNrIHtcbiAgICAgICAgJi5jay1saXN0IHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS04MDA7XG4gICAgICAgIH1cbiAgICAgICAgJi5jay1kcm9wZG93bl9fcGFuZWwge1xuICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTgwMCBib3JkZXItZGFya21vZGUtODAwO1xuICAgICAgICB9XG4gICAgICAgICYuY2suY2staW5wdXQtdGV4dCB7XG4gICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNDAwIGJvcmRlci1kYXJrbW9kZS00MDA7XG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgc2hhZG93LW5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmNrLWluc2VydC10YWJsZS1kcm9wZG93bi1ncmlkLWJveCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWRhcmttb2RlLTQwMDtcbiAgICAgICAgfVxuICAgICAgICAmLmNrLXJlc2V0X2FsbCxcbiAgICAgICAgJi5jay1yZXNldF9hbGwgKiB7XG4gICAgICAgICAgICBAYXBwbHkgIXRleHQtc2xhdGUtMzAwO1xuICAgICAgICB9XG4gICAgICAgIC5jayB7XG4gICAgICAgICAgICAuY2stY29udGVudC5jay1lZGl0b3JfX2VkaXRhYmxlX2lubGluZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1kYXJrbW9kZS05MDAvMjAgYmctZGFya21vZGUtODAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5jay10b29sYmFyLFxuICAgICAgICAgICAgJi5jay1iYWxsb29uLXBhbmVsIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtNzAwIGJvcmRlci1kYXJrbW9kZS05MDAvMjA7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgIWJvcmRlci1iLWRhcmttb2RlLTkwMC8yMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSAhYm9yZGVyLWItZGFya21vZGUtOTAwLzIwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY2stdG9vbGJhcl9fc2VwYXJhdG9yIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJnLWRhcmttb2RlLTgwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNrLXRvb2x0aXAgLmNrLXRvb2x0aXBfX3RleHQge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgdGV4dC1zbGF0ZS0yMDAgYmctZGFya21vZGUtODAwO1xuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBib3JkZXItYi1kYXJrbW9kZS05MDAvMjA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNrLmNrLWljb24gOm5vdChbZmlsbF0pIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGZpbGwtc2xhdGUtMzAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY2suY2stZHJvcGRvd25fX3BhbmVsIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1kYXJrbW9kZS04MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5jay5jay1idXR0b24uY2stb24sXG4gICAgICAgICAgICAgICAgYS5jay5jay1idXR0b24uY2stb24ge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmctZGFya21vZGUtODAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY2stZWRpdG9yX19tYWluID4gLmNrLWVkaXRvcl9fZWRpdGFibGUge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS04MDA7XG4gICAgICAgICAgICAgICAgJjpub3QoLmNrLWZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1kYXJrbW9kZS05MDAvMjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5jay1idXR0b246bm90KC5jay1kaXNhYmxlZCk6aG92ZXIsXG4gICAgICAgICAgICAmYS5jay1idXR0b246bm90KC5jay1kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgICAgICAgICAgIEBhcHBseSBiZy1kYXJrbW9kZS05MDAvMjA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuem9vbS1vdmVybGF5IHtcbiAgICBAYXBwbHkgYmctYmxhY2svNzUgZGFyazpiZy1ibGFjay80MDtcbn1cbiIsIi5kYXJrLW1vZGUtc3dpdGNoZXIge1xuICAgIC5kYXJrLW1vZGUtc3dpdGNoZXJfX3RvZ2dsZSB7XG4gICAgICAgIHdpZHRoOiAzOHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IDFweDtcbiAgICAgICAgQGFwcGx5IG91dGxpbmUtbm9uZSByb3VuZGVkLWZ1bGwgcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXI7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICB3aWR0aDogMjJweDtcbiAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMXB4IDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICAgICAgICAgIEBhcHBseSBhYnNvbHV0ZSBpbnNldC15LTAgbXktYXV0byByb3VuZGVkLWZ1bGw7XG4gICAgICAgIH1cbiAgICAgICAgJi5kYXJrLW1vZGUtc3dpdGNoZXJfX3RvZ2dsZS0tYWN0aXZlIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1wcmltYXJ5IGJvcmRlci1wcmltYXJ5O1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTNweDtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYmctd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuc291cmNlLXByZXZpZXcge1xuICAgIEBhcHBseSBiZy1zbGF0ZS0xMDAgcHgtNCBweS0yLjU7XG4gICAgLmhsanMge1xuICAgICAgICBAYXBwbHkgdGV4dC14cyAtbXQtWzIwcHhdIC1tYi1bNDBweF0gbGVhZGluZy1yZWxheGVkIGJnLXNsYXRlLTEwMCBkYXJrOmJnLXNsYXRlLTIwMDtcbiAgICB9XG59XG4iLCIuc291cmNlLXByZXZpZXcge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICBjb2RlIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJIVE1MXCI7XG4gICAgICAgICAgICBAYXBwbHkgZm9udC1yb2JvdG8gZm9udC1tZWRpdW0gcHgtNCBweS0yIGJsb2NrIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgcm91bmRlZC1ibCBiZy1zbGF0ZS0yMDAgYmctb3BhY2l0eS03MCBkYXJrOmJnLXNsYXRlLTMwMDtcbiAgICAgICAgfVxuICAgICAgICAmLmphdmFzY3JpcHQ6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiSlNcIjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5mdWxsLWNhbGVuZGFyIHtcbiAgICAuZmMtdG9vbGJhciB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xuICAgICAgICAgICAgQGFwcGx5IGZsZXgtY29sO1xuICAgICAgICB9XG4gICAgICAgIC5mYy10b29sYmFyLWNodW5rIHtcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgb3JkZXItMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgb3JkZXItMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgb3JkZXItMjtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IG15LTM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5mYy1idXR0b24tZ3JvdXAge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IHctMjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgdy1mdWxsIHJvdW5kZWQtbWQgbWItMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZmMtdG9vbGJhci10aXRsZSB7XG4gICAgICAgICAgICBAYXBwbHkgdGV4dC1sZyBmb250LW1lZGl1bTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZmMtdG9vbGJhci1jaHVuayAuZmMtYnV0dG9uLXByaW1hcnkge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIEBhcHBseSByb3VuZGVkLWwtbWQ7XG4gICAgICAgIH1cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIEBhcHBseSByb3VuZGVkLXItbWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5mYy10aGVtZS1zdGFuZGFyZCB7XG4gICAgICAgIC5mYy1zY3JvbGxncmlkLFxuICAgICAgICB0aCxcbiAgICAgICAgdGQsXG4gICAgICAgIC5mYy1saXN0IHtcbiAgICAgICAgICAgIEBhcHBseSBib3JkZXItc2xhdGUtMjAwLzYwIGRhcms6Ym9yZGVyLWRhcmttb2RlLTQwMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0YWJsZSB7XG4gICAgICAgIEBhcHBseSByb3VuZGVkLW1kO1xuICAgICAgICB0ciB0aCAuZmMtc2Nyb2xsZ3JpZC1zeW5jLWlubmVyIHtcbiAgICAgICAgICAgIEBhcHBseSBweS0zO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5mYy1kYXlncmlkLWV2ZW50LWhhcm5lc3Mge1xuICAgICAgICBAYXBwbHkgbXgtNTtcbiAgICB9XG4gICAgLmZjLWgtZXZlbnQge1xuICAgICAgICBAYXBwbHkgYmctcHJpbWFyeSBib3JkZXItcHJpbWFyeSByb3VuZGVkLW1kO1xuICAgIH1cbiAgICAuZmMtZXZlbnQtdGl0bGUtY29udGFpbmVyIHtcbiAgICAgICAgQGFwcGx5IHB5LTEgcHgtMiB0ZXh0LXhzO1xuICAgIH1cbiAgICAuZmMtZGF5Z3JpZC1ldmVudCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXhzO1xuICAgIH1cbiAgICAuZmMtZGF5Z3JpZC1ldmVudC1kb3Qge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLXByaW1hcnkgbXItMjtcbiAgICB9XG4gICAgLmZjLWRheWdyaWQtZG90LWV2ZW50IC5mYy1ldmVudC10aXRsZSB7XG4gICAgICAgIEBhcHBseSBmb250LW1lZGl1bTtcbiAgICB9XG4gICAgLmZjLWNvbC1oZWFkZXItY2VsbC1jdXNoaW9uIHtcbiAgICAgICAgQGFwcGx5IGZvbnQtbWVkaXVtO1xuICAgIH1cbiAgICAmLmZjIC5mYy12aWV3LWhhcm5lc3Mge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgICAgIEBhcHBseSAhbWluLWgtWzQwMHB4XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLmZjIC5mYy1kYXlncmlkLWRheS1mcmFtZSB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgICAgICAgQGFwcGx5ICFtaW4taC1bNjBweF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZjLWRheWdyaWQtbW9yZS1saW5rIHtcbiAgICAgICAgQGFwcGx5IHRleHQtc207XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgICAgICAgQGFwcGx5IHRleHQtc2xhdGUtNTAwIHRleHQtWzEwcHhdO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgICAgICAgQGFwcGx5IHBsLTAgYmxvY2sgLW10LTMgbGVhZGluZy1bMTBweF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZjLWRheWdyaWQtZGF5LWJvdHRvbSB7XG4gICAgICAgIEBhcHBseSBwdC0xO1xuICAgIH1cbiAgICAuZmMtZGF5LW90aGVyIHtcbiAgICAgICAgQGFwcGx5IGJnLXNsYXRlLTEwMC81MCBkYXJrOmJnLWRhcmttb2RlLTcwMDtcbiAgICB9XG4gICAgLmZjLWJ1dHRvbi1wcmltYXJ5IHtcbiAgICAgICAgQGFwcGx5ICFmb250LW5vcm1hbCAhaW5saW5lLWJsb2NrICFib3JkZXItc2xhdGUtMjAwLzYwICF0ZXh0LXNsYXRlLTUwMCAhYmctdHJhbnNwYXJlbnQgIWNhcGl0YWxpemUgIXB4LVswLjY1ZW1dICFweS1bMC40ZW1dO1xuICAgICAgICBAYXBwbHkgYnRuO1xuICAgICAgICAuZmMtaWNvbiB7XG4gICAgICAgICAgICBAYXBwbHkgIXRleHQtWzEuMmVtXTtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIEBhcHBseSAhc2hhZG93LW5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZjLWJ1dHRvbi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOmFjdGl2ZSxcbiAgICAuZmMtYnV0dG9uLXByaW1hcnk6bm90KDpkaXNhYmxlZCkuZmMtYnV0dG9uLWFjdGl2ZSB7XG4gICAgICAgIEBhcHBseSAhdGV4dC13aGl0ZSAhYmctcHJpbWFyeSAhYm9yZGVyLXByaW1hcnk7XG4gICAgfVxuICAgIC5mYy1saXN0LWRheS1jdXNoaW9uIHtcbiAgICAgICAgQGFwcGx5ICFiZy1zbGF0ZS0xMDAvNTAgIXB4LVsxLjI1cmVtXSAhcHktWzAuNzVyZW1dO1xuICAgIH1cbiAgICAuZmMtbGlzdC1ldmVudCB0ZCB7XG4gICAgICAgIEBhcHBseSBweC01IHB5LTM7XG4gICAgfVxuICAgIC5mYy1saXN0LWV2ZW50LWRvdCB7XG4gICAgICAgIEBhcHBseSAhYm9yZGVyLXByaW1hcnk7XG4gICAgfVxuICAgIC5mYy1ldmVudC10aW1lIHtcbiAgICAgICAgQGFwcGx5IHB4LTAuNSAhdGV4dC1bMC43NXJlbV07XG4gICAgfVxuICAgIC5mYy1kYXlncmlkLW1vcmUtbGluayB7XG4gICAgICAgIEBhcHBseSBwbC0yO1xuICAgIH1cbn1cblxuLmRhcmsge1xuICAgIC5mdWxsLWNhbGVuZGFyIHtcbiAgICAgICAgLmZjLWJ1dHRvbi1wcmltYXJ5IHtcbiAgICAgICAgICAgIEBhcHBseSAhYmctZGFya21vZGUtNDAwICFib3JkZXItZGFya21vZGUtNDAwO1xuICAgICAgICB9XG4gICAgICAgIC5mYy1saXN0LWRheS1jdXNoaW9uIHtcbiAgICAgICAgICAgIEBhcHBseSAhYmctZGFya21vZGUtNDAwO1xuICAgICAgICB9XG4gICAgICAgIC5mYy1ldmVudDpob3ZlciB0ZCB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWRhcmttb2RlLTQwMCBiZy1kYXJrbW9kZS00MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuaGFzLWVycm9yIHtcbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1kYW5nZXIgZGFyazpib3JkZXItZGFuZ2VyLzcwO1xuICAgIH1cbn1cbiJdfQ== */ \ No newline at end of file diff --git a/themes/nurgul/assets/seller/css/app.css b/themes/nurgul/assets/seller/css/app.css new file mode 100644 index 0000000..33dd6f0 --- /dev/null +++ b/themes/nurgul/assets/seller/css/app.css @@ -0,0 +1,19069 @@ +/* + |-------------------------------------------------------------------------- + | TailwindCSS Directives + |-------------------------------------------------------------------------- + | + | Import TailwindCSS directives and swipe out at build-time with all of + | the styles it generates based on your configured design system. + | + | Please check this link for more details: + | https://tailwindcss.com/docs/installation#include-tailwind-in-your-css + | + */ +/* + ! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com + */ +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #e5e7eb; /* 2 */ +} +::before, +::after { + --tw-content: ''; +} +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +*/ +html { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -moz-tab-size: 4; /* 3 */ + -o-tab-size: 4; + tab-size: 4; /* 3 */ + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ +} +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ +body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +} +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} +/* +Remove the default font size and weight for headings. +*/ +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ +a { + color: inherit; + text-decoration: inherit; +} +/* +Add the correct font weight in Edge and Safari. +*/ +b, +strong { + font-weight: bolder; +} +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ + font-size: 1em; /* 2 */ +} +/* +Add the correct font size in all browsers. +*/ +small { + font-size: 80%; +} +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +} +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ +button, +select { + text-transform: none; +} +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +} +/* +Use the modern Firefox focus style for all focusable elements. +*/ +:-moz-focusring { + outline: auto; +} +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ +:-moz-ui-invalid { + box-shadow: none; +} +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ +progress { + vertical-align: baseline; +} +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} +/* +Add the correct display in Chrome and Safari. +*/ +summary { + display: list-item; +} +/* +Removes the default spacing and border for appropriate elements. +*/ +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} +fieldset { + margin: 0; + padding: 0; +} +legend { + padding: 0; +} +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} +/* +Prevent resizing textareas horizontally by default. +*/ +textarea { + resize: vertical; +} +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} +input::placeholder, +textarea::placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} +/* +Set the default cursor for buttons. +*/ +button, +[role="button"] { + cursor: pointer; +} +/* +Make sure disabled buttons don't get the pointer cursor. +*/ +:disabled { + cursor: default; +} +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ +img, +video { + max-width: 100%; + height: auto; +} +/* +Ensure the default browser behavior of the `hidden` attribute. +*/ +[hidden] { + display: none; +} +[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{ + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #6b7280; + border-width: 1px; + border-radius: 0px; + padding-top: 0.5rem; + padding-right: 0.75rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + font-size: 1rem; + line-height: 1.5rem; + --tw-shadow: 0 0 #0000; +} +[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{ + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: #2563eb; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + border-color: #2563eb; +} +input::-moz-placeholder, textarea::-moz-placeholder{ + color: #6b7280; + opacity: 1; +} +input:-ms-input-placeholder, textarea:-ms-input-placeholder{ + color: #6b7280; + opacity: 1; +} +input::placeholder,textarea::placeholder{ + color: #6b7280; + opacity: 1; +} +::-webkit-datetime-edit-fields-wrapper{ + padding: 0; +} +::-webkit-date-and-time-value{ + min-height: 1.5em; +} +::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{ + padding-top: 0; + padding-bottom: 0; +} +select{ + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); + background-position: right 0.5rem center; + background-repeat: no-repeat; + background-size: 1.5em 1.5em; + padding-right: 2.5rem; + -webkit-print-color-adjust: exact; + -moz-print-color-adjust: exact; + print-color-adjust: exact; +} +[multiple]{ + background-image: initial; + background-position: initial; + background-repeat: unset; + background-size: initial; + padding-right: 0.75rem; + -webkit-print-color-adjust: unset; + -moz-print-color-adjust: unset; + print-color-adjust: unset; +} +[type='checkbox'],[type='radio']{ + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding: 0; + -webkit-print-color-adjust: exact; + -moz-print-color-adjust: exact; + print-color-adjust: exact; + display: inline-block; + vertical-align: middle; + background-origin: border-box; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + flex-shrink: 0; + height: 1rem; + width: 1rem; + color: #2563eb; + background-color: #fff; + border-color: #6b7280; + border-width: 1px; + --tw-shadow: 0 0 #0000; +} +[type='checkbox']{ + border-radius: 0px; +} +[type='radio']{ + border-radius: 100%; +} +[type='checkbox']:focus,[type='radio']:focus{ + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 2px; + --tw-ring-offset-color: #fff; + --tw-ring-color: #2563eb; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); +} +[type='checkbox']:checked,[type='radio']:checked{ + border-color: transparent; + background-color: currentColor; + background-size: 100% 100%; + background-position: center; + background-repeat: no-repeat; +} +[type='checkbox']:checked{ + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e"); +} +[type='radio']:checked{ + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e"); +} +[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus{ + border-color: transparent; + background-color: currentColor; +} +[type='checkbox']:indeterminate{ + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e"); + border-color: transparent; + background-color: currentColor; + background-size: 100% 100%; + background-position: center; + background-repeat: no-repeat; +} +[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus{ + border-color: transparent; + background-color: currentColor; +} +[type='file']{ + background: unset; + border-color: inherit; + border-width: 0; + border-radius: 0; + padding: 0; + font-size: unset; + line-height: inherit; +} +[type='file']:focus{ + outline: 1px solid ButtonText; + outline: 1px auto -webkit-focus-ring-color; +} +*, ::before, ::after{ + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} +.container{ + width: 100%; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 640px){ + .container{ + max-width: 640px; + } +} +@media (min-width: 768px){ + .container{ + max-width: 768px; + } +} +@media (min-width: 1024px){ + .container{ + max-width: 1024px; + } +} +@media (min-width: 1280px){ + .container{ + max-width: 1280px; + } +} +@media (min-width: 1536px){ + .container{ + max-width: 1536px; + } +} +.form-input,.form-textarea,.form-select,.form-multiselect{ + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #6b7280; + border-width: 1px; + border-radius: 0px; + padding-top: 0.5rem; + padding-right: 0.75rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + font-size: 1rem; + line-height: 1.5rem; + --tw-shadow: 0 0 #0000; +} +.form-input:focus, .form-textarea:focus, .form-select:focus, .form-multiselect:focus{ + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: #2563eb; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + border-color: #2563eb; +} +.form-select{ + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); + background-position: right 0.5rem center; + background-repeat: no-repeat; + background-size: 1.5em 1.5em; + padding-right: 2.5rem; + -webkit-print-color-adjust: exact; + -moz-print-color-adjust: exact; + print-color-adjust: exact; +} +.accordion .accordion-item{ + padding-top: 1rem; + padding-bottom: 1rem; +} +.accordion .accordion-item:not(:last-child){ + border-bottom-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .accordion .accordion-item:not(:last-child){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.accordion .accordion-item:first-child{ + margin-top: -1rem; +} +.accordion .accordion-item:last-child{ + margin-bottom: -1rem; +} +.accordion .accordion-item .accordion-header .accordion-button{ + margin-top: -1rem; + margin-bottom: -1rem; + width: 100%; + padding-top: 1rem; + padding-bottom: 1rem; + text-align: left; + font-weight: 500; +} +.dark .accordion .accordion-item .accordion-header .accordion-button{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.accordion .accordion-item .accordion-header .accordion-button:focus{ + outline: 2px solid transparent; + outline-offset: 2px; +} +.accordion .accordion-item .accordion-header .accordion-button:not(.collapsed){ + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .accordion .accordion-item .accordion-header .accordion-button:not(.collapsed){ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.accordion .accordion-collapse{ + margin-top: 0.75rem; + line-height: 1.625; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.dark .accordion .accordion-collapse{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.accordion .accordion-collapse.collapse:not(.show){ + display: none; +} +.accordion.accordion-boxed .accordion-item{ + margin-top: 0.75rem; + border-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + padding: 1rem; +} +.dark .accordion.accordion-boxed .accordion-item{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.accordion.accordion-boxed .accordion-item:first-child{ + margin-top: 0px; +} +.accordion.accordion-boxed .accordion-item:last-child{ + margin-bottom: 0px; +} +.alert{ + position: relative; + border-radius: 0.375rem; + border-width: 1px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 1rem; + padding-bottom: 1rem; +} +.alert.alert-dismissible{ + padding-left: 1.25rem; + padding-right: 4rem; +} +.alert.alert-dismissible:not(.show){ + display: none; +} +.alert .btn-close{ + position: absolute; + right: 0px; + margin-top: auto; + margin-bottom: auto; + margin-right: 0.5rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.btn-close{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +/* Alert Colors */ +.alert-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .alert-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.alert-secondary{ + border-color: rgb(var(--color-secondary) / 0.7); + background-color: rgb(var(--color-secondary) / 0.7); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .alert-secondary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.alert-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .alert-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.alert-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .alert-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.alert-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .alert-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); +} +.alert-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .alert-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.alert-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .alert-dark{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +/* Outline Button */ +.alert-outline-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .alert-outline-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.alert-outline-secondary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-secondary) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .alert-outline-secondary{ + border-color: rgb(var(--color-darkmode-100) / 0.4); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.alert-outline-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); +} +.dark .alert-outline-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.alert-outline-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-warning) / var(--tw-text-opacity)); +} +.dark .alert-outline-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.alert-outline-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-pending) / var(--tw-text-opacity)); +} +.dark .alert-outline-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); +} +.alert-outline-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.dark .alert-outline-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.alert-outline-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-dark) / var(--tw-text-opacity)); +} +.dark .alert-outline-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +/* Button Soft Colors */ +.alert-primary-soft{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .alert-primary-soft{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 1; + --tw-bg-opacity: 0.2; +} +.alert-secondary-soft{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-secondary) / var(--tw-border-opacity)); + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.1; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .alert-secondary-soft{ + border-color: rgb(var(--color-darkmode-100) / 0.3); + background-color: rgb(var(--color-darkmode-100) / 0.2); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.alert-success-soft{ + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); +} +.dark .alert-success-soft{ + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.alert-warning-soft{ + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-warning) / var(--tw-text-opacity)); +} +.dark .alert-warning-soft{ + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.alert-pending-soft{ + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-pending) / var(--tw-text-opacity)); +} +.dark .alert-pending-soft{ + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.alert-danger-soft{ + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.dark .alert-danger-soft{ + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.alert-dark-soft{ + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-dark) / var(--tw-text-opacity)); +} +.dark .alert-dark-soft{ + border-color: rgb(var(--color-darkmode-800) / 0.6); + background-color: rgb(var(--color-darkmode-800) / 0.3); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +/* Default Button */ +.btn{ + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-weight: 500; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; +} +.btn:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .btn{ + transition-property: none; +} +.dark .btn:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.btn:hover:not(:disabled){ + --tw-border-opacity: 0.9; + --tw-bg-opacity: 0.9; +} +.btn:not(button){ + text-align: center; +} +.btn:disabled{ + cursor: not-allowed; + opacity: 0.7; +} +/* Default Sizes */ +.btn-sm{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + font-size: 0.75rem; + line-height: 1rem; +} +.btn-lg{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 1rem; + padding-right: 1rem; + font-size: 1.125rem; + line-height: 1.75rem; +} +/* Button Colors */ +.btn-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.btn-secondary{ + border-color: rgb(var(--color-secondary) / 0.7); + background-color: rgb(var(--color-secondary) / 0.7); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .btn-secondary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-secondary:hover:not(:disabled){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-100) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .btn-secondary:hover:not(:disabled){ + border-color: rgb(var(--color-darkmode-300) / 0.8); + background-color: rgb(var(--color-darkmode-300) / 0.8); +} +.btn-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.btn-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.btn-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); +} +.btn-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.btn-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-dark{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .btn-dark:hover:not(:disabled){ + background-color: rgb(var(--color-darkmode-800) / 0.7); +} +/* Button Elevated */ +.btn-elevated-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.btn-elevated-primary{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.btn-elevated-secondary{ + border-color: rgb(var(--color-secondary) / 0.7); + background-color: rgb(var(--color-secondary) / 0.7); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .btn-elevated-secondary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-elevated-secondary:hover:not(:disabled){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-100) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .btn-elevated-secondary:hover:not(:disabled){ + border-color: rgb(var(--color-darkmode-300) / 0.8); + background-color: rgb(var(--color-darkmode-300) / 0.8); +} +.btn-elevated-secondary{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.btn-elevated-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-elevated-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.btn-elevated-success{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.btn-elevated-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-elevated-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.btn-elevated-warning{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.btn-elevated-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); +} +.btn-elevated-pending{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.btn-elevated-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.btn-elevated-danger{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.btn-elevated-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-dark{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .btn-elevated-dark:hover:not(:disabled){ + background-color: rgb(var(--color-darkmode-800) / 0.7); +} +.btn-elevated-dark{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +/* Button Rounded */ +.btn-rounded{ + border-radius: 9999px; +} +.btn-rounded-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-rounded-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.btn-rounded-primary{ + border-radius: 9999px; +} +.btn-rounded-secondary{ + border-color: rgb(var(--color-secondary) / 0.7); + background-color: rgb(var(--color-secondary) / 0.7); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .btn-rounded-secondary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-rounded-secondary:hover:not(:disabled){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-100) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .btn-rounded-secondary:hover:not(:disabled){ + border-color: rgb(var(--color-darkmode-300) / 0.8); + background-color: rgb(var(--color-darkmode-300) / 0.8); +} +.btn-rounded-secondary{ + border-radius: 9999px; +} +.btn-rounded-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-rounded-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.btn-rounded-success{ + border-radius: 9999px; +} +.btn-rounded-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-rounded-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.btn-rounded-warning{ + border-radius: 9999px; +} +.btn-rounded-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-rounded-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); +} +.btn-rounded-pending{ + border-radius: 9999px; +} +.btn-rounded-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-rounded-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.btn-rounded-danger{ + border-radius: 9999px; +} +.btn-rounded-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-rounded-dark{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .btn-rounded-dark:hover:not(:disabled){ + background-color: rgb(var(--color-darkmode-800) / 0.7); +} +.btn-rounded-dark{ + border-radius: 9999px; +} +/* Button Elevated Rounded */ +.btn-elevated-rounded-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.btn-elevated-rounded-primary{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + border-radius: 9999px; +} +.btn-elevated-rounded-secondary{ + border-color: rgb(var(--color-secondary) / 0.7); + background-color: rgb(var(--color-secondary) / 0.7); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-secondary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-elevated-rounded-secondary:hover:not(:disabled){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-100) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .btn-elevated-rounded-secondary:hover:not(:disabled){ + border-color: rgb(var(--color-darkmode-300) / 0.8); + background-color: rgb(var(--color-darkmode-300) / 0.8); +} +.btn-elevated-rounded-secondary{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + border-radius: 9999px; +} +.btn-elevated-rounded-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.btn-elevated-rounded-success{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + border-radius: 9999px; +} +.btn-elevated-rounded-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-900) / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.btn-elevated-rounded-warning{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + border-radius: 9999px; +} +.btn-elevated-rounded-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); +} +.btn-elevated-rounded-pending{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + border-radius: 9999px; +} +.btn-elevated-rounded-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.btn-elevated-rounded-danger{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + border-radius: 9999px; +} +.btn-elevated-rounded-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-dark{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .btn-elevated-rounded-dark:hover:not(:disabled){ + background-color: rgb(var(--color-darkmode-800) / 0.7); +} +.btn-elevated-rounded-dark{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + border-radius: 9999px; +} +/* Social Media Button */ +.btn-facebook{ + --tw-border-opacity: 1; + border-color: rgb(59 89 152 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(59 89 152 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-facebook{ + --tw-border-opacity: 1; + border-color: rgb(59 89 152 / var(--tw-border-opacity)); +} +.btn-twitter{ + --tw-border-opacity: 1; + border-color: rgb(74 179 244 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(74 179 244 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-twitter{ + --tw-border-opacity: 1; + border-color: rgb(74 179 244 / var(--tw-border-opacity)); +} +.btn-instagram{ + --tw-border-opacity: 1; + border-color: rgb(81 127 164 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(81 127 164 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-instagram{ + --tw-border-opacity: 1; + border-color: rgb(81 127 164 / var(--tw-border-opacity)); +} +.btn-linkedin{ + --tw-border-opacity: 1; + border-color: rgb(0 119 181 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(0 119 181 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .btn-linkedin{ + --tw-border-opacity: 1; + border-color: rgb(0 119 181 / var(--tw-border-opacity)); +} +/* Outline Button */ +.btn-outline-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .btn-outline-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.btn-outline-primary:hover:not(:disabled){ + background-color: rgb(var(--color-primary) / 0.1); +} +.btn-outline-secondary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-secondary) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .btn-outline-secondary{ + border-color: rgb(var(--color-darkmode-100) / 0.4); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-outline-secondary:hover:not(:disabled){ + background-color: rgb(var(--color-secondary) / 0.2); +} +.dark .btn-outline-secondary:hover:not(:disabled){ + background-color: rgb(var(--color-darkmode-100) / 0.1); +} +.btn-outline-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); +} +.dark .btn-outline-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.btn-outline-success:hover:not(:disabled){ + background-color: rgb(var(--color-success) / 0.1); +} +.btn-outline-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-warning) / var(--tw-text-opacity)); +} +.dark .btn-outline-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.btn-outline-warning:hover:not(:disabled){ + background-color: rgb(var(--color-warning) / 0.1); +} +.btn-outline-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-pending) / var(--tw-text-opacity)); +} +.dark .btn-outline-pending{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); +} +.btn-outline-pending:hover:not(:disabled){ + background-color: rgb(var(--color-pending) / 0.1); +} +.btn-outline-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.dark .btn-outline-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.btn-outline-danger:hover:not(:disabled){ + background-color: rgb(var(--color-danger) / 0.1); +} +.btn-outline-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-dark) / var(--tw-text-opacity)); +} +.dark .btn-outline-dark{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-outline-dark:hover:not(:disabled){ + background-color: rgb(var(--color-darkmode-800) / 0.3); +} +.dark .btn-outline-dark:hover:not(:disabled){ + --tw-bg-opacity: 0.3; +} +/* Button Soft Colors */ +.btn-primary-soft{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .btn-primary-soft{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 1; + --tw-bg-opacity: 0.2; +} +.btn-primary-soft:hover:not(:disabled){ + --tw-border-opacity: 0.1; + --tw-bg-opacity: 0.1; +} +.dark .btn-primary-soft:hover:not(:disabled){ + --tw-border-opacity: 0.6; +} +.btn-secondary-soft{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-secondary) / var(--tw-border-opacity)); + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .btn-secondary-soft{ + border-color: rgb(var(--color-darkmode-100) / 0.3); + background-color: rgb(var(--color-darkmode-100) / 0.2); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-secondary-soft:hover:not(:disabled){ + --tw-bg-opacity: 0.1; +} +.dark .btn-secondary-soft:hover:not(:disabled){ + border-color: rgb(var(--color-darkmode-100) / 0.2); + background-color: rgb(var(--color-darkmode-100) / 0.1); +} +.btn-success-soft{ + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); +} +.dark .btn-success-soft{ + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.btn-success-soft:hover:not(:disabled){ + --tw-border-opacity: 0.1; + --tw-bg-opacity: 0.1; +} +.btn-warning-soft{ + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-warning) / var(--tw-text-opacity)); +} +.dark .btn-warning-soft{ + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.btn-warning-soft:hover:not(:disabled){ + --tw-border-opacity: 0.1; + --tw-bg-opacity: 0.1; +} +.btn-pending-soft{ + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-pending) / var(--tw-text-opacity)); +} +.dark .btn-pending-soft{ + border-color: rgb(var(--color-pending) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.btn-pending-soft:hover:not(:disabled){ + --tw-border-opacity: 0.1; + --tw-bg-opacity: 0.1; +} +.btn-danger-soft{ + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.dark .btn-danger-soft{ + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); + --tw-border-opacity: 0.2; +} +.btn-danger-soft:hover:not(:disabled){ + --tw-border-opacity: 0.1; + --tw-bg-opacity: 0.1; +} +.btn-dark-soft{ + border-color: rgb(var(--color-dark) / var(--tw-border-opacity)); + --tw-border-opacity: 0.05; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.2; + --tw-text-opacity: 1; + color: rgb(var(--color-dark) / var(--tw-text-opacity)); +} +.dark .btn-dark-soft{ + border-color: rgb(var(--color-darkmode-800) / 0.6); + background-color: rgb(var(--color-darkmode-800) / 0.3); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.btn-dark-soft:hover:not(:disabled){ + --tw-border-opacity: 0.1; + --tw-bg-opacity: 0.1; +} +.dark .btn-dark-soft:hover:not(:disabled){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.dropdown .dropdown-menu { + transform: translate3d(-10000px, 0px, 0px) !important; + } +.dropdown-menu { + z-index: 9999; + inset: 0px auto auto 0px; + transition: visibility 0s ease-in-out 0.2s, opacity 0.2s 0s; + visibility: hidden; + position: absolute; + opacity: 0; + } +.dropdown-menu.show { + transition: visibility 0s ease-in-out 0s, opacity 0.2s 0s; + visibility: visible; + opacity: 1; + } +.dropdown-menu.show > .dropdown-content{ + margin-top: 0.25rem; +} +.dropdown-menu.show > .dropdown-content .tab-content .tab-pane{ + visibility: visible; +} +.dropdown-menu .dropdown-content { + transition: margin-top 0.2s; + box-shadow: 0px 3px 10px #00000017; + position: relative; + margin-top: 1.25rem; + width: 100%; + border-radius: 0.375rem; + padding: 0.5rem; + } +.dropdown-menu .dropdown-content .dropdown-header{ + padding: 0.5rem; + font-weight: 500; +} +.dropdown-menu .dropdown-content .dropdown-divider{ + margin-top: 0.5rem; + margin-bottom: 0.5rem; + margin-left: -0.5rem; + margin-right: -0.5rem; +} +.dropdown-menu .dropdown-content .dropdown-item{ + display: flex; + align-items: center; + border-radius: 0.375rem; + padding: 0.5rem; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.dropdown-menu .dropdown-content .dropdown-footer{ + display: flex; + padding: 0.25rem; +} +.dropdown-menu .dropdown-content .tab-content .tab-pane{ + visibility: hidden; +} +.dropdown-content{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.dark .dropdown-content{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dropdown-divider{ + border-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .dropdown-divider{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dropdown-item:hover{ + background-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .dropdown-item{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .dropdown-item:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.file .file__icon{ + position: relative; + display: block; + background-size: contain; + background-position: center; + background-repeat: no-repeat; +} +.file .file__icon.file__icon--empty-directory { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='786' height='786' viewBox='0 0 786 786'%3E%3Cdefs%3E%3ClinearGradient id='linear-gradient' x1='0.5' x2='0.5' y2='1' gradientUnits='objectBoundingBox'%3E%3Cstop offset='0' stop-color='%238a97ac'/%3E%3Cstop offset='1' stop-color='%235d6c83'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='Group_2' data-name='Group 2' transform='translate(-567 -93)'%3E%3Crect id='Rectangle_4' data-name='Rectangle 4' width='418' height='681' rx='40' transform='translate(896 109)' fill='%2395a5b9'/%3E%3Crect id='Rectangle_3' data-name='Rectangle 3' width='433' height='681' rx='40' transform='translate(606 93)' fill='%23a0aec0'/%3E%3Crect id='Rectangle_2' data-name='Rectangle 2' width='786' height='721' rx='40' transform='translate(567 158)' fill='url(%23linear-gradient)'/%3E%3C/g%3E%3C/svg%3E%0A"); + } +.file .file__icon.file__icon--directory { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='786' height='786' viewBox='0 0 786 786'%3E%3Cdefs%3E%3ClinearGradient id='linear-gradient' x1='0.5' x2='0.5' y2='1' gradientUnits='objectBoundingBox'%3E%3Cstop offset='0' stop-color='%238a97ac'/%3E%3Cstop offset='1' stop-color='%235d6c83'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='Group_3' data-name='Group 3' transform='translate(-567 -93)'%3E%3Crect id='Rectangle_4' data-name='Rectangle 4' width='418' height='681' rx='40' transform='translate(896 109)' fill='%2395a5b9'/%3E%3Crect id='Rectangle_3' data-name='Rectangle 3' width='433' height='681' rx='40' transform='translate(606 93)' fill='%23a0aec0'/%3E%3Crect id='Rectangle_2' data-name='Rectangle 2' width='742' height='734' rx='40' transform='translate(590 145)' fill='%23bec8d9'/%3E%3Crect id='Rectangle_5' data-name='Rectangle 5' width='786' height='692' rx='40' transform='translate(567 187)' fill='url(%23linear-gradient)'/%3E%3C/g%3E%3C/svg%3E%0A"); + } +.file .file__icon.file__icon--file { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='628.027' height='786.012' viewBox='0 0 628.027 786.012'%3E%3Cdefs%3E%3ClinearGradient id='linear-gradient' x1='0.5' x2='0.5' y2='1' gradientUnits='objectBoundingBox'%3E%3Cstop offset='0' stop-color='%238a97ac'/%3E%3Cstop offset='1' stop-color='%235d6c83'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='Group_5' data-name='Group 5' transform='translate(-646 -92.988)'%3E%3Cpath id='Union_2' data-name='Union 2' d='M40,786A40,40,0,0,1,0,746V40A40,40,0,0,1,40,0H501V103h29v24h98V746a40,40,0,0,1-40,40Z' transform='translate(646 93)' fill='url(%23linear-gradient)'/%3E%3Cpath id='Intersection_2' data-name='Intersection 2' d='M.409,162.042l.058-109.9c31.605,29.739,125.37,125.377,125.37,125.377l-109.976.049A20.025,20.025,0,0,1,.409,162.042Z' transform='translate(1147 42)' fill='%23bec8d9' stroke='%23bec8d9' stroke-width='1'/%3E%3C/g%3E%3C/svg%3E%0A"); + } +.file .file__icon.file__icon--image .file__icon--image__preview{ + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; +} +.file .file__icon.file__icon--image .file__icon--image__preview img{ + border-radius: 0.375rem; +} +.file .file__icon .file__icon__file-name{ + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + margin: auto; + display: flex; + align-items: center; + justify-content: center; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.file .file__icon:before { + content: ""; + padding-top: 100%; + display: block; + width: 100%; + } +[type="text"], [type="email"], [type="url"], [type="password"], [type="number"], [type="date"], [type="datetime-local"], [type="month"], [type="search"], [type="tel"], [type="time"], [type="week"], [multiple], textarea, select{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.form-check{ + display: flex; + align-items: center; +} +.form-check-label{ + margin-left: 0.5rem; + cursor: pointer; +} +.form-check-input{ + transition-property: all; + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.form-check-input[type="radio"]{ + cursor: pointer; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.form-check-input[type="radio"]:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; + --tw-ring-offset-width: 0px; +} +.dark .form-check-input[type="radio"]{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="radio"]:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-check-input[type="radio"]:checked{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.1; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.form-check-input[type="radio"]:disabled:not(:checked){ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="radio"]:disabled:not(:checked){ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-check-input[type="radio"]:disabled:checked{ + cursor: not-allowed; + opacity: 0.7; +} +.dark .form-check-input[type="radio"]:disabled:checked{ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-check-input[type="checkbox"]{ + cursor: pointer; + border-radius: 0.25rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.form-check-input[type="checkbox"]:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; + --tw-ring-offset-width: 0px; +} +.dark .form-check-input[type="checkbox"]{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="checkbox"]:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-check-input[type="checkbox"]:checked{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.1; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.form-check-input[type="checkbox"]:disabled:not(:checked){ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-check-input[type="checkbox"]:disabled:not(:checked){ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-check-input[type="checkbox"]:disabled:checked{ + cursor: not-allowed; + opacity: 0.7; +} +.dark .form-check-input[type="checkbox"]:disabled:checked{ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +.form-switch .form-check-input { + width: 38px; + height: 24px; + padding: 1px; + position: relative; + border-radius: 9999px; + background-image: none; + } +.form-switch .form-check-input:before { + content: ""; + width: 20px; + height: 20px; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); + transition-property: margin-left; + position: absolute; + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + border-radius: 9999px; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + } +.dark .form-switch .form-check-input:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.form-switch .form-check-input:checked{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.form-switch .form-check-input:checked::before { + margin-left: 14px; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +/* Default Form Control */ +.form-control{ + width: 100%; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.form-control::-moz-placeholder{ + color: rgb(var(--color-slate-400) / 0.9); +} +.form-control:-ms-input-placeholder{ + color: rgb(var(--color-slate-400) / 0.9); +} +.form-control::placeholder{ + color: rgb(var(--color-slate-400) / 0.9); +} +.form-control:focus{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.4; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .form-control{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + transition-property: none; +} +.dark .form-control::-moz-placeholder{ + color: rgb(var(--color-slate-500) / 0.8); +} +.dark .form-control:-ms-input-placeholder{ + color: rgb(var(--color-slate-500) / 0.8); +} +.dark .form-control::placeholder{ + color: rgb(var(--color-slate-500) / 0.8); +} +.dark .form-control:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-control:disabled, .form-control[readonly]{ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-control:disabled, .dark .form-control[readonly]{ + border-color: transparent; + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +/* Default Sizes */ +.form-control-sm{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + font-size: 0.75rem; + line-height: 1rem; +} +.form-control-lg{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 1rem; + padding-right: 1rem; + font-size: 1.125rem; + line-height: 1.75rem; +} +/* Form Control Rounded */ +.form-control-rounded{ + border-radius: 9999px; +} +.form-help{ + margin-top: 0.5rem; + font-size: 0.75rem; + line-height: 1rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.form-inline{ + display: flex; + align-items: center; +} +.form-inline .form-label{ + margin-bottom: 0px; + margin-right: 1.25rem; + text-align: right; +} +.form-inline .form-control{ + flex: 1 1 0%; +} +.form-label{ + margin-bottom: 0.5rem; + display: inline-block; +} +/* Default Form Select */ +.form-select{ + width: 100%; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 2rem; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.form-select:focus{ + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-border-opacity: 0.4; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .form-select{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .form-select:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.form-select:disabled, .form-select[readonly]{ + cursor: not-allowed; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .form-select:disabled, .dark .form-select[readonly]{ + background-color: rgb(var(--color-darkmode-800) / 0.5); +} +/* Default Sizes */ +.form-select-sm{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 0.5rem; + padding-right: 2rem; + font-size: 0.75rem; + line-height: 1rem; +} +.form-select-lg{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 1rem; + padding-right: 2rem; + font-size: 1.125rem; + line-height: 1.75rem; +} +.image-fit{ + position: relative; +} +.image-fit > img{ + position: absolute; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.input-group{ + display: flex; +} +.input-group .input-group-text{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .input-group .input-group-text{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + background-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.input-group > .input-group-text, .input-group > .form-control{ + border-radius: 0px; +} +.input-group > .input-group-text:not(:first-child), .input-group > .form-control:not(:first-child) { + border-left-color: transparent; + } +.input-group > .input-group-text:first-child, .input-group > .form-control:first-child{ + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.input-group > .input-group-text:last-child, .input-group > .form-control:last-child{ + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} +.input-group > .form-control{ + z-index: 10; +} +.modal { + margin-top: -10000px; + margin-left: -10000px; + background: #000000a6; + transition: visibility 0s linear 0.2s, opacity 0.2s 0s; + visibility: hidden; + position: fixed; + left: 0px; + top: 0px; + height: 100vh; + width: 100vw; + opacity: 0; + } +.modal.modal-overlap { + background: #000000a6; + } +.modal.modal-static .modal-content { + -webkit-animation: modal-static-backdrop 0.3s infinite; + animation: modal-static-backdrop 0.3s infinite; + -webkit-animation-direction: alternate; + animation-direction: alternate; + } +.modal.show { + transition: visibility 0s ease-in-out 0s, opacity 0.4s ease-in-out 0s; + visibility: visible; + opacity: 1; + } +.modal.show > .modal-dialog{ + margin-top: 4rem; +} +.modal .modal-dialog { + width: 90%; + transition: margin-top 0.4s; + margin-left: auto; + margin-right: auto; + margin-top: -4rem; + margin-bottom: 4rem; + } +@media (min-width: 640px) { + .modal .modal-dialog { + width: 460px + } + .modal .modal-dialog.modal-sm { + width: 300px; + } + .modal .modal-dialog.modal-lg { + width: 600px; + } + .modal .modal-dialog.modal-xl { + width: 600px; + } + } +@media (min-width: 1024px) { + .modal .modal-dialog.modal-xl { + width: 900px; + } + } +.modal .modal-dialog .modal-content{ + position: relative; +} +.modal .modal-dialog .modal-content > [data-tw-dismiss="modal"]{ + position: absolute; + right: 0px; + top: 0px; + margin-top: 0.75rem; + margin-right: 0.75rem; +} +.modal.modal-slide-over{ + overflow-x: hidden; +} +.modal.modal-slide-over.modal-static .modal-content{ + -webkit-animation: none; + animation: none; +} +.modal.modal-slide-over.show { + transition: visibility 0s ease-in-out 0s, opacity 0.6s ease-in-out 0s; + visibility: visible; + opacity: 1; + } +.modal.modal-slide-over.show > .modal-dialog{ + margin-right: 0px; +} +.modal.modal-slide-over .modal-dialog { + margin-right: -100%; + transition: margin-right 0.6s; + margin-top: 0px; + margin-bottom: 0px; + } +.modal.modal-slide-over .modal-dialog .modal-content{ + min-height: 100vh; + border-radius: 0px; +} +.modal.modal-slide-over .modal-dialog .modal-content > [data-tw-dismiss="modal"]{ + position: absolute; + top: 0px; + left: 0px; + right: auto; + margin-top: 1rem; + margin-left: -3rem; +} +.modal-content{ + position: relative; + width: 100%; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .modal-content{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.modal-header{ + display: flex; + align-items: center; + border-bottom-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.dark .modal-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.modal-body{ + padding: 1.25rem; +} +.modal-footer{ + border-top-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + text-align: right; +} +.dark .modal-footer{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +@-webkit-keyframes modal-static-backdrop { + 0% { + transform: scale(1); + } + 100% { + transform: scale(1.05); + } + } +@keyframes modal-static-backdrop { + 0% { + transform: scale(1); + } + 100% { + transform: scale(1.05); + } + } +.pagination{ + margin-right: auto; + display: flex; +} +.pagination .page-item.active .page-link { + box-shadow: 0px 3px 20px #0000000b; + position: relative; + border-radius: 0.375rem; + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.dark .pagination .page-item.active .page-link{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.pagination .page-item.active .page-link{ + font-weight: 500; +} +.dark .pagination .page-item.active .page-link{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.pagination .page-item .page-link { + min-width: 40px; + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-weight: 500; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + } +.pagination .page-item .page-link:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .pagination .page-item .page-link{ + transition-property: none; +} +.dark .pagination .page-item .page-link:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.pagination .page-item .page-link:hover:not(:disabled){ + --tw-border-opacity: 0.9; + --tw-bg-opacity: 0.9; +} +.pagination .page-item .page-link:not(button){ + text-align: center; +} +.pagination .page-item .page-link:disabled{ + cursor: not-allowed; + opacity: 0.7; +} +.pagination .page-item .page-link{ + margin-right: 0.5rem; + display: flex; + align-items: center; + justify-content: center; + border-color: transparent; + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .pagination .page-item .page-link{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.progress{ + height: 0.5rem; + width: 100%; + border-radius: 0.25rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.dark .progress{ + background-color: rgb(0 0 0 / 0.2); +} +.progress-bar{ + display: flex; + height: 100%; + align-items: center; + justify-content: center; + border-radius: 0.25rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + font-size: 0.75rem; + line-height: 1rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.scrollbar-hidden::-webkit-scrollbar{ + width: 0px; + background-color: transparent; +} +.nav{ + display: flex; + width: 100%; +} +.nav.nav-tabs{ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.dark .nav.nav-tabs{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.nav.nav-tabs .nav-item{ + margin-bottom: -1px; +} +.nav.nav-tabs .nav-item .nav-link{ + display: block; + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; + border-color: transparent; +} +.nav.nav-tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .nav.nav-tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.nav.nav-tabs .nav-item .nav-link.active{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + border-bottom-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + font-weight: 500; +} +.dark .nav.nav-tabs .nav-item .nav-link.active{ + border-left-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + border-right-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + border-top-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-border-opacity: 1; + border-bottom-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); + background-color: transparent; +} +.nav.nav-pills .nav-item .nav-link{ + border-radius: 0.375rem; + border-width: 0px; +} +.nav.nav-pills .nav-item .nav-link.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.nav.nav-boxed-tabs .nav-item .nav-link { + box-shadow: 0px 3px 20px #0000000b; + border-radius: 0.375rem; + } +.nav.nav-boxed-tabs .nav-item .nav-link.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.nav.nav-link-tabs .nav-item .nav-link{ + border-bottom-width: 2px; + border-color: transparent; +} +.nav.nav-link-tabs .nav-item .nav-link.active{ + --tw-border-opacity: 1; + border-bottom-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + font-weight: 500; +} +.nav-link{ + display: block; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-width: 1px; + border-color: transparent; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.625rem; + padding-bottom: 0.625rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.dark .nav-link{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.nav-link.active{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.dark .nav-link.active{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.tab-content{ + position: relative; +} +.tab-content .tab-pane { + top: -9999px; + left: -9999px; + transition: visibility 0s linear 0.6s, opacity 0.6s 0s; + visibility: hidden; + position: absolute; + opacity: 0; + } +.tab-content .tab-pane.active { + transition: visibility 0s linear 0s, opacity 0.6s 0s; + visibility: visible; + position: static; + opacity: 1; + } +.typing-dots span{ + opacity: 0; +} +.typing-dots span:nth-child(1) { + -webkit-animation: 1s type-animation infinite 0.33333s; + animation: 1s type-animation infinite 0.33333s; + } +.typing-dots span:nth-child(2) { + -webkit-animation: 1s type-animation infinite 0.66666s; + animation: 1s type-animation infinite 0.66666s; + } +.typing-dots span:nth-child(3) { + -webkit-animation: 1s type-animation infinite 0.99999s; + animation: 1s type-animation infinite 0.99999s; + } +@-webkit-keyframes type-animation { + 50%{ + opacity: 1; + } + } +@keyframes type-animation { + 50%{ + opacity: 1; + } + } +.zoom-in{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + cursor: pointer; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.zoom-in:hover{ + --tw-scale-x: 1.05; + --tw-scale-y: 1.05; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.box { + box-shadow: 0px 3px 20px #0000000b; + position: relative; + border-radius: 0.375rem; + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.dark .box{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.visible{ + visibility: visible; +} +.static{ + position: static; +} +.fixed{ + position: fixed; +} +.absolute{ + position: absolute; +} +.relative{ + position: relative; +} +.sticky{ + position: -webkit-sticky; + position: sticky; +} +.inset-y-0{ + top: 0px; + bottom: 0px; +} +.right-0{ + right: 0px; +} +.top-0{ + top: 0px; +} +.left-0{ + left: 0px; +} +.bottom-0{ + bottom: 0px; +} +.z-10{ + z-index: 10; +} +.z-30{ + z-index: 30; +} +.z-40{ + z-index: 40; +} +.z-50{ + z-index: 50; +} +.z-\[51\]{ + z-index: 51; +} +.col-span-12{ + grid-column: span 12 / span 12; +} +.col-span-11{ + grid-column: span 11 / span 11; +} +.col-span-5{ + grid-column: span 5 / span 5; +} +.col-span-2{ + grid-column: span 2 / span 2; +} +.col-span-6{ + grid-column: span 6 / span 6; +} +.col-span-3{ + grid-column: span 3 / span 3; +} +.col-span-4{ + grid-column: span 4 / span 4; +} +.row-start-2{ + grid-row-start: 2; +} +.row-start-4{ + grid-row-start: 4; +} +.float-right{ + float: right; +} +.float-left{ + float: left; +} +.clear-both{ + clear: both; +} +.m-5{ + margin: 1.25rem; +} +.mx-1{ + margin-left: 0.25rem; + margin-right: 0.25rem; +} +.my-auto{ + margin-top: auto; + margin-bottom: auto; +} +.-mx-3{ + margin-left: -0.75rem; + margin-right: -0.75rem; +} +.mx-auto{ + margin-left: auto; + margin-right: auto; +} +.mx-3{ + margin-left: 0.75rem; + margin-right: 0.75rem; +} +.-mx-5{ + margin-left: -1.25rem; + margin-right: -1.25rem; +} +.mx-4{ + margin-left: 1rem; + margin-right: 1rem; +} +.my-4{ + margin-top: 1rem; + margin-bottom: 1rem; +} +.-my-3{ + margin-top: -0.75rem; + margin-bottom: -0.75rem; +} +.my-5{ + margin-top: 1.25rem; + margin-bottom: 1.25rem; +} +.my-10{ + margin-top: 2.5rem; + margin-bottom: 2.5rem; +} +.mx-6{ + margin-left: 1.5rem; + margin-right: 1.5rem; +} +.mx-2{ + margin-left: 0.5rem; + margin-right: 0.5rem; +} +.my-6{ + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} +.mt-1{ + margin-top: 0.25rem; +} +.-ml-5{ + margin-left: -1.25rem; +} +.mr-2{ + margin-right: 0.5rem; +} +.mr-3{ + margin-right: 0.75rem; +} +.mr-1{ + margin-right: 0.25rem; +} +.mt-2{ + margin-top: 0.5rem; +} +.mt-8{ + margin-top: 2rem; +} +.mr-auto{ + margin-right: auto; +} +.mt-5{ + margin-top: 1.25rem; +} +.mt-3{ + margin-top: 0.75rem; +} +.ml-0{ + margin-left: 0px; +} +.mr-0{ + margin-right: 0px; +} +.ml-3{ + margin-left: 0.75rem; +} +.mb-6{ + margin-bottom: 1.5rem; +} +.ml-1{ + margin-left: 0.25rem; +} +.ml-2{ + margin-left: 0.5rem; +} +.mt-10{ + margin-top: 2.5rem; +} +.-mr-2{ + margin-right: -0.5rem; +} +.-mt-2{ + margin-top: -0.5rem; +} +.mr-4{ + margin-right: 1rem; +} +.mt-4{ + margin-top: 1rem; +} +.-mt-0\.5{ + margin-top: -0.125rem; +} +.-mt-0{ + margin-top: -0px; +} +.mb-4{ + margin-bottom: 1rem; +} +.mb-2{ + margin-bottom: 0.5rem; +} +.ml-auto{ + margin-left: auto; +} +.mt-0\.5{ + margin-top: 0.125rem; +} +.mt-0{ + margin-top: 0px; +} +.-ml-4{ + margin-left: -1rem; +} +.mt-6{ + margin-top: 1.5rem; +} +.-mt-12{ + margin-top: -3rem; +} +.mb-5{ + margin-bottom: 1.25rem; +} +.ml-6{ + margin-left: 1.5rem; +} +.ml-4{ + margin-left: 1rem; +} +.-mt-1{ + margin-top: -0.25rem; +} +.-mr-1{ + margin-right: -0.25rem; +} +.ml-5{ + margin-left: 1.25rem; +} +.mr-5{ + margin-right: 1.25rem; +} +.mb-10{ + margin-bottom: 2.5rem; +} +.ml-0\.5{ + margin-left: 0.125rem; +} +.mt-12{ + margin-top: 3rem; +} +.-mb-6{ + margin-bottom: -1.5rem; +} +.mb-3{ + margin-bottom: 0.75rem; +} +.-ml-1{ + margin-left: -0.25rem; +} +.-mb-10{ + margin-bottom: -2.5rem; +} +.-ml-0\.5{ + margin-left: -0.125rem; +} +.-ml-0{ + margin-left: -0px; +} +.mr-0\.5{ + margin-right: 0.125rem; +} +.mt-1\.5{ + margin-top: 0.375rem; +} +.-mb-1\.5{ + margin-bottom: -0.375rem; +} +.-ml-2\.5{ + margin-left: -0.625rem; +} +.-mb-1{ + margin-bottom: -0.25rem; +} +.-ml-2{ + margin-left: -0.5rem; +} +.-mt-3{ + margin-top: -0.75rem; +} +.-mr-12{ + margin-right: -3rem; +} +.mt-14{ + margin-top: 3.5rem; +} +.ml-1\.5{ + margin-left: 0.375rem; +} +.-mt-4{ + margin-top: -1rem; +} +.ml-3\.5{ + margin-left: 0.875rem; +} +.-mb-7{ + margin-bottom: -1.75rem; +} +.-mt-8{ + margin-top: -2rem; +} +.mt-3\.5{ + margin-top: 0.875rem; +} +.-mt-1\.5{ + margin-top: -0.375rem; +} +.mb-8{ + margin-bottom: 2rem; +} +.-mt-10{ + margin-top: -2.5rem; +} +.mr-6{ + margin-right: 1.5rem; +} +.mt-20{ + margin-top: 5rem; +} +.-mt-16{ + margin-top: -4rem; +} +.mt-2\.5{ + margin-top: 0.625rem; +} +.ml-8{ + margin-left: 2rem; +} +.mb-1{ + margin-bottom: 0.25rem; +} +.-mr-5{ + margin-right: -1.25rem; +} +.mr-10{ + margin-right: 2.5rem; +} +.mr-52{ + margin-right: 13rem; +} +.block{ + display: block; +} +.inline-block{ + display: inline-block; +} +.inline{ + display: inline; +} +.flex{ + display: flex; +} +.inline-flex{ + display: inline-flex; +} +.table{ + display: table; +} +.grid{ + display: grid; +} +.hidden{ + display: none; +} +.h-0{ + height: 0px; +} +.h-10{ + height: 2.5rem; +} +.h-4{ + height: 1rem; +} +.h-5{ + height: 1.25rem; +} +.h-28{ + height: 7rem; +} +.h-full{ + height: 100%; +} +.h-6{ + height: 1.5rem; +} +.h-12{ + height: 3rem; +} +.h-40{ + height: 10rem; +} +.h-8{ + height: 2rem; +} +.h-3{ + height: 0.75rem; +} +.h-\[320px\]{ + height: 320px; +} +.h-2{ + height: 0.5rem; +} +.h-px{ + height: 1px; +} +.h-16{ + height: 4rem; +} +.h-\[400px\]{ + height: 400px; +} +.h-20{ + height: 5rem; +} +.h-32{ + height: 8rem; +} +.h-\[275px\]{ + height: 275px; +} +.h-\[213px\]{ + height: 213px; +} +.h-\[90px\]{ + height: 90px; +} +.h-\[58px\]{ + height: 58px; +} +.h-\[79px\]{ + height: 79px; +} +.h-\[208px\]{ + height: 208px; +} +.h-\[290px\]{ + height: 290px; +} +.h-\[215px\]{ + height: 215px; +} +.h-\[110px\]{ + height: 110px; +} +.h-\[196px\]{ + height: 196px; +} +.h-screen{ + height: 100vh; +} +.h-48{ + height: 12rem; +} +.h-64{ + height: 16rem; +} +.h-56{ + height: 14rem; +} +.h-24{ + height: 6rem; +} +.h-\[55px\]{ + height: 55px; +} +.h-\[30px\]{ + height: 30px; +} +.h-1{ + height: 0.25rem; +} +.h-\[51px\]{ + height: 51px; +} +.h-\[420px\]{ + height: 420px; +} +.h-\[212px\]{ + height: 212px; +} +.h-9{ + height: 2.25rem; +} +.h-\[70px\]{ + height: 70px; +} +.h-\[45px\]{ + height: 45px; +} +.max-h-full{ + max-height: 100%; +} +.min-h-screen{ + min-height: 100vh; +} +.w-0{ + width: 0px; +} +.w-10{ + width: 2.5rem; +} +.w-4{ + width: 1rem; +} +.w-full{ + width: 100%; +} +.w-5{ + width: 1.25rem; +} +.w-40{ + width: 10rem; +} +.w-44{ + width: 11rem; +} +.w-20{ + width: 5rem; +} +.w-6{ + width: 1.5rem; +} +.w-56{ + width: 14rem; +} +.w-12{ + width: 3rem; +} +.w-8{ + width: 2rem; +} +.w-3{ + width: 0.75rem; +} +.w-24{ + width: 6rem; +} +.w-32{ + width: 8rem; +} +.w-2{ + width: 0.5rem; +} +.w-16{ + width: 4rem; +} +.w-px{ + width: 1px; +} +.w-52{ + width: 13rem; +} +.w-2\/4{ + width: 50%; +} +.w-\[90px\]{ + width: 90px; +} +.w-4\/5{ + width: 80%; +} +.w-2\/5{ + width: 40%; +} +.w-48{ + width: 12rem; +} +.w-1\/2{ + width: 50%; +} +.w-auto{ + width: auto; +} +.w-3\/4{ + width: 75%; +} +.w-10\/12{ + width: 83.333333%; +} +.w-60{ + width: 15rem; +} +.w-3\/5{ + width: 60%; +} +.w-72{ + width: 18rem; +} +.w-64{ + width: 16rem; +} +.w-1\/4{ + width: 25%; +} +.w-5\/6{ + width: 83.333333%; +} +.w-2\/3{ + width: 66.666667%; +} +.w-9{ + width: 2.25rem; +} +.min-w-\[6rem\]{ + min-width: 6rem; +} +.max-w-\[50\%\]{ + max-width: 50%; +} +.flex-1{ + flex: 1 1 0%; +} +.flex-none{ + flex: none; +} +.rotate-180{ + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-rotate-90{ + --tw-rotate: -90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.scale-110{ + --tw-scale-x: 1.1; + --tw-scale-y: 1.1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.transform{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.cursor-pointer{ + cursor: pointer; +} +.select-none{ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.resize-none{ + resize: none; +} +.resize{ + resize: both; +} +.grid-cols-12{ + grid-template-columns: repeat(12, minmax(0, 1fr)); +} +.grid-cols-11{ + grid-template-columns: repeat(11, minmax(0, 1fr)); +} +.grid-cols-10{ + grid-template-columns: repeat(10, minmax(0, 1fr)); +} +.grid-cols-4{ + grid-template-columns: repeat(4, minmax(0, 1fr)); +} +.grid-cols-3{ + grid-template-columns: repeat(3, minmax(0, 1fr)); +} +.grid-cols-7{ + grid-template-columns: repeat(7, minmax(0, 1fr)); +} +.grid-cols-8{ + grid-template-columns: repeat(8, minmax(0, 1fr)); +} +.grid-cols-2{ + grid-template-columns: repeat(2, minmax(0, 1fr)); +} +.grid-cols-1{ + grid-template-columns: repeat(1, minmax(0, 1fr)); +} +.flex-col{ + flex-direction: column; +} +.flex-col-reverse{ + flex-direction: column-reverse; +} +.flex-wrap{ + flex-wrap: wrap; +} +.items-start{ + align-items: flex-start; +} +.items-end{ + align-items: flex-end; +} +.items-center{ + align-items: center; +} +.justify-start{ + justify-content: flex-start; +} +.justify-end{ + justify-content: flex-end; +} +.justify-center{ + justify-content: center; +} +.gap-6{ + gap: 1.5rem; +} +.gap-5{ + gap: 1.25rem; +} +.gap-2{ + gap: 0.5rem; +} +.gap-4{ + gap: 1rem; +} +.gap-3{ + gap: 0.75rem; +} +.gap-x-6{ + -moz-column-gap: 1.5rem; + column-gap: 1.5rem; +} +.gap-y-6{ + row-gap: 1.5rem; +} +.gap-y-8{ + row-gap: 2rem; +} +.gap-x-10{ + -moz-column-gap: 2.5rem; + column-gap: 2.5rem; +} +.gap-y-3{ + row-gap: 0.75rem; +} +.gap-x-5{ + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; +} +.gap-y-5{ + row-gap: 1.25rem; +} +.overflow-auto{ + overflow: auto; +} +.overflow-hidden{ + overflow: hidden; +} +.overflow-x-auto{ + overflow-x: auto; +} +.overflow-y-auto{ + overflow-y: auto; +} +.overflow-y-hidden{ + overflow-y: hidden; +} +.overflow-y-scroll{ + overflow-y: scroll; +} +.truncate{ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.whitespace-nowrap{ + white-space: nowrap; +} +.rounded-full{ + border-radius: 9999px; +} +.rounded-md{ + border-radius: 0.375rem; +} +.rounded{ + border-radius: 0.25rem; +} +.rounded-lg{ + border-radius: 0.5rem; +} +.rounded-t-md{ + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; +} +.rounded-r-md{ + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.rounded-l-md{ + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} +.rounded-l{ + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.border{ + border-width: 1px; +} +.border-2{ + border-width: 2px; +} +.border-0{ + border-width: 0px; +} +.border-4{ + border-width: 4px; +} +.border-b{ + border-bottom-width: 1px; +} +.border-r{ + border-right-width: 1px; +} +.border-l-2{ + border-left-width: 2px; +} +.border-t{ + border-top-width: 1px; +} +.border-l{ + border-left-width: 1px; +} +.border-b-2{ + border-bottom-width: 2px; +} +.border-dashed{ + border-style: dashed; +} +.border-dotted{ + border-style: dotted; +} +.border-slate-200\/60{ + border-color: rgb(var(--color-slate-200) / 0.6); +} +.border-slate-300{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-300) / var(--tw-border-opacity)); +} +.border-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.border-transparent{ + border-color: transparent; +} +.border-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.border-white{ + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity)); +} +.border-slate-200{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.border-slate-400{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-400) / var(--tw-border-opacity)); +} +.border-black{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.border-slate-500{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-500) / var(--tw-border-opacity)); +} +.border-white\/10{ + border-color: rgb(255 255 255 / 0.1); +} +.border-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.border-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.border-white\/\[0\.08\]{ + border-color: rgb(255 255 255 / 0.08); +} +.border-opacity-10{ + --tw-border-opacity: 0.1; +} +.bg-slate-200{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.bg-danger{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); +} +.bg-slate-50{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-50) / var(--tw-bg-opacity)); +} +.bg-warning\/20{ + background-color: rgb(var(--color-warning) / 0.2); +} +.bg-white{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.bg-slate-500{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-500) / var(--tw-bg-opacity)); +} +.bg-primary\/10{ + background-color: rgb(var(--color-primary) / 0.1); +} +.bg-primary{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.bg-slate-100{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.bg-white\/20{ + background-color: rgb(255 255 255 / 0.2); +} +.bg-pending{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-pending) / var(--tw-bg-opacity)); +} +.bg-warning{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-warning) / var(--tw-bg-opacity)); +} +.bg-success\/20{ + background-color: rgb(var(--color-success) / 0.2); +} +.bg-pending\/20{ + background-color: rgb(var(--color-pending) / 0.2); +} +.bg-success{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); +} +.bg-transparent{ + background-color: transparent; +} +.bg-slate-300\/50{ + background-color: rgb(var(--color-slate-300) / 0.5); +} +.bg-white\/10{ + background-color: rgb(255 255 255 / 0.1); +} +.bg-pending\/80{ + background-color: rgb(var(--color-pending) / 0.8); +} +.bg-pending\/10{ + background-color: rgb(var(--color-pending) / 0.1); +} +.bg-slate-300{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.bg-yellow-200{ + --tw-bg-opacity: 1; + background-color: rgb(254 240 138 / var(--tw-bg-opacity)); +} +.bg-cyan-900{ + --tw-bg-opacity: 1; + background-color: rgb(22 78 99 / var(--tw-bg-opacity)); +} +.bg-blue-800{ + --tw-bg-opacity: 1; + background-color: rgb(30 64 175 / var(--tw-bg-opacity)); +} +.bg-blue-900{ + --tw-bg-opacity: 1; + background-color: rgb(30 58 138 / var(--tw-bg-opacity)); +} +.bg-emerald-900{ + --tw-bg-opacity: 1; + background-color: rgb(6 78 59 / var(--tw-bg-opacity)); +} +.bg-indigo-900{ + --tw-bg-opacity: 1; + background-color: rgb(49 46 129 / var(--tw-bg-opacity)); +} +.bg-primary\/80{ + background-color: rgb(var(--color-primary) / 0.8); +} +.bg-opacity-20{ + --tw-bg-opacity: 0.2; +} +.fill-current{ + fill: currentColor; +} +.fill-pending\/30{ + fill: rgb(var(--color-pending) / 0.3); +} +.p-0{ + padding: 0px; +} +.p-5{ + padding: 1.25rem; +} +.p-3{ + padding: 0.75rem; +} +.p-1{ + padding: 0.25rem; +} +.p-2{ + padding: 0.5rem; +} +.p-8{ + padding: 2rem; +} +.p-10{ + padding: 2.5rem; +} +.py-1{ + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.px-2{ + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.py-0\.5{ + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} +.py-0{ + padding-top: 0px; + padding-bottom: 0px; +} +.px-4{ + padding-left: 1rem; + padding-right: 1rem; +} +.py-10{ + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} +.py-3{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.\!px-2{ + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} +.px-1{ + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.py-4{ + padding-top: 1rem; + padding-bottom: 1rem; +} +.py-6{ + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} +.py-2{ + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.py-5{ + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} +.px-0{ + padding-left: 0px; + padding-right: 0px; +} +.px-8{ + padding-left: 2rem; + padding-right: 2rem; +} +.py-12{ + padding-top: 3rem; + padding-bottom: 3rem; +} +.py-1\.5{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.px-10{ + padding-left: 2.5rem; + padding-right: 2.5rem; +} +.px-3{ + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.px-2\.5{ + padding-left: 0.625rem; + padding-right: 0.625rem; +} +.py-8{ + padding-top: 2rem; + padding-bottom: 2rem; +} +.px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.py-16{ + padding-top: 4rem; + padding-bottom: 4rem; +} +.\!py-4{ + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} +.\!py-3\.5{ + padding-top: 0.875rem !important; + padding-bottom: 0.875rem !important; +} +.\!py-3{ + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} +.\!py-5{ + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; +} +.pb-20{ + padding-bottom: 5rem; +} +.pb-5{ + padding-bottom: 1.25rem; +} +.pt-4{ + padding-top: 1rem; +} +.pl-4{ + padding-left: 1rem; +} +.pr-5{ + padding-right: 1.25rem; +} +.pb-4{ + padding-bottom: 1rem; +} +.pt-5{ + padding-top: 1.25rem; +} +.pt-2{ + padding-top: 0.5rem; +} +.pl-5{ + padding-left: 1.25rem; +} +.\!pl-2{ + padding-left: 0.5rem !important; +} +.\!pr-2{ + padding-right: 0.5rem !important; +} +.\!pl-4{ + padding-left: 1rem !important; +} +.pt-10{ + padding-top: 2.5rem; +} +.pt-3{ + padding-top: 0.75rem; +} +.pr-10{ + padding-right: 2.5rem; +} +.pt-6{ + padding-top: 1.5rem; +} +.pb-6{ + padding-bottom: 1.5rem; +} +.pt-16{ + padding-top: 4rem; +} +.pl-16{ + padding-left: 4rem; +} +.pb-10{ + padding-bottom: 2.5rem; +} +.pb-8{ + padding-bottom: 2rem; +} +.pr-1{ + padding-right: 0.25rem; +} +.pt-1{ + padding-top: 0.25rem; +} +.pl-10{ + padding-left: 2.5rem; +} +.pb-2{ + padding-bottom: 0.5rem; +} +.pt-0\.5{ + padding-top: 0.125rem; +} +.pt-0{ + padding-top: 0px; +} +.pl-3{ + padding-left: 0.75rem; +} +.pl-3\.5{ + padding-left: 0.875rem; +} +.pt-8{ + padding-top: 2rem; +} +.pb-14{ + padding-bottom: 3.5rem; +} +.pb-3{ + padding-bottom: 0.75rem; +} +.pl-12{ + padding-left: 3rem; +} +.pl-1{ + padding-left: 0.25rem; +} +.pr-16{ + padding-right: 4rem; +} +.text-left{ + text-align: left; +} +.text-center{ + text-align: center; +} +.text-right{ + text-align: right; +} +.text-justify{ + text-align: justify; +} +.align-top{ + vertical-align: top; +} +.text-xs{ + font-size: 0.75rem; + line-height: 1rem; +} +.text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; +} +.text-base{ + font-size: 1rem; + line-height: 1.5rem; +} +.text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; +} +.text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; +} +.text-2xl{ + font-size: 1.5rem; + line-height: 2rem; +} +.text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; +} +.text-8xl{ + font-size: 6rem; + line-height: 1; +} +.text-4xl{ + font-size: 2.25rem; + line-height: 2.5rem; +} +.text-5xl{ + font-size: 3rem; + line-height: 1; +} +.font-medium{ + font-weight: 500; +} +.font-normal{ + font-weight: 400; +} +.font-semibold{ + font-weight: 600; +} +.font-bold{ + font-weight: 700; +} +.font-extrabold{ + font-weight: 800; +} +.uppercase{ + text-transform: uppercase; +} +.lowercase{ + text-transform: lowercase; +} +.capitalize{ + text-transform: capitalize; +} +.normal-case{ + text-transform: none; +} +.leading-relaxed{ + line-height: 1.625; +} +.leading-8{ + line-height: 2rem; +} +.leading-\[2\.15rem\]{ + line-height: 2.15rem; +} +.leading-3{ + line-height: .75rem; +} +.leading-6{ + line-height: 1.5rem; +} +.leading-5{ + line-height: 1.25rem; +} +.leading-tight{ + line-height: 1.25; +} +.leading-none{ + line-height: 1; +} +.text-gray-600{ + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity)); +} +.text-slate-500{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.text-success{ + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); +} +.text-danger{ + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.text-slate-600{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.text-red-500{ + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity)); +} +.text-white{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.text-warning{ + --tw-text-opacity: 1; + color: rgb(var(--color-warning) / var(--tw-text-opacity)); +} +.text-primary{ + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.text-slate-800{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.text-warning\/80{ + color: rgb(var(--color-warning) / 0.8); +} +.text-slate-700{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.text-slate-400{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.text-pending{ + --tw-text-opacity: 1; + color: rgb(var(--color-pending) / var(--tw-text-opacity)); +} +.text-white\/70{ + color: rgb(255 255 255 / 0.7); +} +.text-white\/90{ + color: rgb(255 255 255 / 0.9); +} +.text-gray-700{ + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity)); +} +.text-primary\/80{ + color: rgb(var(--color-primary) / 0.8); +} +.text-white\/60{ + color: rgb(255 255 255 / 0.6); +} +.text-opacity-80{ + --tw-text-opacity: 0.8; +} +.text-opacity-70{ + --tw-text-opacity: 0.7; +} +.underline{ + -webkit-text-decoration-line: underline; + text-decoration-line: underline; +} +.decoration-dotted{ + -webkit-text-decoration-style: dotted; + text-decoration-style: dotted; +} +.underline-offset-4{ + text-underline-offset: 4px; +} +.opacity-0{ + opacity: 0; +} +.shadow-md{ + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-none{ + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-sm{ + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-lg{ + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow{ + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.filter{ + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} +.transition{ + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.duration-300{ + transition-duration: 300ms; +} +.ease-in-out{ + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +/* + |-------------------------------------------------------------------------- + | Colors + |-------------------------------------------------------------------------- + | + | Import all fonts used in the template, the font configuration can be + | seen in "tailwind.config.js". + | + | Please check this link for more details: + | https://tailwindcss.com/docs/theme + | + */ +/* Default colors */ +:root { + --color-primary: 109 0 40; + --color-secondary: 226 232 240; + --color-success: 13 148 136; + --color-info: 6 182 212; + --color-warning: 245 158 11; + --color-pending: 217 119 6; + --color-danger: 185 28 28; + --color-light: 241 245 249; + --color-dark: 30 41 59; + --color-slate-50: 248 250 252; + --color-slate-100: 241 245 249; + --color-slate-200: 226 232 240; + --color-slate-300: 203 213 225; + --color-slate-400: 148 163 184; + --color-slate-500: 100 116 139; + --color-slate-600: 71 85 105; + --color-slate-700: 51 65 85; + --color-slate-800: 30 41 59; + --color-slate-900: 15 23 42; +} +/* Default dark-mode colors */ +.dark { + --color-primary: 21 94 117; + --color-slate-500: 148 163 184; + --color-darkmode-50: 87 103 132; + --color-darkmode-100: 74 90 121; + --color-darkmode-200: 65 81 114; + --color-darkmode-300: 53 69 103; + --color-darkmode-400: 48 61 93; + --color-darkmode-500: 41 53 82; + --color-darkmode-600: 40 51 78; + --color-darkmode-700: 35 45 69; + --color-darkmode-800: 27 37 59; + --color-darkmode-900: 15 23 42; +} +/* Theme 1 colors */ +.theme-1 { + --color-primary: 30 64 175; + --color-secondary: 226 232 240; + --color-success: 132 204 22; + --color-info: 6 182 212; + --color-warning: 250 204 21; + --color-pending: 249 115 22; + --color-danger: 220 38 38; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-1.dark { + --color-primary: 29 78 216; + } +/* Theme 2 colors */ +.theme-2 { + --color-primary: 30 58 138; + --color-secondary: 226 232 240; + --color-success: 13 148 136; + --color-info: 6 182 212; + --color-warning: 245 158 11; + --color-pending: 249 115 22; + --color-danger: 185 28 28; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-2.dark { + --color-primary: 30 64 175; + } +/* Theme 3 colors */ +.theme-3 { + --color-primary: 6 78 59; + --color-secondary: 226 232 240; + --color-success: 5 150 105; + --color-info: 6 182 212; + --color-warning: 250 204 21; + --color-pending: 245 158 11; + --color-danger: 225 29 72; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-3.dark { + --color-primary: 6 95 70; + } +/* Theme 4 colors */ +.theme-4 { + --color-primary: 49 46 129; + --color-secondary: 226 232 240; + --color-success: 5 150 105; + --color-info: 6 182 212; + --color-warning: 234 179 8; + --color-pending: 234 88 12; + --color-danger: 185 28 28; + --color-light: 241 245 249; + --color-dark: 30 41 59; +} +.theme-4.dark { + --color-primary: 67 56 202; + } +/* + |-------------------------------------------------------------------------- + | Fonts + |-------------------------------------------------------------------------- + | + | Import all fonts used in the template, the font configuration can be + | seen in "tailwind.config.js". + | + | Please check this link for more details: + | https://tailwindcss.com/docs/theme + | + */ +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz0dL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzQdL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzwdL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzMdL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz8dL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz4dL-vwnYh2eg.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzAdL-vwnYg.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: local("Roboto Light Italic"), local("Roboto-LightItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xFIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xMIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xEIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xLIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xHIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xGIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local("Roboto Italic"), local("Roboto-Italic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xIIzIXKMny.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc3CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc-CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc2CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc5CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc1CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc0CsTYl4BOQ3o.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: local("Roboto Black Italic"), local("Roboto-BlackItalic"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc6CsTYl4BO.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxFIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxMIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxEIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxLIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxHIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxGIzIXKMnyrYk.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: local("Roboto Thin"), local("Roboto-Thin"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxIIzIXKMny.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: local("Roboto Light"), local("Roboto-Light"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local("Roboto"), local("Roboto-Regular"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: local("Roboto Medium"), local("Roboto-Medium"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local("Roboto Bold"), local("Roboto-Bold"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCRc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfABc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCBc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCxc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfChc4AMP6lbBP.woff2) + format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: local("Roboto Black"), local("Roboto-Black"), + url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBBc4AMP6lQ.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* + |-------------------------------------------------------------------------- + | Mixins + |-------------------------------------------------------------------------- + | + | Import helper mixins. + | + */ +/* Breakpoint up */ +/* Breakpoint down */ +/* Breakpoint only */ +/* + |-------------------------------------------------------------------------- + | 3rd Party Libraries + |-------------------------------------------------------------------------- + | + | Import 3rd party library CSS/SASS files. + | + */ +.breadcrumb{ + display: flex; + align-items: center; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .breadcrumb{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.breadcrumb.breadcrumb-light{ + color: rgb(255 255 255 / var(--tw-text-opacity)); + --tw-text-opacity: 0.9; +} +.breadcrumb.breadcrumb-light .breadcrumb-item:not(:first-child):before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23e8eeff' stroke-width='1' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-right breadcrumb__icon'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + } +.breadcrumb.breadcrumb-light .breadcrumb-item.active{ + color: rgb(255 255 255 / var(--tw-text-opacity)); + --tw-text-opacity: 0.8; +} +.breadcrumb .breadcrumb-item:not(:first-child){ + position: relative; + margin-left: 1.25rem; + padding-left: 0.125rem; +} +.breadcrumb .breadcrumb-item:not(:first-child):before { + content: ""; + width: 14px; + height: 14px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-right breadcrumb__icon'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 100%; + margin-left: -1.125rem; + position: absolute; + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + } +.breadcrumb .breadcrumb-item.active{ + cursor: text; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.dark .breadcrumb .breadcrumb-item.active{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .breadcrumb .breadcrumb-item:not(:first-child):before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23718096' stroke-width='1' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-right breadcrumb__icon'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + } +@media (max-width: calc(640px - 1px)) { + .form-inline{ + display: block; + } + .form-inline .form-label{ + margin-bottom: 0.5rem; + margin-right: 0px; + text-align: left; + } + } +* > .intro-x:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .-intro-x:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .intro-y:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .-intro-y:nth-child(1) { + z-index: calc(50 - 1); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); + } +* > .intro-x:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .-intro-x:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .intro-y:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .-intro-y:nth-child(2) { + z-index: calc(50 - 2); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); + } +* > .intro-x:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .-intro-x:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .intro-y:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .-intro-y:nth-child(3) { + z-index: calc(50 - 3); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); + } +* > .intro-x:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .-intro-x:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .intro-y:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .-intro-y:nth-child(4) { + z-index: calc(50 - 4); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); + } +* > .intro-x:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .-intro-x:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .intro-y:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .-intro-y:nth-child(5) { + z-index: calc(50 - 5); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); + } +* > .intro-x:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .-intro-x:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .intro-y:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .-intro-y:nth-child(6) { + z-index: calc(50 - 6); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); + } +* > .intro-x:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .-intro-x:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .intro-y:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .-intro-y:nth-child(7) { + z-index: calc(50 - 7); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); + } +* > .intro-x:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .-intro-x:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .intro-y:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .-intro-y:nth-child(8) { + z-index: calc(50 - 8); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); + } +* > .intro-x:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .-intro-x:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .intro-y:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .-intro-y:nth-child(9) { + z-index: calc(50 - 9); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); + } +* > .intro-x:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .-intro-x:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .intro-y:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .-intro-y:nth-child(10) { + z-index: calc(50 - 10); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); + } +* > .intro-x:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .-intro-x:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .intro-y:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .-intro-y:nth-child(11) { + z-index: calc(50 - 11); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); + } +* > .intro-x:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .-intro-x:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .intro-y:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .-intro-y:nth-child(12) { + z-index: calc(50 - 12); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); + } +* > .intro-x:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .-intro-x:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .intro-y:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .-intro-y:nth-child(13) { + z-index: calc(50 - 13); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); + } +* > .intro-x:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .-intro-x:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .intro-y:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .-intro-y:nth-child(14) { + z-index: calc(50 - 14); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); + } +* > .intro-x:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .-intro-x:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .intro-y:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .-intro-y:nth-child(15) { + z-index: calc(50 - 15); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); + } +* > .intro-x:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .-intro-x:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .intro-y:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .-intro-y:nth-child(16) { + z-index: calc(50 - 16); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); + } +* > .intro-x:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .-intro-x:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .intro-y:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .-intro-y:nth-child(17) { + z-index: calc(50 - 17); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); + } +* > .intro-x:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .-intro-x:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .intro-y:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .-intro-y:nth-child(18) { + z-index: calc(50 - 18); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); + } +* > .intro-x:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .-intro-x:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .intro-y:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .-intro-y:nth-child(19) { + z-index: calc(50 - 19); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); + } +* > .intro-x:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .-intro-x:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .intro-y:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .-intro-y:nth-child(20) { + z-index: calc(50 - 20); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); + } +* > .intro-x:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .-intro-x:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .intro-y:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .-intro-y:nth-child(21) { + z-index: calc(50 - 21); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); + } +* > .intro-x:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .-intro-x:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .intro-y:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .-intro-y:nth-child(22) { + z-index: calc(50 - 22); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); + } +* > .intro-x:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .-intro-x:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .intro-y:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .-intro-y:nth-child(23) { + z-index: calc(50 - 23); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); + } +* > .intro-x:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .-intro-x:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .intro-y:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .-intro-y:nth-child(24) { + z-index: calc(50 - 24); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); + } +* > .intro-x:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .-intro-x:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .intro-y:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .-intro-y:nth-child(25) { + z-index: calc(50 - 25); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); + } +* > .intro-x:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .-intro-x:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .intro-y:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .-intro-y:nth-child(26) { + z-index: calc(50 - 26); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); + } +* > .intro-x:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .-intro-x:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .intro-y:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .-intro-y:nth-child(27) { + z-index: calc(50 - 27); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); + } +* > .intro-x:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .-intro-x:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .intro-y:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .-intro-y:nth-child(28) { + z-index: calc(50 - 28); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); + } +* > .intro-x:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .-intro-x:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .intro-y:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .-intro-y:nth-child(29) { + z-index: calc(50 - 29); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); + } +* > .intro-x:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .-intro-x:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .intro-y:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .-intro-y:nth-child(30) { + z-index: calc(50 - 30); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); + } +* > .intro-x:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .-intro-x:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .intro-y:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .-intro-y:nth-child(31) { + z-index: calc(50 - 31); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); + } +* > .intro-x:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .-intro-x:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .intro-y:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .-intro-y:nth-child(32) { + z-index: calc(50 - 32); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); + } +* > .intro-x:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .-intro-x:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .intro-y:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .-intro-y:nth-child(33) { + z-index: calc(50 - 33); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); + } +* > .intro-x:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .-intro-x:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .intro-y:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .-intro-y:nth-child(34) { + z-index: calc(50 - 34); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); + } +* > .intro-x:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .-intro-x:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .intro-y:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .-intro-y:nth-child(35) { + z-index: calc(50 - 35); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); + } +* > .intro-x:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .-intro-x:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .intro-y:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .-intro-y:nth-child(36) { + z-index: calc(50 - 36); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); + } +* > .intro-x:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .-intro-x:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .intro-y:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .-intro-y:nth-child(37) { + z-index: calc(50 - 37); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); + } +* > .intro-x:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .-intro-x:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .intro-y:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .-intro-y:nth-child(38) { + z-index: calc(50 - 38); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); + } +* > .intro-x:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .-intro-x:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .intro-y:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .-intro-y:nth-child(39) { + z-index: calc(50 - 39); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); + } +* > .intro-x:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .-intro-x:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .intro-y:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .-intro-y:nth-child(40) { + z-index: calc(50 - 40); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); + } +* > .intro-x:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .-intro-x:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .intro-y:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .-intro-y:nth-child(41) { + z-index: calc(50 - 41); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); + } +* > .intro-x:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .-intro-x:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .intro-y:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .-intro-y:nth-child(42) { + z-index: calc(50 - 42); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); + } +* > .intro-x:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .-intro-x:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .intro-y:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .-intro-y:nth-child(43) { + z-index: calc(50 - 43); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); + } +* > .intro-x:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .-intro-x:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .intro-y:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .-intro-y:nth-child(44) { + z-index: calc(50 - 44); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); + } +* > .intro-x:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .-intro-x:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .intro-y:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .-intro-y:nth-child(45) { + z-index: calc(50 - 45); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); + } +* > .intro-x:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .-intro-x:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .intro-y:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .-intro-y:nth-child(46) { + z-index: calc(50 - 46); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); + } +* > .intro-x:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .-intro-x:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .intro-y:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .-intro-y:nth-child(47) { + z-index: calc(50 - 47); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); + } +* > .intro-x:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .-intro-x:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .intro-y:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .-intro-y:nth-child(48) { + z-index: calc(50 - 48); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); + } +* > .intro-x:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .-intro-x:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .intro-y:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .-intro-y:nth-child(49) { + z-index: calc(50 - 49); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); + } +* > .intro-x:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateX(50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +* > .-intro-x:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateX(-50px); + -webkit-animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +* > .intro-y:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateY(50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +* > .-intro-y:nth-child(50) { + z-index: calc(50 - 50); + opacity: 0; + position: relative; + transform: translateY(-50px); + -webkit-animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); + } +@-webkit-keyframes intro-x-animation { + 100% { + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-x-animation { + 100% { + opacity: 1; + transform: translateX(0px); + } +} +@-webkit-keyframes intro-y-animation { + 100% { + opacity: 1; + transform: translateY(0px); + } +} +@keyframes intro-y-animation { + 100% { + opacity: 1; + transform: translateY(0px); + } +} +@media (max-width: calc(640px - 1px)) { + .modal.modal-slide-over.show > .modal-dialog .modal-content > [data-tw-dismiss="modal"]{ + margin-left: -2.5rem; + } + .pagination{ + margin-right: 0px; + width: 100%; + } + .pagination .page-item{ + flex: 1 1 0%; + } + .pagination .page-item:nth-child(1) .page-link, .pagination .page-item:nth-child(2) .page-link, .pagination .page-item:nth-child(3) .page-link, .pagination .page-item:nth-child(7) .page-link, .pagination .page-item:nth-child(8) .page-link, .pagination .page-item:nth-child(9) .page-link{ + padding-left: 0.25rem; + padding-right: 0.25rem; + } + .pagination .page-item .page-link{ + margin-right: 0px; + min-width: 0px; + } + } +.table{ + width: 100%; + text-align: left; +} +.table thead.table-dark{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .table thead.table-dark{ + background-color: rgb(0 0 0 / 0.3); +} +.table thead.table-dark tr th{ + border-bottom-width: 0px; +} +.table thead.table-light{ + background-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .table thead.table-light{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.table thead.table-light tr th{ + border-bottom-width: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.table th{ + border-bottom-width: 2px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + font-weight: 500; +} +.dark .table th{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table td{ + border-bottom-width: 1px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.dark .table td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table.table-dark{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-dark) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .table.table-dark{ + background-color: rgb(0 0 0 / 0.3); +} +.table.table-dark th{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-600) / var(--tw-border-opacity)); +} +.dark .table.table-dark th{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table.table-dark td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-600) / var(--tw-border-opacity)); +} +.dark .table.table-dark td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.table.table-bordered th, .table.table-bordered td{ + border-left-width: 1px; + border-right-width: 1px; + border-top-width: 1px; +} +.table.table-hover tr:hover td{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .table.table-hover tr:hover td{ + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.5; +} +.table.table-striped tr:nth-of-type(odd) td{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .table.table-striped tr:nth-of-type(odd) td{ + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.5; +} +.table.table-sm th{ + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.table.table-sm td{ + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +/* + +github.com style (c) Vasily Polovnyov + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} +.hljs-string, +.hljs-doctag { + color: #d14; +} +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} +.hljs-subst { + font-weight: normal; +} +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} +.hljs-regexp, +.hljs-link { + color: #009926; +} +.hljs-symbol, +.hljs-bullet { + color: #990073; +} +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} +.hljs-meta { + color: #999; + font-weight: bold; +} +.hljs-deletion { + background: #fdd; +} +.hljs-addition { + background: #dfd; +} +.hljs-emphasis { + font-style: italic; +} +.hljs-strong { + font-weight: bold; +} +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0} +[data-tippy-root]{max-width:calc(100vw - 10px)} +.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity} +.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0} +.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top} +.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0} +.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom} +.tippy-box[data-placement^=left]>.tippy-arrow{right:0} +.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left} +.tippy-box[data-placement^=right]>.tippy-arrow{left:0} +.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right} +.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)} +.tippy-arrow{width:16px;height:16px;color:#333} +.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid} +.tippy-content{position:relative;padding:5px 9px;z-index:1} +.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);background-color:#fff} +.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff} +.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff} +.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff} +.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff} +.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff} +.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff} +.tippy-box[data-placement^=top]>.tippy-svg-arrow{bottom:0} +.tippy-box[data-placement^=top]>.tippy-svg-arrow:after,.tippy-box[data-placement^=top]>.tippy-svg-arrow>svg{top:16px;transform:rotate(180deg)} +.tippy-box[data-placement^=bottom]>.tippy-svg-arrow{top:0} +.tippy-box[data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px} +.tippy-box[data-placement^=left]>.tippy-svg-arrow{right:0} +.tippy-box[data-placement^=left]>.tippy-svg-arrow:after,.tippy-box[data-placement^=left]>.tippy-svg-arrow>svg{transform:rotate(90deg);top:calc(50% - 3px);left:11px} +.tippy-box[data-placement^=right]>.tippy-svg-arrow{left:0} +.tippy-box[data-placement^=right]>.tippy-svg-arrow:after,.tippy-box[data-placement^=right]>.tippy-svg-arrow>svg{transform:rotate(-90deg);top:calc(50% - 3px);right:11px} +.tippy-svg-arrow{width:16px;height:16px;fill:#333;text-align:initial} +.tippy-svg-arrow,.tippy-svg-arrow>svg{position:absolute} +.tippy-box[data-animation=shift-away][data-state=hidden]{opacity:0} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=top]{transform:translateY(10px)} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=bottom]{transform:translateY(-10px)} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=left]{transform:translateX(10px)} +.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=right]{transform:translateX(-10px)} +/*! + * Toastify js 1.11.2 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ +.toastify { + padding: 12px 20px; + color: #ffffff; + display: inline-block; + box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(77, 96, 232, 0.3); + background: linear-gradient(135deg, #73a5ff, #5477f5); + position: fixed; + opacity: 0; + transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1); + border-radius: 2px; + cursor: pointer; + text-decoration: none; + max-width: calc(50% - 20px); + z-index: 2147483647; +} +.toastify.on { + opacity: 1; +} +.toast-close { + opacity: 0.4; + padding: 0 5px; +} +.toastify-right { + right: 15px; +} +.toastify-left { + left: 15px; +} +.toastify-top { + top: -150px; +} +.toastify-bottom { + bottom: -150px; +} +.toastify-rounded { + border-radius: 25px; +} +.toastify-avatar { + width: 1.5em; + height: 1.5em; + margin: -7px 5px; + border-radius: 2px; +} +.toastify-center { + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + max-width: -webkit-fit-content; + max-width: fit-content; + max-width: -moz-fit-content; +} +@media only screen and (max-width: 360px) { + .toastify-right, .toastify-left { + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + max-width: -webkit-fit-content; + max-width: -moz-fit-content; + max-width: fit-content; + } +} +@-webkit-keyframes passing-through { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30%, 70% { + opacity: 1; + transform: translateY(0px); + } + 100% { + opacity: 0; + transform: translateY(-40px); + } +} +@keyframes passing-through { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30%, 70% { + opacity: 1; + transform: translateY(0px); + } + 100% { + opacity: 0; + transform: translateY(-40px); + } +} +@-webkit-keyframes slide-in { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30% { + opacity: 1; + transform: translateY(0px); + } +} +@keyframes slide-in { + 0% { + opacity: 0; + transform: translateY(40px); + } + 30% { + opacity: 1; + transform: translateY(0px); + } +} +@-webkit-keyframes pulse { + 0% { + transform: scale(1); + } + 10% { + transform: scale(1.1); + } + 20% { + transform: scale(1); + } +} +@keyframes pulse { + 0% { + transform: scale(1); + } + 10% { + transform: scale(1.1); + } + 20% { + transform: scale(1); + } +} +.dropzone, .dropzone * { + box-sizing: border-box; +} +.dropzone { + min-height: 150px; + border: 2px solid rgba(0, 0, 0, 0.3); + background: white; + padding: 20px 20px; +} +.dropzone.dz-clickable { + cursor: pointer; +} +.dropzone.dz-clickable * { + cursor: default; +} +.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * { + cursor: pointer; +} +.dropzone.dz-started .dz-message { + display: none; +} +.dropzone.dz-drag-hover { + border-style: solid; +} +.dropzone.dz-drag-hover .dz-message { + opacity: 0.5; +} +.dropzone .dz-message { + text-align: center; + margin: 2em 0; +} +.dropzone .dz-message .dz-button { + background: none; + color: inherit; + border: none; + padding: 0; + font: inherit; + cursor: pointer; + outline: inherit; +} +.dropzone .dz-preview { + position: relative; + display: inline-block; + vertical-align: top; + margin: 16px; + min-height: 100px; +} +.dropzone .dz-preview:hover { + z-index: 1000; +} +.dropzone .dz-preview:hover .dz-details { + opacity: 1; +} +.dropzone .dz-preview.dz-file-preview .dz-image { + border-radius: 20px; + background: #999; + background: linear-gradient(to bottom, #eee, #ddd); +} +.dropzone .dz-preview.dz-file-preview .dz-details { + opacity: 1; +} +.dropzone .dz-preview.dz-image-preview { + background: white; +} +.dropzone .dz-preview.dz-image-preview .dz-details { + transition: opacity 0.2s linear; +} +.dropzone .dz-preview .dz-remove { + font-size: 14px; + text-align: center; + display: block; + cursor: pointer; + border: none; +} +.dropzone .dz-preview .dz-remove:hover { + text-decoration: underline; +} +.dropzone .dz-preview:hover .dz-details { + opacity: 1; +} +.dropzone .dz-preview .dz-details { + z-index: 20; + position: absolute; + top: 0; + left: 0; + opacity: 0; + font-size: 13px; + min-width: 100%; + max-width: 100%; + padding: 2em 1em; + text-align: center; + color: rgba(0, 0, 0, 0.9); + line-height: 150%; +} +.dropzone .dz-preview .dz-details .dz-size { + margin-bottom: 1em; + font-size: 16px; +} +.dropzone .dz-preview .dz-details .dz-filename { + white-space: nowrap; +} +.dropzone .dz-preview .dz-details .dz-filename:hover span { + border: 1px solid rgba(200, 200, 200, 0.8); + background-color: rgba(255, 255, 255, 0.8); +} +.dropzone .dz-preview .dz-details .dz-filename:not(:hover) { + overflow: hidden; + text-overflow: ellipsis; +} +.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { + border: 1px solid transparent; +} +.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { + background-color: rgba(255, 255, 255, 0.4); + padding: 0 0.4em; + border-radius: 3px; +} +.dropzone .dz-preview:hover .dz-image img { + transform: scale(1.05, 1.05); + filter: blur(8px); +} +.dropzone .dz-preview .dz-image { + border-radius: 20px; + overflow: hidden; + width: 120px; + height: 120px; + position: relative; + display: block; + z-index: 10; +} +.dropzone .dz-preview .dz-image img { + display: block; +} +.dropzone .dz-preview.dz-success .dz-success-mark { + -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); +} +.dropzone .dz-preview.dz-error .dz-error-mark { + opacity: 1; + -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); +} +.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { + pointer-events: none; + opacity: 0; + z-index: 500; + position: absolute; + display: block; + top: 50%; + left: 50%; + margin-left: -27px; + margin-top: -27px; +} +.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg { + display: block; + width: 54px; + height: 54px; +} +.dropzone .dz-preview.dz-processing .dz-progress { + opacity: 1; + transition: all 0.2s linear; +} +.dropzone .dz-preview.dz-complete .dz-progress { + opacity: 0; + transition: opacity 0.4s ease-in; +} +.dropzone .dz-preview:not(.dz-processing) .dz-progress { + -webkit-animation: pulse 6s ease infinite; + animation: pulse 6s ease infinite; +} +.dropzone .dz-preview .dz-progress { + opacity: 1; + z-index: 1000; + pointer-events: none; + position: absolute; + height: 16px; + left: 50%; + top: 50%; + margin-top: -8px; + width: 80px; + margin-left: -40px; + background: rgba(255, 255, 255, 0.9); + -webkit-transform: scale(1); + border-radius: 8px; + overflow: hidden; +} +.dropzone .dz-preview .dz-progress .dz-upload { + background: #333; + background: linear-gradient(to bottom, #666, #444); + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 0; + transition: width 300ms ease-in-out; +} +.dropzone .dz-preview.dz-error .dz-error-message { + display: block; +} +.dropzone .dz-preview.dz-error:hover .dz-error-message { + opacity: 1; + pointer-events: auto; +} +.dropzone .dz-preview .dz-error-message { + pointer-events: none; + z-index: 1000; + position: absolute; + display: block; + display: none; + opacity: 0; + transition: opacity 0.3s ease; + border-radius: 8px; + font-size: 13px; + top: 130px; + left: -10px; + width: 140px; + background: #be2626; + background: linear-gradient(to bottom, #be2626, #a92222); + padding: 0.5em 1.2em; + color: white; +} +.dropzone .dz-preview .dz-error-message:after { + content: ""; + position: absolute; + top: -6px; + left: 64px; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #be2626; +} +img[data-action="zoom"] { + cursor: zoom-in; +} +.zoom-img, +.zoom-img-wrap { + position: relative; + z-index: 666; + transition: all 300ms; +} +img.zoom-img { + cursor: zoom-out; +} +.zoom-overlay { + cursor: zoom-out; + z-index: 420; + background: #fff; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + filter: "alpha(opacity=0)"; + opacity: 0; + transition: opacity 300ms; +} +.zoom-overlay-open .zoom-overlay { + filter: "alpha(opacity=100)"; + opacity: 1; +} +/* Tabulator v4.9.3 (c) Oliver Folkerd */ +.tabulator { + position: relative; + border: 1px solid #999; + background-color: #888; + font-size: 14px; + text-align: left; + overflow: hidden; + transform: translatez(0); +} +.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table { + min-width: 100%; +} +.tabulator[tabulator-layout="fitDataTable"] { + display: inline-block; +} +.tabulator.tabulator-block-select { + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; +} +.tabulator .tabulator-header { + position: relative; + box-sizing: border-box; + width: 100%; + border-bottom: 1px solid #999; + background-color: #e6e6e6; + color: #555; + font-weight: bold; + white-space: nowrap; + overflow: hidden; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +.tabulator .tabulator-header.tabulator-header-hidden { + display: none; +} +.tabulator .tabulator-header .tabulator-col { + display: inline-block; + position: relative; + box-sizing: border-box; + border-right: 1px solid #aaa; + background: #e6e6e6; + text-align: left; + vertical-align: bottom; + overflow: hidden; +} +.tabulator .tabulator-header .tabulator-col.tabulator-moving { + position: absolute; + border: 1px solid #999; + background: #cdcdcd; + pointer-events: none; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content { + box-sizing: border-box; + position: relative; + padding: 4px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { + padding: 0 8px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover { + cursor: pointer; + opacity: .6; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { + position: relative; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { + box-sizing: border-box; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: bottom; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { + box-sizing: border-box; + width: 100%; + border: 1px solid #999; + padding: 1px; + background: #fff; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { + width: calc(100% - 22px); +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { + display: flex; + align-items: center; + position: absolute; + top: 0; + bottom: 0; + right: 4px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #bbb; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { + position: relative; + display: flex; + border-top: 1px solid #aaa; + overflow: hidden; + margin-right: -1px; +} +.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { + display: none; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { + position: relative; + box-sizing: border-box; + margin-top: 2px; + width: 100%; + text-align: center; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { + height: auto !important; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { + margin-top: 3px; +} +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { + width: 0; + height: 0; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { + padding-right: 25px; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover { + cursor: pointer; + background-color: #cdcdcd; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { + color: #bbb; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + border-top: none; + border-bottom: 6px solid #bbb; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter { + color: #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + border-top: none; + border-bottom: 6px solid #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter { + color: #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { + border-bottom: none; + border-top: 6px solid #666; + color: #666; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { + -ms-writing-mode: tb-rl; + writing-mode: vertical-rl; + -webkit-text-orientation: mixed; + text-orientation: mixed; + display: flex; + align-items: center; + justify-content: center; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { + transform: rotate(180deg); +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { + padding-right: 0; + padding-top: 20px; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { + padding-right: 0; + padding-bottom: 20px; +} +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { + justify-content: center; + left: 0; + right: 0; + top: 4px; + bottom: auto; +} +.tabulator .tabulator-header .tabulator-frozen { + display: inline-block; + position: absolute; + z-index: 10; +} +.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { + border-right: 2px solid #aaa; +} +.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { + border-left: 2px solid #aaa; +} +.tabulator .tabulator-header .tabulator-calcs-holder { + box-sizing: border-box; + min-width: 600%; + background: #f3f3f3 !important; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + overflow: hidden; +} +.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { + background: #f3f3f3 !important; +} +.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { + display: none; +} +.tabulator .tabulator-header .tabulator-frozen-rows-holder { + min-width: 600%; +} +.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { + display: none; +} +.tabulator .tabulator-tableHolder { + position: relative; + width: 100%; + white-space: nowrap; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.tabulator .tabulator-tableHolder:focus { + outline: none; +} +.tabulator .tabulator-tableHolder .tabulator-placeholder { + box-sizing: border-box; + display: flex; + align-items: center; + width: 100%; +} +.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] { + min-height: 100%; + min-width: 100%; +} +.tabulator .tabulator-tableHolder .tabulator-placeholder span { + display: inline-block; + margin: 0 auto; + padding: 10px; + color: #ccc; + font-weight: bold; + font-size: 20px; +} +.tabulator .tabulator-tableHolder .tabulator-table { + position: relative; + display: inline-block; + background-color: #fff; + white-space: nowrap; + overflow: visible; + color: #333; +} +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs { + font-weight: bold; + background: #e2e2e2 !important; +} +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { + border-bottom: 2px solid #aaa; +} +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { + border-top: 2px solid #aaa; +} +.tabulator .tabulator-footer { + padding: 5px 10px; + border-top: 1px solid #999; + background-color: #e6e6e6; + text-align: right; + color: #555; + font-weight: bold; + white-space: nowrap; + -ms-user-select: none; + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +.tabulator .tabulator-footer .tabulator-calcs-holder { + box-sizing: border-box; + width: calc(100% + 20px); + margin: -5px -10px 5px -10px; + text-align: left; + background: #f3f3f3 !important; + border-bottom: 1px solid #aaa; + border-top: 1px solid #aaa; + overflow: hidden; +} +.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { + background: #f3f3f3 !important; +} +.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { + display: none; +} +.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { + margin-bottom: -5px; + border-bottom: none; +} +.tabulator .tabulator-footer .tabulator-paginator { + color: #555; + font-family: inherit; + font-weight: inherit; + font-size: inherit; +} +.tabulator .tabulator-footer .tabulator-page-size { + display: inline-block; + margin: 0 5px; + padding: 2px 5px; + border: 1px solid #aaa; + border-radius: 3px; +} +.tabulator .tabulator-footer .tabulator-pages { + margin: 0 7px; +} +.tabulator .tabulator-footer .tabulator-page { + display: inline-block; + margin: 0 2px; + padding: 2px 5px; + border: 1px solid #aaa; + border-radius: 3px; + background: rgba(255, 255, 255, 0.2); +} +.tabulator .tabulator-footer .tabulator-page.active { + color: #d00; +} +.tabulator .tabulator-footer .tabulator-page:disabled { + opacity: .5; +} +.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); + color: #fff; +} +.tabulator .tabulator-col-resize-handle { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 5px; +} +.tabulator .tabulator-col-resize-handle.prev { + left: 0; + right: auto; +} +.tabulator .tabulator-col-resize-handle:hover { + cursor: ew-resize; +} +.tabulator .tabulator-loader { + position: absolute; + display: flex; + align-items: center; + top: 0; + left: 0; + z-index: 100; + height: 100%; + width: 100%; + background: rgba(0, 0, 0, 0.4); + text-align: center; +} +.tabulator .tabulator-loader .tabulator-loader-msg { + display: inline-block; + margin: 0 auto; + padding: 10px 20px; + border-radius: 10px; + background: #fff; + font-weight: bold; + font-size: 16px; +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { + border: 4px solid #333; + color: #000; +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { + border: 4px solid #D00; + color: #590000; +} +.tabulator-row { + position: relative; + box-sizing: border-box; + min-height: 22px; + background-color: #fff; +} +.tabulator-row.tabulator-row-even { + background-color: #EFEFEF; +} +.tabulator-row.tabulator-selectable:hover { + background-color: #bbb; + cursor: pointer; +} +.tabulator-row.tabulator-selected { + background-color: #9ABCEA; +} +.tabulator-row.tabulator-selected:hover { + background-color: #769BCC; + cursor: pointer; +} +.tabulator-row.tabulator-row-moving { + border: 1px solid #000; + background: #fff; +} +.tabulator-row.tabulator-moving { + position: absolute; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + pointer-events: none; + z-index: 15; +} +.tabulator-row .tabulator-row-resize-handle { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 5px; +} +.tabulator-row .tabulator-row-resize-handle.prev { + top: 0; + bottom: auto; +} +.tabulator-row .tabulator-row-resize-handle:hover { + cursor: ns-resize; +} +.tabulator-row .tabulator-frozen { + display: inline-block; + position: absolute; + background-color: inherit; + z-index: 10; +} +.tabulator-row .tabulator-frozen.tabulator-frozen-left { + border-right: 2px solid #aaa; +} +.tabulator-row .tabulator-frozen.tabulator-frozen-right { + border-left: 2px solid #aaa; +} +.tabulator-row .tabulator-responsive-collapse { + box-sizing: border-box; + padding: 5px; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; +} +.tabulator-row .tabulator-responsive-collapse:empty { + display: none; +} +.tabulator-row .tabulator-responsive-collapse table { + font-size: 14px; +} +.tabulator-row .tabulator-responsive-collapse table tr td { + position: relative; +} +.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { + padding-right: 10px; +} +.tabulator-row .tabulator-cell { + display: inline-block; + position: relative; + box-sizing: border-box; + padding: 4px; + border-right: 1px solid #aaa; + vertical-align: middle; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.tabulator-row .tabulator-cell.tabulator-editing { + border: 1px solid #1D68CD; + outline: none; + padding: 0; +} +.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select { + border: 1px; + background: transparent; +} +.tabulator-row .tabulator-cell.tabulator-validation-fail { + border: 1px solid #dd0000; +} +.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select { + border: 1px; + background: transparent; + color: #dd0000; +} +.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { + display: none; +} +.tabulator-row .tabulator-cell.tabulator-row-handle { + display: inline-flex; + align-items: center; + justify-content: center; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { + width: 80%; +} +.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { + width: 100%; + height: 3px; + margin-top: 2px; + background: #666; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-branch { + display: inline-block; + vertical-align: middle; + height: 9px; + width: 7px; + margin-top: -9px; + margin-right: 5px; + border-bottom-left-radius: 1px; + border-left: 2px solid #aaa; + border-bottom: 2px solid #aaa; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control { + display: inline-flex; + justify-content: center; + align-items: center; + vertical-align: middle; + height: 11px; + width: 11px; + margin-right: 5px; + border: 1px solid #333; + border-radius: 2px; + background: rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: transparent; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: #333; +} +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + height: 15px; + width: 15px; + border-radius: 20px; + background: #666; + color: #fff; + font-weight: bold; + font-size: 1.1em; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { + opacity: .7; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { + display: initial; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { + display: none; +} +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { + display: none; +} +.tabulator-row .tabulator-cell .tabulator-traffic-light { + display: inline-block; + height: 14px; + width: 14px; + border-radius: 14px; +} +.tabulator-row.tabulator-group { + box-sizing: border-box; + border-bottom: 1px solid #999; + border-right: 1px solid #aaa; + border-top: 1px solid #999; + padding: 5px; + padding-left: 10px; + background: #ccc; + font-weight: bold; + min-width: 100%; +} +.tabulator-row.tabulator-group:hover { + cursor: pointer; + background-color: rgba(0, 0, 0, 0.1); +} +.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { + margin-right: 10px; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid #666; + border-bottom: 0; +} +.tabulator-row.tabulator-group.tabulator-group-level-1 { + padding-left: 30px; +} +.tabulator-row.tabulator-group.tabulator-group-level-2 { + padding-left: 50px; +} +.tabulator-row.tabulator-group.tabulator-group-level-3 { + padding-left: 70px; +} +.tabulator-row.tabulator-group.tabulator-group-level-4 { + padding-left: 90px; +} +.tabulator-row.tabulator-group.tabulator-group-level-5 { + padding-left: 110px; +} +.tabulator-row.tabulator-group .tabulator-group-toggle { + display: inline-block; +} +.tabulator-row.tabulator-group .tabulator-arrow { + display: inline-block; + width: 0; + height: 0; + margin-right: 16px; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + border-right: 0; + border-left: 6px solid #666; + vertical-align: middle; +} +.tabulator-row.tabulator-group span { + margin-left: 10px; + color: #d00; +} +.tabulator-menu { + position: absolute; + display: inline-block; + box-sizing: border-box; + background: #fff; + border: 1px solid #aaa; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); + font-size: 14px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 10000; +} +.tabulator-menu .tabulator-menu-item { + position: relative; + box-sizing: border-box; + padding: 5px 10px; + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; +} +.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { + opacity: .5; +} +.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { + cursor: pointer; + background: #EFEFEF; +} +.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { + padding-right: 25px; +} +.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { + display: inline-block; + position: absolute; + top: calc(5px + .4em); + right: 10px; + height: 7px; + width: 7px; + content: ''; + border-width: 1px 1px 0 0; + border-style: solid; + border-color: #aaa; + vertical-align: top; + transform: rotate(45deg); +} +.tabulator-menu .tabulator-menu-separator { + border-top: 1px solid #aaa; +} +.tabulator-edit-select-list { + position: absolute; + display: inline-block; + box-sizing: border-box; + max-height: 200px; + background: #fff; + border: 1px solid #aaa; + font-size: 14px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 10000; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item { + padding: 4px; + color: #333; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item.active { + color: #fff; + background: #1D68CD; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { + outline: 1px solid rgba(255, 255, 255, 0.5); +} +.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { + outline: 1px solid #1D68CD; +} +.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { + cursor: pointer; + color: #fff; + background: #1D68CD; +} +.tabulator-edit-select-list .tabulator-edit-select-list-notice { + padding: 4px; + color: #333; + text-align: center; +} +.tabulator-edit-select-list .tabulator-edit-select-list-group { + border-bottom: 1px solid #aaa; + padding: 4px; + padding-top: 6px; + color: #333; + font-weight: bold; +} +.tabulator.tabulator-ltr { + direction: ltr; +} +.tabulator.tabulator-rtl { + text-align: initial; + direction: rtl; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col { + text-align: initial; + border-left: 1px solid #aaa; + border-right: initial; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { + margin-right: initial; + margin-left: -1px; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { + padding-right: 0; + padding-left: 25px; +} +.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { + left: 8px; + right: initial; +} +.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { + border-right: initial; + border-left: 1px solid #aaa; +} +.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { + margin-right: initial; + margin-left: 5px; + border-bottom-left-radius: initial; + border-bottom-right-radius: 1px; + border-left: initial; + border-right: 2px solid #aaa; +} +.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { + margin-right: initial; + margin-left: 5px; +} +.tabulator.tabulator-rtl .tabulator-col-resize-handle { + position: absolute; + left: 0; + right: auto; +} +.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { + right: 0; + left: auto; +} +.tabulator-print-fullscreen { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 10000; +} +body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { + display: none !important; +} +.tabulator-print-table { + border-collapse: collapse; +} +.tabulator-print-table .tabulator-data-tree-branch { + display: inline-block; + vertical-align: middle; + height: 9px; + width: 7px; + margin-top: -9px; + margin-right: 5px; + border-bottom-left-radius: 1px; + border-left: 2px solid #aaa; + border-bottom: 2px solid #aaa; +} +.tabulator-print-table .tabulator-print-table-group { + box-sizing: border-box; + border-bottom: 1px solid #999; + border-right: 1px solid #aaa; + border-top: 1px solid #999; + padding: 5px; + padding-left: 10px; + background: #ccc; + font-weight: bold; + min-width: 100%; +} +.tabulator-print-table .tabulator-print-table-group:hover { + cursor: pointer; + background-color: rgba(0, 0, 0, 0.1); +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { + margin-right: 10px; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid #666; + border-bottom: 0; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { + padding-left: 30px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { + padding-left: 50px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { + padding-left: 70px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { + padding-left: 90px !important; +} +.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { + padding-left: 110px !important; +} +.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { + display: inline-block; +} +.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { + display: inline-block; + width: 0; + height: 0; + margin-right: 16px; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + border-right: 0; + border-left: 6px solid #666; + vertical-align: middle; +} +.tabulator-print-table .tabulator-print-table-group span { + margin-left: 10px; + color: #d00; +} +.tabulator-print-table .tabulator-data-tree-control { + display: inline-flex; + justify-content: center; + align-items: center; + vertical-align: middle; + height: 11px; + width: 11px; + margin-right: 5px; + border: 1px solid #333; + border-radius: 2px; + background: rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.tabulator-print-table .tabulator-data-tree-control:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: transparent; +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: #333; +} +.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} +/** + * tom-select.css (v1.7.8) + * Copyright (c) contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy of the License at: + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + * ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + * + */ +.ts-control.plugin-drag_drop.multi > .ts-input > div.ui-sortable-placeholder { + visibility: visible !important; + background: #f2f2f2 !important; + background: rgba(0, 0, 0, 0.06) !important; + border: 0 none !important; + box-shadow: inset 0 0 12px 4px #fff; } +.ts-control.plugin-drag_drop .ui-sortable-placeholder::after { + content: '!'; + visibility: hidden; } +.ts-control.plugin-drag_drop .ui-sortable-helper { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } +.plugin-checkbox_options .option input { + margin-right: 0.5rem; } +.plugin-clear_button .items { + padding-right: calc( 1em + (3 * 6px)) !important; } +.plugin-clear_button .clear-button { + opacity: 0; + position: absolute; + top: 8px; + right: calc(8px - 6px); + margin-right: 0 !important; + background: transparent !important; + transition: opacity 0.5s; + cursor: pointer; } +.plugin-clear_button.single .clear-button { + right: calc(8px - 6px + 2rem); } +.plugin-clear_button .has-items.focus .clear-button, +.plugin-clear_button:hover .has-items .clear-button { + opacity: 1; } +.ts-control .dropdown-header { + position: relative; + padding: 10px 8px; + border-bottom: 1px solid #d0d0d0; + background: #f8f8f8; + border-radius: 3px 3px 0 0; } +.ts-control .dropdown-header-close { + position: absolute; + right: 8px; + top: 50%; + color: #303030; + opacity: 0.4; + margin-top: -12px; + line-height: 20px; + font-size: 20px !important; } +.ts-control .dropdown-header-close:hover { + color: black; } +.plugin-dropdown_input .ts-input.focus { + box-shadow: none; + border: 1px solid #d0d0d0; } +.plugin-dropdown_input .dropdown-input { + border: 1px solid #d0d0d0; + border-width: 0 0 1px 0; + display: block; + padding: 8px 8px; + box-shadow: none; + width: 100%; + background: transparent; } +.ts-control.plugin-input_autogrow .ts-input.has-items > input { + min-width: 0; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input { + flex: none; + min-width: 4px; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input::-moz-placeholder { + color: transparent; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input:-ms-input-placeholder { + color: transparent; } +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input::placeholder { + color: transparent; } +.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content { + display: flex; } +.ts-dropdown.plugin-optgroup_columns .optgroup { + border-right: 1px solid #f2f2f2; + border-top: 0 none; + flex-grow: 1; + flex-basis: 0; + min-width: 0; } +.ts-dropdown.plugin-optgroup_columns .optgroup:last-child { + border-right: 0 none; } +.ts-dropdown.plugin-optgroup_columns .optgroup:before { + display: none; } +.ts-dropdown.plugin-optgroup_columns .optgroup-header { + border-top: 0 none; } +.ts-control.plugin-remove_button .item { + display: inline-flex; + align-items: center; + padding-right: 0 !important; } +.ts-control.plugin-remove_button .item .remove { + color: inherit; + text-decoration: none; + vertical-align: middle; + display: inline-block; + padding: 2px 6px; + border-left: 1px solid #d0d0d0; + border-radius: 0 2px 2px 0; + box-sizing: border-box; + margin-left: 6px; } +.ts-control.plugin-remove_button .item .remove:hover { + background: rgba(0, 0, 0, 0.05); } +.ts-control.plugin-remove_button .item.active .remove { + border-left-color: #cacaca; } +.ts-control.plugin-remove_button .disabled .item .remove:hover { + background: none; } +.ts-control.plugin-remove_button .disabled .item .remove { + border-left-color: white; } +.ts-control.plugin-remove_button .remove-single { + position: absolute; + right: 0; + top: 0; + font-size: 23px; } +.ts-control { + position: relative; } +.ts-dropdown, +.ts-input, +.ts-input input { + color: #303030; + font-family: inherit; + font-size: 13px; + line-height: 18px; + font-smoothing: inherit; } +.ts-input, +.ts-control.single .ts-input.input-active { + background: #fff; + cursor: text; } +.ts-input { + border: 1px solid #d0d0d0; + padding: 8px 8px; + width: 100%; + overflow: hidden; + position: relative; + z-index: 1; + box-sizing: border-box; + box-shadow: none; + border-radius: 3px; + display: flex; + flex-wrap: wrap; } +.ts-control.multi .ts-input.has-items { + padding: calc( 8px - 2px - 0) 8px calc( 8px - 2px - 3px - 0); } +.ts-input.full { + background-color: #fff; } +.ts-input.disabled, + .ts-input.disabled * { + cursor: default !important; } +.ts-input.focus { + box-shadow: none; } +.ts-input > * { + vertical-align: baseline; + display: inline-block; } +.ts-control.multi .ts-input > div { + cursor: pointer; + margin: 0 3px 3px 0; + padding: 2px 6px; + background: #f2f2f2; + color: #303030; + border: 0 solid #d0d0d0; } +.ts-control.multi .ts-input > div.active { + background: #e8e8e8; + color: #303030; + border: 0 solid #cacaca; } +.ts-control.multi .ts-input.disabled > div, .ts-control.multi .ts-input.disabled > div.active { + color: #7d7c7c; + background: white; + border: 0 solid white; } +.ts-input > input { + flex: 1 1 auto; + min-width: 7rem; + display: inline-block !important; + padding: 0 !important; + min-height: 0 !important; + max-height: none !important; + max-width: 100% !important; + margin: 0 !important; + text-indent: 0 !important; + border: 0 none !important; + background: none !important; + line-height: inherit !important; + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; + box-shadow: none !important; } +.ts-input > input::-ms-clear { + display: none; } +.ts-input > input:focus { + outline: none !important; } +.ts-input.has-items > input { + margin: 0 4px !important; } +.ts-input.dropdown-active::before { + content: ' '; + display: block; + position: absolute; + background: #f0f0f0; + height: 1px; + bottom: 0; + left: 0; + right: 0; } +.ts-input.rtl { + text-align: right; } +.ts-input.rtl.single .ts-input:after { + left: 15px; + right: auto; } +.ts-input.rtl .ts-input > input { + margin: 0 4px 0 -2px !important; } +.ts-input.disabled { + opacity: 0.5; + background-color: #fafafa; } +.input-hidden .ts-input > input { + opacity: 0; + position: absolute; + left: -10000px; } +.ts-dropdown { + position: absolute; + top: 100%; + left: 0; + width: 100%; + z-index: 10; + border: 1px solid #d0d0d0; + background: #fff; + margin: 0.25rem 0 0 0; + border-top: 0 none; + box-sizing: border-box; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0 0 3px 3px; } +.ts-dropdown [data-selectable] { + cursor: pointer; + overflow: hidden; } +.ts-dropdown [data-selectable] .highlight { + background: rgba(125, 168, 208, 0.2); + border-radius: 1px; } +.ts-dropdown .option, + .ts-dropdown .optgroup-header, + .ts-dropdown .no-results, + .ts-dropdown .create { + padding: 5px 8px; } +.ts-dropdown .option, .ts-dropdown [data-disabled], .ts-dropdown [data-disabled] [data-selectable].option { + cursor: inherit; + opacity: 0.5; } +.ts-dropdown [data-selectable].option { + opacity: 1; + cursor: pointer; } +.ts-dropdown .optgroup:first-child .optgroup-header { + border-top: 0 none; } +.ts-dropdown .optgroup-header { + color: #303030; + background: #fff; + cursor: default; } +.ts-dropdown .create:hover, + .ts-dropdown .option:hover, + .ts-dropdown .active { + background-color: #f5fafd; + color: #495c68; } +.ts-dropdown .create:hover.create, + .ts-dropdown .option:hover.create, + .ts-dropdown .active.create { + color: #495c68; } +.ts-dropdown .create { + color: rgba(48, 48, 48, 0.5); } +.ts-dropdown .spinner { + display: inline-block; + width: 30px; + height: 30px; + margin: 5px 8px; } +.ts-dropdown .spinner:after { + content: " "; + display: block; + width: 24px; + height: 24px; + margin: 3px; + border-radius: 50%; + border: 5px solid #d0d0d0; + border-color: #d0d0d0 transparent #d0d0d0 transparent; + -webkit-animation: lds-dual-ring 1.2s linear infinite; + animation: lds-dual-ring 1.2s linear infinite; } +@-webkit-keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } +.ts-dropdown-content { + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + overflow-scrolling: touch; + scroll-behavior: smooth; } +.tns-outer{padding:0 !important} +.tns-outer [hidden]{display:none !important} +.tns-outer [aria-controls],.tns-outer [data-action]{cursor:pointer} +.tns-slider{transition:all 0s} +.tns-slider>.tns-item{box-sizing:border-box} +.tns-horizontal.tns-subpixel{white-space:nowrap} +.tns-horizontal.tns-subpixel>.tns-item{display:inline-block;vertical-align:top;white-space:normal} +.tns-horizontal.tns-no-subpixel:after{content:'';display:table;clear:both} +.tns-horizontal.tns-no-subpixel>.tns-item{float:left} +.tns-horizontal.tns-carousel.tns-no-subpixel>.tns-item{margin-right:-100%} +.tns-no-calc{position:relative;left:0} +.tns-gallery{position:relative;left:0;min-height:1px} +.tns-gallery>.tns-item{position:absolute;left:-100%;transition:transform 0s, opacity 0s} +.tns-gallery>.tns-slide-active{position:relative;left:auto !important} +.tns-gallery>.tns-moving{transition:all 0.25s} +.tns-autowidth{display:inline-block} +.tns-lazy-img{transition:opacity 0.6s;opacity:0.6} +.tns-lazy-img.tns-complete{opacity:1} +.tns-ah{transition:height 0s} +.tns-ovh{overflow:hidden} +.tns-visually-hidden{position:absolute;left:-10000em} +.tns-transparent{opacity:0;visibility:hidden} +.tns-fadeIn{opacity:1;filter:alpha(opacity=100);z-index:0} +.tns-normal,.tns-fadeOut{opacity:0;filter:alpha(opacity=0);z-index:-1} +.tns-vpfix{white-space:nowrap} +.tns-vpfix>div,.tns-vpfix>li{display:inline-block} +.tns-t-subp2{margin:0 auto;width:310px;position:relative;height:10px;overflow:hidden} +.tns-t-ct{width:2333.3333333%;width:calc(100% * 70 / 3);position:absolute;right:0} +.tns-t-ct:after{content:'';display:table;clear:both} +.tns-t-ct>div{width:1.4285714%;width:calc(100% / 70);height:10px;float:left} +[data-simplebar] { + position: relative; + flex-direction: column; + flex-wrap: wrap; + justify-content: flex-start; + align-content: flex-start; + align-items: flex-start; +} +.simplebar-wrapper { + overflow: hidden; + width: inherit; + height: inherit; + max-width: inherit; + max-height: inherit; +} +.simplebar-mask { + direction: inherit; + position: absolute; + overflow: hidden; + padding: 0; + margin: 0; + left: 0; + top: 0; + bottom: 0; + right: 0; + width: auto !important; + height: auto !important; + z-index: 0; +} +.simplebar-offset { + direction: inherit !important; + box-sizing: inherit !important; + resize: none !important; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: 0; + margin: 0; + -webkit-overflow-scrolling: touch; +} +.simplebar-content-wrapper { + direction: inherit; + box-sizing: border-box !important; + position: relative; + display: block; + height: 100%; /* Required for horizontal native scrollbar to not appear if parent is taller than natural height */ + width: auto; + max-width: 100%; /* Not required for horizontal scroll to trigger */ + max-height: 100%; /* Needed for vertical scroll to trigger */ + scrollbar-width: none; + -ms-overflow-style: none; +} +.simplebar-content-wrapper::-webkit-scrollbar, +.simplebar-hide-scrollbar::-webkit-scrollbar { + width: 0; + height: 0; +} +.simplebar-content:before, +.simplebar-content:after { + content: ' '; + display: table; +} +.simplebar-placeholder { + max-height: 100%; + max-width: 100%; + width: 100%; + pointer-events: none; +} +.simplebar-height-auto-observer-wrapper { + box-sizing: inherit !important; + height: 100%; + width: 100%; + max-width: 1px; + position: relative; + float: left; + max-height: 1px; + overflow: hidden; + z-index: -1; + padding: 0; + margin: 0; + pointer-events: none; + flex-grow: inherit; + flex-shrink: 0; + flex-basis: 0; +} +.simplebar-height-auto-observer { + box-sizing: inherit; + display: block; + opacity: 0; + position: absolute; + top: 0; + left: 0; + height: 1000%; + width: 1000%; + min-height: 1px; + min-width: 1px; + overflow: hidden; + pointer-events: none; + z-index: -1; +} +.simplebar-track { + z-index: 1; + position: absolute; + right: 0; + bottom: 0; + pointer-events: none; + overflow: hidden; +} +[data-simplebar].simplebar-dragging .simplebar-content { + pointer-events: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-select: none; +} +[data-simplebar].simplebar-dragging .simplebar-track { + pointer-events: all; +} +.simplebar-scrollbar { + position: absolute; + left: 0; + right: 0; + min-height: 10px; +} +.simplebar-scrollbar:before { + position: absolute; + content: ''; + background: black; + border-radius: 7px; + left: 2px; + right: 2px; + opacity: 0; + transition: opacity 0.2s linear; +} +.simplebar-scrollbar.simplebar-visible:before { + /* When hovered, remove all transitions from drag handle */ + opacity: 0.5; + transition: opacity 0s linear; +} +.simplebar-track.simplebar-vertical { + top: 0; + width: 11px; +} +.simplebar-track.simplebar-vertical .simplebar-scrollbar:before { + top: 2px; + bottom: 2px; +} +.simplebar-track.simplebar-horizontal { + left: 0; + height: 11px; +} +.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before { + height: 100%; + left: 2px; + right: 2px; +} +.simplebar-track.simplebar-horizontal .simplebar-scrollbar { + right: auto; + left: 0; + top: 2px; + height: 7px; + min-height: 0; + min-width: 10px; + width: auto; +} +/* Rtl support */ +[data-simplebar-direction='rtl'] .simplebar-track.simplebar-vertical { + right: auto; + left: 0; +} +.hs-dummy-scrollbar-size { + direction: rtl; + position: fixed; + opacity: 0; + visibility: hidden; + height: 500px; + width: 500px; + overflow-y: hidden; + overflow-x: scroll; +} +.simplebar-hide-scrollbar { + position: fixed; + left: 0; + visibility: hidden; + overflow-y: scroll; + scrollbar-width: none; + -ms-overflow-style: none; +} +/* + |-------------------------------------------------------------------------- + | Components + |-------------------------------------------------------------------------- + | + | Import CSS/SCSS components. + | + */ +html{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +@media (min-width: 768px){ + html{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + } +} +html.dark{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +html.dark body{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +html.dark body *, html.dark body ::before, html.dark body ::after{ + border-color: rgb(255 255 255 / 0.05); +} +html body{ + overflow-x: hidden; + font-family: Roboto; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +@media (max-width: calc(768px - 1px)) { + html body{ + padding-left: 2rem; + padding-right: 2rem; + } + } +@media (max-width: calc(640px - 1px)) { + html body{ + padding-left: 0.75rem; + padding-right: 0.75rem; + } + } +.login{ + position: relative; + overflow: hidden; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-top: 0.75rem; + padding-bottom: 0.75rem; + padding-left: 2rem; + padding-right: 2rem; +} +.dark .login{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .login{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + } + .dark .login{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + } + } +.login:before { + content: ""; + position: absolute; + top: 0px; + bottom: 0px; + left: 0px; + margin-top: -28%; + margin-bottom: -15%; + margin-left: -13%; + width: 57%; + --tw-rotate: -4deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-radius: 100%; + background-color: rgb(var(--color-primary) / 0.2); + } +.dark .login:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .login:before{ + display: none; + } + } +.login:after { + content: ""; + position: absolute; + top: 0px; + bottom: 0px; + left: 0px; + margin-top: -20%; + margin-bottom: -12%; + margin-left: -13%; + width: 57%; + --tw-rotate: -4deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + border-radius: 100%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + } +.dark .login:after{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .login:after{ + display: none; + } + } +.login .login__input { + min-width: 350px; + } +@media (max-width: calc(1280px - 1px)) { + .login .login__input{ + min-width: 100%; + } + } +.table-report:not(.table-report--bordered):not(.table-report--tabulator) { + border-spacing: 0 10px; + border-collapse: separate; + } +.table-report:not(.table-report--bordered):not(.table-report--tabulator) th{ + border-bottom-width: 0px; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td{ + border-bottom-width: 0px; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.dark .table-report:not(.table-report--bordered):not(.table-report--tabulator) td{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td { + box-shadow: 20px 3px 20px #0000000b; + } +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td:first-child{ + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td:last-child{ + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td.table-report__action{ + position: relative; + padding-top: 0px; + padding-bottom: 0px; +} +.table-report:not(.table-report--bordered):not(.table-report--tabulator) td.table-report__action::before{ + position: absolute; + top: 0px; + bottom: 0px; + left: 0px; + margin-top: auto; + margin-bottom: auto; + display: block; + height: 2rem; + width: 1px; + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.dark .table-report:not(.table-report--bordered):not(.table-report--tabulator) td.table-report__action::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.table-report img { + box-shadow: 0px 0px 0px 2px #fff, 1px 1px 5px rgba(0, 0, 0, 0.32); + } +.table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(3) .tabulator-col-content .tabulator-col-title, .table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(4) .tabulator-col-content .tabulator-col-title, .table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(5) .tabulator-col-content .tabulator-col-title, .table-report.table-report--tabulator + .tabulator-header + .tabulator-headers + .tabulator-col:nth-child(6) .tabulator-col-content .tabulator-col-title{ + text-align: center; +} +.dark .table-report img { + box-shadow: 0px 0px 0px 2px #3f4865, 1px 1px 5px rgba(0, 0, 0, 0.32); + } +.report-chart{ + position: relative; +} +.report-chart:before { + content: ""; + position: absolute; + left: 0px; + top: 0px; + bottom: 0px; + margin-left: 2.5rem; + margin-bottom: 1.75rem; + display: block; + width: 4rem; + background-image: linear-gradient(to right, var(--tw-gradient-stops)); + --tw-gradient-from: #fff; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / 0.8), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-to: transparent; + } +.dark .report-chart:before{ + --tw-gradient-from: rgb(var(--color-darkmode-600)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-600) / 0)); +} +.report-chart:after { + content: ""; + position: absolute; + right: 0px; + top: 0px; + bottom: 0px; + margin-bottom: 1.75rem; + display: block; + width: 4rem; + background-image: linear-gradient(to left, var(--tw-gradient-stops)); + --tw-gradient-from: #fff; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / 0.8), var(--tw-gradient-to, rgb(255 255 255 / 0)); + --tw-gradient-to: transparent; + } +.dark .report-chart:after{ + --tw-gradient-from: rgb(var(--color-darkmode-600)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-600) / 0)); +} +.search{ + position: relative; +} +.search .search__input{ + width: 14rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + padding-right: 2rem; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: width; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.search .search__input:focus{ + border-color: transparent; +} +.dark .search .search__input{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.search .search__input:focus{ + width: 18rem; +} +.search .search__icon{ + position: absolute; + top: 0px; + bottom: 0px; + right: 0px; + margin-top: auto; + margin-bottom: auto; + margin-right: 0.75rem; + height: 1.25rem; + width: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.notification{ + position: relative; + color: rgb(255 255 255 / 0.7); +} +.notification .notification__icon{ + height: 1.25rem; + width: 1.25rem; +} +.notification.notification--bullet:before { + content: ""; + width: 8px; + height: 8px; + position: absolute; + top: -2px; + right: 0px; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-success) / var(--tw-bg-opacity)); + } +.report-box{ + position: relative; +} +.report-box:before { + content: ""; + width: 90%; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-top: 0.75rem; + height: 100%; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-50) / var(--tw-bg-opacity)); + } +.dark .report-box:before{ + background-color: rgb(var(--color-darkmode-400) / 0.7); +} +.report-box .report-box__icon { + width: 28px; + height: 28px; + } +.report-box .report-box__indicator { + padding-top: 3px; + padding-bottom: 3px; + display: flex; + align-items: center; + border-radius: 9999px; + padding-left: 0.5rem; + padding-right: 0.25rem; + font-size: 0.75rem; + line-height: 1rem; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } +.report-box-2{ + position: relative; +} +.report-box-2:before { + content: ""; + width: 90%; + background: #f9fafc; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-top: 0.75rem; + height: 100%; + border-radius: 0.375rem; + } +.dark .report-box-2:before{ + background-color: rgb(var(--color-darkmode-400) / 0.7); +} +.report-box-2 .report-box-2__indicator { + padding-top: 3px; + padding-bottom: 3px; + margin-top: 0.75rem; + margin-right: auto; + display: flex; + align-items: center; + border-radius: 9999px; + padding-left: 0.5rem; + padding-right: 0.25rem; + font-size: 0.75rem; + line-height: 1rem; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } +.report-box-3 { + margin-left: -22px; + margin-right: -22px; + position: relative; +} +@media (max-width: calc(768px - 1px)) { + .report-box-3 { + margin-left: -16px; + margin-right: -16px; + } + } +.report-box-3:before { + content: ""; + border-radius: 30px 30px 0px 0px; + transform: translatey(35px); + -webkit-animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + position: absolute; + top: 0px; + left: 0px; + right: 0px; + height: 100%; + width: 100%; + background-color: rgb(var(--color-slate-200) / 0.7); + opacity: 0; + } +.dark .report-box-3:before{ + background-color: rgb(var(--color-darkmode-500) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.5; +} +.report-box-3.report-box-3--content { + padding: 0px 22px; + min-height: 400px; + } +.report-box-3.report-box-3--content:before { + content: ""; + border-radius: 30px; + transform: translatey(35px); + -webkit-animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + animation: 0.4s intro-report-box-3-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + top: 0px; + left: 0px; + right: 0px; + height: 100%; + width: 100%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + opacity: 0; + } +.dark .report-box-3.report-box-3--content:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .report-box-3.report-box-3--content:before{ + border-top-left-radius: 0px; + border-top-right-radius: 0px; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } + } +@-webkit-keyframes intro-report-box-3-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-report-box-3-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +.report-box-4{ + position: relative; +} +.report-box-4:before { + content: ""; + border-radius: 30px 30px 0px 0px; + transform: translatey(35px); + -webkit-animation: 0.4s intro-report-box-4-animation ease-in-out 0.33333s; + animation: 0.4s intro-report-box-4-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + margin-left: -22px; + margin-right: -22px; + box-shadow: 0px 3px 20px #0000000b; + position: absolute; + top: 0px; + left: 0px; + right: 0px; + display: none; + height: 100%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + opacity: 0; + } +.dark .report-box-4:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .report-box-4:before{ + display: block; + } + } +@media (max-width: calc(768px - 1px)) { + .report-box-4:before { + margin-left: -16px; + margin-right: -16px; + } + } +.report-box-4 .report-box-4__content { + flex: 1 1 0; + } +@-webkit-keyframes intro-report-box-4-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-report-box-4-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +.content { + padding: 0px 22px; + position: relative; + margin-top: 0.25rem; + min-height: 100vh; + min-width: 0px; + flex: 1 1 0%; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-top: 5rem; + padding-bottom: 2.5rem; +} +.dark .content{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(768px - 1px)) { + .content { + border-radius: 30px; + margin-top: 2.5rem; + max-width: 100%; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0px; + } + } +.content:before { + content: ""; + display: block; + height: 1px; + width: 100%; + } +.content.content--top-nav { + border-radius: 35px 35px 0 0; + margin-top: 1.25rem; + padding-top: 0px; + } +.top-nav { + transform: translatey(35px); + -webkit-animation: 0.4s intro-top-menu-animation ease-in-out 0.33333s; + animation: 0.4s intro-top-menu-animation ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; + position: relative; + z-index: 50; + margin-top: -1rem; + padding-top: 8rem; + opacity: 0; +} +@media (max-width: calc(768px - 1px)) { + .top-nav{ + display: none; + } + } +.top-nav > ul > li:nth-child(1) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.top-nav > ul > li:nth-child(1) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(2) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.top-nav > ul > li:nth-child(2) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(3) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.top-nav > ul > li:nth-child(3) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(4) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.top-nav > ul > li:nth-child(4) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(5) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.top-nav > ul > li:nth-child(5) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(6) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.top-nav > ul > li:nth-child(6) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(7) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.top-nav > ul > li:nth-child(7) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(8) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.top-nav > ul > li:nth-child(8) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(9) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.top-nav > ul > li:nth-child(9) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(10) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.top-nav > ul > li:nth-child(10) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(11) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.top-nav > ul > li:nth-child(11) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(12) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.top-nav > ul > li:nth-child(12) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(13) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.top-nav > ul > li:nth-child(13) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(14) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.top-nav > ul > li:nth-child(14) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(15) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.top-nav > ul > li:nth-child(15) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(16) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.top-nav > ul > li:nth-child(16) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(17) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.top-nav > ul > li:nth-child(17) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(18) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.top-nav > ul > li:nth-child(18) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(19) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.top-nav > ul > li:nth-child(19) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(20) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.top-nav > ul > li:nth-child(20) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(21) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.top-nav > ul > li:nth-child(21) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(22) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.top-nav > ul > li:nth-child(22) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(23) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.top-nav > ul > li:nth-child(23) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(24) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.top-nav > ul > li:nth-child(24) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(25) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.top-nav > ul > li:nth-child(25) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(26) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.top-nav > ul > li:nth-child(26) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(27) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.top-nav > ul > li:nth-child(27) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(28) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.top-nav > ul > li:nth-child(28) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(29) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.top-nav > ul > li:nth-child(29) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(30) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.top-nav > ul > li:nth-child(30) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(31) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.top-nav > ul > li:nth-child(31) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(32) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.top-nav > ul > li:nth-child(32) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(33) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.top-nav > ul > li:nth-child(33) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(34) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.top-nav > ul > li:nth-child(34) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(35) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.top-nav > ul > li:nth-child(35) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(36) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.top-nav > ul > li:nth-child(36) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(37) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.top-nav > ul > li:nth-child(37) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(38) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.top-nav > ul > li:nth-child(38) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(39) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.top-nav > ul > li:nth-child(39) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(40) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.top-nav > ul > li:nth-child(40) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(41) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.top-nav > ul > li:nth-child(41) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(42) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.top-nav > ul > li:nth-child(42) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(43) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.top-nav > ul > li:nth-child(43) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(44) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.top-nav > ul > li:nth-child(44) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(45) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.top-nav > ul > li:nth-child(45) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(46) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.top-nav > ul > li:nth-child(46) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(47) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.top-nav > ul > li:nth-child(47) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(48) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.top-nav > ul > li:nth-child(48) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(49) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.top-nav > ul > li:nth-child(49) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul > li:nth-child(50) > a:not(.top-menu--active){ + opacity: 0; + transform: translateY(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.top-nav > ul > li:nth-child(50) > a.top-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.top-nav > ul{ + padding: 0px 50px; + display: flex; + flex-wrap: wrap; +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + } +.top-nav > ul > li > .top-menu{ + margin-top: 3px; +} +.top-nav > ul > li > .top-menu > .top-menu__icon{ + margin-top: -3px; +} +.top-nav > ul > li > .top-menu > .top-menu__title{ + margin-top: -3px; +} +.top-nav > ul li{ + position: relative; +} +.top-nav > ul li:hover > .top-menu > .top-menu__title > .top-menu__sub-icon{ + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.top-nav > ul li:hover > ul{ + display: block; +} +.top-nav > ul li:hover > ul li:hover + .top-menu + > .top-menu__title + > .top-menu__sub-icon{ + --tw-rotate: -90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.top-nav > ul li .top-menu { + height: 55px; + position: relative; + margin-right: 0.25rem; + display: flex; + align-items: center; + border-radius: 0.75rem; + padding-left: 1.25rem; + padding-right: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); + } +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu{ + border-radius: 9999px; + } + } +.top-nav > ul li .top-menu.top-menu--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .top-nav > ul li .top-menu.top-menu--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.top-nav > ul li .top-menu.top-menu--active:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .top-nav > ul li .top-menu.top-menu--active:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active:before{ + display: none; + } + } +.top-nav > ul li .top-menu.top-menu--active:after { + content: ""; + width: 20px; + height: 80px; + margin-bottom: -74px; + -webkit-animation: 0.3s active-top-menu-chevron-animation + ease-in-out 0.33333s; + animation: 0.3s active-top-menu-chevron-animation + ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 1s; + animation-delay: 1s; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E"); + position: absolute; + left: 0px; + right: 0px; + bottom: 0px; + margin-left: auto; + margin-right: auto; + --tw-rotate: 90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + background-size: cover; + background-repeat: no-repeat; + opacity: 0; + } +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active:after{ + display: none; + } + } +.dark .top-nav > ul li .top-menu.top-menu--active .top-menu__icon{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active .top-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); + } + } +.top-nav > ul li .top-menu.top-menu--active .top-menu__title{ + font-weight: 500; +} +.dark .top-nav > ul li .top-menu.top-menu--active .top-menu__title{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu.top-menu--active .top-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + } + } +.top-nav > ul li .top-menu .top-menu__icon{ + z-index: 10; +} +.dark .top-nav > ul li .top-menu .top-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.top-nav > ul li .top-menu .top-menu__title{ + z-index: 10; +} +.dark .top-nav > ul li .top-menu .top-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.top-nav > ul li .top-menu .top-menu__title{ + margin-left: 0.75rem; + display: flex; + align-items: center; + white-space: nowrap; +} +.top-nav > ul li .top-menu .top-menu__title .top-menu__sub-icon{ + margin-left: 0.5rem; + height: 1rem; + width: 1rem; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul li .top-menu .top-menu__title .top-menu__sub-icon{ + display: none; + } + } +.top-nav > ul li ul { + box-shadow: 0px 3px 20px #00000014; + position: absolute; + z-index: 20; + margin-top: 0.25rem; + display: none; + width: 14rem; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-left: 0px; + padding-right: 0px; + } +.top-nav > ul li ul::before{ + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + height: 100%; + width: 100%; + border-radius: 0.375rem; + content: var(--tw-content); + background-color: rgb(255 255 255 / 0.04); +} +.dark .top-nav > ul li ul::before{ + content: var(--tw-content); + background-color: rgb(0 0 0 / 0.1); +} +.top-nav > ul li ul:after { + content: ""; + position: absolute; + top: 0px; + left: 0px; + margin-top: -0.25rem; + height: 0.25rem; + width: 100%; + cursor: pointer; + } +.top-nav > ul li ul li{ + position: relative; + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.top-nav > ul li ul li .top-menu{ + margin-right: 0px; + padding-left: 0px; + padding-right: 0px; +} +.top-nav > ul li ul li .top-menu .top-menu__icon:before{ + display: none; +} +.top-nav > ul li ul li .top-menu .top-menu__title{ + width: 100%; +} +.top-nav > ul li ul li .top-menu .top-menu__title .top-menu__sub-icon{ + margin-left: auto; +} +.top-nav > ul li ul ul { + left: 100%; + top: 0px; + margin-top: 0px; + margin-left: 0px; + display: none; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + } +.top-nav > ul li ul ul::before{ + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + height: 100%; + width: 100%; + border-radius: 0.375rem; + content: var(--tw-content); + background-color: rgb(255 255 255 / 0.04); +} +.dark .top-nav > ul li ul ul::before{ + content: var(--tw-content); + background-color: rgb(0 0 0 / 0.1); +} +.top-nav > ul > li:hover > .top-menu:not(.top-menu--active){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .top-nav > ul > li:hover > .top-menu:not(.top-menu--active){ + background-color: transparent; +} +.top-nav > ul > li:hover > .top-menu:not(.top-menu--active):before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .top-nav > ul > li:hover > .top-menu:not(.top-menu--active):before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@media (max-width: calc(1280px - 1px)) { + .top-nav > ul > li:hover > .top-menu:not(.top-menu--active):before{ + border-radius: 9999px; + } + } +@-webkit-keyframes intro-top-menu-animation { + 100%{ + opacity: 1; + transform: translateY(0px); + } +} +@keyframes intro-top-menu-animation { + 100%{ + opacity: 1; + transform: translateY(0px); + } +} +@-webkit-keyframes intro-active-top-menu-animation { + 100%{ + z-index: 10; + } +} +@keyframes intro-active-top-menu-animation { + 100%{ + z-index: 10; + } +} +@-webkit-keyframes active-top-menu-chevron-animation { + 100% { + margin-bottom: -54px; + opacity: 1; + } +} +@keyframes active-top-menu-chevron-animation { + 100% { + margin-bottom: -54px; + opacity: 1; + } +} +.dark .top-nav > ul li .top-menu.top-menu--active:after { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E"); + } +.dark .top-nav > ul li ul{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .top-nav > ul ul { + box-shadow: 0px 3px 7px #0000001c; + } +.side-nav { + width: 260px; + z-index: 50; + margin-top: -1rem; + overflow-x: hidden; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-bottom: 4rem; + padding-top: 8rem; +} +@media (max-width: calc(1280px - 1px)) { + .side-nav { + width: 105px; + } + } +@media (max-width: calc(768px - 1px)) { + .side-nav{ + display: none; + } + } +.side-nav.side-nav--simple { + width: 105px; + } +.side-nav.side-nav--simple .side-menu .side-menu__title{ + display: none; +} +.side-nav.side-nav--simple .side-menu .side-menu__title .side-menu__sub-icon{ + display: none; +} +.side-nav.side-nav--simple .side-menu:not(.side-menu--active) .side-menu__icon:before{ + display: none; +} +.side-nav .side-nav__devider{ + position: relative; + z-index: 10; + height: 1px; + width: 100%; + background-color: rgb(255 255 255 / 0.08); +} +.dark .side-nav .side-nav__devider{ + background-color: rgb(255 255 255 / 0.07); +} +.side-nav .side-menu{ + position: relative; + margin-bottom: 0.25rem; + display: flex; + height: 50px; + align-items: center; + border-radius: 0.75rem; + padding-left: 1.25rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .side-nav .side-menu{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav .side-menu .side-menu__title{ + margin-left: 0.75rem; + display: flex; + width: 100%; + align-items: center; +} +.side-nav .side-menu .side-menu__title .side-menu__sub-icon{ + margin-left: auto; + margin-right: 1.25rem; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +.side-nav .side-menu .side-menu__title .side-menu__sub-icon svg{ + height: 1rem; + width: 1rem; +} +@media (max-width: calc(1280px - 1px)) { + .side-nav .side-menu .side-menu__title .side-menu__sub-icon{ + display: none; + } + .side-nav .side-menu .side-menu__title{ + display: none; + } + } +.side-nav > ul > li:nth-child(1).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.side-nav > ul > li:nth-child(1) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.side-nav > ul > li:nth-child(1) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(2).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.side-nav > ul > li:nth-child(2) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.side-nav > ul > li:nth-child(2) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(3).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.side-nav > ul > li:nth-child(3) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.side-nav > ul > li:nth-child(3) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(4).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.side-nav > ul > li:nth-child(4) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.side-nav > ul > li:nth-child(4) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(5).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.side-nav > ul > li:nth-child(5) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.side-nav > ul > li:nth-child(5) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(6).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.side-nav > ul > li:nth-child(6) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.side-nav > ul > li:nth-child(6) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(7).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.side-nav > ul > li:nth-child(7) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.side-nav > ul > li:nth-child(7) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(8).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.side-nav > ul > li:nth-child(8) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.side-nav > ul > li:nth-child(8) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(9).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.side-nav > ul > li:nth-child(9) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.side-nav > ul > li:nth-child(9) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(10).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.side-nav > ul > li:nth-child(10) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.side-nav > ul > li:nth-child(10) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(11).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.side-nav > ul > li:nth-child(11) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.side-nav > ul > li:nth-child(11) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(12).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.side-nav > ul > li:nth-child(12) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.side-nav > ul > li:nth-child(12) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(13).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.side-nav > ul > li:nth-child(13) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.side-nav > ul > li:nth-child(13) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(14).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.side-nav > ul > li:nth-child(14) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.side-nav > ul > li:nth-child(14) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(15).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.side-nav > ul > li:nth-child(15) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.side-nav > ul > li:nth-child(15) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(16).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.side-nav > ul > li:nth-child(16) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.side-nav > ul > li:nth-child(16) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(17).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.side-nav > ul > li:nth-child(17) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.side-nav > ul > li:nth-child(17) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(18).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.side-nav > ul > li:nth-child(18) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.side-nav > ul > li:nth-child(18) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(19).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.side-nav > ul > li:nth-child(19) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.side-nav > ul > li:nth-child(19) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(20).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.side-nav > ul > li:nth-child(20) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.side-nav > ul > li:nth-child(20) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(21).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.side-nav > ul > li:nth-child(21) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.side-nav > ul > li:nth-child(21) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(22).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.side-nav > ul > li:nth-child(22) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.side-nav > ul > li:nth-child(22) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(23).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.side-nav > ul > li:nth-child(23) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.side-nav > ul > li:nth-child(23) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(24).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.side-nav > ul > li:nth-child(24) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.side-nav > ul > li:nth-child(24) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(25).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.side-nav > ul > li:nth-child(25) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.side-nav > ul > li:nth-child(25) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(26).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.side-nav > ul > li:nth-child(26) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.side-nav > ul > li:nth-child(26) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(27).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.side-nav > ul > li:nth-child(27) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.side-nav > ul > li:nth-child(27) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(28).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.side-nav > ul > li:nth-child(28) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.side-nav > ul > li:nth-child(28) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(29).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.side-nav > ul > li:nth-child(29) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.side-nav > ul > li:nth-child(29) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(30).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.side-nav > ul > li:nth-child(30) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.side-nav > ul > li:nth-child(30) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(31).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.side-nav > ul > li:nth-child(31) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.side-nav > ul > li:nth-child(31) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(32).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.side-nav > ul > li:nth-child(32) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.side-nav > ul > li:nth-child(32) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(33).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.side-nav > ul > li:nth-child(33) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.side-nav > ul > li:nth-child(33) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(34).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.side-nav > ul > li:nth-child(34) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.side-nav > ul > li:nth-child(34) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(35).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.side-nav > ul > li:nth-child(35) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.side-nav > ul > li:nth-child(35) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(36).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.side-nav > ul > li:nth-child(36) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.side-nav > ul > li:nth-child(36) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(37).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.side-nav > ul > li:nth-child(37) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.side-nav > ul > li:nth-child(37) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(38).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.side-nav > ul > li:nth-child(38) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.side-nav > ul > li:nth-child(38) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(39).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.side-nav > ul > li:nth-child(39) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.side-nav > ul > li:nth-child(39) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(40).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.side-nav > ul > li:nth-child(40) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.side-nav > ul > li:nth-child(40) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(41).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.side-nav > ul > li:nth-child(41) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.side-nav > ul > li:nth-child(41) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(42).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.side-nav > ul > li:nth-child(42) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.side-nav > ul > li:nth-child(42) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(43).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.side-nav > ul > li:nth-child(43) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.side-nav > ul > li:nth-child(43) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(44).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.side-nav > ul > li:nth-child(44) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.side-nav > ul > li:nth-child(44) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(45).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.side-nav > ul > li:nth-child(45) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.side-nav > ul > li:nth-child(45) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(46).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.side-nav > ul > li:nth-child(46) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.side-nav > ul > li:nth-child(46) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(47).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.side-nav > ul > li:nth-child(47) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.side-nav > ul > li:nth-child(47) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(48).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.side-nav > ul > li:nth-child(48) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.side-nav > ul > li:nth-child(48) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(49).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.side-nav > ul > li:nth-child(49) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.side-nav > ul > li:nth-child(49) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul > li:nth-child(50).side-nav__devider{ + opacity: 0; + -webkit-animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-devider-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.side-nav > ul > li:nth-child(50) > a:not(.side-menu--active){ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.side-nav > ul > li:nth-child(50) > a.side-menu--active { + -webkit-animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + animation: 0.4s + intro-active-menu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +.side-nav > ul ul li:nth-child(1) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(1 * 0.1s); + animation-delay: calc(1 * 0.1s); +} +.side-nav > ul ul li:nth-child(2) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(2 * 0.1s); + animation-delay: calc(2 * 0.1s); +} +.side-nav > ul ul li:nth-child(3) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(3 * 0.1s); + animation-delay: calc(3 * 0.1s); +} +.side-nav > ul ul li:nth-child(4) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(4 * 0.1s); + animation-delay: calc(4 * 0.1s); +} +.side-nav > ul ul li:nth-child(5) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(5 * 0.1s); + animation-delay: calc(5 * 0.1s); +} +.side-nav > ul ul li:nth-child(6) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(6 * 0.1s); + animation-delay: calc(6 * 0.1s); +} +.side-nav > ul ul li:nth-child(7) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(7 * 0.1s); + animation-delay: calc(7 * 0.1s); +} +.side-nav > ul ul li:nth-child(8) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(8 * 0.1s); + animation-delay: calc(8 * 0.1s); +} +.side-nav > ul ul li:nth-child(9) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(9 * 0.1s); + animation-delay: calc(9 * 0.1s); +} +.side-nav > ul ul li:nth-child(10) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(10 * 0.1s); + animation-delay: calc(10 * 0.1s); +} +.side-nav > ul ul li:nth-child(11) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(11 * 0.1s); + animation-delay: calc(11 * 0.1s); +} +.side-nav > ul ul li:nth-child(12) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(12 * 0.1s); + animation-delay: calc(12 * 0.1s); +} +.side-nav > ul ul li:nth-child(13) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(13 * 0.1s); + animation-delay: calc(13 * 0.1s); +} +.side-nav > ul ul li:nth-child(14) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(14 * 0.1s); + animation-delay: calc(14 * 0.1s); +} +.side-nav > ul ul li:nth-child(15) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(15 * 0.1s); + animation-delay: calc(15 * 0.1s); +} +.side-nav > ul ul li:nth-child(16) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(16 * 0.1s); + animation-delay: calc(16 * 0.1s); +} +.side-nav > ul ul li:nth-child(17) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(17 * 0.1s); + animation-delay: calc(17 * 0.1s); +} +.side-nav > ul ul li:nth-child(18) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(18 * 0.1s); + animation-delay: calc(18 * 0.1s); +} +.side-nav > ul ul li:nth-child(19) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(19 * 0.1s); + animation-delay: calc(19 * 0.1s); +} +.side-nav > ul ul li:nth-child(20) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(20 * 0.1s); + animation-delay: calc(20 * 0.1s); +} +.side-nav > ul ul li:nth-child(21) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(21 * 0.1s); + animation-delay: calc(21 * 0.1s); +} +.side-nav > ul ul li:nth-child(22) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(22 * 0.1s); + animation-delay: calc(22 * 0.1s); +} +.side-nav > ul ul li:nth-child(23) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(23 * 0.1s); + animation-delay: calc(23 * 0.1s); +} +.side-nav > ul ul li:nth-child(24) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(24 * 0.1s); + animation-delay: calc(24 * 0.1s); +} +.side-nav > ul ul li:nth-child(25) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(25 * 0.1s); + animation-delay: calc(25 * 0.1s); +} +.side-nav > ul ul li:nth-child(26) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(26 * 0.1s); + animation-delay: calc(26 * 0.1s); +} +.side-nav > ul ul li:nth-child(27) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(27 * 0.1s); + animation-delay: calc(27 * 0.1s); +} +.side-nav > ul ul li:nth-child(28) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(28 * 0.1s); + animation-delay: calc(28 * 0.1s); +} +.side-nav > ul ul li:nth-child(29) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(29 * 0.1s); + animation-delay: calc(29 * 0.1s); +} +.side-nav > ul ul li:nth-child(30) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(30 * 0.1s); + animation-delay: calc(30 * 0.1s); +} +.side-nav > ul ul li:nth-child(31) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(31 * 0.1s); + animation-delay: calc(31 * 0.1s); +} +.side-nav > ul ul li:nth-child(32) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(32 * 0.1s); + animation-delay: calc(32 * 0.1s); +} +.side-nav > ul ul li:nth-child(33) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(33 * 0.1s); + animation-delay: calc(33 * 0.1s); +} +.side-nav > ul ul li:nth-child(34) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(34 * 0.1s); + animation-delay: calc(34 * 0.1s); +} +.side-nav > ul ul li:nth-child(35) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(35 * 0.1s); + animation-delay: calc(35 * 0.1s); +} +.side-nav > ul ul li:nth-child(36) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(36 * 0.1s); + animation-delay: calc(36 * 0.1s); +} +.side-nav > ul ul li:nth-child(37) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(37 * 0.1s); + animation-delay: calc(37 * 0.1s); +} +.side-nav > ul ul li:nth-child(38) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(38 * 0.1s); + animation-delay: calc(38 * 0.1s); +} +.side-nav > ul ul li:nth-child(39) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(39 * 0.1s); + animation-delay: calc(39 * 0.1s); +} +.side-nav > ul ul li:nth-child(40) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(40 * 0.1s); + animation-delay: calc(40 * 0.1s); +} +.side-nav > ul ul li:nth-child(41) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(41 * 0.1s); + animation-delay: calc(41 * 0.1s); +} +.side-nav > ul ul li:nth-child(42) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(42 * 0.1s); + animation-delay: calc(42 * 0.1s); +} +.side-nav > ul ul li:nth-child(43) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(43 * 0.1s); + animation-delay: calc(43 * 0.1s); +} +.side-nav > ul ul li:nth-child(44) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(44 * 0.1s); + animation-delay: calc(44 * 0.1s); +} +.side-nav > ul ul li:nth-child(45) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(45 * 0.1s); + animation-delay: calc(45 * 0.1s); +} +.side-nav > ul ul li:nth-child(46) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(46 * 0.1s); + animation-delay: calc(46 * 0.1s); +} +.side-nav > ul ul li:nth-child(47) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(47 * 0.1s); + animation-delay: calc(47 * 0.1s); +} +.side-nav > ul ul li:nth-child(48) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(48 * 0.1s); + animation-delay: calc(48 * 0.1s); +} +.side-nav > ul ul li:nth-child(49) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(49 * 0.1s); + animation-delay: calc(49 * 0.1s); +} +.side-nav > ul ul li:nth-child(50) > a{ + opacity: 0; + transform: translateX(50px); + -webkit-animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + animation: 0.2s + intro-submenu-animation + ease-in-out + 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: calc(50 * 0.1s); + animation-delay: calc(50 * 0.1s); +} +.side-nav > ul ul{ + position: relative; + display: none; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.04); +} +.dark .side-nav > ul ul{ + background-color: transparent; +} +.side-nav > ul ul:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.3); + } +.dark .side-nav > ul ul:before{ + background-color: rgb(var(--color-darkmode-900) / 0.3); +} +.side-nav > ul ul.side-menu__sub-open{ + display: block; +} +.side-nav > ul ul .side-menu__icon:before{ + display: none; +} +.side-nav > ul ul li a:not(.side-menu--active){ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .side-nav > ul ul li a:not(.side-menu--active){ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.side-nav > ul ul li a.side-menu--active .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.dark .side-nav > ul ul li a.side-menu--active .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav > ul ul li a.side-menu--active .side-menu__title{ + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.dark .side-nav > ul ul li a.side-menu--active .side-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav > ul ul ul{ + position: relative; + display: none; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.04); +} +.dark .side-nav > ul ul ul{ + background-color: transparent; +} +.side-nav > ul ul ul:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + background-color: rgb(255 255 255 / 0.3); + } +.dark .side-nav > ul ul ul:before{ + background-color: rgb(var(--color-darkmode-900) / 0.3); +} +.side-nav > ul > li > .side-menu.side-menu--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .side-nav > ul > li > .side-menu.side-menu--active{ + background-color: transparent; +} +.side-nav > ul > li > .side-menu.side-menu--active:before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .side-nav > ul > li > .side-menu.side-menu--active:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.side-nav > ul > li > .side-menu.side-menu--active:after { + content: ""; + width: 20px; + height: 80px; + margin-right: -47px; + -webkit-animation: 0.3s active-side-menu-chevron-animation + ease-in-out 0.33333s; + animation: 0.3s active-side-menu-chevron-animation + ease-in-out 0.33333s; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-delay: 1s; + animation-delay: 1s; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E"); + position: absolute; + top: 0px; + bottom: 0px; + right: 0px; + margin-top: auto; + margin-bottom: auto; + background-size: cover; + background-repeat: no-repeat; + opacity: 0; + } +.side-nav > ul > li > .side-menu.side-menu--active .side-menu__icon{ + z-index: 10; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu.side-menu--active .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.side-nav > ul > li > .side-menu.side-menu--active .side-menu__title{ + z-index: 10; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu.side-menu--active .side-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu .side-menu__icon{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .side-nav > ul > li > .side-menu .side-menu__title{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.dark .side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open){ + background-color: transparent; +} +.side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open):before { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + z-index: -1; + display: block; + border-radius: 0.75rem; + border-bottom-width: 3px; + border-style: solid; + border-color: rgb(0 0 0 / 0.08); + } +.dark .side-nav > ul > li > .side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +@-webkit-keyframes intro-devider-animation { + 100%{ + opacity: 1; + } +} +@keyframes intro-devider-animation { + 100%{ + opacity: 1; + } +} +@-webkit-keyframes intro-menu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-menu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@-webkit-keyframes intro-submenu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-submenu-animation { + 100%{ + opacity: 1; + transform: translateX(0px); + } +} +@-webkit-keyframes intro-active-menu-animation { + 100%{ + z-index: 10; + } +} +@keyframes intro-active-menu-animation { + 100%{ + z-index: 10; + } +} +@-webkit-keyframes active-side-menu-chevron-animation { + 100% { + margin-right: -27px; + opacity: 1; + } +} +@keyframes active-side-menu-chevron-animation { + 100% { + margin-right: -27px; + opacity: 1; + } +} +.dark .side-nav > ul > li > .side-menu.side-menu--active:after { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E"); + } +.breadcrumb.breadcrumb-light{ + margin-left: 2.5rem; + height: 100%; + border-left-width: 1px; + border-color: rgb(255 255 255 / 0.08); + padding-left: 1.5rem; +} +.breadcrumb.breadcrumb-light .active{ + color: rgb(255 255 255 / 0.7) !important; +} +@media (max-width: calc(768px - 1px)) { + .breadcrumb.breadcrumb-light{ + margin-left: 0px; + border-left-width: 0px; + padding-left: 0px; + } + } +.toastify { + background: none; + padding: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +@media (max-width: calc(768px - 1px)) { + .toastify { + max-width: calc(100% - 30px); + } + } +.toastify .toast-close{ + position: absolute; + top: 0px; + bottom: 0px; + right: 0px; + display: flex; + align-items: center; + padding-right: 0.75rem; + color: transparent; + opacity: 1; +} +.toastify .toast-close:before { + content: "×"; + margin-top: -0.375rem; + display: block; + font-size: 1.875rem; + line-height: 2.25rem; + font-weight: 300; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); + } +.toastify-content{ + border-radius: 0.5rem; + border-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-top: 1.25rem; + padding-bottom: 1.25rem; + padding-left: 1.25rem; + padding-right: 3.5rem; + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .toastify-content{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.lucide{ + stroke-width: 1.5; +} +.top-bar-boxed.top-bar-boxed--simple-menu .logo{ + width: auto; +} +.top-bar-boxed.top-bar-boxed--simple-menu .logo .logo__text{ + display: none; +} +@media (min-width: 768px){ + .dark .top-bar-boxed.top-bar-boxed--top-menu{ + --tw-gradient-from: rgb(var(--color-darkmode-800)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-800) / 0)); + } +} +.top-bar-boxed.top-bar-boxed--top-menu .logo{ + width: auto; +} +@media (min-width: 768px){ + .top-bar-boxed.top-bar-boxed--top-menu .breadcrumb{ + margin-left: 2.5rem; + padding-left: 2.5rem; + } +} +.top-bar-boxed:not(.top-bar-boxed--top-menu) .logo__text{ + display: none; +} +@media (min-width: 1280px){ + .top-bar-boxed:not(.top-bar-boxed--top-menu) .logo__text{ + display: block; + } +} +.top-bar-boxed:before { + content: ""; + position: absolute; + right: 0px; + bottom: 0px; + left: 0px; + top: 0px; + margin-left: 1.75rem; + margin-right: 1.75rem; + margin-top: 0.75rem; + display: none; + height: 65px; + border-radius: 0.75rem; + background-color: rgb(var(--color-primary) / 0.3); + } +.dark .top-bar-boxed:before{ + background-color: rgb(var(--color-darkmode-600) / 0.3); +} +@media (min-width: 768px){ + .top-bar-boxed:before{ + display: block; + } +} +.top-bar-boxed:after { + content: ""; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + margin-left: 0.75rem; + margin-right: 0.75rem; + margin-top: 1.25rem; + display: none; + height: 65px; + border-radius: 0.75rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.dark .top-bar-boxed:after{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +@media (min-width: 768px){ + .top-bar-boxed:after{ + display: block; + } +} +.mobile-menu{ + position: fixed; + z-index: 60; + margin-left: -2rem; + margin-right: -2rem; + margin-top: -1.25rem; + margin-bottom: 1.5rem; + width: 100%; + border-bottom-width: 1px; + border-color: rgb(255 255 255 / 0.08); + background-color: rgb(var(--color-primary) / 0.9); +} +.dark .mobile-menu{ + background-color: rgb(var(--color-darkmode-800) / 0.9); +} +.mobile-menu:before { + content: ""; + visibility: hidden; + position: fixed; + left: 0px; + right: 0px; + z-index: 10; + height: 100vh; + width: 100%; + background-color: rgb(0 0 0 / 0.9); + opacity: 0; + transition-property: opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + } +.mobile-menu.mobile-menu--active:before { + content: ""; + visibility: visible; + opacity: 1; + } +.mobile-menu.mobile-menu--active .scrollable{ + margin-left: 0px; +} +.mobile-menu.mobile-menu--active .scrollable .mobile-menu-toggler{ + visibility: visible; + opacity: 1; +} +@media (max-width: calc(640px - 1px)) { + .mobile-menu{ + margin-left: -0.75rem; + margin-right: -0.75rem; + } + } +.mobile-menu .mobile-menu-bar { + height: 70px; + display: flex; + align-items: center; + padding-left: 2rem; + padding-right: 2rem; + } +@media (max-width: calc(640px - 1px)) { + .mobile-menu .mobile-menu-bar{ + padding-left: 0.75rem; + padding-right: 0.75rem; + } + } +.mobile-menu .scrollable{ + position: fixed; + top: 0px; + left: 0px; + z-index: 20; + margin-left: -100%; + height: 100vh; + width: 270px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + transition-property: all; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.dark .mobile-menu .scrollable{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.mobile-menu .scrollable .mobile-menu-toggler{ + visibility: hidden; + position: fixed; + top: 0px; + right: 0px; + margin-top: 1rem; + margin-right: 1rem; + opacity: 0; + transition-property: opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.mobile-menu .scrollable .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{ + background-color: rgb(0 0 0 / 0.5); +} +.mobile-menu ul.menu__sub-open{ + display: block; +} +.mobile-menu ul li { + max-width: 1280px; + margin-left: auto; + margin-right: auto; + width: 100%; + } +.mobile-menu ul li ul{ + margin-left: 1rem; + margin-right: 1rem; + margin-top: 0.25rem; + margin-bottom: 0.25rem; + display: none; + border-radius: 0.5rem; + background-color: rgb(0 0 0 / 0.1); +} +.dark .mobile-menu ul li ul{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.mobile-menu ul li ul .menu{ + padding-left: 1rem; + padding-right: 1rem; +} +.mobile-menu ul li ul ul{ + margin-left: 0px; + margin-right: 0px; + display: none; + border-radius: 0.5rem; + background-color: rgb(0 0 0 / 0.1); +} +.dark .mobile-menu ul li ul ul{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.mobile-menu .menu__devider{ + position: relative; + height: 1px; + width: 100%; + background-color: rgb(255 255 255 / 0.08); +} +.mobile-menu .menu { + height: 50px; + display: flex; + align-items: center; + padding-left: 1.5rem; + padding-right: 1.5rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } +.mobile-menu .menu .menu__title{ + margin-left: 0.75rem; + display: flex; + width: 100%; + align-items: center; +} +.mobile-menu .menu .menu__title .menu__sub-icon{ + margin-left: auto; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 100ms; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +.mobile-menu .menu .menu__title .menu__sub-icon svg{ + height: 1.25rem; + width: 1.25rem; +} +.inbox-filter .inbox-filter__dropdown-menu { + width: 250px; +} +.inbox-filter__dropdown-menu .dropdown-content { + margin-left: -228px; + width: auto; +} +.inbox .inbox__item{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + cursor: pointer; + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.inbox .inbox__item:hover { + transform: scale(1.02, 1.02); + position: relative; + z-index: 20; + border-radius: 0.25rem; + border-width: 0px; + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.inbox .inbox__item.inbox__item--active{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.dark .inbox .inbox__item.inbox__item--active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.inbox .inbox__item.inbox__item--active .inbox__item--sender{ + font-weight: 500; +} +.inbox .inbox__item.inbox__item--active .inbox__item--highlight{ + font-weight: 500; +} +.inbox .inbox__item.inbox__item--active .inbox__item--time{ + font-weight: 500; +} +.inbox .form-check-input{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-400) / var(--tw-border-opacity)); +} +.inbox .form-check-input:checked{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.chat .chat__chat-list{ + height: 525px; +} +.chat .chat__user-list{ + height: 525px; +} +.chat .chat__box{ + height: 782px; +} +.chat .chat__box .chat__box__text-box{ + max-width: 49%; +} +@media (max-width: calc(640px - 1px)) { + .chat .chat__box .chat__box__text-box{ + max-width: 90%; + } + } +.chat .chat__box__input{ + height: 46px; +} +.chat-dropdown{ + margin-top: -364px; + width: 320px; +} +.chat-dropdown .chat-dropdown__box{ + height: 364px; +} +.chat-dropdown .chat-dropdown__box .chat-dropdown__box__tabs .nav-item .nav-link.active{ + border-bottom-width: 0px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .chat-dropdown .chat-dropdown__box .chat-dropdown__box__tabs .nav-item .nav-link.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.news .news__preview { + height: 400px; + } +@media (max-width: calc(768px - 1px)) { + .news .news__preview { + height: 250px; + } + } +.news p { + text-indent: 30px; + } +.news .news__input { + height: 69px; + } +.pricing-tabs.nav.nav-pills .nav-item .nav-link{ + border-radius: 0px; +} +.error-page img { + width: 450px; +} +.search-result { + width: 450px; + visibility: hidden; + position: absolute; + right: 0px; + z-index: 20; + margin-top: 0.25rem; + opacity: 0; + transition: visibility 0s linear 0.2s, opacity 0.2s 0s; +} +.search-result.show { + transition: visibility 0s linear 0s, opacity 0.2s 0s; + visibility: visible; + opacity: 1; + } +.search-result.show > .search-result__content { + margin-top: -1px; + } +.search-result.show > .search-result__content .tab-content .tab-pane{ + visibility: visible; +} +.search-result .search-result__content { + transition: margin-top 0.2s; + box-shadow: 0px 3px 20px #0000000b; + position: relative; + border-radius: 0.375rem; + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.dark .search-result .search-result__content{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.search-result .search-result__content{ + margin-top: 1.25rem; + padding: 1.25rem; +} +.search-result .search-result__content .search-result__content__title{ + margin-bottom: 0.5rem; + font-weight: 500; +} +.notification-content { + width: 350px; +} +@media (max-width: calc(640px - 1px)) { + .notification-content { + width: 280px; + } + } +.notification-content .notification-content__title{ + margin-bottom: 1.25rem; + font-weight: 500; +} +.notification-content .notification-content__box{ + padding: 1.25rem; +} +.report-maps { + height: 310px; +} +.pos-dropdown .pos-dropdown__dropdown-menu { + width: 265px; +} +.post .post__tabs{ + border-color: transparent; +} +.dark .post .post__tabs{ + border-color: transparent; +} +.post .post__tabs .nav-item .nav-link{ + display: flex; + align-items: center; + justify-content: center; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.post .post__tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + border-color: transparent; + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-600) / var(--tw-text-opacity)); +} +.dark .post .post__tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{ + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.post .post__tabs .nav-item .nav-link.active{ + border-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.dark .post .post__tabs .nav-item .nav-link.active{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.litepicker{ + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + font-size: 0.875rem; + line-height: 1.25rem; + z-index: 999999 !important; + margin-top: 7px; + box-shadow: 0px 3px 20px #00000014; +} +@media (max-width: calc(1024px - 1px)) { + .litepicker { + width: 310px; + } + } +@media (max-width: calc(640px - 1px)) { + .litepicker { + left: 0px !important; + right: 0px; + margin-left: auto; + margin-right: auto; + } + } +.litepicker:before { + content: ""; + left: 9px; + top: -7px; + border-bottom-color: #f7f7f7; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #e8e8e8; + position: absolute; + display: inline-block; + } +.litepicker:after { + content: ""; + left: 10px; + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + position: absolute; + display: inline-block; + } +.litepicker .container__months, .litepicker .container__footer{ + background-color: transparent; + padding-top: 0px; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.litepicker .container__footer{ + margin: 0px; + border-top-width: 1px; + border-color: rgb(var(--color-slate-200) / 0.6); + padding: 0.75rem; +} +@media (max-width: calc(1024px - 1px)) { + .litepicker .container__footer{ + display: flex; + flex-direction: column-reverse; + text-align: center; + } + .litepicker .container__footer .preview-date-range{ + order: 1; + margin-bottom: 0.375rem; + display: block; + width: 100%; + } + .litepicker .container__footer .button-cancel { + width: 100% !important; + margin-left: 0px !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + } + .litepicker .container__footer .button-apply { + width: 100% !important; + margin-left: 0px !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + margin-bottom: 0.375rem; + } + } +.litepicker .container__footer .button-apply, .litepicker .container__footer .button-cancel{ + margin-left: 0.25rem; + margin-right: 0px; + width: 5rem; + border-radius: 0.375rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + font-weight: 500; +} +.litepicker .container__footer .button-apply{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.litepicker .container__footer .button-cancel{ + background-color: rgb(var(--color-slate-200) / 0.7); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.litepicker .container__months{ + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.litepicker .container__months .month-item-weekdays-row{ + margin-top: 0.75rem; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.litepicker .container__months .month-item-header{ + padding-left: 0px; + padding-right: 0px; + padding-bottom: 0px; + padding-top: 0.5rem; +} +.litepicker .container__months .month-item-header .button-previous-month{ + display: flex; + height: 2rem; + width: 2rem; + align-items: center; + justify-content: center; +} +.litepicker .container__months .month-item-header .button-previous-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.litepicker .container__months .month-item-header .button-previous-month svg { + transform: rotate(135deg); + margin-right: -0.25rem; + } +.litepicker .container__months .month-item-header .button-next-month{ + display: flex; + height: 2rem; + width: 2rem; + align-items: center; + justify-content: center; +} +.litepicker .container__months .month-item-header .button-next-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.litepicker .container__months .month-item-header .button-next-month svg { + transform: rotate(-45deg); + margin-left: -0.25rem; + } +.litepicker .container__months .month-item-header .button-previous-month:hover svg, + .litepicker .container__months .month-item-header .button-previous-month svg, + .litepicker .container__months .month-item-header .button-next-month:hover svg, + .litepicker .container__months .month-item-header .button-next-month svg { + fill: transparent; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + border-color: #4a5568; + display: block; + height: 0.5rem; + width: 0.5rem; + } +.litepicker .container__months .month-item-header div > .month-item-name, + .litepicker .container__months .month-item-header div > .month-item-year { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 15px; + background-position: center right 0.6rem; + border-radius: 0.375rem; + border-width: 1px; + background-color: transparent; + background-repeat: no-repeat; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + padding-right: 2rem; + font-size: 0.875rem; + line-height: 1.25rem; + } +.litepicker .container__months .month-item-header div > .month-item-name:focus, .litepicker .container__months .month-item-header div > .month-item-year:focus{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-color: transparent; +} +.litepicker .container__days .day-item{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.litepicker .container__days .day-item:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.litepicker .container__days .day-item.is-today, .litepicker .container__days .day-item.is-today:hover{ + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(var(--color-primary) / var(--tw-text-opacity)); +} +.litepicker .container__days .day-item.is-start-date, .litepicker .container__days .day-item.is-start-date:hover, .litepicker .container__days .day-item.is-end-date, .litepicker .container__days .day-item.is-end-date:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.litepicker .container__days .day-item.is-in-range, .litepicker .container__days .day-item.is-in-range:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.litepicker .container__days .week-number{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +@media (max-width: calc(1024px - 1px)) { + & :root { + --litepicker-day-width: 35px; + } + } +.dark .litepicker{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .litepicker:before, + .dark .litepicker:after { + border-right-color: transparent; + border-left-color: transparent; + border-bottom-color: rgb(var(--color-darkmode-600)); + } +.dark .litepicker .container__months .button-previous-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__months .button-next-month:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__months .month-item-header .button-previous-month:hover svg, .dark .litepicker .container__months .month-item-header .button-previous-month svg, .dark .litepicker .container__months .month-item-header .button-next-month:hover svg, .dark .litepicker .container__months .month-item-header .button-next-month svg{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.dark .litepicker .container__months .month-item-header div > .month-item-name, .dark .litepicker .container__months .month-item-header div > .month-item-year{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .litepicker .container__days .day-item{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .litepicker .container__days .day-item:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__days .day-item.is-start-date, .dark .litepicker .container__days .day-item.is-start-date:hover, .dark .litepicker .container__days .day-item.is-end-date, .dark .litepicker .container__days .day-item.is-end-date:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .litepicker .container__days .day-item.is-in-range, .dark .litepicker .container__days .day-item.is-in-range:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__days .day-item.is-today, .dark .litepicker .container__days .day-item.is-today:hover{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .litepicker .container__footer{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .litepicker .container__footer .button-cancel{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .litepicker .container__tooltip{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .litepicker .container__tooltip:before, + .dark .litepicker .container__tooltip:after { + border-top-color: rgb(var(--color-darkmode-600)); + } +.tns-outer{ + position: relative; +} +.tns-outer .tns-controls button{ + position: absolute; + top: 0px; + bottom: 0px; + z-index: 10; + margin-top: auto; + margin-bottom: auto; + height: 1.25rem; + width: 1.25rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + color: transparent; + outline: 2px solid transparent; + outline-offset: 2px; +} +.dark .tns-outer .tns-controls button{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.tns-outer .tns-controls button:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.dark .tns-outer .tns-controls button:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-200) / var(--tw-bg-opacity)); +} +.tns-outer .tns-controls button[data-controls="prev"]{ + left: 0px; + margin-left: -1.5rem; +} +.tns-outer .tns-controls button[data-controls="prev"]:before { + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 80%; + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; + --tw-rotate: 90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + background-position: center; + } +.tns-outer .tns-controls button[data-controls="next"]{ + right: 0px; + margin-right: -1.5rem; +} +.tns-outer .tns-controls button[data-controls="next"]:before { + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 80%; + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; + --tw-rotate: -90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + background-position: center; + } +.tns-outer .tns-nav { + margin-bottom: -1.8rem; + position: absolute; + bottom: 0px; + z-index: 10; + display: flex; + width: 100%; + justify-content: center; + } +.tns-outer .tns-nav button{ + margin-left: 0.25rem; + margin-right: 0.25rem; + height: 0.75rem; + width: 0.75rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); + outline: 2px solid transparent; + outline-offset: 2px; +} +.dark .tns-outer .tns-nav button{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.tns-outer .tns-nav button.tns-nav-active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-500) / var(--tw-bg-opacity)); +} +.dark .tns-outer .tns-nav button.tns-nav-active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-200) / var(--tw-bg-opacity)); +} +.tns-outer button[data-action]{ + display: none; +} +.tns-outer .tns-visually-hidden{ + display: none; +} +.tooltip-content { + left: 10000px; + position: fixed; +} +.tippy-box{ + border-radius: 0.375rem; +} +.dark .tippy-box{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tippy-box > .tippy-svg-arrow{ + fill: rgb(var(--color-darkmode-300)); +} +.tippy-box .tippy-content{ + padding-left: 0.75rem; + padding-right: 0.75rem; + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.tippy-popper[x-placement="left"] .tippy-roundarrow, .tippy-popper[x-placement="left"] .tippy-arrow, .tippy-popper[x-placement="right"] .tippy-roundarrow, .tippy-popper[x-placement="right"] .tippy-arrow, .tippy-popper[x-placement="left-start"] .tippy-roundarrow, .tippy-popper[x-placement="left-start"] .tippy-arrow, .tippy-popper[x-placement="left-end"] .tippy-roundarrow, .tippy-popper[x-placement="left-end"] .tippy-arrow, .tippy-popper[x-placement="right-start"] .tippy-roundarrow, .tippy-popper[x-placement="right-start"] .tippy-arrow, .tippy-popper[x-placement="right-end"] .tippy-roundarrow, .tippy-popper[x-placement="right-end"] .tippy-arrow{ + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; +} +.tippy-popper[x-placement="top"] .tippy-roundarrow, .tippy-popper[x-placement="top"] .tippy-arrow, .tippy-popper[x-placement="bottom"] .tippy-roundarrow, .tippy-popper[x-placement="bottom"] .tippy-arrow, .tippy-popper[x-placement="top-start"] .tippy-roundarrow, .tippy-popper[x-placement="top-start"] .tippy-arrow, .tippy-popper[x-placement="top-end"] .tippy-roundarrow, .tippy-popper[x-placement="top-end"] .tippy-arrow, .tippy-popper[x-placement="bottom-start"] .tippy-roundarrow, .tippy-popper[x-placement="bottom-start"] .tippy-arrow, .tippy-popper[x-placement="bottom-end"] .tippy-roundarrow, .tippy-popper[x-placement="bottom-end"] .tippy-arrow{ + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; +} +.dark .tippy-box { + box-shadow: 0 0 20px 4px #00000026, 0 4px 80px -8px #24282f40, + 0 4px 4px -2px #5b5e6926; + } +.tabulator-print-fullscreen-hide:before { + content: ""; + position: fixed; + top: 0px; + left: 0px; + height: 100vh; + width: 100%; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.tabulator{ + overflow: hidden; + border-width: 0px; + background-color: transparent; +} +.tabulator .tabulator-header{ + border-top-width: 1px; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + background-color: transparent; + font-weight: 500; + color: currentColor; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col{ + border-right-width: 0px; + background-color: transparent; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col .tabulator-col-content{ + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col .tabulator-col-content .tabulator-col-title{ + padding-right: 0px; +} +.tabulator .tabulator-header .tabulator-headers .tabulator-col .tabulator-col-content .tabulator-arrow { + top: -3px; + border-left-width: 5px; + border-right-width: 5px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + } +.tabulator .tabulator-header .tabulator-headers .tabulator-col.tabulator-sortable[aria-sort="none"] + .tabulator-col-content + .tabulator-arrow { + border-bottom-color: #cbd5e0; + } +.tabulator .tabulator-row{ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.tabulator .tabulator-row:hover, .tabulator .tabulator-row.tabulator-row-even:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-row.tabulator-row-even{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-row .tabulator-cell{ + border-right-width: 0px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle{ + padding-left: 0px; + padding-right: 0px; +} +.tabulator .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{ + margin-right: -1.25rem; + height: 1rem; + width: 1rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-400) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-row .tabulator-responsive-collapse{ + border-bottom-width: 0px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + padding: 0.75rem; +} +.tabulator .tabulator-row .tabulator-responsive-collapse td{ + padding: 0.5rem; +} +.tabulator .tabulator-row .tabulator-responsive-collapse td strong{ + font-weight: 500; +} +.tabulator .tabulator-footer{ + margin-top: 0.5rem; + border-top-width: 0px; + background-color: transparent; + padding: 0px; +} +@media (max-width: calc(768px - 1px)) { + .tabulator .tabulator-footer{ + white-space: normal; + } + } +.tabulator .tabulator-footer .tabulator-paginator{ + display: flex; + align-items: center; +} +@media (max-width: calc(768px - 1px)) { + .tabulator .tabulator-footer .tabulator-paginator{ + display: block; + text-align: left; + } + } +.tabulator .tabulator-footer .tabulator-paginator > label{ + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page-size { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 15px; + background-position: center right 0.6rem; + margin-left: 0.5rem; + margin-right: auto; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + background-repeat: no-repeat; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 2rem; + } +@media (max-width: calc(768px - 1px)) { + .tabulator .tabulator-footer .tabulator-paginator .tabulator-page-size{ + margin-right: 0.75rem; + } + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page { + min-width: 40px; + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-weight: 500; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + transition-property: none; +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:hover:not(:disabled){ + --tw-border-opacity: 0.9; + --tw-bg-opacity: 0.9; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not(button){ + text-align: center; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:disabled{ + cursor: not-allowed; + opacity: 0.7; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + display: inline-flex; + align-items: center; + justify-content: center; + border-color: transparent; + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +@media (max-width: calc(640px - 1px)) { + .tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + margin-right: 0px; + padding-left: 0.25rem; + padding-right: 0.25rem; + } + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + font-weight: 500; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="first"], .tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="prev"], .tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="next"], .tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="last"]{ + width: 1.25rem; + color: transparent; +} +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="first"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='11 17 6 12 11 7'%3E%3C/polyline%3E%3Cpolyline points='18 17 13 12 18 7'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 50%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="prev"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 45%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="next"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 45%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-footer .tabulator-paginator .tabulator-page[data-page="last"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='13 17 18 12 13 7'%3E%3C/polyline%3E%3Cpolyline points='6 17 11 12 6 7'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 50%; + background-position: center; + background-repeat: no-repeat; + } +.tabulator .tabulator-tableHolder .tabulator-placeholder span{ + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 400; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.tabulator .tabulator-loader { + background: #ffffffbd; + } +.tabulator .tabulator-loader .tabulator-loader-msg{ + background-color: transparent; + font-size: 1rem; + line-height: 1.5rem; + font-weight: 400; +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{ + border-width: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-700) / var(--tw-text-opacity)); +} +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{ + border-width: 0px; + --tw-text-opacity: 1; + color: rgb(var(--color-danger) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-header .tabulator-headers .tabulator-col:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-table{ + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-table .tabulator-row{ + border-color: transparent; + background-color: transparent; +} +.dark .tabulator .tabulator-table .tabulator-row:hover, .dark .tabulator .tabulator-table .tabulator-row.tabulator-row-even:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-table .tabulator-row.tabulator-row-even{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator > label{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page-size{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page{ + background-color: transparent; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active, .dark .tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.dark .tabulator .tabulator-loader{ + background-color: rgb(0 0 0 / 0.3); +} +.dark .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.tom-select .ts-input { + min-height: 40px; + padding: 7.5px 32px 7.5px 12px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 18px; + background-position: center right 0.6rem; + border-radius: 0.25rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + background-repeat: no-repeat; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.tom-select .ts-input .item { + line-height: 22px; + } +.tom-select .ts-input.dropdown-active { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14.828' height='8.414' viewBox='0 0 14.828 8.414'%3E%3Cpath id='chevron' d='M6,9l6,6,6-6' transform='translate(19.414 16) rotate(180)' fill='none' stroke='%234a5568' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E%0A") !important; + background-size: 11px !important; + background-position: center right 0.8rem !important; + background-repeat: no-repeat !important; + } +.tom-select .ts-input input { + height: 23px; + font-size: 0.875rem; + line-height: 1.25rem; + } +.tom-select.multi .ts-input{ + padding-left: 0.375rem; + padding-right: 0.375rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.tom-select.multi .ts-input > div{ + margin-top: 0.125rem; + margin-bottom: 0.125rem; + margin-right: 0.25rem; + border-radius: 0.25rem; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + padding-left: 0.5rem; + padding-right: 0.5rem; + padding-top: 0px; + padding-bottom: 0px; +} +.tom-select.multi .ts-input > div.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.tom-select.multi .ts-input > div.active .remove{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-400) / var(--tw-border-opacity)); +} +.tom-select.plugin-remove_button .item .remove{ + margin-left: 0.5rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-300) / var(--tw-border-opacity)); + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.tom-select.plugin-dropdown_input .ts-input.focus{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.tom-select .ts-dropdown { + margin-top: -1px; + border-top: 1px solid rgba(226, 232, 240, var(--tw-border-opacity)); + z-index: 50; + border-radius: 0.25rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + font-size: 0.875rem; + line-height: 1.25rem; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.tom-select .ts-dropdown .optgroup-header { + padding: 9px 10px; + font-weight: 500; + } +.tom-select .ts-dropdown .option { + padding: 9px 13px; + } +.tom-select .ts-dropdown .option .highlight{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-danger) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.tom-select .ts-dropdown .option.active{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.tom-select .ts-dropdown .option:hover:not(.active){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.tom-select .ts-dropdown.plugin-dropdown_input .dropdown-input-wrap{ + padding: 0.5rem; +} +.tom-select .ts-dropdown.plugin-dropdown_input .dropdown-input-wrap input{ + border-radius: 0.25rem; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + outline: 2px solid transparent; + outline-offset: 2px; +} +.tom-select .ts-dropdown .dropdown-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.tom-select .ts-dropdown .dropdown-header .dropdown-header-close{ + margin-right: 0.125rem; + cursor: pointer; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); + opacity: 1; +} +.dark .tom-select .ts-input { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); + } +.dark .tom-select .ts-input.dropdown-active{ + border-color: transparent; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14.828' height='8.414' viewBox='0 0 14.828 8.414'%3E%3Cpath id='chevron' d='M6,9l6,6,6-6' transform='translate(19.414 16) rotate(180)' fill='none' stroke='rgb(255 255 255)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E%0A") !important; +} +.dark .tom-select .ts-input.dropdown-active:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .tom-select.multi .ts-input > div{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select.multi .ts-input > div.active{ + background-color: rgb(var(--color-darkmode-400) / 0.8); +} +.dark .tom-select.multi .ts-input > div .remove{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .tom-select.plugin-dropdown_input .ts-input.focus{ + border-color: transparent; +} +.dark .tom-select .ts-dropdown{ + border-color: rgb(var(--color-darkmode-800) / 0.8); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown.plugin-dropdown_input .dropdown-input-wrap input{ + border-color: rgb(var(--color-darkmode-800) / 0.8); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .tom-select .ts-dropdown .optgroup-header{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .create{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .create:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .tom-select .ts-dropdown .option:hover:not(.active){ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .dropdown-header{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-700) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .tom-select .ts-dropdown .dropdown-header .dropdown-header-close{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dropzone{ + border-style: dashed; + border-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .dropzone{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.ck-editor, .document-editor, .ck-editor__editable{ + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.document-editor { + display: flex; + max-height: 700px; + flex-flow: column nowrap; + border-radius: var(--ck-border-radius); + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.document-editor .document-editor__toolbar { + z-index: 1; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + } +.document-editor .document-editor__toolbar .ck-toolbar { + border: 0; + border-radius: 0; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + } +.document-editor .document-editor__toolbar .ck-toolbar .ck-icon { + width: 16px; + } +.document-editor .document-editor__editable-container { + overflow-y: scroll; + padding: calc(2 * var(--ck-spacing-large)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + } +.document-editor .document-editor__editable-container .ck-editor__editable { + width: 15.8cm; + margin: 0 auto; + min-height: 21cm; + background: white; + padding: 1cm 2cm 2cm; + border-radius: var(--ck-border-radius); + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +.document-editor .ck-heading-dropdown .ck-list .ck-button__label { + line-height: calc( + 1.7 * var(--ck-line-height-base) * var(--ck-font-size-base) + ); + min-width: 6em; + } +.document-editor .ck-heading-dropdown + .ck-list + .ck-button:not(.ck-heading_paragraph) + .ck-button__label { + transform: scale(0.8); + transform-origin: left; + } +.document-editor .ck-content h2, + .document-editor .ck-heading-dropdown .ck-heading_heading1 .ck-button__label { + font-size: 2.18em; + font-weight: normal; + } +.document-editor .ck-content h2 { + line-height: 1.37em; + padding-top: 0.342em; + margin-bottom: 0.142em; + } +.document-editor .ck-content h3, + .document-editor .ck-heading-dropdown .ck-heading_heading2 .ck-button__label { + font-size: 1.75em; + font-weight: normal; + color: hsl(203, 100%, 50%); + } +.document-editor .ck-heading-dropdown .ck-heading_heading2.ck-on .ck-button__label { + color: var(--ck-color-list-button-on-text); + } +.document-editor .ck-content h3 { + line-height: 1.86em; + padding-top: 0.171em; + margin-bottom: 0.357em; + } +.document-editor .ck-content h4, + .document-editor .ck-heading-dropdown .ck-heading_heading3 .ck-button__label { + font-size: 1.31em; + font-weight: bold; + } +.document-editor .ck-content h4 { + line-height: 1.24em; + padding-top: 0.286em; + margin-bottom: 0.952em; + } +.document-editor .ck-content p { + font-size: 1em; + line-height: 1.63em; + padding-top: 0.5em; + margin-bottom: 1.13em; + } +.document-editor .ck-content blockquote { + font-family: Georgia, serif; + margin-left: calc(2 * var(--ck-spacing-large)); + margin-right: calc(2 * var(--ck-spacing-large)); + } +.ck.ck-content { + min-height: 250px; +} +.ck.ck-content.ck-editor__editable_inline{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.ck .ck .ck-content{ + min-height: 250px; +} +.ck .ck .ck-content.ck-editor__editable_inline{ + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.ck .ck .ck-content blockquote, + .ck .ck .ck-content dl, + .ck .ck .ck-content dd, + .ck .ck .ck-content h1, + .ck .ck .ck-content h2, + .ck .ck .ck-content h3, + .ck .ck .ck-content h4, + .ck .ck .ck-content h5, + .ck .ck .ck-content h6, + .ck .ck .ck-content hr, + .ck .ck .ck-content figure, + .ck .ck .ck-content p, + .ck .ck .ck-content pre { + margin: revert; + } +.ck .ck .ck-content ol, + .ck .ck .ck-content ul { + list-style: revert; + margin: revert; + padding: revert; + } +.ck .ck .ck-content h1, + .ck .ck .ck-content h2, + .ck .ck .ck-content h3, + .ck .ck .ck-content h4, + .ck .ck .ck-content h5, + .ck .ck .ck-content h6 { + font-size: revert; + font-weight: revert; + } +.ck .ck .ck-content img, + .ck .ck .ck-content svg, + .ck .ck .ck-content video, + .ck .ck .ck-content canvas, + .ck .ck .ck-content audio, + .ck .ck .ck-content iframe, + .ck .ck .ck-content embed, + .ck .ck .ck-content object { + display: revert; + vertical-align: revert; + } +.ck .ck.ck-reset_all, .ck .ck.ck-reset_all *{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-800) / var(--tw-text-opacity)); +} +.ck .ck.ck-toolbar, .ck .ck.ck-balloon-panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.ck .ck.ck-toolbar .ck-icon, .ck .ck.ck-balloon-panel .ck-icon{ + width: 16px; +} +.ck .ck.ck-editor__main > .ck-editor__editable:not(.ck-focused){ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.ck .ck.ck-button:not(.ck-disabled):hover, .ck .cka.ck-button:not(.ck-disabled):hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.dark .document-editor{ + border-color: rgb(var(--color-darkmode-900) / 0.3); +} +.dark .document-editor .document-editor__toolbar{ + border-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar{ + background-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck-toolbar__separator{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck-tooltip .ck-tooltip__text{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck-tooltip .ck-tooltip__text:after{ + --tw-border-opacity: 1; + border-bottom-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck.ck-icon :not([fill]){ + fill: rgb(var(--color-slate-300)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck.ck-dropdown__panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .document-editor .document-editor__toolbar .ck-toolbar .ck.ck-button.ck-on, .dark .document-editor .document-editor__toolbar .ck-toolbar a.ck.ck-button.ck-on{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .document-editor .document-editor__editable-container{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .document-editor .document-editor__editable-container .ck-editor__editable{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck-content.ck-editor__editable_inline{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck-list{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck-dropdown__panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck.ck.ck-input-text{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .ck.ck.ck-input-text:focus{ + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.dark .ck .ck-insert-table-dropdown-grid-box{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .ck.ck-reset_all, .dark .ck.ck-reset_all *{ + --tw-text-opacity: 1 !important; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)) !important; +} +.dark .ck .ck .ck-content.ck-editor__editable_inline{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-toolbar, .dark .ck .ck.ck-balloon-panel{ + border-color: rgb(var(--color-darkmode-900) / 0.2); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-toolbar:before, .dark .ck .ck.ck-balloon-panel:before{ + border-bottom-color: rgb(var(--color-darkmode-900) / 0.2) !important; +} +.dark .ck .ck.ck-toolbar:after, .dark .ck .ck.ck-balloon-panel:after{ + border-bottom-color: rgb(var(--color-darkmode-900) / 0.2) !important; +} +.dark .ck .ck.ck-toolbar .ck-toolbar__separator, .dark .ck .ck.ck-balloon-panel .ck-toolbar__separator{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-toolbar .ck-tooltip .ck-tooltip__text, .dark .ck .ck.ck-balloon-panel .ck-tooltip .ck-tooltip__text{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .ck .ck.ck-toolbar .ck-tooltip .ck-tooltip__text:after, .dark .ck .ck.ck-balloon-panel .ck-tooltip .ck-tooltip__text:after{ + border-bottom-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .ck .ck.ck-toolbar .ck.ck-icon :not([fill]), .dark .ck .ck.ck-balloon-panel .ck.ck-icon :not([fill]){ + fill: rgb(var(--color-slate-300)); +} +.dark .ck .ck.ck-toolbar .ck.ck-dropdown__panel, .dark .ck .ck.ck-balloon-panel .ck.ck-dropdown__panel{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .ck .ck.ck-toolbar .ck.ck-button.ck-on, .dark .ck .ck.ck-toolbar a.ck.ck-button.ck-on, .dark .ck .ck.ck-balloon-panel .ck.ck-button.ck-on, .dark .ck .ck.ck-balloon-panel a.ck.ck-button.ck-on{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-editor__main > .ck-editor__editable{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .ck .ck.ck-editor__main > .ck-editor__editable:not(.ck-focused){ + border-color: rgb(var(--color-darkmode-900) / 0.2); +} +.dark .ck .ck.ck-button:not(.ck-disabled):hover, .dark .ck .cka.ck-button:not(.ck-disabled):hover{ + background-color: rgb(var(--color-darkmode-900) / 0.2); +} +.zoom-overlay{ + background-color: rgb(0 0 0 / 0.75); +} +.dark .zoom-overlay{ + background-color: rgb(0 0 0 / 0.4); +} +.dark-mode-switcher .dark-mode-switcher__toggle { + width: 38px; + height: 24px; + padding: 1px; + position: relative; + cursor: pointer; + border-radius: 9999px; + outline: 2px solid transparent; + outline-offset: 2px; + } +.dark-mode-switcher .dark-mode-switcher__toggle:before { + content: ""; + width: 22px; + height: 22px; + transition: all 0.2s ease-in-out; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); + position: absolute; + top: 0px; + bottom: 0px; + margin-top: auto; + margin-bottom: auto; + border-radius: 9999px; + } +.dark-mode-switcher .dark-mode-switcher__toggle.dark-mode-switcher__toggle--active{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.dark-mode-switcher .dark-mode-switcher__toggle.dark-mode-switcher__toggle--active::before { + margin-left: 13px; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + } +.source-preview{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} +.source-preview .hljs{ + margin-top: -20px; + margin-bottom: -40px; + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); + font-size: 0.75rem; + line-height: 1rem; + line-height: 1.625; +} +.dark .source-preview .hljs{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.source-preview{ + position: relative; +} +.source-preview code:before { + content: "HTML"; + position: absolute; + top: 0px; + right: 0px; + display: block; + border-bottom-left-radius: 0.25rem; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.7; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + font-family: Roboto; + font-weight: 500; + } +.dark .source-preview code:before{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-300) / var(--tw-bg-opacity)); +} +.source-preview code.javascript:before { + content: "JS"; + } +@media (max-width: calc(1024px - 1px)) { + .full-calendar .fc-toolbar{ + flex-direction: column; + } + } +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(1){ + order: 3; +} +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(2){ + order: 1; +} +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3){ + order: 2; +} +@media (max-width: calc(1024px - 1px)) { + .full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3){ + margin-top: 0.75rem; + margin-bottom: 0.75rem; + } + } +@media (max-width: calc(640px - 1px)) { + .full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3) .fc-button-group{ + display: block; + } + } +.full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3) .fc-button-group button{ + width: 5rem; +} +@media (max-width: calc(640px - 1px)) { + .full-calendar .fc-toolbar .fc-toolbar-chunk:nth-child(3) .fc-button-group button{ + margin-bottom: 0.5rem; + width: 100%; + border-radius: 0.375rem; + } + } +.full-calendar .fc-toolbar .fc-toolbar-title{ + font-size: 1.125rem; + line-height: 1.75rem; + font-weight: 500; +} +.full-calendar .fc-toolbar-chunk .fc-button-primary:first-child{ + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} +.full-calendar .fc-toolbar-chunk .fc-button-primary:last-child{ + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.full-calendar.fc-theme-standard .fc-scrollgrid, .full-calendar.fc-theme-standard th, .full-calendar.fc-theme-standard td, .full-calendar.fc-theme-standard .fc-list{ + border-color: rgb(var(--color-slate-200) / 0.6); +} +.dark .full-calendar.fc-theme-standard .fc-scrollgrid, .dark .full-calendar.fc-theme-standard th, .dark .full-calendar.fc-theme-standard td, .dark .full-calendar.fc-theme-standard .fc-list{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.full-calendar table{ + border-radius: 0.375rem; +} +.full-calendar table tr th .fc-scrollgrid-sync-inner{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.full-calendar .fc-daygrid-event-harness{ + margin-left: 1.25rem; + margin-right: 1.25rem; +} +.full-calendar .fc-h-event{ + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.full-calendar .fc-event-title-container{ + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + font-size: 0.75rem; + line-height: 1rem; +} +.full-calendar .fc-daygrid-event{ + font-size: 0.75rem; + line-height: 1rem; +} +.full-calendar .fc-daygrid-event-dot{ + margin-right: 0.5rem; + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.full-calendar .fc-daygrid-dot-event .fc-event-title{ + font-weight: 500; +} +.full-calendar .fc-col-header-cell-cushion{ + font-weight: 500; +} +@media (max-width: calc(640px - 1px)) { + .full-calendar.fc .fc-view-harness{ + min-height: 400px !important; + } + .full-calendar.fc .fc-daygrid-day-frame{ + min-height: 60px !important; + } + } +.full-calendar .fc-daygrid-more-link{ + font-size: 0.875rem; + line-height: 1.25rem; +} +@media (max-width: calc(768px - 1px)) { + .full-calendar .fc-daygrid-more-link{ + font-size: 10px; + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); + } + } +@media (max-width: calc(640px - 1px)) { + .full-calendar .fc-daygrid-more-link{ + margin-top: -0.75rem; + display: block; + padding-left: 0px; + line-height: 10px; + } + } +.full-calendar .fc-daygrid-day-bottom{ + padding-top: 0.25rem; +} +.full-calendar .fc-day-other{ + background-color: rgb(var(--color-slate-100) / 0.5); +} +.dark .full-calendar .fc-day-other{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.full-calendar .fc-button-primary{ + display: inline-block !important; + border-color: rgb(var(--color-slate-200) / 0.6) !important; + background-color: transparent !important; + padding-left: 0.65em !important; + padding-right: 0.65em !important; + padding-top: 0.4em !important; + padding-bottom: 0.4em !important; + text-transform: capitalize !important; + --tw-text-opacity: 1 !important; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)) !important; + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-weight: 500; + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; +} +.full-calendar .fc-button-primary:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.2; +} +.dark .full-calendar .fc-button-primary{ + transition-property: none; +} +.dark .full-calendar .fc-button-primary:focus{ + --tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity)); + --tw-ring-opacity: 0.5; +} +.full-calendar .fc-button-primary:hover:not(:disabled){ + --tw-border-opacity: 0.9; + --tw-bg-opacity: 0.9; +} +.full-calendar .fc-button-primary:not(button){ + text-align: center; +} +.full-calendar .fc-button-primary:disabled{ + cursor: not-allowed; + opacity: 0.7; +} +.full-calendar .fc-button-primary .fc-icon{ + font-size: 1.2em !important; +} +.full-calendar .fc-button-primary:focus{ + --tw-shadow: 0 0 #0000 !important; + --tw-shadow-colored: 0 0 #0000 !important; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; +} +.full-calendar .fc-button-primary:not(:disabled):active, .full-calendar .fc-button-primary:not(:disabled).fc-button-active{ + --tw-border-opacity: 1 !important; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)) !important; + --tw-bg-opacity: 1 !important; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)) !important; + --tw-text-opacity: 1 !important; + color: rgb(255 255 255 / var(--tw-text-opacity)) !important; +} +.full-calendar .fc-list-day-cushion{ + background-color: rgb(var(--color-slate-100) / 0.5) !important; + padding-left: 1.25rem !important; + padding-right: 1.25rem !important; + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} +.full-calendar .fc-list-event td{ + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.full-calendar .fc-list-event-dot{ + --tw-border-opacity: 1 !important; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)) !important; +} +.full-calendar .fc-event-time{ + padding-left: 0.125rem; + padding-right: 0.125rem; + font-size: 0.75rem !important; +} +.full-calendar .fc-daygrid-more-link{ + padding-left: 0.5rem; +} +.dark .full-calendar .fc-button-primary{ + --tw-border-opacity: 1 !important; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)) !important; + --tw-bg-opacity: 1 !important; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)) !important; +} +.dark .full-calendar .fc-list-day-cushion{ + --tw-bg-opacity: 1 !important; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)) !important; +} +.dark .full-calendar .fc-event:hover td{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.has-error .form-control{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.dark .has-error .form-control{ + border-color: rgb(var(--color-danger) / 0.7); +} +.before\:absolute::before{ + content: var(--tw-content); + position: absolute; +} +.before\:inset-0::before{ + content: var(--tw-content); + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; +} +.before\:left-0::before{ + content: var(--tw-content); + left: 0px; +} +.before\:top-0::before{ + content: var(--tw-content); + top: 0px; +} +.before\:bottom-0::before{ + content: var(--tw-content); + bottom: 0px; +} +.before\:z-\[-1\]::before{ + content: var(--tw-content); + z-index: -1; +} +.before\:z-10::before{ + content: var(--tw-content); + z-index: 10; +} +.before\:ml-5::before{ + content: var(--tw-content); + margin-left: 1.25rem; +} +.before\:mt-5::before{ + content: var(--tw-content); + margin-top: 1.25rem; +} +.before\:mt-4::before{ + content: var(--tw-content); + margin-top: 1rem; +} +.before\:block::before{ + content: var(--tw-content); + display: block; +} +.before\:hidden::before{ + content: var(--tw-content); + display: none; +} +.before\:h-4::before{ + content: var(--tw-content); + height: 1rem; +} +.before\:h-full::before{ + content: var(--tw-content); + height: 100%; +} +.before\:h-\[85\%\]::before{ + content: var(--tw-content); + height: 85%; +} +.before\:h-px::before{ + content: var(--tw-content); + height: 1px; +} +.before\:h-\[3px\]::before{ + content: var(--tw-content); + height: 3px; +} +.before\:w-4::before{ + content: var(--tw-content); + width: 1rem; +} +.before\:w-\[2px\]::before{ + content: var(--tw-content); + width: 2px; +} +.before\:w-full::before{ + content: var(--tw-content); + width: 100%; +} +.before\:w-px::before{ + content: var(--tw-content); + width: 1px; +} +.before\:w-20::before{ + content: var(--tw-content); + width: 5rem; +} +.before\:w-\[69\%\]::before{ + content: var(--tw-content); + width: 69%; +} +.before\:rounded-full::before{ + content: var(--tw-content); + border-radius: 9999px; +} +.before\:rounded-md::before{ + content: var(--tw-content); + border-radius: 0.375rem; +} +.before\:bg-primary\/20::before{ + content: var(--tw-content); + background-color: rgb(var(--color-primary) / 0.2); +} +.before\:bg-slate-200::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity)); +} +.before\:bg-slate-100::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.before\:bg-black::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +} +.before\:bg-gradient-to-t::before{ + content: var(--tw-content); + background-image: linear-gradient(to top, var(--tw-gradient-stops)); +} +.before\:from-black\/90::before{ + content: var(--tw-content); + --tw-gradient-from: rgb(0 0 0 / 0.9); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); +} +.before\:from-black::before{ + content: var(--tw-content); + --tw-gradient-from: #000; + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); +} +.before\:to-black\/10::before{ + content: var(--tw-content); + --tw-gradient-to: rgb(0 0 0 / 0.1); +} +.before\:pt-\[100\%\]::before{ + content: var(--tw-content); + padding-top: 100%; +} +.before\:content-\[\'\'\]::before{ + --tw-content: ''; + content: var(--tw-content); +} +.after\:absolute::after{ + content: var(--tw-content); + position: absolute; +} +.after\:h-4::after{ + content: var(--tw-content); + height: 1rem; +} +.after\:w-4::after{ + content: var(--tw-content); + width: 1rem; +} +.after\:rounded-full::after{ + content: var(--tw-content); + border-radius: 9999px; +} +.after\:border-4::after{ + content: var(--tw-content); + border-width: 4px; +} +.after\:border-white\/60::after{ + content: var(--tw-content); + border-color: rgb(255 255 255 / 0.6); +} +.after\:bg-primary::after{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.after\:content-\[\'\'\]::after{ + --tw-content: ''; + content: var(--tw-content); +} +.first\:mt-0:first-child{ + margin-top: 0px; +} +.first\:pt-0:first-child{ + padding-top: 0px; +} +.hover\:border-slate-200:hover{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity)); +} +.hover\:bg-slate-100:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity)); +} +.hover\:bg-white\/5:hover{ + background-color: rgb(255 255 255 / 0.05); +} +.hover\:bg-opacity-30:hover{ + --tw-bg-opacity: 0.3; +} +.focus\:border-transparent:focus{ + border-color: transparent; +} +.focus\:outline-none:focus{ + outline: 2px solid transparent; + outline-offset: 2px; +} +.focus\:ring-0:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.dark .dark\:border{ + border-width: 1px; +} +.dark .dark\:border-0{ + border-width: 0px; +} +.dark .dark\:border-darkmode-400{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity)); +} +.dark .dark\:border-primary{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-primary) / var(--tw-border-opacity)); +} +.dark .dark\:border-transparent{ + border-color: transparent; +} +.dark .dark\:border-darkmode-600{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-600) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-300{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-800{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-800) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-500{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-500) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-100\/40{ + border-color: rgb(var(--color-darkmode-100) / 0.4); +} +.dark .dark\:border-success{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-success) / var(--tw-border-opacity)); +} +.dark .dark\:border-warning{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-warning) / var(--tw-border-opacity)); +} +.dark .dark\:border-danger{ + --tw-border-opacity: 1; + border-color: rgb(var(--color-danger) / var(--tw-border-opacity)); +} +.dark .dark\:border-darkmode-800\/80{ + border-color: rgb(var(--color-darkmode-800) / 0.8); +} +.dark .dark\:bg-darkmode-300{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-300) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-transparent{ + background-color: transparent; +} +.dark .dark\:bg-darkmode-800{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-darkmode-400{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-darkmode-600{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-success\/30{ + background-color: rgb(var(--color-success) / 0.3); +} +.dark .dark\:bg-pending\/30{ + background-color: rgb(var(--color-pending) / 0.3); +} +.dark .dark\:bg-primary\/50{ + background-color: rgb(var(--color-primary) / 0.5); +} +.dark .dark\:bg-black\/20{ + background-color: rgb(0 0 0 / 0.2); +} +.dark .dark\:bg-black\/10{ + background-color: rgb(0 0 0 / 0.1); +} +.dark .dark\:bg-darkmode-700{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-darkmode-400\/70{ + background-color: rgb(var(--color-darkmode-400) / 0.7); +} +.dark .dark\:bg-darkmode-500{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-500) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-primary{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-primary) / var(--tw-bg-opacity)); +} +.dark .dark\:bg-success\/10{ + background-color: rgb(var(--color-success) / 0.1); +} +.dark .dark\:bg-primary\/20{ + background-color: rgb(var(--color-primary) / 0.2); +} +.dark .dark\:text-slate-500{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-500) / var(--tw-text-opacity)); +} +.dark .dark\:text-slate-400{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-400) / var(--tw-text-opacity)); +} +.dark .dark\:text-slate-300{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-300) / var(--tw-text-opacity)); +} +.dark .dark\:text-white{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.dark .dark\:text-slate-200{ + --tw-text-opacity: 1; + color: rgb(var(--color-slate-200) / var(--tw-text-opacity)); +} +.dark .dark\:text-gray-300{ + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); +} +.dark .before\:dark\:bg-darkmode-600::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity)); +} +.dark .before\:dark\:bg-darkmode-400::before{ + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +.dark .after\:dark\:border-darkmode-300::after{ + content: var(--tw-content); + --tw-border-opacity: 1; + border-color: rgb(var(--color-darkmode-300) / var(--tw-border-opacity)); +} +.dark .dark\:hover\:bg-darkmode-400:hover{ + --tw-bg-opacity: 1; + background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity)); +} +@media (min-width: 640px){ + .sm\:static{ + position: static; + } + .sm\:absolute{ + position: absolute; + } + .sm\:relative{ + position: relative; + } + .sm\:col-span-6{ + grid-column: span 6 / span 6; + } + .sm\:col-span-4{ + grid-column: span 4 / span 4; + } + .sm\:col-span-3{ + grid-column: span 3 / span 3; + } + .sm\:col-span-1{ + grid-column: span 1 / span 1; + } + .sm\:mx-0{ + margin-left: 0px; + margin-right: 0px; + } + .sm\:mx-2{ + margin-left: 0.5rem; + margin-right: 0.5rem; + } + .sm\:-mx-8{ + margin-left: -2rem; + margin-right: -2rem; + } + .sm\:ml-auto{ + margin-left: auto; + } + .sm\:mt-0{ + margin-top: 0px; + } + .sm\:\!mr-10{ + margin-right: 2.5rem !important; + } + .sm\:ml-0{ + margin-left: 0px; + } + .sm\:mr-auto{ + margin-right: auto; + } + .sm\:mr-3{ + margin-right: 0.75rem; + } + .sm\:ml-3{ + margin-left: 0.75rem; + } + .sm\:mb-0{ + margin-bottom: 0px; + } + .sm\:mr-5{ + margin-right: 1.25rem; + } + .sm\:mt-5{ + margin-top: 1.25rem; + } + .sm\:mt-2{ + margin-top: 0.5rem; + } + .sm\:mt-10{ + margin-top: 2.5rem; + } + .sm\:ml-40{ + margin-left: 10rem; + } + .sm\:mr-28{ + margin-right: 7rem; + } + .sm\:mr-40{ + margin-right: 10rem; + } + .sm\:mr-20{ + margin-right: 5rem; + } + .sm\:mr-0{ + margin-right: 0px; + } + .sm\:mr-2{ + margin-right: 0.5rem; + } + .sm\:ml-20{ + margin-left: 5rem; + } + .sm\:mr-4{ + margin-right: 1rem; + } + .sm\:ml-1{ + margin-left: 0.25rem; + } + .sm\:ml-2{ + margin-left: 0.5rem; + } + .sm\:mr-6{ + margin-right: 1.5rem; + } + .sm\:block{ + display: block; + } + .sm\:flex{ + display: flex; + } + .sm\:grid{ + display: grid; + } + .sm\:hidden{ + display: none; + } + .sm\:h-10{ + height: 2.5rem; + } + .sm\:h-12{ + height: 3rem; + } + .sm\:h-5{ + height: 1.25rem; + } + .sm\:h-24{ + height: 6rem; + } + .sm\:w-auto{ + width: auto; + } + .sm\:w-20{ + width: 5rem; + } + .sm\:w-10{ + width: 2.5rem; + } + .sm\:w-12{ + width: 3rem; + } + .sm\:w-5{ + width: 1.25rem; + } + .sm\:w-56{ + width: 14rem; + } + .sm\:w-72{ + width: 18rem; + } + .sm\:w-52{ + width: 13rem; + } + .sm\:w-60{ + width: 15rem; + } + .sm\:w-full{ + width: 100%; + } + .sm\:w-64{ + width: 16rem; + } + .sm\:w-3\/4{ + width: 75%; + } + .sm\:w-40{ + width: 10rem; + } + .sm\:w-24{ + width: 6rem; + } + .sm\:w-32{ + width: 8rem; + } + .sm\:w-16{ + width: 4rem; + } + .sm\:flex-row{ + flex-direction: row; + } + .sm\:flex-nowrap{ + flex-wrap: nowrap; + } + .sm\:items-end{ + align-items: flex-end; + } + .sm\:justify-start{ + justify-content: flex-start; + } + .sm\:justify-end{ + justify-content: flex-end; + } + .sm\:gap-10{ + gap: 2.5rem; + } + .sm\:gap-6{ + gap: 1.5rem; + } + .sm\:overflow-x-visible{ + overflow-x: visible; + } + .sm\:whitespace-normal{ + white-space: normal; + } + .sm\:border-0{ + border-width: 0px; + } + .sm\:border-t-0{ + border-top-width: 0px; + } + .sm\:border-l{ + border-left-width: 1px; + } + .sm\:border-b-0{ + border-bottom-width: 0px; + } + .sm\:px-0{ + padding-left: 0px; + padding-right: 0px; + } + .sm\:py-4{ + padding-top: 1rem; + padding-bottom: 1rem; + } + .sm\:px-28{ + padding-left: 7rem; + padding-right: 7rem; + } + .sm\:px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .sm\:px-20{ + padding-left: 5rem; + padding-right: 5rem; + } + .sm\:py-20{ + padding-top: 5rem; + padding-bottom: 5rem; + } + .sm\:px-16{ + padding-left: 4rem; + padding-right: 4rem; + } + .sm\:px-10{ + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .sm\:px-8{ + padding-left: 2rem; + padding-right: 2rem; + } + .sm\:py-0{ + padding-top: 0px; + padding-bottom: 0px; + } + .sm\:py-3{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .sm\:pt-6{ + padding-top: 1.5rem; + } + .sm\:pt-0{ + padding-top: 0px; + } + .sm\:pl-5{ + padding-left: 1.25rem; + } + .sm\:pb-20{ + padding-bottom: 5rem; + } + .sm\:pt-20{ + padding-top: 5rem; + } + .sm\:pb-0{ + padding-bottom: 0px; + } + .sm\:text-left{ + text-align: left; + } + .sm\:text-right{ + text-align: right; + } + .sm\:text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; + } + .sm\:text-2xl{ + font-size: 1.5rem; + line-height: 2rem; + } + .sm\:text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; + } +} +@media (min-width: 768px){ + .md\:fixed{ + position: fixed; + } + .md\:inset-x-0{ + left: 0px; + right: 0px; + } + .md\:top-0{ + top: 0px; + } + .md\:col-span-2{ + grid-column: span 2 / span 2; + } + .md\:col-span-6{ + grid-column: span 6 / span 6; + } + .md\:col-span-4{ + grid-column: span 4 / span 4; + } + .md\:col-span-3{ + grid-column: span 3 / span 3; + } + .md\:row-start-auto{ + grid-row-start: auto; + } + .md\:-mx-0{ + margin-left: -0px; + margin-right: -0px; + } + .md\:ml-0{ + margin-left: 0px; + } + .md\:ml-auto{ + margin-left: auto; + } + .md\:mt-0{ + margin-top: 0px; + } + .md\:block{ + display: block; + } + .md\:flex{ + display: flex; + } + .md\:hidden{ + display: none; + } + .md\:h-\[65px\]{ + height: 65px; + } + .md\:w-52{ + width: 13rem; + } + .md\:flex-row{ + flex-direction: row; + } + .md\:items-center{ + align-items: center; + } + .md\:border-t-0{ + border-top-width: 0px; + } + .md\:border-l{ + border-left-width: 1px; + } + .md\:border-r{ + border-right-width: 1px; + } + .md\:border-l-0{ + border-left-width: 0px; + } + .md\:border-b-0{ + border-bottom-width: 0px; + } + .md\:bg-gradient-to-b{ + background-image: linear-gradient(to bottom, var(--tw-gradient-stops)); + } + .md\:from-slate-100{ + --tw-gradient-from: rgb(var(--color-slate-100)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-slate-100) / 0)); + } + .md\:to-transparent{ + --tw-gradient-to: transparent; + } + .md\:px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .md\:py-0{ + padding-top: 0px; + padding-bottom: 0px; + } + .md\:px-10{ + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .md\:pl-0{ + padding-left: 0px; + } + .md\:pt-10{ + padding-top: 2.5rem; + } + .dark .dark\:md\:from-darkmode-700{ + --tw-gradient-from: rgb(var(--color-darkmode-700)); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(var(--color-darkmode-700) / 0)); + } +} +@media (min-width: 1024px){ + .lg\:col-span-6{ + grid-column: span 6 / span 6; + } + .lg\:col-span-4{ + grid-column: span 4 / span 4; + } + .lg\:col-span-8{ + grid-column: span 8 / span 8; + } + .lg\:col-span-3{ + grid-column: span 3 / span 3; + } + .lg\:col-span-9{ + grid-column: span 9 / span 9; + } + .lg\:col-span-2{ + grid-column: span 2 / span 2; + } + .lg\:col-span-7{ + grid-column: span 7 / span 7; + } + .lg\:row-start-3{ + grid-row-start: 3; + } + .lg\:mx-auto{ + margin-left: auto; + margin-right: auto; + } + .lg\:mt-5{ + margin-top: 1.25rem; + } + .lg\:mt-6{ + margin-top: 1.5rem; + } + .lg\:mr-20{ + margin-right: 5rem; + } + .lg\:mt-0{ + margin-top: 0px; + } + .lg\:ml-auto{ + margin-left: auto; + } + .lg\:ml-5{ + margin-left: 1.25rem; + } + .lg\:mb-0{ + margin-bottom: 0px; + } + .lg\:ml-8{ + margin-left: 2rem; + } + .lg\:mt-3{ + margin-top: 0.75rem; + } + .lg\:mr-1{ + margin-right: 0.25rem; + } + .lg\:ml-2{ + margin-left: 0.5rem; + } + .lg\:mr-auto{ + margin-right: auto; + } + .lg\:ml-0{ + margin-left: 0px; + } + .lg\:ml-4{ + margin-left: 1rem; + } + .lg\:block{ + display: block; + } + .lg\:flex{ + display: flex; + } + .lg\:h-auto{ + height: auto; + } + .lg\:h-32{ + height: 8rem; + } + .lg\:h-12{ + height: 3rem; + } + .lg\:w-auto{ + width: auto; + } + .lg\:w-2\/4{ + width: 50%; + } + .lg\:w-64{ + width: 16rem; + } + .lg\:w-40{ + width: 10rem; + } + .lg\:w-32{ + width: 8rem; + } + .lg\:w-56{ + width: 14rem; + } + .lg\:w-12{ + width: 3rem; + } + .lg\:w-1\/2{ + width: 50%; + } + .lg\:flex-row{ + flex-direction: row; + } + .lg\:flex-nowrap{ + flex-wrap: nowrap; + } + .lg\:items-start{ + align-items: flex-start; + } + .lg\:justify-start{ + justify-content: flex-start; + } + .lg\:justify-end{ + justify-content: flex-end; + } + .lg\:justify-center{ + justify-content: center; + } + .lg\:overflow-visible{ + overflow: visible; + } + .lg\:border-0{ + border-width: 0px; + } + .lg\:border-t-0{ + border-top-width: 0px; + } + .lg\:border-l{ + border-left-width: 1px; + } + .lg\:border-b-0{ + border-bottom-width: 0px; + } + .lg\:border-r{ + border-right-width: 1px; + } + .lg\:px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .lg\:py-3{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .lg\:px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .lg\:pb-0{ + padding-bottom: 0px; + } + .lg\:pl-5{ + padding-left: 1.25rem; + } + .lg\:pb-20{ + padding-bottom: 5rem; + } + .lg\:pt-0{ + padding-top: 0px; + } + .lg\:text-left{ + text-align: left; + } + .lg\:text-center{ + text-align: center; + } + .lg\:text-right{ + text-align: right; + } + .lg\:text-justify{ + text-align: justify; + } + .lg\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } + .before\:lg\:block::before{ + content: var(--tw-content); + display: block; + } + @-webkit-keyframes ping{ + 75%, 100%{ + content: var(--tw-content); + transform: scale(2); + opacity: 0; + } + } + @keyframes ping{ + 75%, 100%{ + content: var(--tw-content); + transform: scale(2); + opacity: 0; + } + } + .lg\:before\:animate-ping::before{ + content: var(--tw-content); + -webkit-animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + } +} +@media (min-width: 1280px){ + .xl\:absolute{ + position: absolute; + } + .xl\:sticky{ + position: -webkit-sticky; + position: sticky; + } + .xl\:z-auto{ + z-index: auto; + } + .xl\:col-span-4{ + grid-column: span 4 / span 4; + } + .xl\:col-span-8{ + grid-column: span 8 / span 8; + } + .xl\:col-span-3{ + grid-column: span 3 / span 3; + } + .xl\:col-span-12{ + grid-column: span 12 / span 12; + } + .xl\:col-span-6{ + grid-column: span 6 / span 6; + } + .xl\:col-span-9{ + grid-column: span 9 / span 9; + } + .xl\:col-span-1{ + grid-column: span 1 / span 1; + } + .xl\:col-span-2{ + grid-column: span 2 / span 2; + } + .xl\:col-start-1{ + grid-column-start: 1; + } + .xl\:col-start-10{ + grid-column-start: 10; + } + .xl\:row-start-1{ + grid-row-start: 1; + } + .xl\:row-start-2{ + grid-row-start: 2; + } + .xl\:row-start-auto{ + grid-row-start: auto; + } + .xl\:mx-5{ + margin-left: 1.25rem; + margin-right: 1.25rem; + } + .xl\:mx-6{ + margin-left: 1.5rem; + margin-right: 1.5rem; + } + .xl\:my-0{ + margin-top: 0px; + margin-bottom: 0px; + } + .xl\:\!mr-10{ + margin-right: 2.5rem !important; + } + .xl\:mt-0{ + margin-top: 0px; + } + .xl\:ml-5{ + margin-left: 1.25rem; + } + .xl\:ml-20{ + margin-left: 5rem; + } + .xl\:ml-64{ + margin-left: 16rem; + } + .xl\:ml-auto{ + margin-left: auto; + } + .xl\:mt-2{ + margin-top: 0.5rem; + } + .xl\:-mt-5{ + margin-top: -1.25rem; + } + .xl\:mt-8{ + margin-top: 2rem; + } + .xl\:mr-3{ + margin-right: 0.75rem; + } + .xl\:mt-24{ + margin-top: 6rem; + } + .xl\:mr-0{ + margin-right: 0px; + } + .xl\:ml-6{ + margin-left: 1.5rem; + } + .xl\:block{ + display: block; + } + .xl\:flex{ + display: flex; + } + .xl\:grid{ + display: grid; + } + .xl\:hidden{ + display: none; + } + .xl\:h-auto{ + height: auto; + } + .xl\:min-h-0{ + min-height: 0px; + } + .xl\:w-64{ + width: 16rem; + } + .xl\:w-3\/5{ + width: 60%; + } + .xl\:w-auto{ + width: auto; + } + .xl\:w-32{ + width: 8rem; + } + .xl\:w-\[180px\]{ + width: 180px; + } + .xl\:flex-initial{ + flex: 0 1 auto; + } + .xl\:flex-row{ + flex-direction: row; + } + .xl\:flex-nowrap{ + flex-wrap: nowrap; + } + .xl\:items-start{ + align-items: flex-start; + } + .xl\:overflow-y-auto{ + overflow-y: auto; + } + .xl\:bg-transparent{ + background-color: transparent; + } + .xl\:p-0{ + padding: 0px; + } + .xl\:px-0{ + padding-left: 0px; + padding-right: 0px; + } + .xl\:py-0{ + padding-top: 0px; + padding-bottom: 0px; + } + .xl\:pr-10{ + padding-right: 2.5rem; + } + .xl\:pr-20{ + padding-right: 5rem; + } + .xl\:pl-5{ + padding-left: 1.25rem; + } + .xl\:pl-10{ + padding-left: 2.5rem; + } + .xl\:pb-0{ + padding-bottom: 0px; + } + .xl\:pb-16{ + padding-bottom: 4rem; + } + .xl\:text-left{ + text-align: left; + } + .xl\:text-right{ + text-align: right; + } + .xl\:text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; + } + .xl\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } + .xl\:shadow-none{ + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } + .xl\:before\:block::before{ + content: var(--tw-content); + display: block; + } +} +@media (min-width: 1536px){ + .\32xl\:z-10{ + z-index: 10; + } + .\32xl\:col-span-9{ + grid-column: span 9 / span 9; + } + .\32xl\:col-span-3{ + grid-column: span 3 / span 3; + } + .\32xl\:col-span-12{ + grid-column: span 12 / span 12; + } + .\32xl\:col-span-2{ + grid-column: span 2 / span 2; + } + .\32xl\:col-span-10{ + grid-column: span 10 / span 10; + } + .\32xl\:col-span-5{ + grid-column: span 5 / span 5; + } + .\32xl\:col-span-6{ + grid-column: span 6 / span 6; + } + .\32xl\:col-span-8{ + grid-column: span 8 / span 8; + } + .\32xl\:col-span-4{ + grid-column: span 4 / span 4; + } + .\32xl\:col-start-auto{ + grid-column-start: auto; + } + .\32xl\:row-start-auto{ + grid-row-start: auto; + } + .\32xl\:mt-8{ + margin-top: 2rem; + } + .\32xl\:mt-6{ + margin-top: 1.5rem; + } + .\32xl\:mt-24{ + margin-top: 6rem; + } + .\32xl\:mt-0{ + margin-top: 0px; + } + .\32xl\:ml-16{ + margin-left: 4rem; + } + .\32xl\:-ml-20{ + margin-left: -5rem; + } + .\32xl\:mb-0{ + margin-bottom: 0px; + } + .\32xl\:-mt-1\.5{ + margin-top: -0.375rem; + } + .\32xl\:-mt-1{ + margin-top: -0.25rem; + } + .\32xl\:mr-auto{ + margin-right: auto; + } + .\32xl\:-mt-8{ + margin-top: -2rem; + } + .\32xl\:block{ + display: block; + } + .\32xl\:flex{ + display: flex; + } + .\32xl\:h-56{ + height: 14rem; + } + .\32xl\:w-14{ + width: 3.5rem; + } + .\32xl\:w-52{ + width: 13rem; + } + .\32xl\:w-4\/6{ + width: 66.666667%; + } + .\32xl\:w-2\/3{ + width: 66.666667%; + } + .\32xl\:w-full{ + width: 100%; + } + .\32xl\:flex-none{ + flex: none; + } + .\32xl\:grid-cols-7{ + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .\32xl\:justify-center{ + justify-content: center; + } + .\32xl\:gap-x-0{ + -moz-column-gap: 0px; + column-gap: 0px; + } + .\32xl\:overflow-visible{ + overflow: visible; + } + .\32xl\:border-l{ + border-left-width: 1px; + } + .\32xl\:bg-transparent{ + background-color: transparent; + } + .\32xl\:p-0{ + padding: 0px; + } + .\32xl\:px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .\32xl\:pl-6{ + padding-left: 1.5rem; + } + .\32xl\:pt-0{ + padding-top: 0px; + } + .\32xl\:pl-4{ + padding-left: 1rem; + } + .\32xl\:pl-2\.5{ + padding-left: 0.625rem; + } + .\32xl\:pl-2{ + padding-left: 0.5rem; + } + .\32xl\:text-base{ + font-size: 1rem; + line-height: 1.5rem; + } + .\32xl\:text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; + } + .\32xl\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } + .\32xl\:text-2xl{ + font-size: 1.5rem; + line-height: 2rem; + } + .\32xl\:text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; + } + .\32xl\:text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; + } + .\32xl\:leading-5{ + line-height: 1.25rem; + } + .\32xl\:text-success{ + --tw-text-opacity: 1; + color: rgb(var(--color-success) / var(--tw-text-opacity)); + } +} diff --git a/themes/nurgul/assets/seller/fonts/roboto/LICENSE.txt b/themes/nurgul/assets/seller/fonts/roboto/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/themes/nurgul/assets/seller/fonts/roboto/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/themes/nurgul/assets/seller/fonts/roboto/Roboto-Black.ttf b/themes/nurgul/assets/seller/fonts/roboto/Roboto-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2d452383651a6ef279743a9926b90234b8b79366 GIT binary patch literal 171072 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� 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 z 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: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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/fonts/roboto/Roboto-BoldItalic.ttf b/themes/nurgul/assets/seller/fonts/roboto/Roboto-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b4e22103936078c50cdc7ddf7a3e2d51dd2d3c44 GIT binary patch literal 174520 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�alv#6BE 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/fonts/roboto/Roboto-Italic.ttf b/themes/nurgul/assets/seller/fonts/roboto/Roboto-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5b390ff950e6539bdfd4d84265fdb01e0c35f291 GIT binary patch literal 173516 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/fonts/roboto/Roboto-LightItalic.ttf b/themes/nurgul/assets/seller/fonts/roboto/Roboto-LightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..46e9bf7c95adb27c042d0646deb1f8a3beb8087e GIT binary patch literal 176184 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 z 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 E4`L@1umAu6 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/fonts/roboto/Roboto-Medium.ttf b/themes/nurgul/assets/seller/fonts/roboto/Roboto-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f714a514d94e495095e2f1e525a341eade187c17 GIT binary patch literal 171656 zcmbS!2YeJ&7w_De+1>Q)rfm`eDN7Q1LP8QiK$`RpQl$49dZ?lI-iv~O^dhhs0qGq? zL81xg!uk5JK=E3vmtWzt!MC zUFUQ`jPD}|Vy}j+TDJXXXw%t(=(r>ZeJeF=`*z)j)9-Z>#JMj7A$)1ewkc_A9^@Sr zM5zYO(xZ2F&*5Zj$5Mjma{wo8(0k12xXLl+rh-^10H1g1H@tuL99QW*f*9=*1aiE8 z&r!n#A0ZUi>xj<-`VSf3FC}`;etcFzAV1X@&?kFbpE;wKhNKsMi*rZeK4M??DOFx`wov5x0Dscn8O%T zTfv0S1gVV4DM*4@@D&1tU}2aNV71vosyPF!P9dK?n)#zIe+!cQ>)yT(O%V3QLNfku7}ufkF+% z92Cq(Zniqf>&6*?aRy+VdFDW;U-^#l-<0^X6TayrDXEo-1DCIonHCWqW==>Vlds!} zK>uknwMnCyjmTbEdU>u|)27w3nlu4ng}&0CVr?_yF<&83C5VJ`O9>!|m=EGOE%{DM zic_*Wee#_??DUeumTqDXB-F8BAE}53(^xu544B6raLyh$-EqvMgb*t%QP0W8s}b3X z3s|)SPJYaUlRp}tL^JZ23=rA$OQz%rl6Qh~zOy7>L_GTEJN;Agd~~1sV-@hG)fs|; zTAgA1%Mtlb!Rn0U@07~t#Bqc=GUEAPx|AM@zi;LxTYhl4ma{iuLAHvK4To=A$PuLS!#*t-GNyinb{$qrxk zuEUyF&igJVS|uqdIVqz`W>!Xectk|Fqe_w^!5khIA(s-t7?yBHMp9BndRRnyTBejf z#MR)}%X>HNJNaxx&mKbt6JdFu%xgzBUc6Z_W%S6gB=_xMosuT~wf(EG?`}o?b$;@) z0X;hm?AEIP?00tE2t9W;;`fV_=MRMp_AYv4nrFHo1PakYvXCKE6Ba3^>Tj^|nXJyx zeD+v^KbGN-nc(fr6lc{GzWSW;G{Pi;7Kw~7;5@&4r(a5*O)Mq_-pq^C9VS|xrShGn zQk;p_yz;vDOIh>MyoafkL#t$_LoP6XM?zADolia^qe>D81Bvl`6sP}$(ae-g?7er- zU$|@6{5kt~H-EEMv*weViXr>v%-y?#{<3Fx%UZP?x2RdGITa^~pG=b1&fK+YUZWX1 zw=Fck_4eD18^6`QLqk{o?CskZHJrX{$2?R04sDw@ZP2b=lRq2DBO5_qwFlK~rt?A! zB(SpZo>D0-ol&fk)oIOVkEK8*rl|~!Qv&oUp)pP*4k8)j#Fb#opp@|~!JeeJGVIA( zhH;Y;s(xk*jbukrk)iA6H`w#ZvH6|fZPth$7`K8JeCY0(bKlX1jE(4= z(|5A8yWNy#QCaP)wT6-*LL13N{JHjuc%AO@C@bP0z43@?1|2WT_{~&WS=?;yE?5Pt zVzGr__JUJRaRx%Qg;og($+DY8$zlz$TarX^YVPl|Qy1;`A$#6So&Co|vDMFHBWYN7 z@nG7R-fvH@)5P34bxC9LKF(VP=WUJihOqO7hH2*wVk$FC6fMb_A+`*wn4Fvy5fWk- zTTgf~Cw2AywToj@r~W?GN34CD_NII5%o$DoL(=Rdf_yqZW^OHdo{rCFGc6%DmqtUU z1_^QMOl2&&%!MUC$|GMG(j{e$@U8TOTTrMXc68xdNaWZB#!2@P54>%>JL*v8a zZ4O&}M!YRu+(&Zh%tv%OnfyqKzfD_`yxU|IJ68-nOu7mWVOOFQUq63N4@j}eYp_7@ zcYEN1h@8P&^^?+F=554Y$%r@@K+gKpv+4MktEo%lIqBt(EM$|K&9uwi7xi|yP6 zVxZ`Io?UTH(O+aU{3SoZp$Pr~{EAF&%pjE+(vc_VuT8jtgdV7pNy6$kX;QyVvnE7n zUcFk=CZn65O7j&`E886;{mdz`=BY{Mip-7|k)T|bP$Pt$E&(J|Tev*y{nQ{r09dx#lYMMr`tWmrSf(?UX%xkOoPTx(^? z2@ijN^i+EI$J2*W!SD%Vhf58@(xK6CH5{{9f!@7k(e$PJ)`TysO##+9Om-xc_E=-4IUQv7%HcDzhxeLXF!tum z@BW$8d)y>i@cj+?XTh}W5!2_+ULrLlBZmwaHKOzI!~MTM*K2Quvd#(Tf4OtC$GCAL zN9BSet6(iUf`9#>Gn%N&U@#zDfiRmvd}VctdS`>V%7l4YijSGet`f+<#ikJMV8WkF z(n-9{B5gT%u)w{*B91O}FC~*gM9VpPoYY?_edFpN_J{+$r-9zpF^-Z#wh~<`7Uxn2 zLqKn$(K`?aflMMmM?Jq;NFW=VB_%J~OGm|IiDvHxTJyqm@7luHyGqGurhB1VLZPN4 zut`XGm;mY~r$plS|glV$o?2!n6iR|$`cX9EehI<;tm%g?`N1!mT% zF2y2vW`&usS9#&yX|P$9@E(HT;SRIeQaldPxNBPUYVH{a62+~M7_f4}ni z?_W&&a>}Gz6Jv)S9g=-CTTUIkBQ@jj=+i&mJ(Y7bEp^A>qu+h!+COC0%00zs4uPHt$L#wnz6soS$E+hfvo;7LSCDMh5jN()U56(oDGpj_rzI@xk15OcqnC z6UJ-`N3a}DGQ}3IW71pV*gFLz=L{KL02(eMeWa(-SKuWJ&dlS`e5ZtIrL|bmNWmfWP<%@#GXBJh#&}lL5Z5MvsS~iGc`;t6gZWcJiXsbE_DieL z?gdzR#vz=4h-qLIH7`2c;W2j>i`gP+?l)rlZgtN^m+AUW`+)`G<8z<>xOQS)@y{l2 z)<&e?kbF36!-+CA8+Pm6vu)nhD<5y!Fuv(h`so{u)zDuQI@34I-;C-W_xs2QGWR@P^!N|D&f;nNL#uWnWa`@tk?yKFkvOMI?E;n2@$YV!xd4rRLE4>kk#?Vlm;tY?EKjU?!MTe zd+pG@!Cv`Ne1h$aQDD)m-glYVF6BK;t(&&SV;>0CgP9* zW2Vu6{-VE;sIjwup*LQPnKg0xbCdJp`97N}#O39FeoI_NtBo1>lj-Q-UPE}q*AF)3 zA!M+mP*;(3-h?5+RP0|HQzgv5*0~Xk>zHF8CTCP(>?GJ7NsN)0VP#w;Ka8MX{FMhX!AeMTPuN`q{l(JmzX7<++=Q?Zx@D_GOdv3LVNcFdIW< zjKLRLhwGHr%EjwN!HF^GVo@d%%oAmomA-c$a!c>Kdx%ZMf$lZzaxHPSLEx6(!7ZhP zj*5RQ%YvvE^@k$!*Ct-fE&l&28dFO7ON{YLr5N3_L^E^U!9(!M(qy|sjOQGLh%Jj* zA^G=~^cUr0`ruuO)F34aNU4%9%F%yz=SiRBooz$E6w93GKWID2xH^(FA)|i3ODumq z9{z|Hb|fWFd+23~|B~;z3T4%#C!pbKGum zflHj@9&d8GHzOep>TSWpMqFEhwDFT_;V(bXF2~Q6PByw+_$q!?vFMR>4=;m-RK>*e z@9K{Yo-vO(F+4rHV?EPtED+Mtk{RMJE?W52y%(-g+5IpsmvsI4gU?6j%o(evOn}f< zy?}v}xT(@sn2%diw|wmxWdyER4-66}2x3>otRD3>=a|K=7>b2cCky(P#EY5R-0p>B zH%W8jY20t`CDc99#WEF)uahuq6XHtm0=zl^y+ox}PGqc`PL_$QTtnTL zAtUN}%!BYMNErGWvKbaY6IgyZ%{21^tva9(fr;{gzK97hMT>eg$TGo#BR|iP-vmE4 zVPBE)Lnz$&P&|`cWGmT18oHurn}f7%6xOzItK8*fD{@DiUbsQ->7GL4FidsCCOcmG z3e6Pa$@4I0!H`xkEQiK9e5{)EDWZw{KNkMPn2N9!AYf0s+dY=CXQAv{_%{YpAO}Lj z!V;KDLAI@s?na8tr5hRod4H8~28&QkD_8_w%*Zr~G1y|NRWk{3GO~bGSPBLvfu&$F zOr=)R#~qEJAFxn=N`N8C8*_x+FDD+FO0`HepY9IXVjb=8rx{Wm*P*j?s-Ke!<^{~0pM8> zjGJBAk;v_BQgS?5<`ygdNn+{GZu$jDowIo9WcsOC(*2XkNw0tPwG#-J)N|AA+06PfEyDd-@C$SHVHI4fwNkLnhMtL^)xetVw&(9ohf2tX(1s4 zHW2<^oXsYmpkM#}l78n}xs;TKwMqX4$rS&`(iKSm#;A)Yn( za|YE{tl$JL#E=Tu6eLZ=Rb(WIaR2$2`#B=cn)0ZZt#Dop0$W63;WF=pE~I)JP-<^QwmgoRTltZ0VR2V<9Db67>6 zafarNAx{b(2>V^^@w>_S&lk9E0P?rn`E`+T!M8~Y;zj)wSd?OL!$Wb|jC7kLfK|tL z>@Y8WQR#%a1DivJ_^p(IE1QL6gS2?9T)sjq+_vE|CMNk3xDgzAP`OIV?;+(rm$%b& z@oRTkoJ}gK!xjVch*8%-6D>VqQY)KS@@K7Uu(aybDg3Ikd|d>8;a8v|^7z3>;X5Uk zMmi8I#Y*smRN>%NG)6~og70PejD*YANeYYQ-hoG3h^$d5aQ|Gz&T9rvyVo|_!P|CZ zk2qm9{_;|pt8P2zdVl@|-~xVbh^j;UnZc>;8xRr`QX!;9h}@N#9er98!HL6CTmXlE zl#~p+%2j!~n$y;*B6eGtJv@;GhX`g_Jyx;?jNZBBDj`o-b?eb~P{EkbCY`)1m36xt zO^KT^XKvTn2IG&;+k2#8yS{B}cUsr+)Lt67yn}6jgEy{pYu}(Pqd+cnZW?G9jOtcD zB~-0$g{oc)D-(jDxVxnhL0cI9NpXI|6u?$m@#9agz!?5r`wC+jAqxvpkPZs5@#>ew zrbgyzKVCRFDBxDXK;`1yg4{71YS-B~GFKEsT=c7XIcC9qBbR_aCX7EH-m^;W%AW2TCUFG&;G~UC zIdCfaTC~{pK=1lKko|J{rq-$P)R|Mbzr!VS!9A z@oGjq#1=zZXP$Vs1% zdK_>~VAO9z+sgrri5 z5^Q7dD&gvf&||s^1e0Pz!Bgd|EKghy=mSdtX1u~=Z62RLGRXgX`uC4xe|lro@U7z) z4%~n8k7u*StZ4YwigB~VL>H+zExYjNo6mcZkV-M78e=yt`ReCeqJ_$0mw{`V<9lBw(}$a88Y?|dB;@Hv)l4U z1qIUi`83B}Q#?An>vUHkt||(XFo>n5o3Jo}!khmMxu*?+dnTYROTq>Kh?t^>@Og46 zUhv+Of&xk#&TNE)zFeI|Rc+FwYF6XMDBvHYP01`=GXVMBrix@|m>y8SINC9&W6p!&CBty#)%)-o~&|$r)S&pwytD2q$dYSg%%6>Ub$!8%<%q?fY$~eP_yB zyyJp*4nHXqR54~{G=VV4zveV?QSoMFe3;i%oRv|JUYnI6w}uoHG$ZBVBn~Af=+7j7 z7~NV@#NG4fC;`l6+g@^y}5Os?b|P&aaR*h_wUiEkvm$v zbZV^Ycey&77nc*v%PO=}P}2vQU!xZcQwf4+6Qqs4*o7xS++%~R`x^uY<26VQ>1G*s zjpU|(O3orsu?)%;sdzPIvwV)G{x@2|d39~aDjK5x?ozB?6;Qz>}_f9K=3-0(0K78@VXVb>5s#ACM=ow;2A-$R7E;4;LbUGrYm*&kU zC(^jd+%C7oOhn9t`4ri&_!Mj=2F^BE1}?GMOtcj+dKZTEc)e=@1K_Y>J&dl!#e;)_ zz9|^A`|NK8Ge$3M&|vZCSz;0;<)#dNnM7Q}Ny_u>Cnl0dV~(maDIUNK0)>W(FULl| z#-rd$L|X$b#SBESKJ~5m`l}Eo;t?iJU%U8GYWj}q1;3a(uCJ0Hb@7?%j*+X6UlhdT zrYU^K%eZ!uFj(kQwh9!@IsKhYY7Grp&9_l@Uqvv#@tprA}%I|@Iz?eX>t24%$ zSK2E;N_=Uq`K0*Jc%FgQ0K8BFI`l5f)PRxq}tG?Yx zsVyy^ou8FI`jKf|?;d?fQl0u$%5>bZ@c8L>8+2__t7@$`J51=X{9uorJ==F}%x33P z^hg|Ossm4^og(NwnNUn9R3m1w=>+@3Tj6zV76a; z3;Y@z*?a0#+wN{qjaXU)yeGd=|#x)jH{~KC@X)DdDGhQ_) zUOp~ukOqUo9ecJOg2=%(ubO$5l}zHvALi?VKc#@d7n}zR_T<$nxIbv})pOzrcY~`_ zB;Ue|j7kwOBHv*&ug&{t1K=#D9TbbbU}EYLl;GKxbn^0kA)WUHo$W$S$y|6*)y?t9 zD_z0M*JgdRQyR>tf!Vc-aWhjKa0$F*rI^$wKmOzyhs5IS(9m=_{lmxf+e^RPyF|Zv zy#Mycq^0<<@S^y$J4&wZE-C)R<{pc=|AMg@b3WRjc+N*VFhsw_21D>ub3W?Rt2v)g zR$`G*+(zI{u96^nkhG_Ne)Ba#@b>f&2@t;`ecTV--;|2We!`IMEPD{y*n~ri!&)%f&?ZeW~Ty zvm3>)&%ei3p(84O1;G zWmIuwq-A6PT4HB)ZVRyR5q7aB-Do*;Mmp$B-D}>9e{^kc(&Ofj%H1yy+)i6q_2oA| zcJA`i&6ia%ihWp>w~^7|xuk!gVp$T3yuD)weP-sKc?pa;2V;)Jm`za(ttGJJ2NPos zS!ZLmMKXM$)0UDKq8qa*gsm!YwyegTm6VZ@gy4Z8_tV1>3;|eB!YLm*Bs)_NDQC}q zbnyFXMfpFsZ~xo1qG}7%?;pAJqw?d0WB1b;-Eznb`IeLdy4At8SXDp(VnvZ6Ia5d} zETq@#EjZEWErA`=*NMP8cIK8b)msVdVrI#f^t4hUi)Z9pCl@!F^j^KBdd<%qTG?dQ zvU}N_6;)L!>iTDIg1-1;luA{Ln7iH*71KUb|ycYm9Dzy{H##?K`Qj|y=)G~+f8cJw9 zBLc)CYcLTJdWWbDC~96rvV=v5Ejx`f-;*yazx45yD<5Cla74am8PoZJ6%6n z^V@F;B=%O!O%j*z zTWX7kN#W0JlFM5@Sm*PStp4S%f!#Xw_a#|kd*__DFJJZ@*7?XM&o2M=-Qn&7rw@4c z35yxK7Tq_sl>b0Jtqk~5EL)BZ4L(DxhZi&rf`HD6SQgeR&MO@ZI+o-;L>3BcnQTdh zoK(q5&SDOuJ$7)o8E{Fhn)z$R%WNIyLZ4-GeP)4{(s2IVf`Xq|!K6Hd4gLZ1#OL0>f1f^+ zO1SPzmqb?0eTOEYDsUe4t(wTV#MOF}tzw+jnTl1!44Ht%fi>gUsj9`X#J{tep=hg! z)mR%2=9w3ya|Qi_cymsg`ja$kUIpEU(Po8!%yFH2kOKdntd z*S>suj5H-vNt0v8=;5siA)1r}8T&@JFS;asv>NO113u6o}B{JYW zWLmXRNOG`aq@elReksl{*=MV=8+neI|@KHcM#@F zv!q=@5?THbh-b2#!1seKnnK1%XQf0Se$Xq01~P<2s9_-=VZd3zBVy&KvzOenqCgr?Ya@dyoc5A|>X7y&*%53lk!TPL2x}}L}H}pW1LSz>6 z^A<8)KQWkxtxXemYjM9RU;}u4inL!`0ABY+rSuI&@St-%YJz*&Y!TFURFjtrc`3qs zi1RXCh4`{cW+*2@f;lXL%o+6F+9BEN-XEOt)?0%bH8!2!aBJPVTN~)Oh8b0wH5L}r!hb&u|v zvt<3CUJJ=6aor?h>R+#1M%~QO?@k>xxL=167-yEaRNRGemIi{o6xU2TPg;`~UeCZd z6=G)!Cl_KGd8jsNMS2ivgtC;CgF!&EZk)bq*Aem?I?TEf0z?|7R)U{}6>v*=e}c)R zr@b;2W``LQ6t{IHJ4it5nVGdx>m1!SeaV(NtMZo2*>m)*8gJH|-9^ss>41OPJ9qrR zvFT+O51Kq>L{dgpxxS2(hogesh-a~3DMeUH5kuxFm;=FZg^@{u<0zs1Q{wHP3|*2= z!s)|vW`SPE@0TO{7mHXmMChpmdOB0tYVrlte1Ah)g~MmGtY0zvvELLcACOF!{89V^ zRagVDv8)tNs4&Hx4Anqpik$}Se52q8OP3Ynn?FNdVdkRgCI6(7%e0czl??VA#}I(a+`b)^D=Jb22zUT&d0oX<&1XZWXb3qTbKolYi1{~Y0RA5? z4ksKUArFtMz4RQ94rv~Hie#QX{{DuO`@6Pk(V28@*`ll5bJMxA+Z$~>cYceh*U%w7 zTlE~8-H+MVuCTA~a{Ic%m)X}9WU|2C?}Uul4AUMVnOrRTR$Pncm868=Lo8yPh(=by zY9vi+W&8$9Zn^^c;k&}`@GaSI^Tl<BuXgq?pU`;8bU)xu&} z#8@F!T&GO(kaq5WQ3#OyY^PBDq7NNb(Zv)igzPeW=WQ}@=(CWp3S~YqJjk>Nag3PJxc@u7I&~aWAU-{N z_3pYZE&Rm4)pDJ)NMnUjCVR~DtC*5&Ru!*JJ_rk#n9J`2#(Lgcaw{l+7Jx7wG&c!6QuUEPA+_|kfe%ics&%YVhH7a^!o+-Bi$5jz(2>FUw zvlbf|=#QWlk5xUZV8E(rnKDnn7GUCdkAM_qNdP~EW#`z5Imx1Z? zGzYR+S%bUrK+m3OM}xNq*u#)L-k>jnaF7qu8V}qH>wGoadFjcor@D9SJnEVI!Vkk{ zT>A2fyRq-u+4Bb1Y~0|wYi;$p70(YC*HtRtdy18u&kp;bc{}I&4Ieh_+`m)Z(B(&F z%@L{l;k*SKswZr(TKn)D<*$p~8`Nnj{ycw5sS)TP5&DC-YMUznHBcT>Z&7=lk-#Y9 zp?nl9982=|9US-<`Ya=SiJ+O_-BCvQ4>jX>-P9yQ4x(jCgdG%F#i{|{1m_fwZ10O#nsuRReKkiZPu3ele7*PsyY~Z35h05=o+|Es z#gyeNSAg^<^<|rP)N6wO>Zz~92451T*~q3%M>cacsotzv^=izMlYp!nE7z2dadcWD z)<{lbDKj=wFg6|?o|Q774vOoDkut{t#_=bXfT{H&Ghhec>7t178s@iSWN?J;dNL|Zsavz zU#lbj|6&#Xh1Ha^emV=RLct*Cg`Wy$jM1P9f79!LDp)qTza9&u=1bG|qh726HEB}%N?H;-%`^HM|AoT>rbq*Xh)U!tYWm6T9y)Dg@cB1E2HjR1Vwt6&s4fCJBi z_!G-91Eq)@GaMIPhbYrZx>^Bv5mtvoByAiqnZYo6>EY=}v1@=yS=q0mB^hwCu&`ji zYpDjClrI%lWq?UyVerXkyB9BZZO~ySQDrr~5BnJk&mmj&zYO6vkAzt86UG6lPE=s5 zVZ4ULux{K-uzM%yM0OqRJEnY=b<=ND0yU2O1^f_X*HP69VYzhAmL9OEtT@km0-4mA zN==!9&Oldgt_!_^uJPgmcaFSobK#$?O;8TljMgT$qupkP&sYMtYdT^~BhpH9fi)}Y zL0U~O02+w-X^Y`A48}`Tz10~TM9)y})>f7;b8%6@thVo%VT;TuW}rlum|=GGdu{j; zPw|sE449nSUhs6-vuAH31yF(ZBuD6H?1;H!wn6#zTwf@J1r`T!G>k9-k)OsoTFpA~N5Ev%Ld1kL1w-+p7= zfYYbDrTz_9G;}||EY3+@ku0ueV**A%tOUvM7n-VL;$D6f4j7r zUeS<4oRr03GkjQGEnW%a)oUdr$devYp@NeYCNf_ zZcbuN;G97QCr$|wSZ=}@lA<3!OJC~n;B0n!7X(UB7k;n+4YNc;A9Ns#GFWzz|6v0- zju~e=R9Pyz-rq5P2mO1cxQzJkoVY{k!g|43UwGl9-UCK<{$M{*!d8&L-K6@5BxH3M z+QTo=+A)E0)u3y~>E$!mp-DQ!r+p^3MBha@Ax+qzM5R|@gOB3z4<0LdXku7XgVNBT z%$z0~E>ki2a0GLTox{#kpgU4hQW(NKlShxv z8y_`n0=OT^ByknuoB$zRk#s#|Tt{dMqnJmGV#u}`V8M%uJGU)3>wL3QRJpV*^7=#P z!jJeLEo2+A3avfew-H#KZi=9G-`YJ3Vz67st51fwQ;voq z&)az3o!_g3UJPzT7toIfpQGpYfBD^s*dvJ7NzpypRQv+8DkY3o!gPBC@GwxL71wN< zrr-^k+5wNDnA$+ArM^E4v(TYqnZ`#eDf|oskcQd8rSNDCt~QuQQA~YHc)B?A(}PX7hm6~{?QCAn&QVEkyiY!rX1g++r){SszkSl>1HG^`$Nlyql_d%tu`;{Ol~B!2 z!pg`Tuc-HKc{*298pTENXxn;9s<8wR6?!&Be`p8Z#(NNspyEAac^sUz&JAMdZJ-!dy75DhE z-k4+ZPH4vj%q`4OnvFTk+lggxA9!JsIZS4mS0I6k3e?RFevxh=*xcgu5vK|y_D%_T zPEC+`CKqv4%SrcE{y0A)bw|hkZ;BItUiA}w^sE?E{DFJks?b3rXMdD9X+uc{Ev`fe z#}@B6aRL&GE>?3*Gr=mgR{}i9D3(~`hDTc+L({cpLg908us?Kxk8V29(z;#5V3NW; ztMTtP*X(Wwk6keIy591e{=vPkeBImr)$+=5n5HuF3PgCl6^m|9KLc7xb56OU)tCzG z;|$GL!b7>9MW=z}9j{^z=kKEL#i}Pe+pSCWv31}~OeHJJRA$NM`{rVdW}`YLQC^{J z^LJg-qc!JR>NaZzsb>8VE4XKwYS4h3ikj^5fkJlmUI-{><3XBg#*vObyrV(Y;N>rdI4> zI3AoL(nqYg9mUFKkP_xRS^$l(#Ij8!Bnwv?a8OM6hKbjo!W{^3Gf28r@7(HDXGri8 z`Jw;%^?`)@Wg~I5D*S5LZQ64+wRCGDJp@OY?>3#49*%kzust`H=hI(T z(}!10{nq)>UrD4ds}g8cUb8TqSLJi$D`KJP0es|Cp7{-yFb6XNI}F(zi>*DF?bg*K z5%Dos+@J5#Y6cnuJ0e5A#X=|j&UvWm%qFG>lh?1GT(@!Kx{%sw@(*MVx^8@hQi|l+ z>%s>l^D#nKc+BtVoS9aCa((r+iV_yIrY?YB0-!@-!NFsY3En5is+U!=$ifay8dj(j z-ndKm(SKI$R=K`?afP9s4-R2|_5}HRse|b+*$xH!#QLQ8NQ~Gjbs2jH z>!4j&gb>{!0#Od?VwO;aSE?uup0?^RrAKnLf#suuCd9yF+Ni-CPp6XGjYj88~?(ztiercJu_ zXcS+mVnXTERM6hFSiVmCX?0<(vsu6-*ml4WNiMn`5EGaOjm@;5x3QVHyUEv!Sg)4E z5LjAWnZsB-vdE}os4LU>;<|ECk!zIveNii{y+zno_z#mlcP;q=eb+n%wbJrnuoRWF zN-Sb>lx$fXo@ddSfI#92^q|Oq-O1t-V+nV+wluD@+Olg;i$?N;<)#=%qlp7L)@b2} z60ztCkna^$L3M?#a~A98M&MmMVRcFQdLClZo?>P!2zQ-nTc?aK%6xf23AVu0l2319 z=edM)f4!9N5kEBP`mtHW(3Lc$XaO{$y6dpn3rd4Gs^QPvF=}b;4+!=k$Tblz%Dyb6E>)ew->DOR|c+rO8AIXhfk z<>>|mM#J*r)Wu^f2FZ~p_opwXJAsn}N=|IALgmc+=~pR6v>Y_4r&2DOg>hVyu0sYS z3lYDG>8RqGpXQnrr(@tZ>D*q7gX1yfEO!r=w4QC-fm1+gqLAI%gqQ5@4A9K%eB403 zdOm%=L^1Q*E3mnd_(Z_;hZTsmUXCYki+AW+w%Off3EfRRPBeugW|p8&6NK@KkLnk~ z7K54bs9|ai>4{>CEc&pTel8X)@<0!9H~@bKQpMT~_a}(h`%afjVud(;U<{pR%nq`g z+5g@^NZLYclhb54+eXMqpS&xf0HL! z(*}l`kOZi9xe{M33-nwIb-g&nwDW80uU~uw)*LrrLQkvLr(>$$&|nLPg_m|EJP(o1 zx@z?ipS%4!NbkD(U%o6gzbKXE=wk4nDGXz<;4T83U;gjaXc%*S8JcGsIXjxdT<$3@ zdA!Dt*jXGiY>u-B2(?}_J1v)DSbb<0<5XZUI4Rji9t0bC#1koo=7`4&Uy@I0mUP!W zn9LRP-7hb%5$lR?uD#+eVzfmm!n6-p4iid%TZbyXDz~ESjJs6eQR7zLf2EPTm|H_s zXF7yw7bQ+Th)XeKc#+PfwHbRcDnq>~oFU?9urGd^z`q~bk*Mv%{4ZFqW zZXxo5g_Le}@1%6WVj^Pmvx}SFU$y1qklJPnMGfJ15%~?Dq9Dg@H>-eBhzX^oGnXZ0;L%) z0(Bq#hD-?eG2Ccl_8rX=NFO;c=)_DkMyS{~Y%XR852dT^5)7iv_jt4b-!A?zdLns$ z>Ed-$#!|~SgU2lp2$moWi0=VPvf5RV zY{f#bo}YhP9c_L}vf4P6oMPz6G?(TDLPTnMwU0>}_Bw@Ej>wGfbjoH19z-P;w_jnE zSH52fmYH>qq=^HsJ?q_Z{Pbtnw@rAK`z>iUqHB+79p4`@Z$kfxjlMLU|3>M)F15mm z>7PGpORJi8jXE=&X1_CL@&MQUHuHvNFC#~o)~DUEk4bg-CfI+Px}<0hbbe3-Pn`qMQPyh>l#*q620G%ERFZmU7JE3ST9`co z65&a>V9Rclu|u_hCpp2K|K-PxN3>isu*Eya@7xwA{J82aeR6o7*m=O1dE>{ zuvm$Bbq_X;qKOc4b~hTu?#p(4&UM=1E!4KRvcp@*x8K22UZgi%M{^lRQecZVt8VIn zcIIg)F@bQ0{qf*TG;opxM^b_3huFW_*dXfvpyhIMUjEj;+~b+LKpzY(hIFAcWO-RVgr30t}jri-cC)(eyW3 z6x1d_gH6HcJ>?wlCLp9sz}Pc~_DTia2CQy?^39Aj=Pwklm)i~9YGijDYb2OA7j?vF`1~D%*Xm}9wLW64KNfCn31cCaK zZmUOD)zNDt2%Zjxfbkpd8-o3?RApph>2f5D)6~&Rb<;)>chgAF(yRtXK!55CytDk*#^=Y~M>z6Ns_PdJy6npZ_nrEj|1D!dv z5`v=l<1rw812|cqR;yh3ChcL9tGk}p%;a6)xEBb{9Z~c|Zel7#w9rP8v|OXAw>58o zD{=10GnIqheqC`}2^M&B8Lw+2A~Hl7qi%Dv5`z7;zsuMuO@_ zjD!Xl527qW9dSA6jB;3Ly-TY2ROFq0J_eMVQc`^vB?LVpva~Ntk%D@vQjCY>$AOS? zggqi0fKVPav+W$2AE$M9*`*otJ4~2MV&*NR8>W${VUE_~#8xvhD!obF&8CdmvUF%J z5r2AjlKfri_Dv68q(AkVTQ@PXYIdVzZ}h3ws;r}8{kV*eS1vnWvCQJ0+b>kW3@aA> zDPO~ShruKA|8M&PaHeJp!om$ryqvKAI?M%QV%<)7EF=d80d5j-7aWFQ*d~Da?YK{y zylZ3SH8`>HB9S-gPr)??;C(oY};9y$zi&{faRsU?12LJO)s8m|?8EhQYAI zJb%GhTF>q=4z7H$kAx8;35UenO(w$^hI^uN3z!AFoo8l>RnI@Zm)&E;jFqHPkIH09 zvnlE2YSel1n2ft6xA@Poo}-WNj-IiueYLiA8=b1!H>*X3GUbA^==J3HU(RFxK^y40 z$>0gLA6yH?qV5N0VVX{z120T#wo@Z9(^|Sz0mHKCbsA*$2r%kEP2BmN-PaeXptLe8`qIb-HXW0n^#el&wrAX2~+;t<{6>^gS*#QKkr zd%!&?kg3N#Xap;EN<#cwY%MsSYNIUXV7T%6QT`XEWdl`}8r<19i8pyYqHD{iqY1aw z5c$WoQWJA-6^$&X`QK>zIv=3t=k?J%G?*H{f`$yMt6&X@RwW z1C)t$wOvKTVsUX}DMu(mHdfIM$Nj2Y^ry+A);4M;zPEBi?utiq=xzE}LBXnR;-b-6 zK`|t&Xe;hpv%JCa0Uvx`N}M`&`J%$*1@!A^+-_}U)R{GFPBE~)&=NCa92tpygal7L zEl`~immzHunr<=_TaYF~UJdgwb4*kKV?#v38jUetTWLW;SZOucq&6#dn1(+YPk*G? zo6CjVNdYMdLpG_z)vb3)*iZB^-n<-5(@1_P$>m_GOuAzxGvSUmCL_BP%l`Gz>T7$#LZnk9dorBe(NFXk)$>IcZ% z=;1Y`+5IV4=&WmS#?;u36-+T?*s{3jVJA66`@CF^e$Px6N7^|8MP6II{>z(RQ2J>4 z&|cZsQ5CqbZO8GZ<=nd`4VJU3)Dt^|`R9D+CZ;b*Ns->3v}E>-+$0iuy2P$4`N!zh z0Ds~bvN?{t^@KoxeBdE3e_vV+l&!X0rTcW<&5tj0nYbe zD=a(;gAhPBGxU)7=8f_bdNin;6j-KCEdAC+zmKn7-mi3xCjBQ>kSydypB~X?O>eme zyPt?wam`z%GbQ@4I%GO{3g9*9lq6xK;-l94k@YO)S&@GWv}UJ^RUQOar}7jZ8(%Gy zFVK9AJ>nt&RWo>)O01Q)N|a`T;)n<@W-nWnEZA&rY-@ zv+9>8OV%*oGok322}w#w`3S|PtD1A1kLFWrE-05Dp4(s(29`%ZN7>GIX+qyFf;3%v z66>Uo*_eQF3Sgq~4BRSPWe02JV#s9_r-b&8HxqsMAGeI!Lt$CEVRgg4@Vj>4q8^p;MXHv$k72PpF|p$2Pt^{PNr~(^a-aBZiiyH8^O9RWDBrq zk_dpjBO|Mpn1!8+)jQE7C7S|C<#!)Wp%3r7FVniw!M%@fs9mN*_sV`T(jHQF^0Flp zqz_2WmvgSVP4YeW=kx{r&+N;R&!Dfbi=Voa+<&gf8MOpGC8B^lwNFFLHWYiy&Q}QE zTb5PdwEGb7Ou4qIhNNzB6vLcmuLiMlyfW?+wNXH#Kn~&k|~l^vi0cok_Mb+38{StCw$k@D-GOrbv&xbL{9x?EB&X1#o6F7CiJ*nMN@ zXR|*4Tb$sYjk{d<(8$@ths|L2t1>dWmoV3Gp`+^PY0dw9^eyew+fWNbOL%~(PLh{ZMOy@j(~biUjZ;``d7F1 zTp4-RmT|bYuE}x*cTZAo)015K@TvO?X+4h0PF=Dv7o^%a^zy7LFR;G`)-zOah`!F|H^7y6Qq8rP`?#JGJd zh7P5P-PY2P|AsiG$7B4GXu9^htInT3IUNQBCrPW16n-xbryU|o(Dz6``kt8Dj@0=~ zoDFJ6(|)us<3#MoW?9EMak5HWt*4VOqygh*C^r<3o5`GE@r&VN*y4jZE7n)`TgRO+ zc{e7*&f~V2q1t`g7_OWZlvzm)BBuh(<)SUF-EHo-7d@7zz}qM*%u^C|cPBNhL@}%twAJ4&vy4AWJLWpe zq(tJT&jcx?GPTPv15su;d)idSi6_NehUI1T_k~bwiDlT7VIy?~O(iCgZ4-eNQ`1M- z@roHhE!WL%)Z^`K$1O`U(&MBdE2m^Hcg_55(Mu9OZpegb^vjp;{WHn6e%$OWOXly{ zOaf#_uhFAAk3HJ|yYs!brPfqMMZF1j&wtcY>f<}%R@4lFEy^gd&p1Z%~wXhR$>>vD;P z3meL*UI)WKe&$K&AfLE4E^V+rra+g`)bO#qYF#jaTH01R?_7w9cbZ0?jPRiQ#}lEoMhD1Gcf9?!--`G>M|7N`3AO5F=|2sZfOm0nz!f z_)lS@&Wibx+-0I%nq@Xy7M(XonjUd`ULLi)0JR=~eOlwOfw5W@z^-nQDN2O8mm5of zoT#&G7mnH6m|=;mXMY+S}v z1g5kvVkZfG_g(tO&gg>3UG&kKwIpPBWC8ta=ZWJVh8INcJa%l4DQOLTvS&B_V>LN> zat#UEwTFbfdyx*iapb@?DaiHg#z!CD0L7Qn4@@UOaes!w@U%%8IKW^vH05nD6lSlX z02afh8VYCFFNN1tLs1yxzDcmd2k&}$f@|3rQt4kjZctQCX=u&7Ziy{Aj zIu)yVvL+n6l62vKoQJQEjR4-7ehat z4QEV#?EXx%+!FIT&Ft>ZY^Rt=VVENFXo!K0AYgdZP^bpGVdxhzcx%OlP{D_1&;@M$ z;7#Q)+=DJLinaF608lxvW0_3WvPr1!hg&}FauwEA=ON9|{10}U8@&&rc}@QCL0T$7 zst*#xbeT$h!wfVAMD0@>r=IlCz&fweIL>0vpDfai@zv3JM+Pha; zvI0A%q6TM(H(BUuwm34;Z-TpNFB1z)2kBD^z zSwjDGzMx-5kZ(84zW4Q&Z|*JJ@Pzp6q?bOQc#VFtlbC*i6l_B0kp;801N$&d2~m4v z;R|YeS{P<+aIm;)d^M?netvbg9dAWTUm|3+0bR|Ch26S7XG~YaQ8D)lIzN;38vW~j zY!(XxQthBGHUu4Vxjr(#M}qe%ue&MRS`u@@jr*axM|?^$w!QYwY`{~=-62s7iHAKs zkV;}spcQIGPpUp8?8xi;~di%I?_Z@NYIAXj0tN5~&^y|d=*iRIz z))}5c4Ra{6Q%UF~2vV~@kRGkt$emxUQm{l;1!5K<$WD5ljjr?%*jeSXZC-3Fe3*C~m!$ zL;t3Z4(jbzb)8aV(ARH^i3t%bjp{Bby%@9Hb|rH@dxs1z31JHe48LvJQ~#^MhTt!Yf?1FMME_|uX{Kw&Q~nK0<9k^7 z$LX$df3xy@FB^)y?+sSpX;bcqNEb0+G6by_ z5lc?33`AOxI}*`8f@m}1I&QK;O|+?mijEKvxdEnUJ)Pr~B0_wp>%3T~iJ{ypZu(`ojr5x)1G@y6?c&J{{YSdiduj z=dLToT1<{?MTQ%5TC z$!rJO0Tq;vKXZSE6-Hr&!C0X`*^{PP3&Em{wHbQ7P`(WUAw|-p5WJ9WigoDrB%GNj zgT$d!gI)ZK;Go^k)~tH_mVWrr=cknkd_Mp4{&`!Wy|>sG9*o&W3ygKwF=k<$0x!m@ z3_&JVWtf-ZL4n?7X({hxw3HWI3K>?kLOGu`WK~`KoA>!;7knQT6@TpEXYLxvg{_K( zc<3e&cME}n3VzI3hTv7k1B0`Rw;7s-=BrCuv}8Tzdy#akzP_V<(R}8CZ$56czP>E| zK!R@rUpZYn2DR%z8Q%nYez`B4BFlZ>#`9*=4Z>J3H{E_w16{nQ%f;SzF;tNuDE11= zHqp8@ANjv7lPqylTP*L-M5)DGyoXC!V(@c@c&w!40wWGoI{zCZ-ot}0G)V`iiW(L& zd4!BWE6ZH|j*Guff#hRyj5*@oL_o5yMa%Q(?#$8TK(t zE(sgAN+hx_uDkfJrTJ@YTXCk`tatEC5qBLw*81I@e)2iL6SSB7nEJk;KUn)ddYIU9 zJ}q3uD?3el3EAm&3ky4Qo{MdBtqT4z?<)j@7bue;2HmU?eycBb_PSaZ)_zNif5{>Q z1yT)KGMIx_L>T=Uhz*2W^Ql0tK$%`4DXjiP*Z=wF|C7BhlD@q^?=kbo>Pz?}_{V353s#|T1AZPl6FRJ@zvFHZ zXdt?DSlS2c)xqvpx5M|du-&t@6Rcd5-?uIHavARy@j zDQy4&e3Ps$E1;lR*F{Cw5F`OP4a?rLdSk(wQxcX|5{0H(AzZRb z6li9|2Th?^bRy9+d_#gmL}y-@Pr6rKFYYyY)R80$LtkcHCfpi-KK&{yH2Lbvsb@#s zn(*4-%)(GnI~C1T77tAsxPJ)$DlcL~-h#A4ulJt#*1{cgmIL!EkrPl0Fb0F>7ib|O z#_S9s>UoLMB)Gc)xKO|i!`4eT46XJ^X+jC`fn0VSWx5Bbfi789CNB|=h`EFrhJ>YW z2urL98{RvbD_&?-VD-8)7lo{IJ}bfeE*K-azT&Qs^AN+IEc$!F(n;uoHUHuhV@#KN ziPr+$88bBHhR=ncXMT<$I@EE;OOiGyM zP{h;-oOe?cUf0EjxAICnduyN4Z z6Efe@qzkLn16ol2513*@a|@%8c^)GATuGQtAr|#-`D2J*BRlBe+okuHK2}=kttFHO z<@wVkDqNV#QPx&ha=56`wuTVN;bMvxgP%Ez=b}TYQxBeph*55y#uVmuHq@Vj>QW~1 z$6_ktC)=9U@sF=NRSZYmyxGMHseA8WLSi1*a!@LNOujGXB&vIN@7O__A1Vu!r=ZMI z(lpO}P!Ck=g6sVm_DRSCvOU#i71O##({B1Bi} zlGG2Z5H2XcL2k-R=e8mZqL^HtCX^_X&X4~Ew!P0U#~+IkC8MVKv7UTe1jdvMb`E6m zOs3(jKOaneef82E{2r)~EZy~>!cd&MX_~Ko?tBZpu@<>!Kq)rd$V>CIHpWRK5o4A( zFO(O-Sz$hG;8P|>L-dL9U=*r@08(VQ3w4tLPmALguRME_ed|s(kKn(C1nt=0POjdu zxnHpCy5DWcz}KMj&R0Htd&>z~m=h2GV6Z3l-(+97Pw^Ao+P3Jx04r=idlq0Vh8)nj zr~?o~>5=zfj6U~|qp%c+hQwD@kgJI5l z!G7rR&)^~1l+<4M&IcfIqD(0A7hJG~H1FMpZ7Ytg|Bjws-HnF>hc zr7M4AHUYKUT>L{9*L1b(`DqH7!M3{ zPb|bZF6a$N{4C4lqyp=rB?)$A){9XVs3+;-j{U^buWpSTd*`Cdoz`b)I%6XT^c#h6 zQ2sZ6y#M}#%PM=G_xh}v6IJDT-uT(mC#wo^t1o;Ec59<&4 z59=3gM_yPzCg(!I$NFve*_9(_QU_o7__C{WvrdB_^-5{g6Xe?N#MNcXe$1BlyE~+h z7?ECZ3ynAbIyA5-d$>5Gd=f(EzbFs4gr~5qz4d@Eyb58kU z-`=lPwa#vq$Uk@Y)hb z#t3k4MqQ#O<4)IjR)1J%4fEao7mGt)-Ku5p>@LLa@KAZjyKk-u&I{#VKiR{dtWpjj zB`f79E46_?d$4KokDq1VcsOt49sc|sR^z;TJkAuXSafd$jq#{|lQ#u3^{W%Qfc>F3%iweUrj0Vh@7LTNycx`T z>`(b5X8EtX7cCRQ7cIXiMj#_XAlbr19JDAVwG=Q4WB0wDlYjY;4Xa)&qF1dK`B%PA zQSk!cpnZ#m$Cz?^FsX2M=8bX7`7_!6SeE!RgpoV#V7uULz@Lb=4`ENRGPIIVn_`WH zqyWpxjJ^2ZtV|ZB5LRZ2Cqbn}!x>L@i@q|N_kceo-XZ_eJGgjoDO`i<3FI~V}I6Z zr<|s=eAeE;Ior)KkudLL_7re!f>sg^tOr4A&oIGdU|qmvJovxDB?aiV0QEz%nEzB5R<8K0=-t9=rC<;panL|HVJ!A@W2RKCU~H^Y!_QYfgtes z@La8g{ton{wq_7hc|A()k@Q9RnG}x3P0gA(9T=ynPT_yq^5hB2huHHnm%py$DbJWc zpNlNoWp{XjQcnH;JHC{Sm^r$Td%xUkR3=}+M%?&8UI0LMVh2$uVH=1Yd=W~+=OLK8 zv4cX9Fw9kpUg?F>n39n|TLh*SU^34|YPVKGpQ8chZ-FwA#$*B_086tBsZ`JdYzUy7 zC7=3?-$ncB-%lTvU93-f0()3_a;n1SzRADQzWAyL`+>&OfA09zC_i{&mzf%e$fAxgwB z%EM&TB2$fIH;PhA<|0!>i_+f&ecBR(k3u@XIF2Gx{gOQg8st-T`P&dxRr!4N7N2A6 zye)6~%5jS9bB9-9sqYMOuSe*8syx>{$-DW!?!9uau^D`&Qk(4}oWNV;n1FrPaZ*ah zNvRibV(hymZ1I1_Ng*#zOtkPKPV_hZ3nxivxCSyHMdm+|hWsW=;vYe5z0dCvft)%j zKV*HzRWT8WbM-*p4Vq3o`yNzs>GVsfq#SRk>~buCZ=Xn)^(iouAKE=gY<>`;=+Y2VD+kt{P(r! z{-#Ft8FuF4hhw%@>dH_3rVJR~=&f=eO`o?|X43|_&M0piz2QJniM)lfz+O_|Z{2^v zpFva>{0TupoCWwZ^>Ef=i_ye~3}-BP0At(70&6h^RHPNw=@zY5Oj!Fj!pe&gj#WuX z@?c9(G@yVjmG^tGMbXUw5zyCY8X6A|xv)0Hv-$@!Vkw0De z=FeL^eeyn+dA;VJyuUPMVoc*bYxb-Chc{YT_28Ik^I7`_t9L5JHWcE&voJq+oBKkK z3`6Em0DR4*rJj9R zPzBJ993M*Y#CXFnF|Z*nPJwR*x}q)Y-(8a2?`=8gBY*01V9VPd__>?-eJqO+C6-o6 z?7^Sk|M182^S6Hb{&zq}JwsoCmh2Brr<62IQ+2rsxKQ1MtC1-u05V9y5SV5^xmLmh zS_#_v675T1>w^m5A!tn=8AOLfzO>ih8OU_7f*>v7+NI{9S6EOXrZ)~{{|uiS;LZ=2 zGkn5lXbSYzRxH+O#l7wA}%1GD_}OqQoyr8>dv3!#l_Gb&rr7T!bx7 zA1(j0XD$0y&Un5W0t_pmys2>DH;`6h%AdB#X^a2IC~(!7P4oi62{SpmKo?jEHHLA- zk!C@fExQ>UJf+9QSL4G9N0zNyg#Z0Df8#kD)vq5r%F2cwx7VzY_cKHX&V1ke3AQkF zzYW5v@2c5EP6m#!w?5I5xF)EHMRg%!JV`gc~uJ!{hG$#dsSJw17btYPlK z;^@rGXf}?O>Viz{DbZuoqxn4kz5R>F(W(8SA75;9#vPm5H~R03fGZ_`0jT%@;EI)c zXo{Yl2LWzqMHUB+p@@@&2WSC8+P@Hzg{BJ7%uI@$C>Zl70MZ)}k=i3CQF|pXbON}P zACG)|?8j@zK0f@T+`eOv9_>F)>GoR6$8!7?7FTA}$TIx99|M2j-WgO-5VCwY0W zphB-u05ogOx0vt`{C`AzeC^K|Iw7m}*ZkVfVix zzRsbm?9zv)`VBa#eXU+S+_Gnjc_gOOq7#)uhRg@%PmSSK1?JV} zw?2FF+3l4pub*Pd=eM(8&v=~i`j}zo&kq|T?y}qSqTBciq_-=<=Nd@IylL`?IszeQ zAM~?LMNg*cz)Pt_2$gPH8l|K>P--JrqtOhJ@#1bD^VP z+88vwtVk2_#?g;Cqls+)yT>#(DGJT~!P8#mInArBbYXnkhyTrkdV9*0>C?fxgcsG8 zC174`f;rXy4iOlgHJ7|D~SSyiH0im1`gVHxF#y)Tw|URsVd6dJsO#aH)$HW~y2i9w>vi2}bv? z>N-pUhCPnZU4SXhO0%X59s&;PdI#=;6zNDQBpN|&!F$3Il^V~#&X>^lc`K7xnLPgE zlASvjz0H@f!I7-_Qx>?Ng>T^h++lIoKIQihUc;NDUVI@Y(9+zDE?R`C+T9YX|Bq{h z;{aH>@<(E> zfIsy+MR^pw4-U8(O(zkI6A4@hb3r^6E_fc_T3v_-%>PCsZ8%Z+^gk91tI2;}Tt0p> z3%7?{EgLXoBAdrB)swlW+Cq7{Jr#Myg+)JH8}&8DcO)e`!W{0YM_ApCwySg2jA?@R zzK{2AG~R0r>c)HHlj9RZ-2Zf}%Z}JWn~YgANAh_VgWSerw*C0l;?Sj%q{dQ;)JqyB zO_!Wa6P%qAoT&-US~}tl&!MH)aZ{mCH4VsWQ_%4k%C@tU;8C3dvU-@F2eV2Iz#I)+ zv(ik@L-y7R$ZAmV3>Hfbcn!kA10;eNkDzgT9^nL7UwZLV1s^JSA3jv@4NyHp+=1hc zjvtd)wMruUX?*X#ua8ZtQYo>;>%IGqACuH8kzc@bxL2ieqC3TSqr2^R&qw%A#v7Ax zhdx_5QFV15GNf~rcM>ALpoQhkzB?7lwPHK{1^Rw$yIE{y`M0> zuS=T#S-6p&wdDiY65DA^757EXJo!CKq3%8&*?!Kb1Sd-I&?^+=R|2v?-z|%CNo*Z_ z2I$rjh7+U22PG;j*%lIu6O&|P$+2NJ=CH-bD)CBk5DN=(D7<|kbg8IQ7#F!z5!RM( zd;WS6{sHTuY?N8UCUDZaWPZFUi>ny8y3uJRHE?y~oO(r(O5IO=w2^@K%$vdCLOdYI;`wMP|*K^2>QQWq!Cht4Q75SMyBUkB%6~%BzwDnBHL}S$*b^ z0@NA#r|IN-MFFwVB3Ch-6`z{NGu2;g-{Vt%>YtL<=DX-q%KR5TMWRJ~${Q=|FJfgA zUlJ>`NM>Qr7_8d}oRP1@5-}?x;%MH8Sz)SQu;``#L%57GE&iu)na$?rdbrGH+pTGN zD~w>7K9Tc#7->Zjp+_#V9{n>}yuxNMfG~1mv{2C_7=&Zaz93t{8rXvmOt^T!WT1Qn z2@?Ui2Gx_}li5nQT=@|z^ZJyL3nuS+T5?4uKgX)3)EPHQF6F+7iJV`am^gpnnq>BB zQmY9|Wv+(K5HX1ibn&VR*%Ji%9ixRsiwGU&mC@uk+GtCXq}UEaH4xIt@O&ADf#w@P zwt!Yt+)yf(NopdC&g$)D!8#Zk(&lu1ApR#UAyYS`!@-N#^_-F3g= zAD_PQaONZ$XxFUzuuDdN*`v?n6*S9_e8aZk2}>ZYcBP^FSXcasrdd(DD^#U;~=Tb z9lH%2dE-s+QFt&*UosIhiuY#2RR>Pkd;yYMb4B!3R#bz&% z`R-3ePjTLtf6niruhln)J~+vy`nu=qo`_8Tv+@Jn03qmQSx97eN|;wJ@N4M-<#p}7 z(3(OC78RWsS!vR?Xl)^+S5eIq+E{`l#Nw1@ykbknSY)5w2R+nb36(LISqfoxy$A%@wNmsy+9C8QyK{4UFG+!?=W8)-bn$Yt$v^K!|H=rv6 zCYwodawYwFwW@f2IbW}y1blJQU;6XPINUO61tKOit1ejTuOAeP(QNVBd5M6|lQ#nD z??*m6^zGB$_D2Gv$t|QYeb^wB3IuhjOP{Zd-ubW!L@+B*AAe{o!ZX-jeu979Xlr-3 zyZhE;Rss(Ho_UYuk$3L6SKa>oS~yeSiT~OZr+Z=h(7M#`44l8m<~oSs_$D zbI?j-zPcv~{RF+sR9;wSkV?~=U*i|POW4r$;lr*Q;?dU7&E03&9!=Bd|D8F*oP^OD zh_t;6j24v!=&Q7xPq8qA^eq?_z);x5$1duU(B{z`xrNKk>`E@oD7*^-69k1cVZC>R za&T`RkC!hmW_wvpURW-}bLBDa73#el_eOc3ySdvJD|`iez5{qHYRrlhD>Tl!SfTOY z>;x1@XiHETVLrOVdn{{}=p_GptqrF>)GzmTejhQKD19QgY;dnaVtf~Q#+{7St~ztZRh4!^LV zbAKlP)qV)r4M(TXVjgSSlhP&vI0kA3Fa~KDEFabVBBcVuvrO`b8lRZlh5Bke48MTm z3z6hE4FlmT^#;#>edzn^r|V@r@@oG4r+&wlmD*cwdD^VCyrxmtBV#J`UE8-JU#U7e zx`gTz3_}a1z+1FRF<8!^bFUU4ylk4RiUdn2lkicSOAjE5ZfdvAeL|Wy-^XemJGY;ee&^DSBOiaupE@qECKvuh zK=c@YcA8%~A1p`Ax!hto^S!)p_x^X_9qNY)=5x^c%1TwF6`Gn*mFNpvYP3h|vxIs@ zdqHD|3ory>CS)G5URfLOo%FL8bJg^!3agq!HNYRF%U(qNQ)(+ z=Po(-6O-e}e?f+3NU*?C7#b1kNK(%oS~X?GEq>{TT@72WpBB6P;OaF;X149di%uHw zO10{Bi`A^n8Z))=MOOH{x_WBMZJ)_+{ygRI@A;ok{CagDTfS?=fSpr^&!035T(dm1 zfU<&X*7I;j45r2NWxzG#1=sAQKQDhLxMpSkj{PIN-(Tt=p<+lJTj3=$2+G1mjTj6u z7L&&2grG-?mo;IBxF3zT5ILWs+6D>jTa=^xZFy#%Gx+xNFCm+9p8tf#8hVQpaG5xM z%tjen{!&}-YAi7dBjK4W3p3*dwIkEnyZ}YCK824|%*#c8!4RPWW4;4!S&7GT_76ts zl`=6q+uhn*d#NBCt3E`pFHvKU`|B z*-XAVi%KO((m<<$NzEqa*3wWZAGlyF_7VcAKw=;oH)AXXI#uF=3N8^uLb!lUlT(sL zZ5=Vt?M@xD_3vj4CQ_w!wc~B9BERYvA#XE$zs5c%2{Rs={$s2@6n(Po zqSiqdG#2NnMbLQ7JAbCfXZ=xAX6hyEgeS_Q;YFF2hR}tvV&$=`X|=5fkFtks*4Dap zQDj!swrFusZWe3LoqNi#Li~ZfsHirZ103E04k;pNGerc&8Vs}<=T*?DVL_u;f=JE4 z1Q`>Hqe^@#7>rasSx2zR=D4?L%+CB|H_Kc@U2fbb%iq4mtFepdapUd*z7m>$2fZS5 zkRcd@-e#e(BAWr6*WfE+-(FmeR$3pBTROqw#RPItzlhW|Fb%U2iKAl4n6c5QQc-Um z25)Q_O)90H>)@K4&}%hoPqkOS<2HH3`qj&v zVXQN&STFq2u7ef!v65RD-^f3ilXU*uW~a(kQAU*c`1p^Ab>?3{WP7pj)zYN&NPSXz zWPmp&Xi=>Vd}}2o5lASB(%F(1OH%1<$0&cYBC6NyDpkzMoX9b$%J5YcG zB^?DOd838tUk9NSX=R)-==V?k!NREO2NFeOe|qo`hq-m~cbE9D!OE<8JBO5Ej>A9x z<$k5mrinY!<}|v(N3x4P>F1{eKmW3NsS~T-ta=LdoSgTcw{iZoe#7N8#imSKf>W>p zRh;)hXQ7z&5#l)oGz%TlK!^robN|f+NlrLaQh+mP;@bhq5rAoi1RcBtCcTA}98(<$ z&alVqq1+!Sgv`~*KpCT{-t=+1$1;so=Vk9OiU0Ws!#-uck3W&ex|f4E-;;Z}7nR}P zKIJa{^+`6GO+j4&tReop`YO0&C}O%rJP>$vF-yeUa;^=|sRf5nAYY_f9B3HaJ{b83 zrcOnSUD3N5R*2OGu-K`t!;H_}ECxY>k;*WRp(N{7hZr zEqv7CfHG9H0>K4`4!SH+sP-k(xn8IUBspfa+J&?-RWOnAj=q=E-A8vetyeUrK1~qE z&diplc}9pIlGnM{V#!!NO%L}4RKcjdH21t0t2fjSi#Yoas~5#%`sy3X?J-pBf46MY z08+7R=<_ai2ouCnYL$WFbiFA3`P>gq&^S_do66J;f9Y=kAr2lOeU}!CT_TStB}l|c z!qS2#bgp&#Qjv7?h# zM4x#|I*DbI2p48&#WUN8W<#5Pu5 zpZsjg;Y;|z;V1Y>SmE9w&_!B3%hQKHGtoV#HQ+CSUe<+#f7E2K8E|+b-d0sfQ^j;T ztwbT6k02`u+LIO_9+K{9RyL6*A5p+e0U8u445L8O*T35+%K7d$l$DInJ9~xS`hD@w znR)YvOkVNU$|Y!Ux|OGd|9uNLXRtc%E7Yca%i4O{$ z4+Lx0@ib41M1A2D82JBZ*^k^ClqHNWxbQ9i{qDkFrn(l6n6i5Ps^xG7Y~Zg(+&Omg z_aVn-rp}!)bj|GDM6ESIwhIOIWp$L`?TUM^JT$S+EJjC<*_r?;TMLq*qC`6zqH`9JjI>!I2 z^Gb7vk5HIMXjrnSv_SoZ2t*w%$uG_bN`|UhEvjq`Efr2DG}o$`Tr(~nm2=e8Db`rL zoPLl0ELNV^y3Yuk998OZnK)T>ea5r+H`7)uo8tcZi)V@)^1QgbXj-f9+w}RY>7_j7 zylh`I{`EJgLaMd2 zhmO$Z!ju5C|aci5;@*8X+=2v`}~r< zb&yML_v-jrs@m{gSb`!?`*{h^?=t+tC)W$f`aUG#SAzsL_-GJOq z13}`Vf8D-n4s?_E*}!Map8vOv)k_?d4!9o|uPDn?t}NQF`DCQY{Xb_TU;pxR_Vs7K z4s5`A+uAMVgIkYY?teaQ=aaeW_FeTyWdh2C{GTx-unzR@0h+(iyY>AR?hQkF8fKHZ zL5k)mN=^%!N85L9ph(E8v_G$H| z`#S%df4xXPulQbLCFN_+KkYd1!1lx64L&n?`|~*`j?f-8M7CHD>`@dT)9pL`Bw0** zktAh6<}C@awiPFTgo$gwn$0qqIjF=Zr+^Nbw^lq#bd-f?FqkA#8YLLm~`N;|K}SZ9EVvnXz5MpGi8hLsazX)@ZKdI;_zH z4IS-qW1&yDCrwI+R?H{^GyuU6R0B$#yQ_*)oVQ1LnbReAY}RL>qBgus9DU50Oui_H z9pca%`K#=RyK=|D^0t-xzvz9eA9l%y%>it^;h8-Q-*pr^7fGJ}6khgVNGn4Vp$M?SDgi67a}(HRM{)Xh`R?-p6Irj3yg@8Neh$m?0y-fIgQ%zJm!shrKzW-Ch4 z;?GCXo^;8-tK5cPq_osb z3o=!mi-?A?4Te^4#;;~8BxWxlifw785R3KI!10E9MB``l>^0Bw$q?z$p{X2nx0I}Y z_2F&)bH>ka98Rq=U{U(w)%)dFn@>zz(s7HEReMr;?X$&=kJLHxUgY{?SY;G+fgU&m z5y;K38ME#{+!i;jcebY0_8@N^Jhf<~Z5_BtmI$3<;jQ%&yjRe(o4md{gV*;^`{NQ7 zg-!!%S8sm)dEWfasSxLfzk@g@_2oEqJ!_JGQ@sEV6h^Bw&G0o03n4GOp_Z4f5}_c= zDntI`DuG^AVGH?TWij8|v1y+HM6Q)0nEKaAzA#8QcmM1>P@Xe>)#i-M_=#p$Xx^t55G#^V zfN)cnGp$4n^;-eLg#@6ss49AKC)J1*W|G|!fbD_b`xb7r4eM~B|Yad)k@t^cVXh8~*O{q=DJzCSxg zcw$=H;JAP-FFY}FXB9**JTa|pcI;G~Bs?*4XJwMGd(za=@;A0`ksnwD)rOP`2I8S{ zBDoO=nuNnr)l(Cl3>B=DI2e=|f+_WhA)%n~B(`eI*T44Wm$H;L?Vaj6)*u8~lAZfb zZPud4QTo;9vaj4({v1=t1H~#{e7sp6sjgG1q2=rT>r$J~8`5WH$s=vK`g3!o!Gjx; z^`r1q^-l<)bE0}5VO}pu< zSIzC6i#4>u8ZyKhLUpng(!vaa*a-xkSQ({9M%$rwY4h@VZR>xTwg|W!p+?FNfQL9X z#}^(PHivZ=`_K?Z{&9S39GhE&o}bHl3Tmj%Ps+QbeB>Y%lggqOju^%Q60pH03$m;l zhOrlLyTcx4pdf2HfskD7$@FgOmBIXEyM>$19U757uu;2ZYc3od0HTE60$aN@XtWUZ zd?S%zFCfBHiP`gfy#74BuFM0SFsTQ-%SOugv4atsQke8!`u!|l3svhYARlX7 zj~0y@w`kG0Q44u^tyZmSCAVw|cZSpoJ;nRNUl;<;6OXK#Mp8TJQ>|P|dwid>T!2%~ zr7K1U;uJcb>Ov+n|1%wwbNjpjo>{kKVqd`OICTM(vuXOr5=J z*TQDAcJ5r5SE7ZQ-XgD7ldc`xpp#MOR;|4EC&=Av)8&}f0#5vS|lebJF!y% z5(1Z+?4aUSs33qeC>jHR6Is1~wj(`0a=RSC$Fg}r4CH|>Uie%I<8$btqUZ(W3b9Iz zenuYga~8?3Z~x~XWhb8!#HX<3Yz017SsJN~wZ((W`{HCKh#yJ@x^@w$BWcw{n@REp z`KZl_={S)P4I6Nd3#?L7JB#3G(JF?@OXPgpA;g$FYksC0NQ)I=i7^O^FxZnWB=SV@ z08^kvL=05nSC9}uq5~nvKyaKmN&-djfJL@m!IV?BX#?U<+4fAH&(CpRc4cpO_g4xQ zDms0t8JOJ@FTJ6aF?E9$wu_-J8>XigZx@CNM$Q*0pfD1`FhWf;KAhky@gkKTS5dfg z&_B9NbV9TOMaA?%l4&sr7H8goIme7x@Ypr$t&JD z|NE7X`wpEov^V%G5IYkh2-r))ALZ*&Lyx3r8?ecepfttX zCVq#1Zji>_ysz;u54h_3oR3}Y;%R^MT`n(4aBr* zwQJXMoa}F#KqFd*9*%W@#nPzw+@?k86`xTB+0a7iHmFLlNJEZU{A@zp8L0E-bitQq zmah=EW|EUc!65x-uI11zixrg{JmFdiJ{=~puL9` zH&O|*KVT026g33WKX&2}tMl*q)B|qfq?(Xc4ymh}j$6B+JO`d9x{HU`xe6xM-P0;m zPb4TR2^P5|cr!$#@+Ei@V9u%E_7`2Lj}{FU_L+vIj5i@$TfMe!j1uuKEFL#euI1vZaQ+4Ald_s4Pz z`omp%hRt)=dYAsWpPo8=n6&x~Y)SxZk|N**BQ+nr0s*iX8U2D&8)PfYHRFL{t_jBA z^%a|`5Do^jS!oL-kGB@!OYJQ{id2#-TIP`s#z#^Y4_V`p18B$sT9$v~zTa<%ywBbB)63xQeK47=D!6+zb?Y>B+p<`h zUfvWPDt!0RaF&{wG<+nMT&DnMVZpYGifa(G#)O0ZL1lsxg23GaOdo{dY4Uwj*)oVF zfQSX4!pAK#Orj$t#lxCtIE?O~aDc0aL@C2i_qBE1sJPVZiTbP*i)8ZB8B6n7i87y;-Sghk8BpixY>6pJ#c{e~z|(JQ zg>{}@SkN!7kWRQ7++6IS!JmxuBZ`a06a-{+^{io#6d4d18Cf;5VPyNr)W|WBGa`L^ z>y@krou!YL&PAKkhJ~ck0i`2LS1sMJw5@kmoaw;fB*!N-^sgGWBijV?`5psFGpnd>5ZDtj<68LeN=wceT4nlES;Zak9c8L zZ7Nm5C}p;^*us1l%-j-JcFVN6>}0tXztxp_-DFT(IiS2SI9YL2!i1XYFfF>UmqS5K zH94$E976R42*C(j;tFTH$zu-;1bY6XwIU*ip13&pHM&5c^#aO|;;E84Dmei!iC8mfKAT{V?`>eJSP4!*xX(0#3l+~KX> zZ4Pb_GZB!f)IrFy)mjOYN6u14Ww@@jpg^I81|?9rU|0f8wC!zy4?-F#c2JBUp218D z3AqlZovA{JL^#e?5mDj~(T>Vg95N^bmOcQY7Y-l}!Bhw+^MQ_}Ad>JxP zoh=djMEz^0YT3YQ-=Ge7L0iCYtGLavAb?2r-CnouV81?bB@li@5KbrSB{>hd9f}!!pBNTRE|fFfa7_lhNeRwmQ#j1vWHE>%#gIOQHVHUeFhPs>3S$$z-ORCJO@tLNa4kX+@*qZN zo~06;F#%Z>3SOqzX0?KcpvYi*q&LmDphy}fWr3}UH-vdDOOc`tOG?gqJ70Qt^Q;-~ z>}piAM&nn9HDuxY<}cX0o&UCb7fi^O?Ov(h*8MzFK9i}&j(cPKqUN)9uO64w5JqCt zF0WQ|H=MU^+tTKI*yb?>5zZ8 zalc<`zf?tAzhKX|+K>^K+IFoN`I-`P_g2v1aCYa|HwQMv?d3bu+Af7`=NAxLP+Uc3wLp&dB6IZBpxEdNt9JV{oviHUVVaOQ|qVTpTL(BGt z8UY*_5b~a6=y%{_GEM<2*k;P)4>CQ3;a9xip%xhvMH)?P8OmHGF`pEL&4;}PKf}NF z9tnv!{8TOKSnGaU?&qFxl+`+Rh@U*NzgLHpp1s) z__lT%Po8|&o;qU0fDU~}j_m(@tLpdsZ$!OZY7y{*k;-bdEBHZSOW@n6 z2tGN26~8Y%;1dV^CiKQDP8=G)0TF zOJsg4zh%_V7`<@j+_|H9;G)-;qVU<5FJ|NU61gOw&8E43VMlmVcDOIrz6LU9C89ty zMQo61idd+Jms$LPUS1ZVmqkUOK1BH1qP{Efs5_MNtf0bP|B)7=zX?`TXu+E(69JAe znpa9RivTwQsL;z8oCi^Xacb~KhgUwDzv9W9xi{x1ZfWBBoIQNS+9`6$aedM^F}7+s zQ{GlMEWxMpOlKoBkwuam#rimApl7;Kn;zoybF?|ob_plJnO|+oP0({a+ zlNh6DAXApR|4^DdpDw4kv()B!f6K+7la9+?E1#85ugi9i!!IIMqdY)dMnP-<{K{Oq zsIwpCLEe6)gFG^a)>jt-^$kGlBfWyrmQ*?Gts^sNMCddxrqUrD%~ah%s}wy_lcMBC zY|{5U?9_K(vNTpvor|i6MyDtu)CXSVYdFcp(W$7mG+uMmsf%B8I)s&sYjw|wHoWxW zXAMh?Ol|0hp$VEJRJ1#VGFU7@3)UZ41A2IGR(t^gIjaa!kW8pV^)I>EWs%}1j(B8H zF^ceoIfOhylnK=x(`6UGw*1!2nZGP!F*|p%m}S4r zWDnk$^4_R&{{B^lzdiZQXT9H;I&@D(hkv=by0V z%iU|$^{3CZY8=zFOLq3VwoTa|tSBDSxYfCA>_`57-df&)ej_1L15Nf+KNHOeD+jJ)v7ZZcTQQ?ti$|4gJ*YWwy{me#&fDF%c|Fs%eITm z{C-$un;5xqy$g68(?&dQR~C=o2lm}`yyw*4n2&tL)^#+rtL_Qh(dIYv=FR z-+%rZcz-=9SXrtLm(rw2aNxxarP}Ke|J$Fx*}WaF&cLhJ#j9m4um0@bj@^sFal4B% zZG(TlmS*=8ExjP7EmKqsoyU8y?Gh=#nvb}_;u9Hq_Aw#MbK{vA>cP4W@? zGleOMsD->Xd_{uC;sM@7sRa~RPzi}ts7rs+rcJE=rcLs6%6DOhut!bv(^wB?2k%19 z91#l_VO~#+({4XCqos0=b$YAqxTynEdLP0%E5kA>j?)zX=%yMhfFr%x~_W7U>YMoW5=u<=Qm1nWY5m8k%QLQxsO{%y__*2HCNQ1s)TSR_{6@1yLh&q@I2SgU;%)>;l# z4j*g5m8;OE!=+*56?+5d-jx{uRD_yd(bxc?vl|aAUMGgSLnJcuE-k<=V6TwW|Jp-R4rm|0djI{i2O74pmrL5m#(Q=&ZoxR( zQ5SlPeIYh=z=51%M}0m>wQjC5Pi(Nh!vbsZ(he=i6rB=r1Oq`9)LGDAX}%&X90PUn zKtsHNlNdY@<}u;kM95}k;ziUTj9@|ySpvXdSrCa%+7=vn=!9Z&2Kht z2?)o)j7~rW6qPrH^q9)96TSpB#Yoe%AXB!o$m2C&6aX7Y@)A42=#8%+h1cwZgSQDp z@Iqh(&Dz2CkydJwx5V>BH#%$Z1ZSFHgmOs7n{YstnCgXN)jY8iO=~)0D-Oy@=b*pR zk5Sa5ezGTOa^OkiC(qLWdH;jiwW{%DfU-5BNi&d(-$pvCHEY`rCq`$a&9Pt24Zs@W zK|=#%QD$a5XpL7|8xJfezY<=lM7!TQz#{7Y?dpap45T!No36kkpp|M^iB4}rXzr$G z<0>`8vsyKAgC3k&HB2wo6(14&J=i1N$@4{60>)5xQCjw8&XbbLQrbzh|2?Aa&sI zC!G%7JJ_>rW!*+iYLx4?eaWX`BT{C*fBqC)gP~G)p6phJ-qIpz89S>5EMGwwgH9!h5CF0#aKEa!))UwI;@V7HTZwCX zaqTLuJ;k-3xDF84G;tj%u4BY?qPR{K*XiOqM_d<(>kLma!{ zSyBvRO%HKs%IBg5Ib;i|=~WW4YM5SqCBQj6*9o`)VEx>z1_ideb5O2xXs#2$0#~&~ zJJDtVSj_n?+IXbUbW?KIXEY#hTg}8g6skdLj{ZD&Os8g?Z-d|(IKS$Zo;vc)z zfAXY0ulLQE)Q5i{$F^+SIkHHz${SdVrtR7_9YYtE!soT?-Jw&@nw9d-vAXBSjy=y$ z*~_p}<9F^HkBYy%gF8EQRFzia#lNSu^zT=4+LtfQzs}2imKX9gQ@?>O+sl2~@vYA| zXp$wN6UX4JAuA2N@z5R>M+n+tl*mMahb~f-^ijqT!a?xTLSI+m;FW}02|u0)si1P0 zvgWjiV6rFC5lOM3uRWD((6%{{Wv=ffJn>=38lZ42{i)%~vAjlkO;rEVF|B%Se{;na z`GQ=hV(nVJdnTMef4;S<%BpJbm{%>YnsV{4I(5S1=eL@%cJcJY8Vzgot=Fhmo1VMe zZB)O_NEd{TFUcB`PQs*~nvW^6Ab56hFk_NThA%cN)Z|o@L&-0zDgMGe3&Qm=y;xYH zL^BOND+OSv8e$%(z)*Fl{N*TFb8lp&#@4J+r}3ek^OtWN)_(~bH;viSUagSSxaRn` zW{ev?xa(M~at2l@D?y0MduAF7KajCJ;UplzVG}-A6`eH;mV(^5XhdUT6J`06b8K{w zT&LT3P92-AjSSTch0}8&Jcu7dXL*pz`UN`Mr zd=0paLP)g8yEd-CTI*+aK>-j}@il|E+wa zZi0t2N=o(2ade^)uMfB+ZG%v$N_+OiTe}@1`f6n$s1t5cn6V?~AUBjqlWK&O+9Aq3 z>kJ8yY&gL+YsOQrV~^|$l}`*@`N8>z$G`ZEALplH!cQFE+hkz)uwQ=$9F%&C3)!da(C-SYobvH?jLDrqWXRT2@?v_eE@r z!w}zqIhnGmX@?X6tKg3MU2w|kHI;3>I`kRw$C=ZAj_A{&*H51uy8g{@g1SeyVI_OC zYumNk#%{`MU1rCZTi$QOfe$wJUtTVLR+n}A_qhkOdacWvE?wltjZ@k-d9_0aP;PCY zBUfDt%B`a@2Xze6_finB0lA5QEfY2*g~FFuK78_E#Y(Q5=i?x_hbn7T+w7tk&9x-$V5Bcvjjj9Q!}Lu zU^!?>?$8ghAfluIDOMquh%RPo#3?~nz6u=v&fc?sf3$fP<8#8 zO`Aqu()QnY`cn&*%-XB&U9VKGGJf8;?mdT-4xI*Qz68EXA{!rJ z&gS;0frCEz=FWu=pE>^U8PU1NkO>3()GI63l{=nwRlM+F*44vrwrVnLVDFLfVZ>jm zV(0Gx5#7y?55Vt`j^XRs7eVd@M8ZGA#*Dl^b8CL0SuXm>!V5hR!BAvLHW zX)}fn>fgQN5Z8l47j6&e_g&ukQ?5tpJq8T9HBH{xwORAFE$Xa1khL*oUhFGhZ~Eku z&5b*CYq0~kXpH^&7Ptr}$!F@%BN(fJ3$NreMH)3Z>_y3E0;C^Hg7K5 znU$I{VAP|3&Yk+XcQ$Hh;{#Y!rpJ7wdvaQl(yw$osd!hgB25=!2|3@rxGrWBGaS$(5MrOzHttj6EsE zilUcM?}vOKDg{AHEe5XmLR^1Q@AJ0l#Z`tpP)*Cv`CXnx`b1Rc(cEGbM#rQ)wZ?L_4zn_Eq(#=MlFrI{^+Dz*p&Hgf!EjpOWOt? zvOWP)V6cixE#w0dOG*wzHAy~il`s93IpUV8E_Jh`*MB^LMjX<(A(xQc&d4*ahT<0; z)K}Y!GXo}rnkl|#_4nhaM1U_TN)6?iE;aa_fj3UX{HwzQzI_MP@@W*Bw>b@Mg5wPW24AJ z_(f-@zq2ueebS)5qsA`(@%WR^7TwBx#H4=6$;96LJu*~m%)d}aNHtUht*9&nD!ROy(5XQv zlW0Sf&Qw|opgdW|C@W`(bb2IEwA|vFi=Dml=M7ej=kXesM~oOc`ZC+eyQ)h++I6=l zk1Zq*@7u0JDpuSkzp6R{`w$Gxw}s{-YRKWGbe8d~Sa^qx6$>H*%~HE>v&Rp*x+RGT z7Cu@^>q!B`O`&^~U9j*?xzg6Z zTC7`e&UZ0myK3)dwq^V*f8_Jg@$7?%&U4uZJ(#WpO#4BPM2GKSp@Ac6U}%w+gJ%iKv`VS-cmL2?^h=*9yhf3?`<5*p}PTpc=jQavVg@x%@LDtVw_)W^|i+kyDHIt4m zngRGwxnkbWu9GM6X&t*maIdh``X%3E!LFBm5?q2lNF*R9lTN#x5+@*wNL1piQzcGf zAPEWl|L1&{YZOail~BX}HUEkIFq`iH_jb=iD$qaf46Gss9Cjd9QB;c7Y$l8wg2x<~ z!na#}ZSq*xP3`=RM<2BY&&a#J@8a?Od;9dpw^9R*iTGAUDy73_*)xM!gcBo?O?(J! z8}vpPDJ0F;KPBX@vC|gq!T1WX?FJ2a6a}>BII!RMm@l;U2GqLwB3*C~%01ol$Groi zeW&|ExxeQ7fZo=Zo+{~E3HQwgidY{>C+dNas19-IH0#3T(pYsV4`dH$)tzykTi`sG zM0cs;rVa;|^?Hv)QAPAnhr`9}#=vnltKuc}H2OxP}pBf#B{$HVy z$w&o_Qd@+r;g_HAt1R@IzfWWMou1U~XQ&og0rz%eL$}j3t%DFF~8>YZk z4yPJ{`uRc119af8Af;1@?@E3P(*>=Gz;j{N`Idan?;pZI) z`2K3h@udY)e%_wI8#jW^tcRdy$e)$aL1q(jg~w_oM6R$7tw`T8P;4ADtxS-}>c%uC zb43I)vQ54KN{#TzMUE(81cRE2Ql^B(Ef7|Q8~`|}QK3dPTfC@bi-TY=U=BkWTXR0w z-de{|-SDVUauv^-g?Ce6Tra4v({o;>HpY|J;IT`Xx zXs^m!pqOy<{*z1=rp1`>GGD2%u!em^S5=YKlA8emfmU$d%tq)D-m+bS2#--H41EaM zu#k($Z-IM2R2ooy4*VG*aB3j`8J12`JRJStb6=g!=g*Gud_Pzwk00_!tgyP0`<3;5SII3soCeM&;^B$tl1k>&ONie%vqa`5EsJmqo)D$1b${hj zqDWiCH_2YDUJ)5zHj(i~P{{bBRfsTeD*h-X|{(LR_ydxsJN8eM6P&7oJfZb4F$;vYM*}P&bO6~v1{oJM8^Uy51 zmjLo#@f(GuwwhFgj0gQUEZT>04lJ%!-2}#2HD^@I z`w$D2oAT*7>)1zZ+qxXS9C&XJE4?k&5eSQ@B)FxIt`&n5Afkk8aSuIih1eyXx?Os6A=93@Za$Y?W2U*-kKre`vjqP6%~ktL@!wcjD8^Ap z7@qOvj^p9-ep(|Ebk#YKRneGa<1kh43Ad@SMk6{SsLc@5gjKUH0}hUb!|!SCrxhq- zB-B?Cy@K=-1$`1MMQW+5J_Q9O%G{@9K6&q?5v!LjT0LPruj)K9`{BmlS%m@J5AuYw zWzRV)Zr-!=y>eM+qR-}RVDX_V@6F*i??)`X)=GE`Vo<@-5x9;($I{Rjy9OC>81<3@ z4sS2Tmo?|nd}Lu#BOMdYU;lzE3!;1zE$OTfVo69@cyp6PCI!6gNY2mX+myY0%c7-M z{`~XqxC!H5pE=hB2S?5y@t012di+S|q3LOH?%T8rWE;MUT_}YLdBqebc&SaO`4X*HE>WtYH1*ojg7tP6!3h=>@?SPIh>uiPyNns*$p}~{qjw#YrdV7=nAZ{V^db-8 z?-ec7ZO_UYEH1TO;Si%}^AiD4V7sV71qP!DH+<$lx((q3H*Ho8&K` zA0hgPHkhz_a5*7aJ;qtU?n#HM4u4WiFzz@G;Zv$-MEWG@K28aWa8ntshtL6yID!G< zk+B5(UeZg96~Vx{MemOfy>F#kF4+6OGo8$};;eOh!L|vzPDtY*__R$T_9OECtw6Vz zII^^P+138#YmmspoK~XX{ zZ?P5z;1M-F0jpTxg{940M{FK)*X8%8Kv#*9eR^?5#@c6O#Cz2lSpprzp~K>OH9j&a z*F3UqFNo;yGZC#SAZD20t%b!!V`+rZ(IMUC4?bUd{LjBXvC>_wtfz0AJYmdv*E?Ui z4qHzjrGbvTF@G3(^3!OutX&@3+wq7E4D%=Ric*d@B`VvOa71{O)Q)zJ*0y?(>(2S` zWF4Rg3YJmCNb}m5ykSWS(wvcDzkBVn6Rl*q$x{Up;jjSan)3IibNKhfcIq1hDxnLoD^b)`hg=qF(;LU44Jmg%&#Ym8!{#k zIP~$KcMcnWr)8ZUwyW)oK)EAR@A_)RsyAI7yX1Fiwc^>Q9v!kUtM(&9il1wkJ*0T~ zfNon{C2rdqbl-_pk0$+$bNZzg9N~40P>Ge%9g~MtW`{)+r~^bx$A= z{4IcJA8d|VrJs|t40I>|YCF6))|mFs+IPh6;3Gi^KCLl&p{tT35Ip52p7Ih;;kP}z zy!*YxQ{G~)ImyXTVRs>g2EaYAknq0`3IlLf;aJ-Cx7RU0EF zODTc8>4~JLUWHQH3?Y%I(qHIYaj*@XI?k{Y)|$309lbvL=yl%|ur|fV4%oV=rN|o5 zJr=Z+qmK(@XEYcWiUd0rxGgS+tgrbG0#w zaz;mgwC)GS{1Fk*i`Y|&jUo;LgOp^xyT?8VMjTA}ytE?@fJ7h$Nfp-71cS$MOI`{lS(1M}zn^t%X*pFVe9Ky1x?|2?$l zTRZjkOq5Pa9`=^!d3W&p?0M6=N1WH{wGrntTsyGP*t~|p3enEzAD?}6{&~w^x-B3I z0%AC}4V``R{9{UcDVHYR=-@ABuQ$#ydT9iu^(pH(_o&=Bnmr^qNvMCHlhFLuco6&2 zqw>X0daKhn29|0Syge3Y1WsRhp0S-OcS6Jv^bt@dVjtsUy@V2f%b0Z$UQO%@sgfdr z6*`taemzxK58Yt){rR(tR+BMB6GvRMbq9kSa8xVUK#kZ2S{PviMOXp4FR)RWq>xjz_@k4!?GN+b&7B=%%@VUy zFHf2o8%PoElV6LpSaHu!t4~{h$BX+Xj3{1lSTr6x;ozs%55E^Z6MEp&ebA4lgnq|O zB5Pm~)HM8lx9k~!O`+u=Uz?`)lOd}1ex%)g=__@;*TP}Y!uQ&&cESKvUl82zgO-!2n^MMAY#X< z$9(E!;KL7HHG}V;6yI5u#dljp@UVqzJfOi^ zyS#T`6qV2uEz0(P*wQgViB(4rbC04Lf6&Hd8n=p~1~YBbNUcaChQV)pcBSo4Bef!} zI1Orr!_DJ2eB84Ss<|T#ljeZzzW6j=5wxU1g)#g=@a$EjnNj}&5S$c|NPX7*+HbF( z*cQBsMr#hUMhAaI#P%vWEuBf$F82)3Ai-GZhepOLL6$8}2-caD85yA=M9@Gf@<>VK z4AMBzfVPU>G-`Lr&E!14QDn*Kn()CoXn=Vlc8VGDLbAeTE*CZ5I zEH#P^*d6dRLQzX_5tVvD13bI@o4oS6KQx zzW4%az^)^QSP8~#AhGjt$J68P z&G3|7i~Be$$on{v&tBWMzqu|>txSZ(R>vsMM#T?sA1CK}|4;7YbfhYkm|O*jqPhm* z#j@|?tYNrvn;JRDXXY9iT*!&foUB-ZuPseTv-9B-J&%90^O0w)Pp$245%t-`S??UE zQssbodjA`ri;V?CgDYO$Ao>k?Hlalu(MnWoX^Cr(?%AFB&M|YVsNUcw5oeYD(#;C( zD2HBGe~zCP$X)la^*(eCm1meKkmiXSi877rIQm-w`|=^Ie>`$iRXi*1~S*_LQ4d!Av4Jf05|%S!2H?2o(&X{V-Di6f9A>ethM46 z^2>cio~D@4@3`@MBkIg+;ns{ej$xF*XH?DJmk}$bcV7*8DJeR5I&^^&*9mHZhb4nB zboe_d1`tth;;CWCOB_?vP@K%yS)%Dh9^K+dr2}-KB}~>!)`8fa`(L|pVD!>I9zonC zt@J>W$e%wsyZv>qub;gx%IvukMEI%P=PwPL61(ioz1FwZg_YKcYm)ZWY~cEB^P<%G zD_QRR?w*7B{oA|c)Y6Cb!Tw9*~{3#9Fw|o2XIcsBrdsetNTBk4Gz53z-q-78l~UL=R68MvM;Uf(L`Tt;g97uK$DfMK_VZ7vC-O?5}4{{?@azM{O@to-t6(;q1xJQ|NQ$}3{< zV%D0KE7z2Mwr2VAHCQc`$C3pLrH;ct$bEDb$A!I7)l|_{;e!pfI$WZpNW$?8-5;4DIR8>PGo&Ia5fhwE zGyOGdbIwU@O)-qt99^3!V+17O?#}2Nl9PL7N{paZ9CKab9&2(^rp$|Jn)K*;*V-op z5@QaZ3f$Nai81EBWgSwNcg{U@sQm5A%XeRv_3m#c_71-F-svQvyTFfH;$Dj!*-ic! z$306CLRkyG4A}uS1Ks~JaHVWQMvV-*&Bj3k_{bsx8e|HTWN_9Geu4(cAS_s9FEvDM zi^eR*C{Ll(j zer(yY$18_Exc%7H)9%gM(Ij(Q56z3j&@r5V5J^I26t33lo zkGQelfKeldlR@i+JW`3D|lZXcqe}ps1 z&s%>5PT)V{=l9P4`j&N`(y;!%WpdHY7oT|IiM_p^H(P#S?K$S@CET~()PFSXl|0m` zK7%^d+QwXebw^hTwmwyTs_OcJ4yR;O%|OX+#XWtD;Rs^xosCw7>kQX0kZ89zylIdF z&n_w)+_fD~lWKEf4)uO_Jk|Hp$l`D4%PQ7zMM)OgLC4;3f3r4?+V9&ucj?9jD|atl zux(%GR&86)A1dCzr4}U0$QjeePR*&er10KZ6Ek!3>W`*79&@3Zyy~jJ^>W>%Lx3fK znxax2oh5SN5t4^g*2YDZqiJ2WL@p=SXBHF`ykxD47I(a2J+!a9X!+R2jnl2?1x}=78=7*p{frnhR21gj@Sf?Y|!XWOr{Gc{gpWx z^QzT{HlckZnu=en?I~@#-nVGuqB%Rv7d?}TI(F!oi<-MfA6-#p{@v4_xPN5dnaw-Z z1r2*){4csP;3KP!?35I_GmyEXe3h)ssd=b#h*USn?sqiYObO4U1dQ%zDG8Zawg?mj zwWP^Wxif;FW|K!AjO#kCXu;F-mv8(1i$@!Fh@X`UC(siGBRVg+d+HNUt#17O57vO% zX|*5e(hQf-3+lhlwD%f0a`oBqq6Vw&TX;;|;bEZ>rz(*}r4M|LJFOjuML(;jInCT2 zywRNXD5R>Y^rl>b+Qt)pAMYYMBe9L~GsBh}><>^cWK)~`0nn&)C~OPaikCb>3ZLr%VZcl{2_eqro|1TmSx9jT({e-z9Xx+z4rsj9lB1{uIu& zrQ9x+xyS0TqJgqQ{3hp(@$J(%6L%+uM@^f+IVae1k!(Uy5?O3bTC%Se(tWa;sM8@O zReaxJ@VyJR-v7`B^YmBAOQ(p7fi<%}C7|3@6=TKbjqaxFudk{cwSIPw^ALOC66q`1Osf{Rum#z((5xp7Rtg(pbRRM8A1d=_)=R4?&_csrn5;SxSL(Q{ENnUX-Pt#E zt~2@Ip(9H#t@_0JYj2aH!J|swys3wn7;IF#@dK0QZ(nZx)b8#<1E&_fP~=*7)7aEe z&lDup%I@wGtCkGhGGg`g&4ZeBn|edzwFRjgj-*`vHo04)4!v$}H!j*VpY1W`*4|0o z$BgMk`>#KGmKK1*3CLWV;IG1&YgDZtQ5CKz%Mx0B&=QcmvwCM5(UgwlFUSAzW(*UE zLdOw>`&2<@=H@2A!OcOMi%!L2mHS*4LZ+`c~n?Fvh`uXjXKM%e+Qqc9 zaogO&Dwyi^r(7-UrBZ2Y@t@D$gX2h<*;j=R~a{LvDF!E*hjZ>5Ra9Xdd*6rd2q8i%X-UP6&wSC%rfT$bAwfA3`CI( zbRUaR_rdWP6h&BMDvCsmK^v0>_fhbBE0*35 zD#Ql&5w}yEp+3v$WK<<4%SuV)X{qW3eyuXdl=lp}sWXd%RIUgo9>P^k+-USn_ddE3 zb7~~#Ce)cC?%5<<51UJ^i%;J-S9JASZ@U*Syj^}{7oS54tBa`@1L~EB zv`9Ce@>iD{2>PVs1jf%qTV`C9ivBbqjT6LdWn^u9+N?B+*;3do9$_~-)D{lGaYSxU zdRjKc;r6E;r#PI`r4$v?Sf;ArduN@@j4L!kQv>eev_4 zA;Twp{rT5t#*Er?>BAu-Zyo)Hd-3Kc^Y5#bwshpiZQ`=^=1uL_dbXO~I_Gx*A5m>P zRY&^3%UvD2Td_`rh+)PiZS<<;W&Rj0I)kgcrVq9Cu(?tD-`1*L@RvCCrTFN) zy?BxGf>6E*F2=pd?y=$-?=`5v`OmjrLTPK-Ol02I))XJy&^Fih7oVYc*Cj|%x5H*Knue!a8e~AVH_zY zq;{20FP~k$ZTbB21?9(=huVeMX9Co&gzSotRS}Ip>g1%=av8fGUAcRA&+EJPv{pPn zX|`wgEi>*O*|b%wrpFE#X6YLD%hpNnB51m4;5z7TC30+W;jtBXy)-&XbfGE;?8&I` zFfr-`$4B@Vr0JiEvaHnXitVD~Q`1wkQ`@GxhmjqTlD)TWN`6W~3ao?plyqF@p~j4( z6`i2qE@H(n3;LpUvY<=z`|73FzqO!CgC+H=HF)6A-o>7|J;!!wQm1NMz5gJZR)5X39K%giOB?3PDsSke&%@VN#hwp_BC5)vG zhUCg|4gILN_(M@^y|rM?sn6Y?E?IJEs3^yL_q{vD`wqr}+#-Wsi8usS_$nh}l3}qt z>7Hy)TMv(g&K>d=Fij*g`lEbgz3(m`W>kMllsYDPMCj>@O zz36M(e2(wIMb|eM?(a8jxOCS{PsM6&#t!O{*WP!X+$GmZlwr`WJL4)u1A*b+R>*|=U!h%b!)rK zx3;)fy-N)wrH7CX^NRvx!LeOow8d-wWLh99_C_mtLFumPaqM-d>j&zbxT&$ zNP$ZLUl3fb`8aOR++p9Iso_|aA~?Q16L9&!x0B&&GQI?fkB@M`@%;|H0P~_}A8=(j z-^uzB;YzXJ*$nTLxN13ZG3O{;di*BxBryI;@_p>SAzZNTadMF3o@UX-TxxEl*_w5n zZ`SHO?E*Rx$01uG6F2%)L$+kBqoRn7FhZ-7H7R8T?l5O!9}WvgArKbKYamu&QnL=u zf8!D$6G;Xzy_)5DYNuK6U)*b*UMJRy8qZ%AP1Ay@8z0_&^!@FRtWFi5{%Bp=BRap| z>Lby8j}`dw@nzO`XPf?Pomu**W1KaNf&SQ<CvNr36~YnwK+U^x;EL9*~L0ta=?0bhgmFYJ^#13CjH{I){k31aQ*P|sMYD# z=VtoL1(W=u+k1^a5&3(6{|1*Xe*0t2FV>fhYKtldu&c?|N@H810`>NgxoS8bRA(2( zJWTcfN{dc{7HztbH;SH9F#pY3tHrBtiS~Y1iFM%U;hm@d{^L_m$!_b=Tg{JJ`~5EW znakga^1o;PBx1oH%mtIc1&OGz>gK4hQn7J%{wi)zP8kxl&fqt^F%k4cAFK$1CgG|F zWJeM|P+%!3&ogO@_3<9R_3>7*S=8U-7nx7HFQ4A=%$H;K-nr@H81vA(R>{77qW9a4 z-x0kIJa4`DM$#FPVSV;Po#lVb7tx=}k-I!J@)Sh%(RoHj^>Mz^Z7AAhphnKzPkan- zo`=p9cJR5LNsm2vcC+CQ)uvVKb(p_WkK6Zkz;#PZi1H{)VA)6-J5krqi z^Ha#3U+ahj`H|~|r~b4=f}xab^f+cY}ak@wBeIqE`0vU!Ns`EoyHq)ZFHT3Wl+f& zs$>54typXnfF2R%yxU+OkSCV@Aq5e_$ysL#mwB4QBUdTSw!5*BD55Nc2!HpIRml;SWiQjLpJaX3Rxh8LldF|Ai6I%QFl4~Xz$*0 z!GT_L%cbBbu{G`BA?tN<-3r&m(q`uD`k>z!YaM!eEy9^R++WG=GlF)}v0}(g zPjICXoFq=!=<#v)LnN{|1U&*b?9i`TiOLD>z>Nz%dy_y#@wf<$OSdhV)^AJ|QRGT{-`d*5G_4C~9uLed@{fFW#exmF*J1P>LCpl- z1DUKV(y;mXqh)vSJ6aIf>qzz<+L|N;_Xf;1!6vR_Ztta6J-A?$wWky21@CDi7V->t z*lR233JWdTp&Md35I+aY;TNeraR|L#oV-!AZE}8cK{8Ay=uW98U<`3<4Tr4+p;FE9 zu`&rER$_43n61MkUq#_GFO*nclmANw<=1BT_0O+$TyrFc)ctMt+LJjpI)+IHerfW6tdd--3gK z$VcluE1;G;1Tcvak7`flVSha(y?OEyvt*8<_l{s!Ylm!6CHk2!kPn~y`IrAZb{x&B z5_FTQ1i17MSx4fdTq)7qsfxH^vbD#3qkA3d>uVeR{pm6ehVCd7AH)rx#A>WY(9XqO zpH81)r4$OE&p_OyVnhHPvL>QenFsm}yP0L7I@<2=g_wD%$^!8)>rV-~HC|`&;eJ7C%ngzIo5? zWeZDiM^TB@Lo6|lLG#9)@pcZmy~la8(9J{_JR^ap5#!0Pp&^t|V2E7A6$ZN30mo>h zk~%edTFXRR7aorau*RO}U9dziX((oGQVc5CP=mlFEg4ro_{D8pnlF@IeH(CPcn$*> z8j>j;Twf(#1y`RZl+>{?ego_9I+AH-_ny$nL(gILmb+V;UIV4CSAK?-Y>2tIO~z}W z-4(vSYz^hlne-V?H@zQ&6^ej@B$xskq`IF(eaLP0osx1_M|7FiS1M|qh}0llq~S0~ z{W0kk!0fQNVN2|e3ZI>rlXJs^nZk!=GGZu{gvkegnv2g>90=m)9^HBkopINVN4ngw z`>c5H__SlUU0lEQlU*}z|E%%oz5}~%6r#n&U{&+?Qy<+j-uf_Y)0|yLnqjZf?RN99 zSLsd%Xvmz6K<*rs6H7|Lzw>z@K+baKH@R|G5%yZ zfB4x+R>51RWtDRGYZA~m+Fy#2W~`(?MjAR-T5S=sm;2Si*Mpb{w6~r&K~m*!b{3tpyksSn0) zAktS29b?iQ_9Tby)S#6f9wBO7+?d6mBAc~D))j%}AYgM)c9}uf4@zcZ>yj7J>@fIl z?-}>qNACL0I(PTK9zXP__l$4a(CPE$?Hrpwreu`3#;UaT@`5va3Z^{kud<_r&%|GF z@007EDzH?V#@jWZLbXhiYv6)#MTr}0JcgZMva8Yoz zSaWcWI5qP%I@R*6{_ZqTx(fPQ&-bUxdm!yojRqMpd=68oxv)^9&^3Xn_9lL>o04-# zi*}gK{)8k>*-4dOR*X3IN?`HTcA6sg4D*m9P8-fv3v+q0&bi)kY~KE{3GZ2#&))Rn z^|^B&UUFaI&RIt%1(r@**`@P}8JP9D%ZukvDy@3nI-lLJr00{XQ>QK}T~mBuj`-xB z*D&{<;If-A_jpL)&VDyrHyDkU5)pIf>0&!N=S4$zbku`ND-Uk!FoWS5bTcsLGh}#s z&i(n(??jDRzdrt*^{;a)OP4?P_ewLXIQWottTb*->0;5?ie7j4@N>nlzd`%g8t(4I zk?typbXSu1nN^}=SW0E)Bef7L%+v>7BDE^Y#`b&TxU9b%|HIDBFu`dO4&5DcPHN*6 zSxlp?Y~QU&*QhpgcN+iJoZYtvJ}H0uzSqvi{PD<)Wt}=NpSIjgTpL_?mt}Z9ojA|> z`IoHXgVU_EX{<%(V=k%oT<&npMMbzHs2sszyg}4l)YbuqId)4#+mNyo2{RHdqG$JGXq=!(F;9x_7CWxuJC7+&eF2iqZ+9>epFoU!NlWocspu zlz!lra+n82>Sy_*r2Y#ZfjUznBFakT^;d~vqpV8yp8ZvhS3w-Dpvw3vNP9|00S|(2 zORFF$_iU9Ae%~D%PQ{@ZXM$si;97{_GpMW@#Pr~V4^OJqwr96mUu zcV~oWPFqT5TwEaxOvh^8@cp4z#wDJxF8w-SS6*(>eM{yR?tJy9b8{v?*0IxyDYMPY zptuH-AmN;4U0buH?V~F)rikqGPd`6Tyf^DPXhTD=z<$qjIEgDfOSwG5LTBA{n@BZC z#U`j8XpqyCq*?=xW8tUjNX$&BOm(&9ED&|+a7rB43BxL{u6hyrYw|OHefbrlV~x~T zR9i(UUwL`)37WLa+-ytujZQ|B>H_h*z(Ru9T>8sY=v+VXJzmJ@M zdfoA!!wxkR?naHewe4;ms@J{#HM#8@w4^&UT_D9;_)_AGHW9U^5!#cIF%deTH-_a+ zEdK+Eg1eVtiurO;?UR^i-f@XK)Xtn4xMZ&BX-zz6MrAI~6z8k~J+Ta-KcJ*iAG3Ja zqznC?WUeSgheH+JzUteV=1L*JMfddj8MxWAqEk5_N$1p56B!KQi^vkHh-?FYl9~e= z=~X~OJyd()-{hLOg~0Q;)j8IzTpEnA=H6$O;@;k=!Sm(B!P0gjHAPs~!2@vJB69qi z_2)%2DaQVyNYDG28`bqA9xXk$2q!AfEwhl~C!L65O4ArOBgM<#aAT>%nMPKz!;;39 z!QE8Se}?+WWV=sN)|9}?Q^E76o(u$@7&m#!NVMNRv32JW@r^6VT2XLQU*r)}#mU>~ z8oiJ63+ft$es8_{#P@JzROQs|I`;V!Q6;bS#Y#yOsPtFne@al}?x@5*EWjbi-yroG3Z$$f#KD6!E0K~$S5$f{)NGn1=={lbomt>UsrTBudv03rut2Zr zjrVlhRQhpUvAW}k`H!2eYFoE+-5U+f&6!*E;G{W&%)U(z zJU?|%(BFuAcO!h^K7|#bNcUnS9JAjF+@^YEY156g99BQo@@Pi}eWPiREFFocnTV$< z38TCYiu)_buPQ`z!+@lxur73S#B%WyK`lH>K{)((&-esM$1piIJ$mE+=|NHE+QjRVd1(ha|0^Ig6C-`kRK}J1SL?o9Cv?` z^g(dONlU;(+*i%UU~$bMF3&>VQJvw5o(usarSi5kA`INr+i?@HIn~HX_M*)CrFFX39UtTtT#rJuTzTWuc42 z!7#KI0dWz~c^dax<4_n{E$qD8wmGI1^5@b5KL=mQbiz&k{F_s(3!eYUTdfa~RLFAOn5Ibn$lRGM=vh z5BBu6#`AiTX2uVqwW1lHI7Bl=g|g5^V!>6Q%iA-Q&}}sCwZ;Qifli2kj@HnH#7hrGd>VX19@WrW81FhBIrb5)cIdG%cHTTRa*vIDBLx3U2Xv8<8-`|+gP^?ac7<`$>vowX2Rlqh3AQz_;}AIhR4FjIgLEY z#$Fb>NR$8?`wCZkCP%=~>?Fpu#_p?NRCJaYX}l7;5VObVDMe+948#=tdYpxAvND8lU1}hV>9FBy8dBnid+i&S_jm%yMWC@GbIO1oUFY z-08lHipsqAX@!*(LPW$I>wqn)sbRI-L&>1$0XxQX$;Rt5)`n_@G_=O7WY9K1PxQR5 zp$kL30d23Kh7QZ1>97+2X5Q$_quzWI^{A)#b5)zF`PiAQc@6pjg4O^j#cF0+$NDGe zB5{*k1DsCPA~4b#5Js#)|10sSHRZSS_$2J+fjmB7%XDJnRg&W?q}l^DV?Dl%(&4BJ*8(drA z`k@7Pt(+V@I>o~7A0f7U;3>J(r}@o|JEbjYaOaT4BgFOA4o^wxcoSU&Ok=Rs*L4|w z&xYtivDKf}q9wmR0S93jF-v2whXTHO%1CB%DjTLczNyY1U|VM6u1o24=YMdc5^3Jf z`iUg&CDblDHmPb-gQQkTNKCGWScronFmkSS7&-8xHVJ=3I4hGwK)Fq8=j4z*Doe}Z zI)P&ewOwV%M2$Lf2?mW-LgnJ_dV1r#LY!TB^YDI!fhq6IeD!Nrz4~F|P3bnP#(fJO z80M?gdHTKwcf8p3#?k%S4O%^L{|>9-vH^*jl#4`Em+Ow++`mgda56L__s_l_;3a6X zkV{44fapQoiF_C(?IAr}fARjoxxz5eZV3iAD<}yg@$}Sq)*7z?k29L?)UYH*+UtZ7 zdmT9kHmu%lk(ldg%p1g0;zkAS(1D~K!k9f@*qD9B2E>4)6|}}($KH2kM_p`utY@#z zud-t;##txlt~5Z>%-?7I7Pm@*KE=kZ&{zQj`BFJ7Up+&-rjcoMBN(yIE!?H>UYAsd z(S~(k?cVz{#tqs6#{}a((O!*P>+8yLkY_4M6nUmjXvGo*CvYnf>~ToUv>t?+)*~yt9vU~FLa^ai zSbg0+A*-qw_xlqawOtW1idXTfyIDyue`P6-DrY;Z5-G>W;Y=<;5e2TOh;eLQ)Z<1* z$f=OH%%04%i;G>~2e+CpjSp|X1;OR6-NBw_e{-SL?ug!P^9wvBM=c~}A|7Sk!SSeC z#x=$>{=^0iNoFB;yS6Q}_)ZNKt5Ncn#jCxG`A^fwuTG%f`PK26a;pDF+v7k9pL~yqbE)t0p-jEeC z7N3+TLs@y;SO|5su1nWX3{#}faqF^I2DMt3TQl{kvDWLO?nxBKqb9vjn4<|arf-}` zKGkwVXo>ZmWsR8sO{T0D?j7v;sdjo-X#FzFez(NjSYuvq{Bae`Y8;H& zL;Fo)UO)Lt%ylC$ll+ro-XJ!G<)0q28i&M8`;9Que#;E+H$7@)rxXSQ@ZFLh1Gv!z zc%S&jS_HbwnLnejm`$;3?C=U)FdobwJ*W8Cqgd*`Zmu~8smgeb=+iYpG#WnSI}PqdbE!u zti-)OR2ZJW#;r#C4xn%Fe5rA-5B0x_{b55JY1Tkd>?x7BaY}6Z&5KnrtiIx5&qsLL z3#)~vr^rvY2D9JD@>q^zgHcszd925wbkU8WU%Z)+usmwm-`AQ@bb)0ibY$ShbHeR2 zdYk3=c|+`&Z9cO9ua)bDY1K}OSt8SoRykBR^o61zOEeO1YQL_q zI(aJcEVFIyTVs9BW65?mV|@cA0CQzS>n%K|GcA+71!(R8>_tYs@L05u(YE1?g`oHd z-y;}#9~-)|ctnkbxryqiZTk=>kIN0Z02;XYop)GI;+;2HE-{P80xb00NZ{u@77uv_ zc`Ra|8ROn&BuM3x<1nBLpX`e;j_>*8=W$? zBU9nD^*G)%-Ez79X3qls4atf2iV7G3afcj1v2cY)aD|p3M?mtKM&LDy3)TB=yDqeu z>}apchQND5!`(qeD^6@wv|^7QTVOdnn+e88VGB%ag$@nY-I^^hvTk94-N5=1?B6Q3 zG-G@|vcM$1^&&1j6OB*FZ|H=;NAjESkp=c3=weF>Z7nNZOybVfxVMOrz-@aIw9l{R zX-*&owI%kD#=gaXtWoe9do}GvBVPQ1`Jfq(rbtW#en>*hPwAgCz(Z1phns-+&JMZy zFmjZPrakZluRiebD&NVgoNu|zJ-qt(TiydPYW4A6T7CK6V&g&mUggO^k3jPhpP}?# ztT{4sFfzPVS>D}2%Y{7pJbUy@Bo?GSD*LzxERZA2y8~<(WMUE?z^L;`;-S$oBwi$pINMRX>VzdZr7>IW-3$4Y1ZM2N=>jqr>(s+)?mEJB0S`}ps<|I#hJcl~OtM?XpND*| zgLsuT-=KZ2yl-fgl%>I#St3Zx6O8SU2%r(X+3LiR_{eUO_$G9Bt5xS25I)71a-<{? zB);{=necoyKdHA%%p?&AGf9NGptj9X+9#!;C2op7N!%Mn7a4uRSW|V3ig9{LXOcKK z8fV}aMvMwxvoMszMbbs$+QP97Te@h9BGN-wrD6qu)qSmpq>IG5#rPN_l~@7AY4HO3 zz=Q5rpeLjw>!qsWj#^F|r6nT23SUd6Tq)c~w<4N0xVhWg?r4W$g}$VY%n}Ova-+#a z6pWRzEovCK$T&jm5@AdCEA#Gcov(aD%|eFtS?P+0MQwP2nmm4{b-h7((l>NdXA%3e z>sV=%WvfI}*Bh`Sr@}jQ0U7n_$c?Y;7`=9m(daoPMvXoqQJ&9l@^yI}b3lqMT8+Zx zfixLMelJ`^oODpL%tWN0hvove7yfa59X5=XdB(k7@?2os?lu8!1}(Z}#J%qxGG7UH zd3Tm8`tloCDQFhnZ+XW-IDx0uil@UIsLv#2!`Fm9ev~CGa^n~}Cd`3sCpdL4A9nLe z#@$*%BbunC1pz*8x5WZnmMTglDPunSz$MQ!o~ZdxIzxZ6kIiv9j9njGKK& z688o{eM`#jVFfL5lhl^Di;dM7H{=b{$d#v7j+W>~7;*YRxrl%Worg#s;OhVg_}j5+ zMdnMQgL<)(4chztyvFlw=!xKVU_?x-t*yz74XyWN_>e(q+-FnhD=}MP)bc=` zEBT?R&}1w?LxZ9Bi$)WM-P+O@R*Xq14cwMi;}MPAzH1(+}O8 zW-m3ZIiBXiMT2xhL;-&6r3YW8xp21#-52p?+F9yTBiq%GZ2Es2KXPP|=R)Hbka?&c z%53r~dcydPa?}wRJ1!dEukcpK{G=Ax$#@gF!!`#nH7J)%aaURBA~7Zmt?HF@v|mD} z+qj`|+io)Yy+nL6p;*Ho(<`50-HHwn;IM|*fSQT%42CxIY7_*IeZHW5!+MJ{@t9T>y zNpmEP+J-I+wF9)hIvP40Z^SI!w|c=J;tL-4X5#^zb>I+3&I9$y8qcHsT+Yq-C_Dl_ z4`{r~MkxzjB<=zAjZb-rB`l3l!fu|*;{!J3*J22svm9Tc zu`WDkjj#6Ul7^BaZ^eA7^L$R(^LZ{jA3j%TK1$Oo3ta@CnI0{lSp=(z`lR{7evMesgH!?#WyxF`-d`6_Y1h)ibXN#_^;595Fc0&?X< z*&v|tPeH&e>fePRpt)as)GVwWtr;YHd9^|tFKXhYRitIN{EXb}U>!JNND_e`Iucz; z67k7360?^a>*VT=vpDuWtLCtWwAawJ?Ne61J&d{d9`$a8 z56%sDeSSBcl{owVW(dTDD%v=ttfIA+vT8zOz1CV*MM_LsYYDr4te%O6Ri}rrG{G_>Lch9=&!p*JA^LGzY|R#C|t;Xmj`XDmUpC11!EJ4yZ9czkE%_`q{c?UWYF zJ_kdO;6%BTPY8LkZ4RZ$6T;yg-v*e$l=EPpIuk+(xTB!#8KwN)uK>EEmu4(6t`Bt! z&sd*P%7a}2zUsxSX#tvi)xXf5g%?W9WjYWJud(5>rh>+xq+4yQMjp@hYo_p8 zw6Id1%PAIU!|(f-O|vBH348rnqZ4288;fEz&9sK5JjPQj;ev$33<1k@Pq0=g9PWqZ zbBf)Hm9B-#E2&nGwI<>=2L|lCNx?1>1I}yGGvs+)B<6+ZqR$L9^C?*WTX`IS=5b8Z z>wha#L}Dq1?_bYG?`tIm53e%(NJ=A?*l3ldzOo*=q8^jxy$F0>*ag z30P%dtZr0neSeBlOnQ=G95S8x~q$sQ)ek>QoCd4 z%s=kE{aZKgkS(3_N|XMBr7LOJ_1=>&xjaE*@@*fwe3&Ut4bQi{o*yyCtreBR)YICV z+H+FZBiX88sQqS2_-f3_d(kd!S|RYzGn{*e{Q3`=Xj=4uRNpB;A(H*c*(FME9uDtwEW=H>Ty$SM1aq4W0Cd#`35Qx2l zt9MlkC=OtmL*CHpBji7$X!$8|!-aXm@wKr_i75sQ%F}Bq7Io2fh6Y#hR@y_?^-6jVq>*p5(am)t@Y% zq6RLa`ac=TgUQJ`A~`iJEzjr8%FN1gp|`Covz9Nb*=u7KH<|RWzpUana(mXRTep6* zRYR)W`}f~s#+D8fI+`8a-EX_gvc$W=x>lQeqJ-;>1dne|b2O?mT(RQb$36R!!8b=i z>t&wj^=>K*jmK`XWtHAdDW};F4yrKaJ^MA~3vUl7XibR9r%P%{nlp`gwLxR%hzz;f z@OCLpMXqI28zXT|Tqt0#xAKi*w|ECjT+(k63+<@lXp!)ql*j zc!9O> zGeA0GZHkarsN(=SyF=~n7TDdNbM}qYh1VOOgja^OBw87z)%+*Pjcv5l=Fb+YBMi5 zi$+&g?w67C2Iq&f)auOeoP)`qujkM6G20~1C!jRWXPS-i7Yakyj~F%kGu#<%rRDQz0)^<&dDU@{K@h1rj#z+Dv%4{)fXJPNryT*u2;i_~&)ce=-!=`Q9 znN_lb=*Cejme#|V4(X8IKk(5jqF)t8p+)MV1XT zd1YI2{GO>cfZsI}e?z%kUdp$Ej3rzAzox({|Fr`P~42Xf$(214V`nn zg$REp-OCK!(L)`h!HK((!#CNH!&e+?iyS_Aj;aynxD7EHtL%jzgLW26JeJ+iWN9y$ z4~J>No*m*5_1EwMd8adv++ahm!wB#O=y%H7kYwFKRV$zuMupKmCGO_zl)=_Ss{6q6 z&hj~G0Lf0n2>!duTgY>&)0OhPljwdGd9Hl&EI)a?Bp3cu{hXApBp0M~?PMGd%LOf6 z74A;hFGE@OzsQu#w=z8UvP?S0pA#^zfR{Xn(3A1*?e6PEdBw&0oJ&*{%hZd-UD0y_ z@RcRJ>)X)R3ZB!*Y5#?@LGrC0QKKNeIg<@^9_E&s?-;8`^ib$BoDWCOJ(w5he7)7u zJIyrF#Z{U)Ksg7Dht zj3NbH_Fb$+aE>5&lHT>dRiy=bNZcf?B<}xIzb%KmMIsmwB9E}O$tk(l-(eJ0fr*)aE*G20}x+WQ2@_%vv;j4(* zeJ`;a-=LP<#?Co##KT#qacv+|?*^>;4?MeC!4*R-p9x}>p$W=n=wU0N~|U|qDQ z(-4tD<-?Ww8s#lY?O{R^=Px@Tq&-BOFR>IF?}a&EpA+Gzw8TjALt^~*^{x_oD~){% zF6`F(N@GV(Vv?K_VL#6~hJ@W`Y%$j1RIn+g^_?(0&K&n|%%A^~6voAD8b3!^h{Bal zmt;u%1<<{}Vh_VbN#R@du4Vm)_Ei{qHKhJPUyPAyd z#M!#c>IhwChr1o?GV&~V3DlNn!8VUav?7jxM?~#tmjB*)fa%O*+U8ygZ!BPt38wsL zgr~dD?p}gytvqADsA;50JyBWIyUR!aDINA0DX_XfB=5gGRm{BWe^K<&sgn&)m*mKK zLN`H&7~)DEr`g;%EUr=bc^_fb7(cc60VP7Kurn@ur)&Jpd!N4={w5N?q{9~)e+zVp zNmlR*KWqubbu{_`UaDFmnt06?y}nS;di2-meJ8P>)Yw~M^d1GTsDoTD)eA;aoaC*< z-m>=z1?|M%)E+ynIpwO4XlzeU;FgDr3b=l9_q;5+oApuZu$P=BM} zb**h#$a#cUp_Oq~G@^(NxCOMavn=K4!<26|{W8ITTdn@ub;flU2IsZ9K>~?8sTAz@lm(NP~#?y`Zo_mfSDus=dzo2JQ8D$P(38 zop8RzvV_LwHS=0)S)xxt)VxT~dkE1r*l*8i{LN8I(nR6s$f?3_-<=d%0{rDzmPq`~ zJ7`(r#BXbQM9pQsZ#DiF$ak)+I78t_?0~zG(W(G@50)hodyDp3mT2sd_|)=Uuhr)o zdrOQy_G;KuCA?fWk|h#*%MMzWXzZYkeV#Dq_-HrPV}9e#PsF9fK}s&@IVhch`HE!; z-a)dYy_6;3F7-G1U8=4L7LS?eBc6kgk$BEEP4XPFM%*^9;O|AydoN%X+c2X*0q~Op zW(97kc#3%)c!;N6(>Ss{&06cIV5H|mc@K=SR(Ps&g$?vag7;LDdY-k+-J16X^hDkp zYeE*@CiP7^ApuY0^i+jZusxVs-wWq0QtuVoCBVWv>2bMBAR$#|0b#s_&q~G!{yvGb zvaAM)Y(!f(pfmn+=5E3X?(VC(o8<**Ac!v2mg}9x{ijGqOYF^!&u~)O*tK1P?ke_f zK$Rv&Oww9nZ$3ctwiCM@L6Ov;b5de&feuvqoYd5SUSsbC8vAhOZHc`_f6dz(dsVG# zN$hk^O6)B$c70Adu{$W!+Dp7Gv9}zcdE1HI-Z{MTd`<$pLFXj8XJL()1Fl$6701aZ zzF^+QJBYXY)4J|(gFDpU=y$0Y(m<@iR<167oVlO~{=ggst=B-wJEGA`?DKiTh8~DF z*&L>EtBkF(xI2laSHZ0^RLbJ+WI!Li0=J5oO57xQ<+!(bQjsTOk3^3<*WR5HH}Se0 z_cr%x@Os&CD>_Qt^)&9y;QFQtTH{vwB;)2TLWCQq#1LJLr75EN2@S-K-s-(pV&)y~ zwRiMG?w8z8%klA!Ud1(YGjR%{-U!cIfEKit=NNvfwSp>n@O+T{+^$!~`n=*J2>^KB z(*da?BLb}ajIw@;Xo0_Fm`CKk#|f%nP(9^s&Gi?n>~%gBuD{U5PD)Auqo=Ot7hr@< z0gOdrKcfkvbZ~m=3(6IizBN>RcMyQ-N|?%jGNbjaI29>+;3tea@^ZI zl|?r-5DD*hSn-)Ri=4^*^4Pr%Ub0+!81NjGlswPJAS?d@V_yIU^&xs^Ef{*0Q^_(>oB^D zHvAj>d^O-H(wS-Owx46Jpxivb_hS5rW)U8WYT( z3`N9~kw_eFR^m71Qz#i|9Ecc9CPvc(rw#ZPX>pdH;aR}n8jPoTaQ|!(J2>My~J^4-cB;^|LW~@vo1I5 zt$?QQ<}B;)a~n6BZ&~$4lz7j|7Vm8p`ww5nh7ElKi>4E1pF;O#(<>upAHkZ66b!~f zjp$Nd(xrSvlOaFsS>j$?ujh6!rjNUY@BZ(xXR9 zKl z&MQWrphh3wdnNyQ^tgA9Mla5fKllCj=MEnp3kP0Rt5__xz7wBVS?-s%u3o)0_%E^6 zN(?>+>Ptxt>X$bL_+#SfrB_)5?URe(2(QWc0^aQ19>*BP34e?vJ$m1lhuW?9P!24| zb?77O$lcbhqLRqRe=AzI&Ntn`Qq#TFWd?hj{!$C0vZGBH)u<~+rRb?WetJ}@85PGf zz#2?xR*CRow>LaWe@r=<%6fu_=&`qo$f5kL9M|yEfp<4pFI^7&a@l%$m#~J5bz5DJ z1cezY9goq$`lEb4^j#k%i4{Q~uD>q3d3hx4W+IMFEXQk(>l2)k)h(amE@$+jipE8h z{Fw+SNr&B}X!zLzvC{g)deeHt`cynRXRO;gn3y-?|RYxtKhDXhx<)~e_@_|R4oLm!R9k5blT7Q0g z$~q_NESzhd6|qO&73Hnp7Ku|Bzy}Nc*R(Yt+1-h95qj7#Z80xc@QA-FjgkC4&fYSeL{Fi! z8?>)Md85^-FFU(Xg#1}xw5<-E^QZESrJu1T-p@Wg#I&c19Aypjwjnl#=asJJ1`XoK zYs^|V{B4-icDI0?XIszOs|U}n-31w5cleU(0zY;P!?y}YgY?+rPNR1v;}@V=ImQo9 z3BkMm3gg#45_o&0y=_4QGpjRxcsB^%{3(oIXFGUKV>1zc3n!f!<2i%zEVkiKA|h*# zpW$f(Xn5PZLG*!5%;R4YrjOI&w!I6f7=LRXKdfPfj|q=oTV}B6>0VOMvkB<)g^%zz zv*9zt_%;0zKcUMMpzGa<@$X^${Uy9>L>Rx0HHLj>6EU7w7=H^J|L8D&oeYUO0oxlE zkM+I4_y^hWuB+hJ@YZ(lrpZ~~CuBBwQ0l_uC!>7rOlaKLr?4SkWbe`p>mhd&w&lCn z&);FIgW%t1cx3rA{0fH8hb`)2cyJOw-@|*2`r|m@Q3upb_QyfJj)v#@pxdlv@UHJ| zRJ~pGKGj`Pv&Y-)ZdVN?R!=6sZMwCVHD>ON#&28C&uIrxi?<7M@Qxn&CN7#o2{QQIULi4>48x$no30 zJHT_cW2VvAp4Um6>TA8z*>?w-Nb~Z1BIjkTLM)e734F-U>#}c<>A>)P<#YF9hL`@Q zF9FZH!EAAE&8T5O(wzWmeNgC&vOo==K^rvXv3_*Jtlxb z*HdMy5*-}fkU*b(Jf2C`T4y&T_%QqP^X}jpN7o;~!>0{;_OKpucKyNg8O(hRt;d{} z9-bev`|qr9_Upm(6fNmr@ev((SDDS+r$GnARN(PIHnr_fBiUNbN49%Qp4n!^kvVDr zyHv?voJ_7yJ--5GFkoQ0R{Wdh?tn-FuU6wV0v6`UvpmOC@G9lI^I!7w0sOoXc;H)x zzs_FM@A!F5;5o|hL+t0h`FS7Eb`it3vGKpg&-()Z0fxWXem;_(TUFtA8Ra>JeVv0X z>=P47i3Dwk zU3JA75>z0ka&Vc?3ID(0pU3$9n6rF;1V0hK-N}`n$Yg+qu-@2rmFh7Sg$DE$+~efF zt8vc=e*0PVcDIw82%dU|c&Q2>qbti@5!?iep@Y@J^}TxyYVV%%XYqYz9H=I9OI6#l zUBmry$=rh5$9dnbH->Mm&#J_Jq^xXzK^7X&w9SH_?Ku4i(T{jM+cQ3ERu+2W?#kMq zMeTA4Y(IWD8{qmAYG;v2%pKGH)g(^z$c?xLTcuA zm8|_L3zeIekX;z#rBW0Sch9bv{V||K+Zdu1{lIT%;6uN~MDOS--I+=vNRk(e=7OV88pjo9t51KCge9p}yR&ZJy1A$R5k^o>&$ zyefB`B?ZCQl43#!hJY(n#d@KUd3x~<{DXJcywLBS;ouUk)yH}HwJ4?M@}@@8;mpZ= zUKW}6F+ATQNb<@olFzC83ue(Kc+puO4UP9Yu0+Qvg{oMuuHgLcWGvz5N!Cpf8B?3YTsvcGP(;SmCgVAo{cR16$gS8U+Oa;- z4?RzuxfPp)o9AoyLcx4-9^<{6a7M7)v<9=>kwz}I!R zMPHVKr~rBZl@mGMC%td`y7`{ivsCd3o zUZn|@o~?AGa%|-rDle^kuF8NaFIKHmwPn>))uO9yuil_~^XmQ6qtY|dN2G5_zf|Ln z8jEXuS+iWt1~o_2e5B^-nm=Ti8C5fyWvr{^t<|a4f!ay6XVqy}=f%v#%=)IyQ-gNDf zYhSuHl-)FYdiE39FJ>Ri4m7IMsC}csjn*}Ky3z4Q!N$`XZ)yBPle8u`HhDXzR?gz4 zX4A<{x8zpMU7dTrS-WO?nth#jUEcOQtNFm@dt1b{=-Xmhi%`qHEuX!v!F4mPJJ;%_ zRP*mQbnX{2%tzy=mZD}AtaDoNG>FIA-P;GBtfbBd(K|MC;IX8 z{rn!^$M26{F0Xy>&h5_5y!*`T-F+}LZs_@;Ij?tpebMVBZ@ln^W7z0n6NXJ2c64~< z;dc#hJbdEt!y|%5d^F{pXv; zo1t$GeKYp0-fta#yY<@-^r~ z38N=md0%_~_{7!|BR?4R!Kn|Q`*6)iH9p!p>5fSoKMwkM%*V4nUiI;=kCP^Mo;-T; z>d8AN7ko19lY>*bOqns|n<;Ciq)o}4T5D>nsZUH@Ikj}!g6Z|9&;PXlr~PMCoiTAn z?2O`>VKZ0HYC7xHS^GY3{Q20=i)TMKd(!M0-d~pXedq7jE`Mx!=jGol&s@=RMfi%$mEBgZTUCG6*41rSC#-p9&F(cf ze;EA3?jLg3zOy!At^3C(e*9!z%XJa!Zv52sr!RjxwLWBhzx6+Fcx1!)4c~6KxUtK| zFE*aubpNKMn~rY2b94CS8JiC=(>*s+#@BKOVmrlP#{E`{j zF>+*NN@T&-v0D?P^r)IqO`_UHJr^|~YHZZBsBfY+L~V`wJ!*ecY*bQ|W82f)zT0+i zd*kgNY(KZ-l^s9)8vN_nUo(Ci_}j4GTss@?oWC>U_kO=0*;SjDeb>U>+V0`If7(-J zPvbr9_w?E`Y|qDg=IvR!XWgE?dy@9#@74F#+56DmXZH@>JAUt+y{q>Aw)fOt*WR1^ zLiRP?*J0nw`^M~>vTxD8jr;cRJHIbyUr}^Wbe-td(a%H=j(#tCZuFYyZPCZ09nqI# z^q9Ia565(g84&Ys%x5u6W46W|h&dnQ+dpu>d7%1%#s}IT=y_n&fhh+T99Vr|+kt}z zQV--G)DG4@*y>=ngF6nrbZEq(iHE*A^uwWDhY}9C58XOk>2STnj~woLc+lZ@4$nON z{o!qgj~_mJIP>ryNAx2hN17ga^2l>XUOqDB$Y)39A6a%J^2p&Mr;nr`DLEQ&w8qf} zM;|-d?dZUxOxVz#S$F+~^ z6*nqwO5C?`o8k_{rN((q>8I{I)$CN*slKP)KK1FTh*OcLj-E)1 zB$Mt+YLwJ6seMwnq~1xdCB2n2GwG|OZ)dp`aAjntsjI;o9P+oisc`fBR1 z)JdreQ`e_Pryfm>Pj#o7X_eFNN^6|fD(#81XVQA4y_z;8ZDQJ2Y2T)8PCJ;EmUcPq znnQEk?P%qA#?iwu(lN#Ho#SW6VTZ$UIlWSPqxAOaz0(JzzmYyEePQ~B^qBO-^o!}& zFVwj3;Dx6y47l*_g|9AbxUluY-V3o8(k>Ka1Z33Dcs!$f#)yo`8H+MDWgN-K%qY&Z zW!BDoF!RaG9+{&ur(`b4+@2Yec{1}trq8K4?{GGEKJ6Uje9!rXbB%MC^R&~G6_8as z>%pwYv!2R&DQiI1yIG%QEz63^I-cdsx_UA6;{6vpUL0_7!o@ExuDSU8#e|FQi?_1x z%x;$5Cj05^9@zu4$7WB>{w{k<_Mz;w?8`a9Irf~#bDqk1DQ7^=$ea&z=H`5#vnA(f z&Y7Hyocx?WT)Hd7Ro8W&tCj0J*G+erd$Kz%_lewDxo0o6zBK33!b{69{dDPq>5yc@lHyougaZZ z737L4W7HbgXj9PDH6$dgRNNh;GDvaASG}d8XJv2CwR>-#4IUJvvh`pROY2YnQVjR+ zQH2^c06x1pUyBeUj4UzK;C)-B7{)V{ugC$Sw{~1i(-Ot~`W#W$c%R>KJs|37tN0z~ zF!8zmpwKw~O|TyH0zJT^U^;jobOocqVC^39sdS5$Ms?BAm?Rb&4~l7ewg?NnUktSM z5jAX8#3EZeG1AsvEHY++5gd;fZ`pnki?pZ255~Kqg{?B>eZ`_ce(T5fGnmEs^({Ko zxW#)(;&~&D^V*0{Y%N3$KDE)>7AhVvGDVi-xiPQ-wRz^Bp#y9 z0mgJO*=SAsXMh((A1#?rddv~Mx$j3>W$}q7%^gMyXl3zbz!lDYPkdy|<6L#!7ovxj z0BtB<&^Cx5W4!o4FBP?HmqkM(K-{C}h$_(D+ApH5riq`Sb#1-)oNEIy%lJeLH+G2E zY|HudWGB8$_J){k{3!vq4-MA60aI##Z>D!O)S$ZiK%=~$Pn#{2m@`j zWg^_zExy(ZL|1qmeH2z7Y#JXG-99 zF+8xn7^qbdU)W}gURr{gZJR6l87sJMt@wne@IGL@bB7To`s*&SNRJfbbqDRAOy4Vu z=~|TdQ0p!p(9elU`aR+~Z4BdAabunkH(!IIw>LXLt3c~%gT)c*8KwG%9xmgPHFw)4 zp*wAb-B=*T*tUvg&}VFg;(6Of(Zx1Uyp1ehF^-7ujB1=STl6&;PZ@Q@>#FU>YVn@7 zQEV{Y619vwkU=r>o-L*sZIJl_&;mUjDyG4^F1A?FBVdsjX>1b{jgL)dz`NoR+bz+^ z)?bVcnk`xc%@@l828xHc@7J~WEOq^YY`suGHB@Oen9L_eY|?gA7xQMZP1;Wc@L6 z{!xf)%o2^+c_JGopd*B*)jpd|Pw$ za+8=B@U3_h{d+Rte(I=7pAw)OIsX~tR4S%W_bBfDI{xMXqno%V@FCzj+0X?H{J*Twd-m>%#Pb#)L8_2#snb)6tqsLQGLJARyH138GYsqD9Ae+^L1 z{+G>xxc#ka*Y_EIJuW#31d2 zn5|zEb8YK*lJS@r5crdLUK=mQXm5(X)X@T8^BC)SZ{o*>1calPJ4Hm$H}vCv_P<1K zU*g|N@r93y`;9g9=QVWX6LG&STZH4EUJPo9?gxvpwwmHQ_}L%+D7_pQum)eUP`qLL zPOLM|)0WS~3L{E95!6+@rnNAC!T*l1Vo7xors9cFMck_mqTv2 zk7yCt*biHE(IVhC_3Q%tYc2W*Jx2fhesmi21*1N`uRiy!FWMRP@E7&rb$!tqbO29* z??8X<*BSe<8Lx>u0|M#S$08ViGs<{E+)F<@7=!Q?G2%u1wxT_ZbTJXXFj4=V)_*IsJd>XXsfRk!Pa@IPIWC*kKo?tIOlG3VY%pO>nnO1+34y*?l(>J z2<(f`c~wlbE#^3d^WJ5@KYpXVsDq9_#kmu$Hl5&oblx_Y<1a;L{K3S)N}M}DR0^(8ncknoP0d%9k3y25b>6x7S1oi9|uh_ca7w^Z;&{b@889sSB z@>cEZfj^o^oC(%!#Ff>2e~P%V+^8%j8I{c!q3-o8VLLG-)QqI>?Z8{0IT#6sfycl& z&>yHA=%R{+7V463)itkcP^%yL;tk^w(H?$JHl9STs_t*VYV>CjWh>byCm|o{g>DSA z>0+>ch_CqQW)>O2@Bv<9KMyG#v+_CeGh09N4+UesnWS>OVo{S*kx3pw%(At2_hx8`yL^zfw6? zMUY#m{Hh!(w^C4jQuq5es`|zKRBri?lzbDt?qT&=wMX^+f1oNSRe9lmq~xns&iItM zjee|zZ*kDyp&3y4DDEQn5zyrU+sJFHkSCGbD!s7sTXIbLv50f#meH3jx>|f`QMdR~ z$wBew@6>qD{87n8@$2tY<;PZz>Zd)*j@w!}GkNQOrIrqn+g7BfMUaxalEwcm#n-g9 z@?vswD=#j~%~gJ^a`cK+<*6z!wenPzlTI?%Sx`O}+y9TiKPW#^5%Pw)4uAU@bOTtf zY{l|X%1>2<^5GSse0;@wQMcuP%IPHWR>k|2?;H5^zW_haeHVgFU@vXC6HHcdz={XT zS5<)3KGnv*w^PNHa;SJw5sEM6sMv=J`&O({eNs>{tPGaj%(~^a{c_8vJ$0+tw$%K| z*5#JdHqMOFHkzNS_thB9vJd1`J}y%_`}gsf(h=nYY>d5>-?03F%EeXwP0pmLyqnw_ zKR3^^Z8dgbyoBuU;a(@L_ms_Zj+J*SnJkNu%`i*t*e|`-LGs6STM~mO;{$*_~Z-+H@VZ4D)B8N7M7`^uhRn*3{HdOA{to)Sm81nC5e%*KKhRL4uetOe%KzD){|7%`-oO7$&9lY} z=Dh#(zNJ?x{yb&*-VguoKPw#HXUsEysBrvOe_KBO{crT|ezR=6Z2K>?T(|y>u0em% zYik@>#(!lqN`K48Fe)zD0?h;k<9(hw8DM7F!pw_C7xU+GeX{HVJG5+d1Ybiz?nUnM z*SVclVh*{_WMdU$l_at>3>oi(5=(ia=I3z4s>2dpv|!9R81WL zJSc1g8ip;9lXaapdBZRQ0|Sj9-VCrV3Q%X#lHedM0HO{J{#1($)nfisy{av$x!m3V z$Bq5_RA;jV1_o5B#JhpP>P(J;g9B-^YOE2!`<%g^Ix$Ecs*)gX9~8(xy$cKqtQ5?d zs#Vqz)PHZ@wd$aK>gIub%Xx5se_z$ayK3WqOI4-rN6)O?;J{#Yx%y^w!xn4{))l8T zDTS^F1R4kcZqNr81aK@+);Tts?J~f|Z@(KM}4g#;HGxY5rZcwRBVU?%)5^TmGw5 z!!=}3e*ACe`bEXPRM#z@uvIn&ldOhW8w`mn)wxKzjA7PUw`F397@fjqln$$AYdXh% zNmCj6SE;h%Jaq&IT76V{&vCFNkbf~Q02%R8CQ+gAFZ+M*hT`;pI@c<{Emzv9UdlEs zE2INz*J_ua7uJEgh=!_4Y3g6^ZS_fYT=4{!(O8;l*$O49UM1|Z%9Ia*4VE;}o7=bG zQe}~TkKwm0IHp`o8S1fzkL2^Rx?naiV6HF%_yh*Oelkr2hzaazqN&PQ$~v6 zG)isK7HYerfo#yR!OR9l4T>9Fy{Ef9*k0LQ-F~ONfxVIaK6`8XBlh<8FnbsK1p8F` zTKh)(X8TtAF8khwwuW~!tktkl!=?>eHhhg|g#sFdG^)|4PNN2mnl*a1(a=UCnjH6P zR}Nk`__B|iJb$JBRIlyydNsZNS;UB=B7yH?^9fUi${Kv%@BQ*2*;fwb_sRXeUL}8_ z*VnY#WxYN^ug}qITwhtQXVB|;`ZxLy`c{3Heq29Iula>>qqWh^=xGcy!i`DBY-5$N z(TL(Z3*wD)MwW2}30H3*8gytdt--1Wmm8GOYhkZs54GQ6zsqj7H=)-L+uPml^$+%S z_D%Hqcl(~d^m<@fud7$+^>BJE>9wTSH|RB5U|un^OO3bqO?&=sqFd&L z8@Fy;XWorEZ&25bpTKIc1T5rz^)z}D_F2ox$;w%i(lZgT`(Iq`?CEUi8Ot-i z%lIba^NhDM`eyV>E4bsgN`D0G)(*;}mfowz{p&BAU3z4FPv67Pawt2f@Fyq8DHRU? zvMa}^L(W*hcD?^C8G}Nx+^Xi-wcg+jz^awD6zl`1K$id9ziwGc{f9s80Oy1M&7U?^ zo2E_IKGiH?*6AwE(?}UR4j( ztLruNJG4)Xr1$dNn-+%lt*3#U}|r*Jrcdyj4W$3-pEh*J2xX zwn%K(ztz7JJM_ikS7yV1)0gN=#ZG-0-+!`8|6X6Nuh3WOtMEf>^dH0_{YQPBILvJ6 z5p4aKh!w}h32{>YNyLd$dbYkrBr=)a0{`fvJ9 zah@5ORFNheSok)PuJ6|O=zH~jdbA#+?-v(DhJHXlDDp%;-*-^JjI0+=>SHFqNL&`h zqJ&=)F4d3f$HWyqR{VjFaOo$crk})h#^ER9^#p0~U6%p)4!54jXTO4EurXcF)i24r zWNkicTu0B-^YsGVgMWHJJ}8?R(`0kmLbl`^6k8jg8lT~{9+r>ryTx9;P(H?Y-?Wi! zjTy#F-KQ5B9~d9%m-!^fEaP)yDxbjYZhT@)(M$AF{fc~vPciqDy<~5^eP8)9K6;XT zMZPNg@l2^8J0^K0;04J3a)9x%G1;hV)RP0{AURmRhF6;-hZyyZxpJHgm(%5^#+Swy zaLU?n+bdfzFdgIR6P}Xqzu!cM?pO0v!DrnXsj?=YhlTh&u2dc@EH~CM2Pc%&$DRX zLN9;}FaulqLoKdQj%O8rfIq=(pm>4r)FPp`%78}| zCVnM^@*U7nKd?L@tNVcs3Rwf-Nj3T>oBAQXgx==|HYz0ER<`DxROmx~Sf3bGKCcbs z7olza;5li*w*U#*iSkR(&fqE90#Eq7mypj$kF=XmzR(s6vDxQ)-*2ZH|V=#!4_sAHbz@k1RWSG=Xr(HR}t;4=kYROs** zuPO8e06r>+ZO|nEURviag95P~3NLhcU|mO_b-=UoLSI=1Ro5y%1la^@Vt%N)fAB;6 z23-q&1nNHP{17{#ibo3So{C2ssQ-7U;*si~y1!~SWnwpUR~b~@>KKSaP$i$eK;2`X zAIcZ#(PdEgj{(R}`3C)H8PvUx0c1%$5c+X&3aGZ628oo%L-7*|%4Zl51)iS~2C`Kk zir_2#5L~0i`wB!BVQ{j7I0LnTAj;8S*6RdolY)pNSo^V{!*ipmAIzr;o}I8jED{EK zqM&@05$Xr=N$?z%1?9i^i8Eo`LH+PtJrAIu{F!m5ABvC69Sfs2<*CrS{ZM>0>i9u? z6Rde!P=1iLZ^7EH#cQK6`}cC~1!xmL^aIeQpcUnr(AIts5Ba_W@F?YZ(8v5BI`Sz% z(3Wy9w4EPBOJ;b$lav=hJNThwW_0vJltMd!&a?*^8c+G5{H*b`A4--+7eAEWHM;tt zWNUN-J*fXrXiqoFFT z?ihpp(B072{80L23<0lmejxOXGE9dK1LG*K1Pur8QhzRVJb0h-yPy-n2b3#*e&`3! zdI{qrKXeat5}3vLN`|umK0w6;=5GC%2K@>wq`W!wYw!*D6f6RZDSrqW0hVwtC8MQa zIps=*D**Oy%mAwZHmhQYu@P+Id>?c(*aB#)p={t6$}dAB!B#-~cz#0|ySP@#4Li0l z6^bnzdntbrx(`HyPe2SfKs_bUg8+H*`=`QCGCK(r50pGkQT_@v9;9&oAJB7tNMy$I zBYsF|Y8g-o=FEkW0W^>aoYd1Fngx{JDS0V9Q}ule{sdQn;`23dlk*2cZvhj)dmHsC zsJLk3ehNG@!uJk%vNr+uu|E&m+7G!9`Y?Ee_M}1Ef%cs9H8ji*JspajDoFIs zKEV(9EmXAw$nT&(_@VUJzSa-97`hH@W`q#a^JEDL8_AMd}RSj2g z_T2td@K#v`P^+lb%@&ci<}cVI^`<@h_39TntxMg=PF?!fZP?J>H8Q4WzsQ&_bsP5Y z-y$;Lb{lEyCvVpFw>GeOWWa+hB7^)j^ywGbscxj`KXf=(q%9R#trMLg2oLSH>8FAyR?W5ZvH}_eqCu|Lz-Brd1Ujh zEg~y7k8A;{(tPWEa<+YLpMJl0BDom0Gf2$t+wXVLT+a>fUpKNbjkV9-84BOZ%2Y3_ zHjnHyd#7Ct=(n|n=u-E0mi%(NP+p~3q-Z9hWHqgsj0%x#e+y~fx=Gzo5!6ilCfl~W zw@!6-f74#-^l;-l)t>(B6D=FoRC~tlGF$8W@2OQyl?4pz)v-lgwHMgw(XwlU20q{Z zfxA^%@MptcYTsDxRr=tK7awn^_9`#@V35D8%EX~BJYHXwRc(H6y_!|jUbUy&G`pt; zdm<{dS|E+}%P4AEP5E9_q}ueXDJQ7I2~i#EaX3V6rm79!bT}cZhuVx&oB3+J>|8d^t`5~+q1xPI=j0)3Ghc1u)y7ntj_SNtjnoxt)9OJs z9oY!JvFRjZpB2C(#$(B!h*!iAKCd~HsJ~HVprYojp*&B%jPI3fC#v3B%$j0DQJH+E zCb2e@b*q{IwRuJ^MuhTQVvRsnAObE3EYbQ4!Iv;wt1?1?2PxZ^q7Fy?a!piY<;}mZ zS130s?At_BF{|txzW0gog#Y|N(TSYbzaPxA2>jHOb+5{zCgVx}eic6B+q7)Isu)D< z^_N!@eeq}h{ZOvGQMO-QRAJuhX~x~*;v+cnrWhqgGplSD4~y2~AzpUz4DXJke2f^u z(R1P*F-){%uQMfMpuKNj^`3P!LcGVBd&Z!GVO zpx*bX<#o<~#k%S}-W$g~R0~>i|3^d{@q~4x+QYNl6>4kox7sS+=S^B+r(Qev9S-e+IkeZ19{(d;SSg;T>YYE(ymy{0)O|HO;dmSiSyWqW=Tv6cA1dbOmUf7R8J zHjIa-t>9_JcDzT)i^%S2(G_j)!?uOR-`0QOXGPg4?X~{Qw`l!8{YjyTAi?kSiV!S7 zX}0yJ-Oql1(L{8hl;?Wce#A?P>Aa-)j2BO!^O9l?FUfq!cWfgVqf4=tmt>T^g}ZO% zC9$a8Y@>Nev7eU|2YE?mgVg-+30_jo0J2SBR3{moonf2G$VLh$FUed_4qLal#5P}C zXM2;EWTij~DOvVl%RC+1TCxt?da@o{yKKbvUS?@@HBZMrvvO=7myff3g71-)va{^M z_8Ivs+ZQB1&cOUzFSdQjPorwux+h9!gh!@jO`?5v!#~9yn@ufVpK2nbY0ptq<%@yXX_>RmwJgY8NV}?XVRsbv1B`wae!nNk=l%JjRdxdMiJX$@@Z+@AfuM7 zgH?s+N>7BS0-Cd54N0#T8+dKxwTahev03q4Hf1JEl5&59K5P+NRKCNpUmR;p@ z=--R7AG5oQ<#M@3{)mJ>W>&t!S_1R)v$W5(+1ea!uJ(oYrS_FJuj1Omzt$DBU$vdu zE>;HjX))RX?T~gvJEk4iPHLyL1T9fZ(vn#@OVu3O1uav{Vl5$ub%aZ-AQZ5AP{gW1 zDQgASSSPr}>Y93@AV3ddMW6~R0->xH)YNO~we>oBJ-vZ$*Bj~g>P__f^aofwXra&Y zuN1HX`GvI_H{ZWrpjHdiT7kY;k5H=w`Z8;MV2l29`Fy{=4c*} z$DptVom+ND3L4pQBCi@9hbr2+WydvDj4Fv8J)QP-x)Rp<$<)p@t3KNys$)!8YSnqw z4plqVF`{Echpdh<9aBRRIypig51Y%jXUCY%EknP1vUZ1_)Y-Fo?HaZ2sC~z^n%{SF z)Lhds;;z|uPpT79C#ufQI{WJHtiP}RpAA|z*lB;NQI*D79Va$v-840<^#ft*{$UHO z)=Ye`Mza`>yv;YZ2ydyi9Ny~ru6dy)sttW;*5!HEk zShdbCcJAGIIC#4|I1%Gyz`4;)%>rr^0#Pdl4?Wemh=w|>X6jArqw1m?AM)+o+puI z$B9p-s-DuntPV*})-F4zM%V&%6B2 zi5em-KEW9!hvhb5QZjdLenm1yyI*0?sbO?ei*d{eLX`2RT%fi@(?Z;&?gd z%V~!!Ki3uKX{|?TWygpxFC3`>hi>;t@s75pb_`N>gbgZrD!sieU1gWb<}AB(C=PVG zf+Sns*4VeowD&FIz>iqFiW&jDq^L}6(!?FS4E+6rLcwXdX7d?126um@W(TM!*6{1ByUiXOsVlYu-2(RX1F0U5kJKqsImh);w zJlH`D`HeX67@5v)?y#3vI}t;!)85K;!k7U+Of)%4meYY)k;t8shz-vW8w$zaig>-j z%;}%xlh?%!GTU1Ow$WrZHu1KsBrAz`WK~&JjAI3|jtG~HWFzq&D~_$j1Qkcb2Sk!K zViM7$o%ooD@`RX7Oz9#%A&==Rrm~9oikL=h=_jVMUiccH`kf(X@_ggxa*p_1o|EVJ z3|Xp76JN-5nJ&JPnbIld$$VKL7D$uTns2mf#M(vVAFah=?Gdt&2(7EuRV>k-(Vi7c zRiqN%6RSQED~MN%#7b?6wo2^K)@VP9y{u>dBKB+BwLRh}@o1k&AST6#)5N6%B9Yj1 zNSq-)#fu~rlf(t0l0!I&Ocz8J(J7P9=wy-WWD}v>B8Mn-Nw|nq`NB=KDiFCutU_^# zsC851X{Khfste=9pXwnnag~TwO?fvuBm^^N*Q*-j_2$@Xd`TZR$YewQ7HXM1H=GP6VSS^bE9RKCQMIVWXL zp3ONU`x4vE%2$YQDe_ffoJ020GxTgZi1lfgd_%1{%VESlpB%yZ@pU;;zonZpoRwii zj^`VZs>q2(s1YhZG-?>NkW%@~E-gST0ZUq|hoEXRI;S$arI&v0f(d z1kFZy#@KB9ER&2#BT}aDL`{@DXKXii$@9h@V~@-#uO%{jHPxte5e>X#mB$-9{eSR!g6@uqqsD4!f9W3I&tTP=M# zI79haz&BAcTU(3S{F-FQwV17~#cY2qV*;234lsLg2ppkaej~*UB99Bb<>i+Ey`qWP zNwhRuWA`;hSAJRf88crz3!VcnfIi@5@QUdY{mncvz|0kc!6M3*fMt|LQO9<$o8!H_ zcMKW}PVinL^(KQq%zUYXs%9ry8(PQAl?|YcKs#m-o`QCT4u!rB-UhR7dF5O%56lPo zW{fN_W3)%WRI`&d4NM20g3rJVFcT~_FKEla_h30#0ak)lV6~aAtpPuPwctmv32X*i zz|Y_p5NYOVTR{}q2DY2I+79q5_5VgaJE6ZrcR_bU_i{}%*bfeZ!{8`@584S32janL za0Z+ODImvetzCs)2RF@p?7b$|UK3ldso!bl>34yM0*pa+;`cGBm871X_kYw5GTj_WtDzmfe-&?vLDPQUd1-1DG$K|e(K5r7=^ zSk9&WdLlFxWO3d_&T&ze&#?zu1d7@JllQLj-ZkiTsA=Z&-Prkt2C9H+AQaRzbB$V{ zHmJ{W1GAHHk9oncLmNUHK^sHwg*JgUh296fANm0FL1;5*b7%`_OK2--Yv@DJhoO%^ zAB8>!ZNoj(Z-zbro&+61XYe%W3SI!+K@Y$$1RLnQfzBJRg8pD27z~Dh*TFC|&lmwl zfj7b1U@RC1-lb3Pf%m}&*xVA@fIb@EbKNSimUA{h(K%M6YVt|&T;nh}Va6DVAkU0p zG}qS55be!u@dUrQ^Q4)M|H#09WXQXD{;nOgE65ksh;h}3XVtVNW;#A41D}$CPsz~j ze1~--%I*aZi)uRO=#PTOz~i6|XbZZ7mp~8j1?MgW%fWu?I71z0K?*oeS)Q4#UpCW? za4;TB03Vnc#w=(w^njUd90Eu9Ceah3nvn?d7-QF`H>c=L0X<2eC#UGiDSA>sPfpR3 zQ?x#T)}NyFr)d2tTAo156KGKaElQw83AE@Gtw^911+*f8RwU4h1X__mD^Agh1X^*5 zRus^R0#O~W<`wNsul6nY4lD){AjkCTH9;*<8`J^yKm!oPcNV+>hJ*cF-<_;16dxW+ z_EnQvvl{rvT>N7${xKK-n2T@BWd@Az6M!xOyTLJl-Qe?b@p;P6<>KdZ@o~BMw_N;N zF8(c7&JdwwGNJNwFdNKaR(CZ%W)1iOtOY*;d@8;r7vGYLZ^^~CC@^dg7%rP$$FN=wn z#l)&&;!QDeq?i~|ObjX3)6C1d17v`Fj*HD=VnQ)7p_rIZj1MiwhZf^Qi}8=e_{U<# zJom9}1|9*AfzQA}0sBAaKQl=9B{z_7aVZG0T&!_!2uT>aKQl=9B{z_7aVZG0T&!_!2uT> zaKQl=9B{z_7aVZG0T&!_!2uT>aKQl=9B{z_7aVZG0T&!_!2uT>aKQl=9B{z_7aVZG z0T&!_!2uT>aKQl=9B{z_7aVZG0T&!_k)Jjp9)_8TM3FOOoY`cY+2RnopK2zORc6aa zpihIrW}-IL%qBa`COga~JIp3K%qBa`COga~+MFSa%O-=%CVR^!+MFTUoFP-nCgPkS zTgoQtoY9w=iA0_=I_K&K*gwyH7Wr5yjs{x#yAZYGk!WRtyQleuJ*wPcgAWRtCA zlc{8rrDT(#WRsm_lbK|bm1GmW&JexM5WUV2xz3O!WHUw&HM?QM-RNl?J&dD=apEZU zRMm{buDfB^-LUI!*mXC07)KA|=wTc^jH8Ef^e~Pd#?iYtdKX9U;^#rmI9eP>i{of<94(Hc#c{Majuyw!;y79yM~mZVaU3mf(@AV`5L+Cw8D)=yFwg-!MOh!{%ivWo2n?m{b?~<7Aoe(jJq}`z zgV^IB_Bi-d`F^~4GTuBHZ=Q@dPsW=kYmsI;5LE3 z86TuGK1j#sI*D-(eU-VNoIjnYlB}rvfMYF3R1|e2zWr7lC5-P18ZVbQl^4GWQ#mKov8Y*y%7rp*2k>e%)!*2K9Ka zKILsdJMaW}5_ANe!PB5Cc!BG>gC3w4K(B~+$wa(lVy%N%>mb%ThpDuI2p=>~8`)DE|!{RjyB%n?2U`h2qw~;c9~$jLqfepH zg=n-JjrF0OKD5$-R{GFNA6n=`>wIXP53TbNRa1$osYKOOqG~EpH5EaMm&WFbN&^R9&=R@OsXq*p?^PzD*G|q>{ z`Or8YT2+Wv6{1yzXjLIvRftvC8sSr&nM3a1Ij}Pr}pglgc#(~y2 z^fWV-D4$A{PeprtXpRHT;d2C_n0=G);pbQX&>SDy;zLs$Xo>?(aiAqWw8V#&_|Os` zTH-@Xd}s;Z-4D8g{$L;&3|yM=|+NXBV~6kIO>L@ZaC_Oqi#6rhNEsc>V~6kIO>K|Zn)%zOKvjE#T7?4K{$Rh^i5d)Yj z5|y!m%2wzDvFDf%kzLx2~eR zZ0u?rr0g&_!MDuBGnbGcsxmJVZCrplK_2@>l$U@~W;m`wuQBpaR**$@1V6=VzzeVo z`6zmYY$RoRQ*b|c5F7_rxYhu%oXgWvjILe-UNXK%K^MR=S6$|+%UpGtt1ffZWv;r+ zRhL=m8DN%JR}O|UY9RWQST)o!ODfhvR45@Tl;FinsIizDi>XnK%}VgxC05Oe&{U8Q zib46EYMLc@<`O(}37)hBPg;T}Ex~h^;5kcZNii!x0p@Yy<#ExL9KAgmTNo`-xjGp= zEi5Efx@etCB=UYT;7;NKJ$DjqU7YXboGWH5zU8zGHglLEN+LeGq}{woZm)V%$c#}U ze&-N*ehK_3WcDagK0{{r9DoDxt5Ckdb;Gds;dtLM=5TyeEV1-BvGh2x^fKSqII~qraMNXt8H%B$7FP=yGn631LgNmkUy~8eozPm)yP&n9caw#v zF~Ym-t8v16P&HO~ANm2~jgNR=jT@rbKfw2~9i;pa^f3G#k0fG{L=2KxjwFsE2_KT! zM4p~Vo}NgKo=EP^N*?bgnWac$InwZnboMXcqn#$tdXPtZIL8NyKrtu*jC_z%9Qk%4 z`F0}tb|Ml>B;QUX*G@!gN6D`fk(iGhI}wR3M`9->BR6twHA3?twdF`H2dU-A7n#ZI ziM0Cg-pk-sFbELUk>n|)m?uZ_{upxwk~}5Hu|EU5nh8D!v%wtJ1D5bjN*fvZT?Vw1 zd^wSPIT6V&N3zS2>~bW#38`*Es+*ANCPsKZq`HYbIT5MmA=TwbmCsvpd=#7nr@?v7 zNnq+LxgJTb zN0OJ3l5--t z3?%17a!w@YL~>3f=R|T&yk`NPvk=djj|81a&WYsqA-N1B=R|T&B(@LRyM&~iNXm(% zoJh)PdCswBCK7OJ+Zj#l0GHY4zDUA}B%DZMAClOIB=+Gc3*ovG&sYf8_rY-|9CzXw z3$Y(39CzX!3-OGFaM}r{op{7T;)~*}6V5vEfQ5L!LOfp~Ty^603h{V_#{1v{b02o% zgqu#d>4ck3xVaCHSBSSO6mP*z7q;Opvkf<#O@^~-CL$TzD1xKOaMT4yU1hf6#Wr%` zt_$uaV;eP7e&~G8@njLE?n3}0yf}A0?BYb z8O|re`D8es4Ch^N-Ua7f*nk@waAN~*Y`|S+18$^|j172^hO5j5)CfNr8z@2|$w(v_ z8*n3yWTcUd-n-FzcbVQ7mFayE(n&@-$>_Zoz4xN`Ui3Z}2_>WVZuH)b-n)^I3%$=p zO3CQG8%ZT2sbnOTjHF!Xy&JuE^Mq{^Mp*a3`DWk|@EB-oW+J^zyjq6%jN@-W1c>6? zZP4w|MBZmzgQreHkzyuKDAwfZ#LzMimnjNZf4R)@RWp<4=tG(R%;kBLPhZp!LH z$s^@Gpdn~SS!ZZhsLCFmg{lnVd1!ZNPp<6+`e7e$U^Bzb3vwjKZ*k2Sj^DwXjpI0+ z^%~Yfv~J*8fP}TFluZNE!KdIez&ek{I*&Gs_ZNVL;A=o%nP<&K+8NrfyuTCd0(&Ui z2V%ehkN{YJ)sjFm_!C?MH^`-{nVD!rCK{26Mr5E78F~xKXR*dJ7y1Rq^Vna^{!;dr z1Ma0WHerr77cI#|8#4HGSSXs1sTWY@1D7fLld@}kYhY!hTNQ)=<@xHEnS4?#)Ubm_ z;9k%aFoS742%3YIpfz|HJPMxY+84n~peN`J`hr(LKfrSZ%=_jt@0-iKZ!Q{^fre$E zVHs#xrsY{DL1%Hig!)!;&Q1_b*#U3}y?9L2CHA$&p4*dK`twg8+EY}Pu^L(tt2bTn7-8 zNST*Y890$h1enp}Y|%(;C3+Z(wD@ii_LG4>FLR-Lhmb@ZQaB6uW8wTtD@*PQeFl!Q zDr05FZ!i{O4G!+ECN9L2FGZ6tMUyW@lP^V+FGa)6EpTupI=K>^T!~I@frDG%-WE8w z1+Hx=%ZXOPtu5p}(d0hSLR_mNUyT#m0F=ut25bHS`IzSre~MXg^O5P4!u*W zGuc>K4px>!uP$L_m$0%+^eCGiWz(Z_qK*^~huv7W)mq8HipB8y&R(~Eq1kxegD53=b2Px7#i%la*?&!V;EEzP2( zs)cIZDEluh{D8IGXzpE`7Ujd!VtATQYj{2i@SF-fDW=wZYR#wCe0Wj}Pm1A5F+3@T zAIj_G!-rz{pgc=4eJ-ZY#q>F!J{NO`e4g&?Mds8S^aX<$`R#{#fSTX)a_nQj2#}?T z5>N`R@ZO)$Yv4M#MTRMW4Fuya?fA}S>_2La{0h(XD^>t37~J4EgqKQol5aerFf@Oyp!TnDc+_OZ&S)A^8UV-(uYy5 zT2CooLs9D|@*jV4R6l}x)=uldZr z=Ia9hPnGF|08f@N`n&HXb%LGm%Isl>2C zb{0=`43C>4{$RF22Zos<)l)QT4S=Uq(1sXkXO6!S^eNDb_lH7X2g5jL1bCbMaLQ+} z1~3zR4rYTn;Q#g70NJ0$d=k%``ZO{?4Jq=>sZU!4Rx>}f2K)flf*-*@Jqc94Ztxq| z{0^`Nv@!;*jM4UkgWxbY3gDB*GlQ%R#jrLM!`e`cb_SdUDWKw0MgRY;A;h5JS!HVo zSv+&^ei+zrfeM{M*r73LRHogsOqArVwM?gGM(5jX@J|A9w&X11&%+@DN}glV?bkMa3BHz!Ts}&=GV7 zPlK-De|k!*Kkp9&gMoTt>vd?wH3)PE3yZlG7n}9soxRwq7hCmW zqh4%OMJ+X+sK#9`VxuZbT_if~*ohZA@nR=l?8J+mc+r0^`tL>mz39Ie{r95(Ui9CK{(I4XFZ%CA|GntH z7yb95|6aVP7oGB=PhLEy7tiU%b9&JiFFN8yN4)5W7yVGt?IK>&i;TU<*o%z4$k>aF zy~x;$jJ?R%i)ZvAM=x^pB107oFCsTDGV>xcueBNzL#Ba816RyxaK&r!KiEto+rVSN z_x2{A*rnIcgJB|2jvyNuYfja+W3@Zb=Eh*1vI4*p!DJg~J19mgYJyszHsHBcvWytA zj2NMU17r{Z?j#${ zq@9^?Zz9|~KwHm{tDT2)X|y#H?lqvjnQ-ucmF2v~{xI4-g8Xf)`3l)$CfQ*o*LWJRGhzEo2uzqRvJ{URG|j0O600U5zJL@amA6pT=BQFt-htuH=+!f z2|fq2!5lM%zNOH&6#ACJ3fVI}5&JB74!i*RnBmx0gm~4gEd~+;7qPzt>;}g`EcnBW zz@8$Aec{+s1ojkxEk$5I5!g=z_7frZo3*i>2y7<;+ljz-BCwqZVoW$$PB>XkI9X0O zSxz|i6oEZOU{4X)Qv~)DfjvcFPZ8Kt1ojkxJw;$o5!h1%_7s6VMG#NIwd>%f8Lr#R z+Ik=e29-fou)>VMr-zfZgkyIR`0{XUF9O?((BpXD1@(X;V44xwUj+6SfsYQy1|#s% z;n-jVHW+~oMi@_kCqYNh89WWTf)_ZiJLmy=0eDE}5>Dn4j(tX8pApz+1b#Lg8;!s| zBk-%?*k}Yc8e!~%*LO%fg*;1!n#`Ex9GX)C{^Y6EP*4L8Qj_fdMLfla&}n3^)7k$N z`$_;8fD^DzV5q!Y)s{nTMbws0ZI`I+6182TwoBBOLv5F+Er;4JQCktU0G7BoPoj|Ow9&_F;&2-tC?2Or5*$F&P zJ>7X`X$Zed^Cstxp>67^a5X-NVXwd(&2?(*;4%+Vu2!CsXyGYlKHPts`B+8kPV*VX zSIjA5AS;z)ZxxBjw@SqHTbslz^EENYd;uPe7tv;jIA~T9N6gM-lY#JJG`t9b7uDcJ z75XuZe%Rp0|7q{MfG8lMpdeuYF^ix?L4qL2vVuDOzNh;3+Uw|s()u5ZMjH&Q&vV>s#E$f+LKKUhN&Q^PP?jTquSE8Y({>bu2;4d=`)=+)})Oc zX=64uy@_^SL_4#n?K!$<*&gUQUtd$U8(DG^(&!r6ok_c6)V?jW{h03{GMNL*cLdqA zSH30a#$Ic`;4^gvzw!;i2q=9gt3u<0DYR?>Et^lvR;f1#e~X>E`J{fEo_U8Jc$YQ2 z#lh>eavQBIrInx4%EkI&dU#DxN-vhuiz`@7Xd1jo3A>@)IyD)Z&xSYVK+%w2mcS#` z>4inmVHq@7Mcc;H3qxqz{j_Z;{rClK+pDiQ=oodaby!`D-& z$vF7>9;h?}zP^h(%z&@&fv<0euUo*^cR{(|L%E?)?sNEhJbXO~zP<}8z5-thCGUg+ zlj-~6P;?6|yBVrJ4pmFw>pS4<9H{$PTxQIHj&q>n9B31MCzD63HVRKe<<*3)CUiBl zk+(rP;k6i!meXCld<1LUxj)yxV_6y76!| ztL=(+Ci-JL)K~{Mucyz}Bf(f3P>$YSj7xfZFR8!~!3TU0IUA--)hzk`I(vGpVSF9g zoG-Bx22{1s1e>63WWZZXG4j9MFW5{?4>QyvZi3?AW9sba8s}#;JYkjSsvd*6bGye(C^ja@wN$f3oU}$ z+`B!W4~vIQshGO)A}aU^w)152h7&V~nP4j8d1}y>T0IzC5zOKFtdQHe!HdC6###Be zV4OkqU{6q5Ru;*>s`Ji<6|!B(G>mve9dJn^$e4W}VP)Z0n2?^ogdZy_ zBrc!UN;pq7FIg*yo15?p`X=1TuJ{NR-tFZjN_?#HwDyMin&KpSxd}#<4G*T4{|)1S z-+8nqS!z|DCge7FvO1;j4ek%V4%(M(lYgO+5mL6EuxEl<%$+0Oc9BbdMb0oo6E1oV z`$4{SNHW2*i9dYDb3_yGy9!2R5vn7vVOyJcb#x4M!2rDvYdijq7de0M=;2} zrALUOm~+NWB%1=hAfyH#AX_-~hrIJob$mc!t=I&|NB+FSRBC>?^sY236@UVJxCw5r ztc;%@qrp?WH>Q|i{-Km(y&n_Gk(8)M_)~Ti(jmAkn8!U7+1x(3hElF0(<)plxH*`R zkUq?)Vp3f2c-bkuIZ7N=28J$gkH5zJ0y$dIoFwUqFf*82aRqpGiyu^!Dp*!_Ta+Itqlr1FQInaYr;(;AmzF0T?>&-}WoCRl^W;{%vt;ls=Gpjl z;ftBtAP`*y4v`=b)%Vy#4LtS`=hC^Fs)67yHuI=M$9dGD7T^udBqzZbIuV4S1>g_~ zl42Xquzbur{-<2+IK%Qe7zk@Q!_q;m=iTO1&{B6&CVSI-2mEiYbHN$_PA z)}ssE>d}R616}Aj^;?f9^c09f3)OQTIp{Ty95mk}2fgEwgBE(^phX@z=v~n5z5;tl z@Pn3k{Gg>CKWLf94=VNeLCZaU&Lj8#fg_?R?p=KUesJX`#I#%?0=@uSQsGUa?IvGTv<@!vI zCDhqt37zk;gt~Yvp{^cFsGG+Uy4Yh0T>_TS54x{M5xT~s2wmq@+68gep34Q6Ygw}a1q4ge1XoJTR+UT)_HhC-|)*$paKR#>w@mbrC&&GayHfDS_ zXRIE}RS(Rs<9K?v;L?n>HR#G!h0%Wj2$eGa)BX5&jQ>8!h`wAF6tYW+BRFI= zy)4K;77XOA?kcVfq{7wIUeL&@c)6gF3oo;OGK0&2Px%UUo5^Loq{#4+!g)zi#Y>7t zUPk02A-<&Do4FbxC$?aVq^RR11(-uzRlKBVh@>b}4UrZBJ1!zG8hUxr(8~*hyeMGh zwYILU>gzh}F=rq$dUFcUw6Uf@;>l%bf;Z?o{(~C&$a3>R#>$!s;C$tO}}GHge~F zWkBDYpsItw`H+gC(Q6{1e=(C(CTM3*@Ll3$GX+f2r_Ix7lNaQ(bmY`Dlo%9)e`b+Z zuc{1iIbS26S!Nb7XLEYbm^o$+?$4 z`#o^i(#>kKntFf4m~4tikH>_WRxrSr6Smr@qn#j1*3 zVwb2|V9_n5^ksG#2v(&QZn4Yla#e>X3j26quYRcN%5w!9j5_Sqb~W|?oUar!>>AD% z)aDtp4ts;$K#MkVqSV+;b`vFTwwtLNICkW@-ELR)(Vw=1RG`^W!##EnrSAoGEz5#q zg8#obftqjk+x^t!drqPnd%zwbpM#u8HTDPl1MV_gMxKEUR60*DP^{68W>r2K(j16T zRULCL2e2#Jk3q%5&Ug8$3V5;ARdZK^lMETICTCikyJPrDGQ-v4Y-@8@;0kaz;B2dL z4P8T(<{G(1xEs61xSMd+)wrgvDeh*Rc{S+MY>xX_&b}IVoI4J83(mkAcf30ucT3K~ z8h3&_0e36T#2R;^I}vwl&c+%vakjzTmNT-(o#al!-Ojbc-QKmw-NALheX=_l_bF)T ziMdnVskHGlcN*@~-RZc`aA)8?)18UCqZ3WmXSuU*pN+Pjm^;UvgZo@}F78gQ6YkDv z=!v=W+fw6e?&*5s?&W&n?v0Kfi|)*eabJRN9_#wJ zKDhfjo>1;mcPZ}6+-11?xqi4WcbDS^YY>}Rg36Rx0`_PS^|IV8oY}~5V?fr+a%1^^ zG{cPpVK2+w%6Ft0GKb)_@g43C)dcN!cd9xbq1w6eZoF#b?sfO#4?-cQkU=OU)g(7b zIrjwThmD);n0LD;-IKKIDRkm!w0usX4qz6dgZp{+ysGD>x~cF$p(`X5{6g#!S3(Xi zxEIJ16hmxK3{`=9)xC=UEH?{#wwq1NIc^RpfUmpP$pLgj@&w(G+AeSlXx-c31J-x% zaN;DxEd(d9zFXuL;eOY>tLh5&p~`bh-BM18EOX1qtrT>x9GSbwm$9IH<;dJcHITWB zYASOV+~6SM4-O)6z(M3qK-0p1C9Ucv)_3dhT&`2md&*&c@@8VRnj|ro2X> z%fE+K7Wpv$G}F1v_gyxf8uu7{?z=dlD;<0SYxQNM(%X~KDkD;jGe3uFXGcXBjl z%Sh+cTSjDbXVQj>ZuDnC5j4&q&2!3c$vHvIYV?2Ns)&2i;i>SF^(?t+#ZyH7l4E2l z@{7U}zhSKKKT5d$74m;nhWs|8q+0Prk;F5!Mojp>e5D0v zLWiYHi+C-RzoAdaD=oWmqYy=!kb}Fr2dAyDf}rkNIYXgN`>V`cJexMvXqFzKkc8VMV6Xm0cRC&FA&G z6uWDmPG~Lb*}F$0^;)k^{TitU`}FRK`_ew$31wY7AZ;SwDnFC6#1&4D>X1fU>CuYo zQBiC`?mzn2BI7HMom}hK&(ykLP`j~%)Z>E&jTo&a4IX~u4Qk5Zk)uYa=ZB8DZjhRe z$93v8Z@=N~CBsMFIzp`)K5Ec#^@+FFdV3?@W7OB9By`tkvGn!XJIv@LFU4VUxZh(ENZZ?iox}~Qe7CjmAt&AL@syy2*@}-uaWokcCq^C3d zE%C)IF-3xCq?On*&O`=?Ei*42=aY~=;V2OP)=*Py;Y!i!Bew9k>|ls3vQ*Q*b<`=Y zZIxZ=Q_`2^jLi8%&I>tj=WNN%&FztUZSJ_-2XiOq&dlAPS0is|-t_$J{Nefcr%Z;FV#y}foo?@Vl}RX-lD(KoAoBWk@dUv zdY%4~HNCZZ4LS-|v&Q$S{zQMQKhhtfY3Xad&5Sj-nsMegW{kPb^g-{^4p#cU(Yy3+ z{jJ`k_o9Po9~zkU>woL-^#OfQ|9~c@pL7`n)~?JLbTK&-GihjJN=Fw{rm1SqG}Txe z%rUv{d-O6@H#JO6G&9vQ1*W#CYwDQ>roOBvv6|G*wznPZ$@Ua`sy)q~ZqKl1+K%=t zd$v8to@+bV&a5(>Z@bv8_5ypMy~uX6-E9xnoO;>b_F{X9?PL40_H>!;XD_!`*#7oP zJHQUKSJ|uWHTGJ2oxR=;a)BLehuER^20P5&Xm7GN+u^KEjkKfeXnTttW5?QY_STrO zzp=O3+gY*toxQ`}Y45Uk+uz%J?09>xz0dx^-p>R_-aMDP6>cT(o~zvZynBA=K5`$s zPu!=xfv$F+yESetZ=qkhb#A@e;5NEVZnOK!ZE;(5zc%FP2ngP&XtiKaxWSrJ`G2_Tg#aLRya65@(&8XMk8Jah*aU*y>M)W zBR^SER44^%Apw5#tH=Glzhvb9ugCr2qy96-w~X>|bcZrvyC2PaWE>+8_a~2e8S$y( z+7y(J>|>I~_70v=qD|)l^sk9No$l;r^+ZcyZ*{TX(dx@i)@AHtUC!Cv{_JH9U?1x$ z_OI?ohu{Nf5PV4eQ9Z04RgbHQYOZ>N9jiChTWUUgR&S#}XQ5ieiPyzyiCW5u*HZL< zu0W5@b~FL*tuGUzE=m3H=;@BC)wZTwNGneMWcAUEEZn~$w(%fn8W*6s4^EdN%^AGcsnZj<)Kg~1dS@WEE-b^)x zrieYAVl&;8m>0~8<|Xs8nPFa$y&d*+=CFS=kG+}&?8_`-CuS+TE-Tn!dEb0!J~p4S z%d*CNVb+-qX0zF1zBb#51o zTie#P^=(7jn4OPf+23esTiMq3ANDEs5T3Tru!ry*I|x&4p)Fz$q1aAmy?>!yB${Se z;a|$iekm*ZE9^@9o?T_%XI=jz`-%OG75v?-!GFgpdb-PIZTxOlUGH-b#L{DYmCSQH zjTu8r)tO!!LqEyRI&yy8M=@A9Xf+ncdL$c(;BOy^i~tCp0k~O)qrr{S67e-t1-9sWnggZaift zu%CA?K)&o6NWM>EPv@3A{=#pO`9yN^C5iu`x&4>KaTiL6`6G6r z>xx}$KF6Ns{*Em=Zqub@tfotTTYb%5!Y!IWeTdoSLw5KO*`+SwrUrJs_&eFFX4i|E zXt;vb%`z1Z;^RSQn9N+e8X1| z)U^k8vH3IhH1-A}iq64R1RrFQ&oQc=DU<&&vQTs`?h^O3j~lPOmG{^po9V;nNjSIE zKHK}e<$VsV(}H-N{#(+rA0l-UdUJXLyO@(CQm1FIquyAEyM+A&X<=0I$NVc|FM$yD z;YgiACE*dyVffJ163YIH^z=Av_`}yxPBs*=4+kMDRAM%P130u2C{Mo~i{F3=;uaCda$DbvkZW1r;zoTL^Wjx}_?r^W zEnJl2edc?g)E<&H7r8+aVq`oOx*^!bwkGy8_bhhAJBx6aunQ%viOOSKlX|g)*pIMN zd1s~%y~T&hST1B&PI~E9?1*=c#a+bimDCmaV^5I(-gRQRt5vy+-AzK1sV|%E{_Oz6k{qZSs*I}2q0oaA^D(qtR z9S@B;6rUnD61&6=!!C3;VHdmM*r|EmfKQPdgm7_*>bm<9D@U!*s4A34!C068Udo|bAnS1WZN z*NM!3CUCAuv?#Y>2J|p;Y?68sT%c84CsStp83l*<4poON!Z&&@5Wr2!E&N5{G?dTnlhXO`I0q7MGNCx%vyP^44k5^{k;-vfn80 zC%U5(@zA5ph5qJp8r0+5Oe@ijT<(*JPixZ#9|Ki;CxtZNluj2;_jENEnv2X0W|+Cr z++=Px!_5d{WpU=K1%28c%7=5=?wrGtnQJ0%P867tW|Wb-S$es1lfL+^=W)8X3WyRA5C>nW1JV=Wa%u(d<7z>?Tr= zM0w=sCYsUs|H(b#9(9kIq3&__XY%SrZr#awh^k}yl4mz^H1QlSGgtFeOUZ@0T$NO_ z{?zJ9xHDNtvS>)IK`NP>kY7||%Amf~GN~3)2Wpy9f_uz8o`^#||LoVQ3gC&lKF|8B zZPp}}a9p@+R}UXeNxkW@zO*78x?RmFsUftgdU@_}uO81o^zM-|^)^~WbeH<$SzB!$es$y)bv>t6hWDS zs6`M5h^RPFz=eRcdHsLxO<$Av_4oh%zJ5vik~Z(&bI(2Jb3W&s8-*x}5{?J1B(`kU zyhTA1*FuHXvM352)UsoTF8_>co2St1F^V#@TFWlon*6%(PA`RS+pZ{)YddtwthwpO z{2>aB#I-VD@YsP9$n>7^3N06b4{b4c+LXi^ai(V!T73fEe|Fe};bWH;ryf#h)n^rj zoEScE@&v`A*cF;pjQ6d>$IKiy_;$UPc&~~={@yxb$k-VjCXbkk&&T^}^oXGYhZKMH z=`@8Bj8DlPffuYd!r#FAGjN?cV(gR|Q@`0VAMZC(l!!WG#t$Co3ab2;LLU9BD1q@~ z2hNyaZom?7{Q-VIaooVML!0MLIgjyORumR8Vf^GNB?A@AC+ntof5N1p6LP*@{rs^Bj*)$?TbJXz$EEAXaf^}G=5d4bwoAvdenNJGYy7I>X(M_FG2#DO7Qm{6-Vy_(PO> z8V$9Hk>itt{%f38jMIv7=9`0Eft7nEeNpaVFBd6vk<98fNQym+)XH{dM@5*-rgYN% z^7f~?qit?Z`?k5xj^qeuPfyitM`@c$Z7FSuJMUo+>1mVDvj8Q{BNT?uXUPx>Erftv z=0cY_)5UBqOQFjmZozO5RXmWT&#vflkOYfIb&S4@S~rLXd}>{M;18HjIVC|^ceOqk^_ZQ znv_)KolM)5%F045p-NRuLvaOW%IO7QdI8476LFCkRXXtmTqKBz(}Vyq@c^64TBz9q z5};nq%N!MDPRYh4bR#Ot z5oI=+%;pqldb-nL!eutq13LZM>R?FFoq`HGDsI>mcrTz^k7wrw2Xy?o;jz%5`zKPj zr|owI+&2#!G;$qT)NbM+=YmfTei`}It%N^M&0EFjghB1b46C~Et0SM;&zz0@^Awr4 zl+wvC63Wq%pVS8G2TCw>qN3u2hOE*u>eUyM%dolBLh*=|!eeFmSO=P4C)1Vd5u4na zhS*XdsT8R%Hji@Vhf%L=6kC3@&t;0u6<6qr%XFpK@~is19%sw1<-LTMAR34x1G0du zm=p(olCt{$dr!?E4jQ^>y~PxIeBpCjEau?1Qq6U8>-7u@FxRPDzqf_HyYK~zDdg>i zbGDk)pySDEuCsnOYapH)^|ZMEn8C)+P|x#&^PgG%3a1C>wOM{pU(l!rr9E1-Z`_m8 zzHM~M4?fp^=>bk(S=@N_5q)9vE|hj@+o4rQyxZzQ2R^(5>|WK9yL=Di8?RJQYAI8+ zs5stT2c6 zaK-6R7$z3(FsD<@d46ru;Yq4~a9A3lLk873^p=HMX*)8O=8RjbKXG6F_|%8`l^#n* zk@rZY0o@f+vO&+J9Zmh=wQO2|^jZomtxLhDvyAL;yVI88jEV|3Q>wH~yY_o5Kbtf8 z)O$o#3 zQ#6Y;Sl&(G0=Y}D7xJ0!eVx*=MoQ0G{h4}oJG84`x5L!>&rsU7ZZ00%VEpq+7O{oW zliMM6kM%N8M)eww6q42SENgIXuBj@ZoHC%~C!VWbgkB{otu#kcGDhHX2*l!9GQZtw z;1eO>DDSl3-SXqTm(^>iViP){mk!u87^X_Rz0y1il=vybw zh@Z0bUzY`|yJu~PuVy8CziS-9-FMowA)M4C)l~lEPTSUQ{eu1xTRW-xcV_j(NBWuJ z^?or2lW~yYZ@^wN)T2ONxt>9*&@%)Ql--2c1afoPZ21fgmI zGsx}*Q?~~N_3PVjMacbtWjE%X`8L>`H}6PLu>R%s*=I-cdwlrdv0JRx$z!&#mgKpS zgC|ltsV|v&Y%t+BjtzOWUdQv*&pza2_&YPmfT@fx8#jImBhcmmtW_oGejsd4oBvQ? zX@G=>Apu-WgkoskTX z+Dt}HjHc!@`U%o(H@jTigAPu{8uZ4_nvAiOSH^0w@d8A721FosVyrhv>u<5T_RT&h3(?1uge=ieP4 zHkq>h&(GOHY1InCW(fUx%>*^nt z9r+?OAh9tyKw9Yq9iOirMEdm{vne!qfO_l_p;xcZ=XBoJ3s>J?!1#mHqu(Gy$wqf; z+N<->%JVm3rpxBNB=%4qbZI-*&!lAihgFfQD5jbKOnf z9M`D#?sNXl(ZA+q?|Jsb51b7tD1I_@5v6O!4xdfw3R={A8m04x^_xT~m<45Z$v-?3 zGKp5wl|EWbMuk$XiY%3d+$x4Fq9BVX$Rc0y&P-FIX89vHLj8VtbPKnt4*85 z)q^?f*>mphP;>9o^vadRlup0BY~7!WIh%N8!RX!kYJJ8f@)hmYc3_KzTR4BRztXrgD&-!Rsc)p($ny zW_-Ggq6+~V zeWm6y+w!@ue1zIE@$Zk~w^Ld3vBmGCuoldE$-Vj_#+0e-Vqfys|1&0uFg#;Q6C-lc z8}3gkFmrP8j4E`&_dn<>-`AgiD#r9;$sg<+AdYAyRT-egr=^Q^j<>l2OV`=YuO?%i zlf^p6d0~)1cuJclcVcO&}O85+W4FkTjsqY-u;(TA}A2JYq6?7zzNX6i^fm zt$jaC=ofBjmD71**u5~KoXo!z68i3}ei8chwz+lMcgU{Oo*bI%I-ELYTCMto4(>*@ zPdWeiVE)U)y06mDNjf8^erwPfm|so3u4%9O0^-Y-%6u)pRqN9EHOKraXS!n-z6me2GUV(c~Nl%4^4Obu}9`1;uCSnq9!!FGNf908J5sOw%niXK) z_1)rbOPc0c%oQ?wE$?pTb?eRj^Hu$;UzeCIBX8__l1Rp1e2>I# z<$S?U?!oG)I@8N9s9JGherhCb(|$XnM|bZb9bTg}r@H%My@stRUrX$V^RBmC&)GWt z8-3-;Bl^RYgtmRYJK0O>T>TpHO7DEeUeYgqa8+M_mb80`vC-|wA7NB2`T?>p*$bQf z8f>;12%xLRgRDaK+^bvO0K}l)j3qEZ(M)0qES!oz0^;{IErIe?=o7XEKtKwf*cg*00i88e0XEhkeI9}KzSjEaPaLp#4 zK!^JANz9fX=R1A^=u%CnV>r|?+>s(YzbTXo&WPLj!8G0V$I2_y%%*1VlbFL_x-EaJ zGpE0NGd&`}Qgu>K;^;tb+|mEw?72TSPa?}not=#9kMC|@$<&8;mkb+zv_A_XRk2sa z3f;yE1!09+X@L$wJGcUEuF%qz@xy8c#uuR2>K&|D3ZDg%vaiX*!R1h%VrPz;sU8cI zQA}36NzBt6LGd5yCr(#-bNzXurp1~AHswLoNA>sL>u^!Oc$nWQ`jHfUy?Nrgy&N(Y zBYazqu#-o)Qc(>zScYeVOcKw6jr7r4XudDxa+&;s5|1*QlO$YBVprWK+S6B3iU$|7 zO{wmIEogJPLT_|QbzRm)j3vhLD#j6@H1Uk%Kev(=;MqL^|1%DscwF8XXc{OriM{Xs zVD#f+wm8*2r7g{&Bi)9v7H1m_GKxd zRpq=3r6mRn4Rj@D`cg{OYoy5lMd+GS+QTugO1Lt|O44F;DU9C!&|Ij`Oj16JQSr}G52x1J9#z*R9!6;>xLi=ha z&(%=VR1@us5t*gHoPg{kiDrH93B-S{B+pZ zwHj3=-Z9H3p=vU;H%N#@snT|!Vx>Q(qd9l z#hym=X)sp*y>$XX%6qj?*lZtK892$~Y=i*-X(dpR9S})49sCG<6z-%wR)0RjVy?Ss zoO`hB#P!au7k^UPgmv<;EWc&pEGA-}^9$x65 zkFNc5nJ$|(eyIu%Pn97hT#c1+YC2@iJTVy(ajB&v48i^iF-Bnx?W~R&|Z;Hf+ls7w6_*#k5G4nIsZ8g>1F?s(NYp>5T^FV8ZBLSwY z8GX+F5n`$}z1P0)Ds=x~#X~EhB=yl;(wfBgTFBYLqV3(g_t3|Y`=iDk8^BEZCjHp> zw+AxdmcPWjgg5&_?m36@tfofC2+6BnME0MXSqr7o$%guIx>yfMWQZ(mq42nV)Sld7 zYE6XOCbQj~WKd*jbff;uAS}j*_lv`VUfK9L(Vyy_e_L=QG<4hq{Ryq%{sgOW=fhQ> z)OEiSN{i{zDHCUMf}NLI@(X_ln5&{PL}QgIm+d@1tuM>uv4p@mA-o4_BL zCr_EWCnVxz+aKNx3S3>ZY0cd^>SN1_1vB=L=hn7}@9@Q%Iqwc*Y~sZQWYTktP8v9` zb-B)8Z<_tq5K5+9SwiOIQ925<-40)wjCC?2?vzH)&q zkG|5|rt(36R&o4};B@i9+Ze%RB`u$GxmMVbPv5$Wx1M!k(Yvjp0j5&S3s6F}fhbxBCstPp^$dkRvg}_Lw~*5!+HT3A2`? zp#VcXdC-wZG}we5*Zwk@MJl;(kOumLoBAC6Gg?ExNNnt78thJSSEZ5eU+Glk(u~EI7R0~ken6U?50K+(w%p{lIOD+07fvs}a zOyx@arAsbe>+)f7*WdIL^r&eyc2ueYEGhU`zpdlPW@0j;ECEa=-Ly;J9j{L&Ib@Yu z_|JiN&7TS!aJXa<{Qz@d@L-}+LqHJ&34)1+E*!p1>LJ4V=PK?!3-@j+?+q>rzfCel z-0CwG5n1^K3U=ID)JYVOHOT%tX14&gfV(`~RAxLq5~babey;N?BvbgJ zSJY!9L$tbQyL{DlvziQgVyxl>TwiW8n z1vXF$~kV zhd%+IQx38bsa~j?3t<|=ve4*#`rq>z zUpmdCxUVeW{MP&RGRMxQe6`+anaWNc=_YihPRU*NfOm$bJ)%At_8^_zw|Mdz$Z+H-H>FZLzoY#g-H6y z>L3pn*(~DukDuGucf6E#2*()^uRT8*}@#(b6Q)R+( zPJcMrpl+)<>nUGOuFM4)FZNtrpeV{af%QpH^0ctTB#g`zW&`KuSqC`-V>(9YqQxq* zE-E&&;8g4Yg`%*()beRXfdf}K=d@!Y`C>?M=_JBh4TrDbQKd;MXm`k7*tNM)!N z870U>&zz;YiK08Pp3?Ri0`SvHLmH^Z^DS)t;%-~)jU)9t##X7?ZA@tB^~BG1u)KmP`_EDueln2s>oTmM7|}m1d8~Kf zO|V*V$Y@yvxs2?saRZ*wI!)2g4Mpy?!TS07y_482YE$qt+^Rzx`U%U~ofBxB|%MG6Ezh%m+ zaba_JZGJ0&{bi!`*=|dRcB{2y#@-kj{}M5+qNUu!J8BM77m{1kIeYI2Rx=o@`H$S2Z8TDfWWzjrQbGtrEC#td0VSuCGZ&&xY--dpqFVaA*o);`)e|GD*M{d7 z4d4F;rD5*{y~tlAk-4aMZCwYWY$Ct|o~n|D(vp2q?o4{3a@tHrXBPj)bH$9so_mTJhbvt* z>JvTs&Dd{}ez-&?IE6NPR4)F&qEkzZ$*r&CTmQBM)A%bl6fc-gz52yZWxX zIXzi9Z91b%i``;;RLKEq%E0(+z?99ka-Nzl)a>w5d-=a65~J}gDG{LPe?79OsRT9> zQNJ*6Fn1Cd0Ry%U+w%MRm6!U4*tY%g!itOig72wAd(YYzX&N?gbI;l#7Miq+aF~j< zPq!S_pRD3^%|9EbjGV{V>HUM|ujhPA-jiv1oQ#;;zfw&S@WIGAp+=I8lG#xY;^S(>l8@#c7&!0&;a`T&IW&B8 zCr18MS)V?6gSu8-F>Mcxc}ah=l<_I3t^bNlSc9Y`tJL%(z~DCTAzbn$*SI z>d3hzq8^BQ)&v$Y`v2;~Bo;B|CPg68ltt7!XhHJHmva*H^GgMmxhhoV!+-$}ipoW~ zfF1|cEMoP?^A10oaa}LIKWOImZ3O^S4=}@?ZO2#bS!>~>U2!zw5DA#a_}sDNX*zLF z<@EcL4ePa9x{|Wyb;yHBoN0SKmVo}oyI_B`)B-{TE9QeNjHQwW%(y6{41@eKRa!uh zrznpAFo=yHR;H$dUaOY5{n>^0-}yFr{JNxE_G}=^Ys$d`%zlA|;{I_!)n^e&r7F|4 z6j@jBANMz^-ZWNDBIzJYIU&fnAktS0!h--Zp+279pIFu6<*yg;_=tGgSCqi{pakJK zQ)Q*QaG!!L69E!Oi3uP%f+?|WYG%_-Vfxp#KQ^l++Tkzhue5vH4if`HNL;h?W_9kT z)AH}qALx)CJ*Sc?gP(EqELeYv(vw?B+itXd!#*wJdmJCWr4yrXzK6 zuc?iJW&3GSGK1-vwWKTzK}R64h%hcBYYQb3UQyOkh`8IQCQ=Z%zWxw|Z@3Je1#knl zany90Q7(|~luZmYrP}d?w}&xmYLk{}Ytwel?BJnC5)W5X8|(iRxL=BiXv_jmM$&!D z=%@l>79(y0`&0v_%C2HN_T=rSmtQV3uK^ z1RaNQ0)l0+6nbR#@sTU*T4DA%3!J=T;IjMg+#0=z(;;unq$k{s(^BTBro}9<=sd=T zJ|5Vh-2Z0djNwSNH7*RAKvPsfH9!eOfdI=QZBv^z)W}8^*Yq6oi54G$lyfSyMevf%3^1M=2M_z9khO=;>$r>o1)he7hp){s!qp z?-re>cieG2*PTpnVP#5=WA=88&Yz1jhUI5+4J#{0V)!>r3G{Gro~M6vaiDYTU3 zq*GEtBK1LkJlUi_((jQ&cc0KN$RPJ^_m5Z&KQEBlK!Fk|0`Qpho&bNABv~T-0l?SEPwj+ zA^PFjePX9n*S9d$)CiUB$hO9nm-7$tq1mD_(SQ&m4{Y%UomzyfT*s8LO(lVYf^27a zn!_YIAflpBO5q?M?c8pUQ+aS+*oB0I95OiN{gm=a$6IFy#51-?-;(wFYnQ8L%nH&1 zzrIa6j#$$|fBMzA0nV3t{@C)M#6gMrpX5{UZ<77{pGtE(qK313NyuLPPt!?AaEtyT z9dD|OD9)+HmU14YbCHc7VlGi3ahRik-VUF+sE#PSTD^uDQ^W{4s<}A2ol#8{g=Mhe6JL$aDM>im#%S2AW!GL&ew%HRcd}xoEY3QS>S425Ljan!s-UX*a|O z)fk*sN;a?r%R<==zhphTq0@6ynkFqxekbI@y3PwHG)rjK*Ty1V`7BBM~N3dTkl6 zyncCW5&5~zw03Pox4_0CU9Fq*3~y5>2mN?$g}${b3F0O-9atVsI6hcD681OJxTmq% z{gvG;vzKNml}O<*w3tW!zqYVHyL6GJYR4}W&ATv?^Do~d{fBd!H{q8HK$Dh|AJlpL5A3BX zN@Fd#YBiyw$=>{>VUI-X71#j8_etLU1fnayqW4l1z`!P&GsMmccfvR#j&e91X3@Ig zFcX=N&CV`Ohnv{7H&2{dx_QRda)I`q!zOPU_quj`*}<6y8brh{8o#;tNocdJBPU*2 zV-wGlu0B5!6zHtQ+va!c{sM`cx^2mtDV$E)uzmIMS1;~-F^^6fcX1}?GrycZ?!pZG zqR5BU#LBr~Ric!MTF}4ojFENmhQUFiBSAA0QH00Su~prCw4vO>vH;y7?Od<+K+1KpOqt(V)Sd} z9$(Q}C)(egy?MnZ{VJ)tX~kxGN$li%u#ZoqeKdoMFnV!}6sAa>RYrdm_NX28IuR?s zS+W22;@kS4tX%OA>;w7;pKw!8;rZ%$)QIOOi?xj0x?+;(P^<-8Ao{a_hGdisv1rsH z8#U2&Y89QPz91HKv3O65O%RY5NnTKABGv0t7OqwC{5f`OmJj-^V$09*UP3@{9;IkD z3o(SKD$JxPaC6Ek@>0~B4#g3$Hw{k-6u*LCG~|PU!2xT2Uw6Am{oVB3j2SzEBag4| zrT-cka(+N?2&we_^NNS}=*SWKXCCgw z=y&Hv&!mI8%xGLaW%}R8hL7FrDy00*c`^ni<<)BR&YM_yN}_Yxvigle>rPtGOhjH+ z_${_b{RmYSq6*Vx!X8)4QX?+p#Z9tLH$pTP*NhUqRmthKvQ-#NPJm$WHqPF2DF-4yD4o}9X~gP#qNiS$h)vQqQf*-*`igeTTckQnyl-` zqfytN345Ap=&}ZK&DN6ejZdT1cS4dwxx)a6~aa zO728`i^V(3Osuu{QY<63yzDb|7;9!SMdD{bW>r+cq=v&5i~3+QC}~*{EXo-(P$JBm zT90p8zc(b%Ubyqct$efEs#D+D<*C}X$*T$O`gTH293!pY3bz-(cU*t#_@J=mw@L6? zjl{2sjQUaEcj`_3$F;QU#{Has@#@eMHz_}`hV<@5>FOutsqV5`Ak*K! zM2O12(wA4*NE}~|XY`!@%Grzh)(<#8ON6IXPSQ76M@YLo>N&=1;T0+hVTIdV@ui+p zvPoiV@CpJzh;*l?bUcvDYb45|kSOyJ8`5s!LTX=>yV*+w(((T9B^&QSf=H01Btz@7 zjRYBtJPapjQ=pQxny~)xambF1Q)%C^qd?!jvwuVoC+2q3%N-8NUpVXez-&$e^rOvt zm+R7bn8jR!o~jVvdG^4`b4l%(sJ4s`4;ep~(v5TVeYsUL7dBYI8q`j&f-ZvA$_jRb z9Z=HA`g=(1ll7#PR~IJXR~`rw00~Ss?`$>qrUX`*Oe6dd z3~s6BegLGMpwv+sD=%xgO_~a!<=R|GX5z8Dd=y>L!t6-+Z)mW=;pInol}z$1-b*dX zDvM{5GPP7LdAw9;b*e2DTAi4bD(;k+sU;?&+BwJPuPP?yh_{k#t{R1|R9k){?|U*& zCQ4TCP&>O{m%I-=L+j{7oXcs zGA=qIN8a8H9X>{m)!wj#@HHD$^YYea8jPmI7gdT1uqsW~E@(3}FsN>?74*~dWZ);< zUq>r1`g|JWdr8$pyGZ;i9J>7c1pRf^nW%Xar?jg!Bw=P;gYdM}r2Y+?@nwWI&8}M? zU2G^CRjuqT^&sp?j7GUYCbE&#=M)0ypIF76?!mEiyK3DjcEcTZnBKu|2tr?0Y1M*^ z7R4gL+o5X7*9*d4M0%B5$Wkh=$1a$_aSKVIJ^Dwwcl_Wy%6E?$wrqtdyN0u)$y7Tt zyDNWv`~gb0jGXi`baZr;)*WiqXblbzx<|Omi!q8&rImk@R>bc(Qvh4=fBJJpQr4%2 zT2n(rUZNmKEr;DBCTsX(dzMgNdW<}is29|~T3_FnNP5+~Igs9(^>6tnu=R9u3`{>c$Q`NPoI*DT(RQv|=V{ zS&PivOzEN#&rPp4j$+Ki>1z4}V@_2jX#qYQmS5Gg%w%EA8i^Jx;2e}4L<D!klj8F#f-*59WVd`wn--TMQqY)6me?4m_$r%-aQ9LtY6BAroybTby}HzY#vIVb z(KqhxfLG=&*rKx5ox!Y}SUGn~J|C6c#T-22Sw5E5sn#@@qU(I*EXt-2s@o&I;)3xD zG1al87p;@oOBM0P2dJI+ROTE~go>lW4g{RE(FMW~fnh^Vh@nZG$tH18<#d#k*Ux@z zQuHf8`Co%o?TV<}j^5m0A129TSQzfBc&`Jg?=39^gk@yfvNben$>!cG?!WVS=!oaXbnbqSaIh%ryH(i1_#9?0I^TU9&C%&emL72un@@}{dy={ujPTfcq#dUe~=^YxK9>rkhzY#fI)uj=(l zCVWANQmOO=7ztWYBIK+7!4|P8FifF(Xs0v7=fTwp)0&atJZEpvkWlSay4)7fxlUDH zH>6v`vC~bfOug#`o0bb{+{Uh)uf7I`Ef>`}Vy+%($Y9J*8bZUlEDaXUgn88%%aUR@ zqg$KkM+aXnN5(nunc10JaL$K71xMIi)U1XeI%=YYNv1*M_CrcNm(&g1M>Cg~yBpIB z_kOg<*82b{+zHe3Yyl^NIsaohXq&Y!2bn@Y-LmS{AXDJ*S0-ATx9Bj&YQa;-F+u7% zeql?Ky&nUwY-=*^Kp(yJz%i6g9o}NdNJ^&-5gmaPzI>|m_|s9Y0&+l+1_W^#^E z@81|zjq-0c;%|1r+KA8JA^wIY0zoLaPlECi-Dcb;5ePLABCB2lG0CU;ES7?7yy)K> ztR;E+_u!xnej*vaoNRCflEoGLL^4Wr1Gn(a%7Cylh2q+~;yDU%ZK(-)) zKx~)|W`m9n>e0XRjF6xsBP<^#d~VoK%aO>6eAjv z@X>GQL$tp27Ou2HSFAWT%Qv%y@*`9%ix$TW!Cipe6un{&amJ9S;OA&xB*1}4TB3-V z;I(j^1=C~u>}f|&kD<)|KB;~3p-mJxl5D}Uh{C~{Db;X{ex{Zxmy?3u)V65D0g2ZwiYdmuh*n1 zaXg(V>=0;UF3#bwqSB_97Ah-k#Hk9Ff7v0aP=+T0@{nQ|zR>d%aGNjf2r9>?dQJEz zhp@jq1&+y%ZZi+ErC~Kby!B70P5IfC#Ui4Cbi=;>?z6%WBhr zC+{Ab*lhTip3{OXHCsFvz-!j4We#ZGqW9DY-s#iFoWHxhMvtvc(rXOcGOo^%bDTDQ zze%swwT89L8=up+*R#%c&vLeCDReWmvP#YcgjD>QZolMm<`#C`c2LZ3Zl|DM}o|kOZHf z&PPo?QTwoaYk?(@s6Ue)>Xeq(`-SEBX^#x-_Y3rB!0LwLng>jj0M4o=VC<&E}~Qv)Nn~O4m`I z>SpM$1YSaIZLyLNvt{Dw1;0ZBaDIy~V+uOWul$P$p_CRwNHKYA5RwuOr?fhTzhe9P zG_xL?x^o7q^vxG$>|<)-5omFJWi8L;p9pKG+udjxULC96sFb|jOTaCpd ziYunEFWjfw=hkoEwn5zvtJ~Gj=_LNq7S~9{`tYmm>f``twsHsN;JmQb^@OW!g%MXO znaEiG-aMlAbi?*2h2ZRv7<)U209Df3?{>)m(Bpl+GVQP~o` zSAV>i@u@iCX1DwL99hfUxXrv(ysWTARMP&e#$XY}zjVK~bFv%QzW%eny?1FOk57j8FUP;Of=Io3iSToKN`*a%B!@Zwm`l z4OsdH{JkA`XROC@$~3hBY|4yIghgbgT@jg@EkgbT^Mmb*srV#4T_D{+<*TTnMO^PQ zW1P)}ydx|d@)$r9vM{6ccp@MGajK+j{S|vw?LVjd>^Ec!@S`_o#LcMsxEh^S^-*zU zIxWe)g1`1s(L>P^%&jjGDo+P}>208ZWI%xr5mWou0U8_7@OqxQOcIJ(O#ChZ!c+Jv z{Dis&&)lVs8h_;%f|n(y1dmvj$N{}9q+){mGi92D`!j(HB;J{8fkfzmXN@sQ9K|Hk zH6KoHd+)@(wynrIlC7IbbNvT$SO+JdcO)+NPwsC#V`Cyu9jx^AjLi>l8tSQm(Gw#; zs|Z#Dyb1NuMyv)j&*z*Jfs&CB#9^+UoM52H9y!fsfzuJ1qVR;A`#tWr-gIF~@zM!P z$}O4nn2l+%t)=_vCAu(uTLxV(5SOUA?1SACq_p*nOyWSpO&QxH-BO% zuH4MVg&dP%hYa3V?reiU5wW^Y^^g{<$m-2-S*8FXiQGdnJSEC#ou%!*>I}Uk`tyBt z+ofbzT##(mTfOzj{eZml77o*he)BSoI3IGh0#7LV7ENQ{@pz0oOmD$WKyT#`fzr~t z2%$~Vx)@3)Rn@qVf;Gl1ah&k~gh`l&?w5a+eEC>a4A~4r0%BhfVV;4P6-L|1K1bd= zdp1T*i!OY*akG@1j0FkPRBB$iXy~d3CwSe>uXFa}S$E>m^OV@ng}y_tR;~EF%10G{ zgS|qPjwKJwD{xMmI7w@xR?c&h7AiHPN`0T7qWU%48g^8Q-q@5b)F{||c8pz-#S3;= zR`07K*7U811QYDr2kIYWi4fFmPDhI)$_N1t9c7`YT53um76`|*q4?a{9y@;;8BsIt zD6#Kr^9k$hIYlDX{VvXxC|cWL_W8-}c7GM08DO$32qSz4vF#!C50K#X)Q%%2KF}M* zFe~UHO20gCP3*ovCfI;|IAU|)nYvvP@Ire5fP!yl~pPyzkUrr%VV4= zD&^z=es_pD zl=kaXfPVD9K3}tB7gPK1ZqOKA2krAYUH#9-w$;8dv-A4~mjBbj^7oQ1WY+U>RV$+X z3i~V`VSFMY!eAv!qdpa#QpARtD$_pyjW0SsvN2hQIbGC2viOURuMXB5RHaJQjw3=Z z@m=|sC~+LK(!sroh6(@K9!MfnJp&|>3IreQ;gxW#hd@MPZ%gQBm?7hynk8J4cu0na z`;}1(E%(7f@TLDgqB0dcx6`R2fDwo&BRdJl9tlv-Gq4CrqO>TAw!W$t#d6ge#a<5$ z3_rMX@0IvGl5mm)O^*qU|4_faW8GIx-ObG*fwpxK{MTzWyY^l~`gB>kiLurfyE2!4 z=IjWZ_43;1?87U`?VFB4@gFH^qqkt~OfkTHQ#9&xE}$&YG-T>m;3jq0Fk})A3quC& z^X=RO{0;P~oA62i2*_>&KKPu}EWKx`9YYzXUu#Y>I&c+>p{m%*p2g(&h+lSqo+!GCnJ_j_2)vVy19U@kN@QednvcU^d6`RL6 zw*jn==d2)cZbPdz*JfMH4Y!OrbZh##rk#h{kD_iZQdR4}Jaym0fWSq0hkr;3u$XGg zvjig8g2#KFBOOV2544W;>=-(KiT+y4;Y0KE9r}%)vvH2Y(L%235B_d6a_kB3c>>w! zCs+A?aH1KQd3jGJ8V7{`XT^OPX=3J{nyJkE5TBX**Gmbj;&*z2r<@yR1Z7huq-W#- zc9<|~8a?L2!=9Krh41)d!=Tq23@;b5CuH)tP)03j`lYY0-H!f+4em8-f3%qm9yIHf z7z<6@Eqab<>t`y?X}9)3Myr-BTkC)5msJy~{lnyu^Ef+wV9?wbIXiQ>lduV5m5-Px zR=K<8C@1WwXLaS4G*(xpS&Rz)8aE>c$|N`TTBjf6V3Id#k_KAIMAZP zsOgbM?4Nx!CRsoJ`-?Y+hlw8hsdJaUA$sh;30l6LT>sAM-utuu0Ea)_StnZUSL{Tq z{W`STW9+CrRtNG8zzw6c2p`z#;Z^1KRD z^Y5BK)UeB_1c0n8pJayGssls!?t9@@q*0(el{53So&A^HPw3n^oNsvTfVKFO|EN@6 z8T{;QSdvh^6}c%fcj*~4QqX=QhoSHVW7z&cF)5|+%T8{diN5@D{T2zeE6qzfjfSOV zN6&@5Z#&J$VK--&{K6ig4lxpzYJ_IW6q}HMa)F3pRHN6M>@ME#eGdAsCC7r9iRh*@~_!06S8dL zgjf|ktBRbX2{}d+lBf!v#lh67t+ajuKX4rDff_o{f@mVQ38-yGYqvQ;9I3-fd+$kP zMuyp(fjE2D@u^4NC#32!{veEP+sea9xVURDzs*jVRNNKcalmm`j=RdwEC|JUaiX@z zb99#ccnHGjj6^V7+d-QgxT0TPfA_39d<(asR65eeQ9Eta2$&S{4H`tz`3G!_`V-=> zs*>XmW&h5knh?T>Z&C0q1HgSG0;%mViHtuR6ZrPh#k*YUjHd0Z>Q76ya=K+cdA@yp zkKArjg1)*yB_0LmVk3(hG%eJEFpYXEs_>Duva@9!6^>SCA4ccB|8pH_y&# zMrm{C)>B}T{ie!@dt|KwG7+Hx7;j{uD-u6O;uD$GTfGD%6&hG}2_#i3J4@DPi2@v- zT7{=e`gWeRxNnbXqfIp{*KBPv)u>#vjoP{Qys2G#&7IPL;y2hu^`R1>G?hoRBTBSDUn~h0ij(|&>Jo97BLYptk%;F}iiDg9=whr- zxc7JD`lKXRLlUF3yvPB=&n{XQ^oy=Kx>orPfPzjhoAt94Yf?# zL`g4Bn8a0w`4x5-DGG50XrupYmR$e`kPfOS8pW>gs0?&I21+l^Y4@}?q|o1<>K8xl z{+IsnoLZuPN~-Cf0s)jf&_|MIN>0gjZK$}SF(1q@vr(wRY%GygXN_1#Hh`J?8Wkx4 zWy>mN9_hVAwfBFmGLU5WsJ5*Kj%?Lt$UvS}J}KLz#wVua{Qb=ELCx9>>(?Toa#m7# z^xmPplNpR1PDI8MTe@`nVQT2v(7!CWQY;TPl+60{Pk*J?66txK@CB={UjgoJn2WDkoF}@`RB5uQwM4D4%)g5T?Hk;koLo)jZ1ddJ)t3a%b?GEHWu2+L{ z>v1xNM(vp!-$J3qr}&+cH`E7mwVh(tWhM<1_AIPi)i*;;f@fi+M^%Vr=U8Me7dZtv zNBq;*ef>8HC*OVi9;zGekU;$r5nUO@yY+SM!zHV+$~fWv-=zkkaMIZR#k<9KzKCM; zzq4CY+RT~LoYEGshSm68y3EuVqjboVK(G(cKj0@%QMvxgcV{=68tePou#lqO?h^TCikIvgBhe@k%pf;7cnps7aY2Z88`^ zj$|w<@~U{Oj06(~Dk`JFfbe{PJO(FgkNGn9)Gr?uvxVZ+B76vT*Fi9h0r*jT$58eE z0A0o>`tnp7keWxAz?Y>ZG5YI$Qse0!GK*dm^h(D|>^MHJAI?-0XDuRU3;&eo!$e?@ zfR8YGr~Rss3}}QJHBS{1z70tmfC?V1iFlZVhk`;st#B(nMcEPpptn?Ys+e z@NcFQX$J%6bDv|`O5wf8=(4qX+Z0luZ(VbJmc^XAYs!9tV@o}Uv)v3ZFIx2acgca4 zz{N{&P8gkex;URLda`3O=|qxxFSPia&lWT4#6{rx`}bRp#QALUm@rbJVg2So-lqSl zrxWq0Y&$ZLVOjo9VWPkaiwJ5GwQBU1`v?6u`s;6hl_2}qe`|-YYG|tL@`iEtJtap#Dxb&?6*+=}Ed7_taHMCihxFSNcS0RDFQs_?rAzFY z^Q@vc1xqm2i!cf^xE1LI|L-*pf(7-fCq+8fqpo?6zI1PZ!t!3F3QJ1xU0Hk=KHrKA zs~0~TGc*`1Kb3%m@}CZjq!cDnjf9Aq5mpXgR&R>YIm$w}#2Yw>%}vZ+1d_>Jw$V62zcoj?l#A_Zun5Mx-KQLpO!PZZfHWwhUkL zbF;8SWuXW4y9ZMrr`|46qC$_5nEmOG-97Dd^A>JB%bJGITC!lrySz9^|MhD1-Nmcb zgNLl7%AJ=8S;OCOJJuf#rdr_1Rhtfnx;t3k5%^;&=KVS59i!mH$5_$a>Y1mX@$uty zWjUd-ED{L`2{=5Yv&iV+Bx1i4B0zg%ez2J$oKZxBt{@0yXoKlxvBr6aV!A!W1Ny9F}9zqIl_fs1`xwW^4&Lgf)xWJk|Z*W=z0;~Yf~Gc zhUbV!D43Jt&__{3B36#7PID5SzvfVqDd>~6CmS%eQ>R2dBJIkawBXnR625oG?O~C@ zwe?3=QuXp51NjqYhb$6mQE%vTrmcNFrtm{bLP&VuV_tUf~}C{Wieq zGg+vhDi5Ayj)vn;Fhjv+8mB7CT(uEd`Gr|>*^EgWE9G0Ts0GK$oLQWF5;-Lw@<1fH z{a6%FabuRiw}OR~kKn{g6KBYn2};2@0X%CyzWyg8B-m8DQTu+u^)?LIDjLOE3lR+Jp#QGBeV#4wjtOn$^V5y31M>mD26gtA=1MtAb;qS zqu107Nv`~h21LB+lOz_K6ggp0!6;%*Q9{!I-=735fXEa4LzFCeO$Pv@H;#P~9CEW? zKTBZVjm0~r^tkufw*EWE$b~@xJv$9p7rwI1x`{8_LVERF9IKw?pB*?ewc6WLms}ao zcxOFZ-9P>8Soa1xWn|BB9N&0Qe5)f}Gim7aDmeyipRV`k)e*&8#QA>#qWZ_PU;Wxz z{aT~tPDW&pL(c>aA?#z8$fO`8c9D$K-QTpo-^FzgN8cA0eWy1ix0qY7b9GSNQ^%Bw zoKrQN{6jt2c0jK5QadQ^vB5tY9F;)jK4wn~i4+B60I&I#y>y%wS6Sv6z+Cz8;nG4# z`qvEl7xnkxHXvmXIuLN}^mLgw5QH~`4G=~en}5w8vn6uzsCJ_RLnl-rc^NEX%WrE} zoP9PV{Kn2!&zMb&4el|0Z(PW*0kif+^Y30fLTQb&b!cPfGtP*^`qYRWPnY4WoIf_4 zEQt%v$a7DwU3bJ>#@;q%()8R%Sxh$cz>6w8) z*6)D2v*3@l8+V7c@0Ay5&%csTFm7>xW%#qbSBE?ZSormGXYP@TZ*@r;+iL4;T-DZ+ zCaq}4W;0FX24Vw4)pbQIAcdZ zOby?=D4y){Nqp;w&ryC_wA`f72{aT!DKI4w(t5(1RB)Q&;6mOpPLKM|47v1b%>!@E zs@yOru>Dm1x44jl`6R-93nzhY*8?7Y*)O$z(!kdH_KwbMmFtX4?L&fBkV+Z}J%h1_ z=>uhEP@K(T`F}r~#mEdA1{Rq?NmoJr|F37W?2A}&bkB?SckZ81SxDZpq02?$ZwU_g zy!KwvA>Or029AT9Tl@f99H?Xrc40&LeOoa=CCjx$4=MqQfV+}d!lRK!nXXsrLL)tA zhs|->1=6+)q%9sM;h~_=e%mgPws=9YlZm3q!Z*$5->3@k;#)@{swkmAy}_*B@byJL=$YB zqwVMK3^?W+(Lje7&MgyXP(b-nmHO)<);6Q6=j4e+Jh%Aos*P~s1d;(SFBbFWQgMp zFs_UYl-iIj$EyEqiBAm=3$9eD|D^IG^^N*NTBBM}rOM^Xg)~tA;roitCS<&I1Nf;~NiX z@ecWFynkvqEl{uy7`X8w-Q=stz+;EH4&WA&aO3%9{Hydn?O&(lJlV3k@1nT0 z(0Xe-A9!X|jaKz*#)M|2Od@2}hjl6}@A=yKYM5`|lE3*^&;@alNw81nuV44M--^jJ zgTO;@Jw7q?zZOs+b#y@C`vE`#h$HDhZU`e(c8rOLVDMe6{P?!P;uw?k%&_Jiag50z z{k?7Xx4oLo`>;9g0^=Z)msil9#f#aTlfWz=qKeCk6K}$iq3*1Ocuw^R@p9yTwQGK@ zCq}h|Z#AzAIlO-z-2?9kQ;8f87DWOSQOJxJg@(Z$OttlCwYJdpK>#xcS9zQ-k0}~m zYthu5kwMJTt^MfLF|@(>i>)`P{O*P3&AWW_MCH@mMfB8o&feHHwf;n$zj^8h z?~ze|O{YW8jIPqAVNwNK1H#Wn5K6>X8vyV8%-`g7QDK*iv$CT-b`~{}=2E;Pce~;9 z<=Pk*MlwS*%KK^+oVl+>1-MT1f*@#>ie>U39ND&0il33oDqSwVUe_0eG26!9R;)bR z%SMw)ja#&C@qFZ*2lN=fBM!-DwO_XxyV*2$=t9)G`%7?QR`H9rB3KmnmF)WC=1_Kc zUuLb`Vbd9VQ`*j7c?$MR7|yw4rQZoEoV4G}j3`0G0=|<$f>rg7UMwR*qfoIql9)Ln zE6NiTc)tIF=r0eY4U_6ecJ4oCR>(m8tz`BBo9TYNLK_lUP?^$08)@tJ1#;+7@&nU( zJ?!B6n$2ei%Rw08^;0Ti2m1~NV?b><6g`}!XBb7Bh)e9`)L50)&3W-mh$-p2+@R2H zPqrL57RbgS+8EugU4MLK(G-%pU@kfEd69m84`-jhmrmCSU8t!it7CaHAevP1-C~~F z0(@tHs4a-~cmi2oU<}a@Zp-lsBNJ2TdvchN7itdtC@b_Lh`K|_4z<(p3)!A;qQ%KT zDF~ObY2jMQ(+87A#MrmxEt@#b8aQ#l#E@5JFTFA>BvyZ2|EtG+((lM6%7%B(wpvpT zZoj>o1oYWBLVq}Sa9%83GW7*Y*Z#fgp?)P+uR+(P{&8r*S`*KPRHGo8C6rBoNXIJ%K<%@4fflI|K+2I-w)I2qGm& z6Ql}kMnq8*1q7r96%_2E@KOSz6qW4Bf1fiun;FIbd%yp`E|~1h?k1-^=PCEoOpI0E z3Czm`$%q1b04tCYj?D;%cEA&BjRwE8WyhN1P5itQzN_F9^KdVF+`X{-kJn>66?XEL zq~ZNvhfJOx{|*V*KWi$TJexK7acd;2N@Iihs5S$#r2D z4^R_?U94$CCXx{qy!0u=K@i6A&EbTfjGJWK7@3gj7boHi;^0^*p?8p&4Ps7HqXlw- zse!TbqsnKA_E((6@=IorotEv?zL_L7uG@R2z50`C-VzO(&}~|jPq3d~rJt(#*(coE zIch`1OP{~~CjCyXx#89S%%3ttvToZ*nz8pS0l3o^U`+ygn>fJDqjniaA|bm+8aitILfCiXTX1N3V{0ZD7PJ+m4YHS)Zgt?fzd z_Ssp-dIzT7P74?^@LaXfcg_dczuCHBdq}kju16v7)sVZ?Y~@S4*?lMdSY(x^eL06D zP)kKafqk_z{dtlm1p)F@-DF7IDpt#TMAAfx0P{HA&b%-;j}ri*I(MbcE{@J z4J)z{J)id59abYaDY#C9L-i$Za(f!G#Uf8yrKYaFt|GWgzBwj9Ux^&?{zJtq)w{(fVpX8h--xp95PAuv1_prya+MJ70q#YNT27m&O}H% zNdbGYme6NNrVT)Oa!L{>XhFoN@5gD_o?-1ZRibsK=4WTU7P0WghV52)>V$aZF`Gqf zMc=llWAz=^dsal^<9IL0XYMN*rKR~~=Ti3dH)A9^b>uypeD7OgDWFH#u8y7Pk}q?g zT5an#-?`bcx+=+}+f%SrO9E>guMz{+_(DWc?3##j;^!49$Odtw$`QN^19!AT zFd6y0{^0QmiXS>kKg*5hB4rp<+>sJ=CBHiOtio zM;*HM^fZ&i-eJoO2T^s1G`n0>vx2ea;C33nG~$;uTn-mFesFNVzXNU&BX|s()1(Ey zuooIHGUR4o^4>Uh=+|Xerl1|#2@#W>mM-s``H`%WU zig}nf9v#tY@{VYK+}nbVXrJFB=LYRODqGjT0*&?@G9RCa9gVllRDCq931u;O#dXeN zO*`vRlssAob{0wLBB=(hN9?h|Gr=_w0}FOSoiY^SbRy!~Buk0Hv%@S2JOvWSBg#eb zZH7XEZg$#!E3qVa=@-L%gV`sKUEg14oyJEuetx32BXRcYP&r4uzkilZ*SnHkk11U{bL?WYSKvMo8yX)$qc3fFNhMl7 z4P2+8?)eKJn@$HpWa>92!$e1?RYFB!BJ>4Nv{&$~W2OeRm>VmGls+en07Kv+7#Dg* z=}CTkEl?|n=qo_prdgw(4lMeKA=mFT7GbRG)v-^Dp3?8Sl90Iv0|UlqNlj^%>oYObJM-A}Exg4=zjf1g zeq0t7Zz~}WPZcn+=OIuXr;MD2Oix<8faNKxG4=qAy}ODApnTup6Z6H`dB^|`x@q{j zXBni6FabE~O#}?X+KS*66Qjn6HP2u;+$^BlbR|igW0~EnS2UphgWf}Pwq!1rW?n!1 z{3-4K4jVQ$xGT#e!&n|olR5*>4xnAJ-m+YZm1@L}0mVTuqb7-pIE0*K7ynKqqE z&)E5_Ok|+TA~ncc^i>Hmmw%Jd2VCzli zn(RZ`0}(N$?`$6RbktJv4ylQbGnwpLI?=V9|Cj7^vuhh2ApW;?!5NG=>*7Lr50IX6 zsPbhqbagU?{Ok6&Y6;-_5xgO4jD?I>w^|@krt?cHTzC$E5xnwoe>lkG9kHhfthS8y zChT;xR|K(OnhQj4M=$E=z?GSt2;0UXAc$0&NvF)(?&mji%<$KPpLnnQWBCt%1OzkJ z;664#cKw&?pRr=w@AAB1vpx06Umd+Xwep*z-@k|E zUAK>uA=9WlckCyT5;=<%LH4vb-QJd_1`|L(PQpIZZ%iBPal~uAa#U{%-&#;3B0lUO z$#h_`#ja;+(LIJMcgIVt2;pl*1pC0HpZKf6=*K1-ENT;9F**J{2OH3bv4k#;vmw79 zf1k4ylN?iWUEp$%Sxt&g_He|{+FstVl#fS~Q0LjN^c=N)@#{Rgo>RysL}+vd^#}1v zsKHzp)RsjIMqde2zL`$yXg|Zv1fx=g;edRhLh?Y+OrD1mN7s|Bq>QU=mlLy78-`bl z8QZuC`;t)lF8$+q*G==O?W~QA&Xs|uN|tWLr>u76K0M6vh-?|GhHLc)k(q|1OI*1h z6aIq8RMiqG6eCb-qMyjLNlZ14gPYJ04^VgkYbNr-UCwB5AG6a^_|mI_<^Ye_tSKo_ z1md}c0!J;9{kcOu+@65MWC;NE%rI<#!_+oj4Dmfc&J6BK-ul-(ay z{+25?blI9RuQ>MnOkZ9dyzugXkig|*mBcmkmhaoi9<}c&k>ek2AOTzUk;vBwIaBn_ z-gBt75=_7SuIS+!A}`LKEi&bk*mk$7uO3<)_SUv$|B7GnG-&{pry=VVTlxcDr=wym$G9hCSU~d3?G>YU#gmBzDFXY%SXUo7b6I? zbhYrf$^XS5gs9*sfzb#PgW&0W2*#v*YdoV7yJI(w=<7EoT(A3=pJ7zbLtH5`huWsnXU+c{Eha{|DYFusc@AF1t6dsLNCxb_kKEQ zfa}L%D1~R9y1xIK&7q-C3+5aO^dB<@%E0G@+&_JV$%U@-EQG9{GJFQ8TH?B|^#hEY z_oEC){VA)~7tt!vb6msRnvIFfOg6dLY;N80?eK_K;;ogULd2t4aeyLhFqp9Do~fjJ zlzh&!$;Tx+j_cV1kA_2^pe-$o)_*EFu9ldGrlYNOTLKF`J)G=VwO!UF4|9|5> z^5U_+aG0Eu+ZW$Kw98pxacUj}jkAm8(@&8oL&0g*AY)XoQ0^|yMR;+9nuaiJbppTq z#4nBbWdOev@C!-@jW>c~z?O^}oEj{ClNwuw8{yao?s7nO0;-?7)qo6(=!}4}D!g$g zX>6O7yY^BorX-RFUef$oOPvW%%97UiR(>(f+uHmCc7OMG%;iOHY+5WS*Y1-GL$)44 z62@9`i-f`ieY9aJ%VAegDvKz;V3(>E-?shzyN*Fx1_L%*;~dOVCUKJ=9k;I@9F z%ea!`&kax?FD~$M5mX(a#`uu&hX?qKL-kCf6Or4Z(IxsdmpLX>3^kC0Gr67z^$vJ0 z%oaFC_4Fbj4W72Ja_UW1MBW_uiYG8P(Vi%R*5QAyR z4Mn;qxCp=`-trTL$294RfCKt{fA);M%~l}Fe~R#&o37qps}tW zXm-O-rmVP_g{oxIkK@q?gIee^>~3RVn**(O*wYobA4ZFIf*(fj>LD;PJ?=!`P`I!K zwh7H4++xRWs=;>7NYR5!C^JUj05GR%?|9&ymN}GJ9X=(%20Tzgw%RhnlQoD;P&Y`M zZh7x=h=X1EVcD79LDUB(%k6%zgnjJQDUW@5yy2EP?Ps?2waKZyS#U+T0?Rq$+<0T84PO)8j?juG?duC z7|UukQtLGa-ve|XT!Y;_RY+?cDb)87Q4?CZzEpL21Q4VC5!n$4J$V>W%zqq@xEz59 zl&FY`xKn%K1Nng^xiqR*U<4M7Q??NV2Fo?%)rn^HLbc*CP*@yE3fHie6nIB*_EX}I zku7Tn?ez93=rWKhcP?B=eLOJR+oyS_-;R9Y@NPQ&%dq2<199V4fATf0jl7uoMb zYSpl2W9bl?SF1h>T7t(R{#{yvRWL_F>(lip@Gp*pmWHvKd4*_ODNQa~ieG|L@e=z` z9wJsX6j6>LVWONXP6f}mb4RKO>tFv19u3T3dqe4f9N_3Hq`p=W8iuSHZbUFGmV=wG zLVZU)QEtW3Dx>Dcw4-0=t?qTdhHGGrN4?1i^6F&vXGZzVv zmg_lgBNkIDp5LahO%6N3E|atOh<)e8R)wvGqv>ZF>-+~wN4>?`^8d6xdCt0%z5KuH zSJyS{uminUjv-sDoMo39X|Q0Exl2Z$ioOkMWU{Do6`6YYVPtV6XgMY_6+hJDk>J+- zBeVIV%32+&6&3YJh_mS2`>O*aMKBk!&J$H9nHpz&`93 z9~CcZih|lf^CE%@nUq?^Q=V!e=wI}y%i!KS>4?&ASc|5zlKbUM=hw(v7}TNrG~ci{ z-i>*!>u_&d`zEb(0t@~Ad^gA0M=I57a(dj%_9NG$L(2#2n|ABk0)4a(5!$jz{pPf7 zL$da5RGC|X)rtgHXaQOQZ|b!+20u6m0f5ZE5;R_gNjSYfW~H-1Gz z-)VZnRS)jbdi)e}UNjef)z30gqd?OcF?j|}e^o~|kxRhi4Rb+-5r;pw-n4@IG`4oe z57llp$M*kAv5v21wMM~^*8RvB6zhl~)!4U&VjT}$UtyHR$BT>QmKbFax558z>FBGX z8#m${lz@|F8yo<$0eJ-5MO_Ucfw-17YgdF;mE>KC?lawPW7i3uFQ*G!ts>fE|W zK9#)IAL>LdX)CAXiIwYVFuV1^i1pELbg?T&W;(7OUEkcU#mm#Kg~N^rP2r=YhsXz{ z^0C6{Z1n59<`fwD7)>Tz$J%oy)f{(Kd3^$xG{ z-iqf&1Qp5yUtg{>aZ7I5gEnkbn+L}pv?uG^Js@wh)+owSmz?C3sMEhW^WgtFSm(cG z9!Sfvha>YI9Fua~0)n8Ev_|GRTzPGN;JF@yRR61{Q!SKx zJ?K#QRCKk?1Fl1GXBafpWM0rKzlz~W1wK{;8ECbg5Lw^}VzweNk{35XAUA3s;w3_v z)2s4$lyDx-oscZih$c;Y6!vP?Vgn#zM1L(fHokoeIPB{+TeBTnpS9H7!eJuM za-Ha1^SX`txiWo8^X_SfQO%ED@Riv{vHR?};C{XqpeOD&27*BKr84m)U1%6dO#lXN zIuoM#>Vr*WL*9c;FORuiqv$RI4i-yOA%$I}A*gK}s38`SKp~cvYJedo)Wq>jGFLw? zYCtg8opTZJ9APvc1gUE+uu2lTr6GmQdJjBt*Q+pb2?@6CVQxvgv-_;W5{1{&n;HlEG;E zgHccm60_x9c%@+`ei~*1%}mEkOdPhvPWRPu1^6BeC5Jf7VDzOx=QaCMJTL=4<+{d8 zJ6>~M_V#5(=UH4HyAn^M`qurbPp-djn>O?(BA?j4_lh+66wKtkM&>1>0WKq z5INsSK&SLCpkv0Mzn?|eQQGnO=Q-xg6w=?o+|?-2F+0~81yG=K6m-f4{31p1^POM1 zM788We};NUYFKG*MyZ_<;Exqg2A4&_M|h@zMq4?0D%>GI5XHNe?kagn@{yu%NUW>L_tF zo4buxagR}d3z=ZV;JEk55PZPRp~MoAg9S)OI)XNPVDZT1;2{^hww{Ioy{7Dov<)0EZFeMH^z|cIUhdl9ILIE> zuOvw`znn)HSd;5YW}T69B<15b2QFA8OCKMC)prD3!T~<+4`20QHB|Vjd6X2l`u@R2 zO&X#{Zw}E6>JSv}D4CXOlSFV0B(52b#N4=_54)U^2tLm}4JlTu>^OG6>F4YQaG!P^ z+A2Q8>yvxF?V9|aalX%Nu0E0#EQh>TX$VuGkj6-O^HmcD5J#`X5;5ud)%xKT{? z3bSK#(Ozx-OXx#;d1Lg(G7qAWA%5U4TD*S#k<0t-PiPRTh|q_6Q)v0X{yls62}ZR@ z)D-E06FgLnFq~jh#Hy~&n~ra(ARb$gi)hUV<4l2@i;i)C^9=J+LrZb62swTZM2xsY za(QZl!YQXICF7u!GiZ9!f5` zK4Bjd+Nb?uAMhw>@YX(<_21)U?Cx0$9b1^w?uu%JG#QA9tSw5rt(W5zmy6V z&>SL<9R>OJznxpz-7MW0L}NIphS(XcvS}Rsk^Nlx@7>u87DX?LdJsb*<+p#su{1Yn zm*3vEeY>WK=eafUW-r#nO?sftMa8W3xfzvF3{%qpxdCP8YAAH_W9)dn2ld(eZZ-7z zX&&YQ$|05k#kXvg;hjl9{EXF*=PNW(9pX0u+@|O=vF^Irqz^~6SvcP_k_MO~ADHMI zphfh;a?mA~@ujWup)%~@rP14xR^E93a@fIVhZIR^-FV27&_mA;DT=K_)BbbA4#5}c zDtIQ-?rrwU@?WQ9`T6tm6VrH|$aoH-wb^lH#4|e^FLevx(lAeJbWYT7@AO_7 zKkvQ0sy(N0f?T6U=ZW?lbZdzHarjswd=s$jMK!d|90Hnj?a`hz3Q!-&n2hOo9uSRnWIy3>s7)@GQ(PeujkVBag} zP^o3P8kJHOB&F?K67b9Ng2^CqXAiPnT&+QUYh~@MG9yo{P`9m{F%k_=5<7 zFvdP|;{lze4K|A!QJPaV$T*yfv5@ctY_=xGco3*;&lC<1*!-G4c6e6@()X{go+A)+ z+LTv6t3!T@XBB+>XU-`N+0YWZ7Ej9Qy(1FufMNEx!h&sxFJn$N8#C23%)Juqy z6}X28jOJ*suCwN>Y)Ya|9x9;U_Uv}08<`f()+vf_tE5^z=GuSoUHtjDPks#9-i`~2 z@r6$m`G>drPedj9@5uhDRY#{q5KWIC1RrMb8NzDekV6+Z2n}@s*2x$Cp6(jK2#K%L zhzEJ%a>E1;>L`cmuhsZKw1&ZY0RvD2#2c8N2tSi}c@Ze5lGJWyt8ZG3yvm-@-yc4H z%KDHNt;s&tjsF+n8zaaQjO;bYuXiy>U*M|7k?E}FzZn@7S_(#H@FVh(1)4{OYU3DL zx|Cw0TL-6oSf$gt=d{O$LAv%sndmykOpg?tq4`Fr1x=QXf z*5FL6GJ>Oe5cSu`PaDi^^=+#WSJ~6=*uBs(94#$kS;*tsFt zxzfm8nWp;1#Bv@74gJh2xx%I5e33BE06)nnB%iNBE6?I&$<&TOGBY){G^k2?>5G zf8tBBqy*i$my_L?F+$)Jj^6PZPg0|_ z8Ap{whzl)A-(DR^6e^QR^YxhOLbmhm0_QV^$A@FKTJx*Fr-i0xLY>FNFlp%c++5RU zjYM7>vBx<|mAPGzFMY|@?%Wz0`Jj}QSo0FCZSS{Bp0FS+ihO&5{cz~QmjUDkiw(N@ z;og1KDy{IRUTh%QMRH~xp;;srvqTD|*GBAX95UuMs%5l{IaD;&V=@H%qwlMjn0{lL zvPoq$>BhQU3m=vUPw-APZYlH#=s8>sz~975#A_dd&Tpt^0u&Y{5_mQmJPz7=@Ll(; z2d4t;K5bq*yc^q{h0{7tD#PRx%r3~GmdzTX4)+B;j9swRQJc;o72u!fzcov8MNl3NGUakcJF|$XemKJd$$acSPy7XDdalH=%?d*_f@aB+S^S=lV92= z$Ov+0A8RC6u`Ne_R64LM?`qXKf56VBLr*N7>P*v2D4`(g1fx{%No`D1Sz- z4J+AD$3_h-D<%!rZb%?e1Jj^Tqy;&v7C5V-sAN^>7!}g0@?Th~z*$Lj`-M@Aw5d!E zXj!!g=advHa;Iz@@j+u(EtoDP(^HI-?3}qXz;|dC`!3;+MW2oG3T97-jj#o>t6x`N z9vrl&_r#a1%ISU8ChQFim^x=;0$IDSfL(m$&MB#F&ZusK6>^4b+Y2==cTe$=uOd)9}8u%~Rx)>l1IYR?;WdSkz>zY&l`*kirqK3fj_%gQ!!L zupV^eNI!0f7Zx}<@W11h%V?^2xW6SEFyP@-)X}384nMS@5gnX+8a60kK>&mkIErp; zcz{JuFevSQ31ZQKmKr#*vqF%zx`zWR#Z-b{IJtr-ZiEgkW%-J86au}`!MNaj=Ru1J ze_w9+X0h7gP;#n=lLbGAhn!&F#XY=q$L4e8O%!PR{aVs1!9lZoj+iGa$G4}ASm7Uf zYkM?lzpsF>3$NTcNyl1OPqG~)ByYv$KF#vB98yLNY_zI!{+QXTNQY(%ZF?pAMmd-j zlF(p|-w#4mbt%N&aTFublB0%dCm5I_4jZm|jFQmKbo%rhU1X{mEELrtys28gR}Rne z;z?f|(J=-qAuTbsWEJ&7)}qLZJHkxjdOfF10t-&DhJ`w42T|RwM$-W#{R2;US*eXT z>d`$&W?aCIS0|Ns#UjZyy*Q;QSIFmTBi6Z-~C3?s_%a9`32?cha@e1H=tAr z6@G8a$*8U$4D70mWsDl3)%ZnhmY?Vz6ap&y2f*R+{}^PITFPAk5a^uRsT9}damf!W znJ5=-22|Z$4c`N!Bl({=?26T4PnME0lADEW`u!CVlNI{f?`zKf=p&KcpABRIUPFJm zID|a%8bM>X5M>p@u!`0>fT1s!6%u))EJA`wBALIAeq&=lkeM5}9S7J^>4y&Lfry)? zK^$7q<|LGFeMe1k^SWMwejviCfRoseR|+By&m@Qp;RQ2nAk%bOUam^Iw>~_%YGiQl zdaj=y+-79X;K{U5T}#QAWbShwfQpfz_`BQ$tIZ?0Q7_Rm5|h4Q0z&nrR*AnTMgu*- z01k?g*h5g3!9TjppN$P zym&6U^3fDT;DN*1V6!?}vJ z&2MCQSTD%gy1>~w)!Dwl*`A981Z(m-?*hEy#ojX#QAh`h+lv4?UXaLcOQX4&PC3O+oHkodUbYkl?G~1LuTwRd^KEuqC1OAJ$hC zuddDe{cUbAP8}q6CyT9ZMboo5j{qmJN_m`E0GstX~n_96YfWM`SX;`JoyL`y4#WW=~ zu|^d;Ngh2Ooi18NvZYn(CG{i2vU_9aS{MJKoK*e;`>?5{Eq1O}yY_tNYKilOYcu!G znMyS13;|ZGwsZVEdKIX?{z6fL0%WL6#80U~G^=r8yhSgXN}*|(m$@ueYNL`ggMSV2SXF%mQOhpwl^hFmNPRtWCzFGDkDo$)7s4k z1*5Hd?OH_gj;l3hYF1`d?Aiit*N*pe{n|P(c$a_BHo1j0`&90O&kGgWy2)Bue)J)c zzRK<=owWVpYSE%URi=zSb0#^tQ3oPTpG5rXH|=UAcNf#7stF~#)i#VR?pnVe8JgXP z^UDFnKiewVg26*7SQe>PEruDuL3#Hs2}YuyFB9`LA=Ww$s^hs@&W9P<1X|5GQ27F9 z`Bc7HWmEH$4ZBb_$XTHPx*yj6zd*E;c*Ruc`nF0ywjW#^`FirI>&MT9z5v5-X?@VUoHUO0@F7rTRc@v{B~!#RBf&D6Ai0WJ_wZ(oGIEW z8Avo8rEN5lG$7;pB5{QL_ai{a=N~OW$aCxy4G4MBPYyUZ*oWcyyuxLt(?4*qe2pyM zIjn=_(zq;o#0Zub&6t4&g8c6WHRUc4O&O)^?l*k^^FvV;NQn? zbY#A0?7RRJPqZ+Uh~i^UENr^zH3uoPapSc&F9VYA)@l3>hmWmWkIkqaJ358LUhpN> zEw3r^O_lVXA}c3$jLLmQrhL>jpmDvY)PwA|i+bxGT^7m=*Pd)CD9eM0U;f{oNuaRM zwC7!1caDQumTOXA4pMRXORb^$v3D7AD}pjf47F> zd+6E#kEa*P9|QO`v?G^=aSzNjpyXj%6^TPXkbl@?B;{sStw(s$lf;GLRbYQte9E{AQs=&y$C1cA^5 z${Y?}nQEzRX^vRT{+8JmXZ=(z^}9n+(Ck*BRf1*adzTdbch(oFX7z*en;IUXD@1Ev zfCAV2j)v!P1TULI!2^qBqZDLIvvp}cpYy;StAe} ze=VN>>uc@1P_hl5H-6W(*()h#bjOY)SZ+sgTU1aD~{Elq7qK zXd{j;;;x?q_74M?vTqp5b@`B*LF}XFt9;m*U{YVYB#~D2SwYb-i5+P`s*VZn-*6qx z5ANT1Z7n-sRet zmY0iv=iibB{q0+v1&VJ$5^A2&K>|~l@&eDONj(r4jlPPyyyGEgCjY3v**^*;{eR~i zYgF_#R}`4E0l-WU zp|5#F~HgDHs0xjdZsW{2=3n%BU=(R3`G;Y#( z>{6L9nT9X!2{i2tsx=0}0uRHEjzfWH?$vbySdDRyTm;PN(#(X`3ewPVH67DdZ2`Q) zx#}l=@W?r16(1Puh6F=|BJmjknuf^9v^S2+1kjI~K>gaJ1a8_d!;0X?Ce7Z$gI*e!RVz~O+2oE5KS73OX#vUqy64779 zp!M;Q+5}!rQN4_x4iFT)l>J$)vJF;UAL$?X`{73Sq5~#P>eK##NSXVENYkz@-oc8} z-sJ*hv+;T=$(9@7ZZ_J{I?uwNA7FVRPc7NE(eL{@hned6(w69Y0sse_=#v;AaA_8M5twuMr6H7Rpdv;PdA#kiBUf+?WY^%5EmF%A(9?UL=fNJJPW7)^c4(KXX0H z>QZSN@*rlzyVK4^=@@eNj_VcNVeTrft)QDTq;r$kYHI zVPvB|x*;AN3FV?bI))pd4VS=8XC5yaRLd9Hs9)F*3sVy}#C8@Kw-sqqMP zAl@Wzsaj{_GoKPv^|0)O?-dLWoOtjHjTG0 zyZu3U;y@r^UaNN_?K(92=?zvrfqpb$=bt@{~p5TU8=crU;`yQY7 zhn_2lLCivz=_WdVal{9qBGnmnmmt**E6?K}4Mfk6K5y$H&N~mf&Zm<{O6}uad%hMe zzCqtoC))4ib31S9jR9fp!IhOY7_+}+gkfwt=MiJmZ~kR$q9=APib6#kZh&-W(e>(o zGsw|M{-O;N*ulKQHf$tM2cuKS$x}s3wS+K?u`)YhLsc@^mRX3~)%umVlY&g(iHA>m zxIZUh5+S%G77xL(-Ubej#WV0to;zjMG+xN=`PwRuv47|HOUHPc+ei&w#PXNwJ#WDE zZ(2KH#lumvJIF1uYzB#?FSj0@A}B@|Un+43pdWc30R~GSLd`6!P>p~W!$|@1>5%|j z3Ot3<;BOCn{8poB3;Y6S&tB1?aHBglj;=+I_o6R$6ANtGGPzB$Z_{K}qLvgB%$SqzWnuEhsV8c~2lX<%qp-REG04KF0 zoENUhz|-m|Sqkh!Y4zF8{ja}#=j9-8zfzS+jUOVi^XhwB{Wi|7QuU3b*oZZ!C$E0n zE)!dPm9N{6WEQDuy#p2FeP-{^Nc0Z3HEb!<*>~4<@3x;*Af1#i=q0vzYMqt4C9hwJ z=7?Evd!I za?l9th=sM;!mxhnnOJD#xZow%Q2DA_!!znrEU8Uy`_`f*b5|A&2)32_{R7AP+CY2aCel)lz3&UFS>5%H89J?ws3wqhx)`^^lX$H<}AR4E=-aC#ZSNpC1Ju zwhKNCXqG>xCj=kf%(h#{;`4!)j-oppCrFP;$8Su0Sx=7PJlCLg@pL+ntTEWYhldm* zQ4E}yr?rZ7L-IS@mmuv(VEf*sW3E5FzCY(?z30C|?wxx6oqVgLYEw64I(~(*1_I;f z9qafogs!0PxSj&Q9cV_@510k9|HffR9O;Lwga3`oHjF31FrFq4;;A#?i>YKi^8Qwh z`3gyp(v*`YU9CN7kdSPjU`2TisbtHK+RC9`G}r9LVMS{quO`{@r+cLV{eUwch4koy z&qr7~sEVN`uStuplu^b@8AhKkV!n)|B33Fy`?k=Lw`4+t_!BBuk! zNSCHPXgaCPwwTSELNe~xkfom0w^g4wppcBRFIy4*^-d&xstvN@i7$H)inLFRFdQS~ z^_7C*0S+)!mlH;^&Rz9E30lz+0abx4$FWD}H-li{)jQnDzgR*@0$7saSh5X=cnz;- zZG!sEU-3yU^xKb7!RyHlUPE*Cd`T+rf`U#F`*2tJ7_kpLk9oKnrPXjl6j22?&leKv z@1s%^L=i-!9GP5AI5i2vc?h;+@Hz1+I|k<=XXS}tHau(278)*EZE?3SYT0VuJ|xqT zB#vrgDps2`!pWXZjP{>D*V{?^B^@KaTMOuo?oC(z@|ByPnMbJdPIBMd?jV_ zh()I|9b_koJJcfT^EXJ7iDeIyxQz&dxO=x#$0ejj=T?&zOHzxoou#2lT%$(g=1R)x z%UFlv$KcTOfo(^D{@1!=nz>&s`bDUKzB_81M&NOXsfoKB$75>Zvg3GaT^!Gok4xpR zS0P91@WZ%byv`3Xs3wTnisQ95Ig>U>Lp4(So!~!)HN>L9Eh?4_Y#4#f=uH-9<;)qY z1^fVhPqAWj%(8-kp(97wcFIztmZa2M=RS=Nbal5?8qqRu&eX;~1@>D}oqVj=6rUcU z(&EA;vG1=XHTqZj{Eniq>vug?1Jy>z<1En`;HWC%t zBi!0qkjBV_wATsbpPZI!XEt|F<5Z)o0`6v!{sQ7K_yjmp0~KrKG<8cnLlpE&A+LJn zfESD!LIX%0*E?s=MwDh}itOWGYvJ#|V1kQIaIFND@1%WP3uD-Yo2XQDPCh9wA!N#! zX>bL=u4A|5IpD(%%);ufaf@cioE-}UPG=7$Z>!FmRePXF$w2`n!{I{}PF|OYTOYQP zy~Qj5&0DQT-Aqi0zO!mwK;Um`qe%<>0w#<-BJ8^sWIoBHeahe3yyIDAHEH#rF^jB3 zGx3O%%er$Mw-g-vTh5t*S9UBujpxUKOimFp@Hg$bG#H2^*QJ{&^YHml%VgC@RK?MF zpowFf06LRat;1X@wQ#LE7a}v_@BoUMoqZ3d(FXXzwQQr-0qJSbvN>OejMOVj@?=78 zuF%-AbX4{;#v-om%50aAQEpCLwrgG1(;{rzd^+>5@OM9@_A>#e=xWz`3?B0cX3gdL zm|v(RTlM|>JoL>n3DSR=he+(y=Fxz5_-`k`vmxVCGDS8dp8$CuH7wc}o{YG-qjrnv zx(RdQItg0_@sB8I@qE$Y(;>)rL@xuBxDXcPETaX9UF*kpP2kBB#jXhp5;*bz@f_&1 z^^(}-D%x%;o5k~Z?EYEt`QP2Ue;B(=EiIs}XDTO=iVm zSwzhpet69h9)QLS1*iX38I2RPEEGXr`i-lKipHNgh1(q&&_g)yrVl?LfpzOg29-I- zuD$uzZ$nBsq(gx|A^Vo?yb|5uW53lm8oQd>0(^p2D<|o}ylv;ko@U1m$?`su_Q@*J zyYr&;lGO6kauxn6lFna=Z`XMA6i`7bDu=y>bt#S5v`BX!vVSOYLTBa%h*^y&jJdYQ&#|XC5D#eJmR6?J*>x~cno@=}-Qx`K zUHANzv;XmWERX4xeIO`!;@tJIs7-y4b&Y&@XyK<>vV8x2UetDW_S|JMc?Wb|{41Lv zcfpR91|RZu&&XY`N@%AbZKF2&KTIN$8_Q}SeL?a0e@sHJ+AAjE?K+YmO^9Mm-*`LF zcikUrPT%&rFK6|ikRKF0d0t*D@Q_`sRpdSAOJ}nr`QCeE2q5M88(i}z_U6MB6!lV0CN+U3^k zo0;_bE>s28iwp|+5BxP=8={k1QX4|ghBs+X9w5$ws;%J8h#iJzZRA)WeghZBIzi+l zLBgWmo!u^4C^*8UoqeCVTz@Y6Y`CxQ#^R06UhKh~1A)QWBc)9=42d3c&V>cbujaTa zQ!AybrerVYmE)TNjhlmUMnI$LqejMyyf4_$dOdIx9;cUlQN4VGECk>Igu+lUSPjwM zK!}++>ldB`ZL|so9-hHXU1-uFmV_jI^wewFXTyAb^IRKA<-Sj^*Pfjhb}Pgh#J>NN zec6lMpLsAiaO_ATPdvY1`LzjzhCMGu>8ibvukYAIXj2-X;21~FU-kZrv17EfTbYOj#JVb}uIE}p7o+#d_d zPc}dTF+usMCAaRlQDHe~DkGxow0!e~<1vy2who1_sU*5g~Y^8-qqo4Dj2 zSbS3;=;ctMA<0k&PEdm`xpnZ%RD{7hh?9vLQC?6>M5<9Wc7hBH-ZV8?=x{g+2qSf5 zKp>U$>;aYmKFwWeJhER?#&D$vrOcKS>MC;RcfsBv<9>N{{c6SAcmA(2Z(Iru+s__H zJ^kQN>5bKf!KI9}(cCBhZDYev8 zp&_qfN2Tl7?G(!(HPPKu6mD`Zs7y!Ra~?=pA&3F;8G#2#VWZ0+NGnuQy-(I~~tx6L0(lExEBHqmaYeO#)H7Iv-7jcZcMNSdbe#u zHoZlxFE{Q$$;U)-zT9C(m1;AR%f^xIkG6MQH=a~#H>X`YUWLE-yW(GLt+0~`s7{e! z$VWGw+gJ{Ta(#nuuzjak$(M7vLi<%df^Z#H3gLgI$$TG zk<;N28G0|UgG{N3Ci_8`&d5YJVsNUjMbrW+BYxyM%fLEHE7PD1N(&p}Zn3ZK;AIcz z<(hLQJZBh;$XEBbsWy?pn~T<= zD2`;~`5U;HC>r_b1{_}v)l+`;N$K&FA?OxXvZ?eo>(>_fWbMf7Z40NNrg!bMDJy93 zci7OW4>sF5B2j?C~}F@tvTcZ?;M(uN>vyBe`gr@V$bRJ@A^!LLeU`D`!sMMKY8SD-MWQzmxyO;Fls@>-)vVRD zS0q~SQ;+WC;5GJe9p+HC__nkUJ>O$2O-;3{OdY~>Tg|lc2>t|Mgq~rhXir|*CM7-G zfnx=AP~i2Lhv?-Bp+}XTgQ)Vomv!`oSu4)>4^Toj{l!0 zcFdNOLnV3TleOhHBDa+`dB5)Q&Hd|-n9eEd<>FgPHJqSQi1G2(d**@j-$Y)7EX+Bz!2dM{Ehq#aj~FsJ#7@Oa6B5|FJvez+nX=eN3H`QQKqPy1Vy_w? zK=_9-v6&5seBar+6*)ZR;&aNG6vo>PdSW~f*b1m;R@%_*FbX0jN~dcNq+Tvc1QC=& z*Ozi|gSRU8w-ai1Tc|$b<7%j-9M`I1v@b^?htH@@lX$DUiC8A;T8ZB5NnD4>;6S4c zl|q~h9z$%SC%3&H=)Y;vyyL-7e7CbFn_l~Cicc^}>rkbh)oUvW+I5w9$&clQV^@3} z7%+dq2Z?lk?v%k(Bsyy-dFjM3iH?1L`t#ux8+RSH_@g0`^5fg2Z#I>t4Ii3C(C|fI zUCoqbptxjP>!YX)>8NjWx&z7>Sd66+(r`%gkKU4ZimEivVTfeRGEU%WNWGR zD`s!ay^Y_oR7TJ*>KyUkK@Gn{NEBh`=>foy-&jjvtfQi$3mi$ZrTwzGZ!G=^+Qm+G zjf7dw;dexO#(@|U+20TrZHKzbzh7$du+mXq*b~^b4ol|d&G>i4>~p;8FT69*b->3g2z@n< z9m&?vPTj+|B6e8J!&-WJcB$Ae%7o1Le)`17*sIYYv)G9a+twaEGX8S&4m(yKeP`mQ zd~S#(k>SchgfuE|a>dF7oc|Z0F|ZSinx-{+KE)?;%GCy|xdmdnt@I7zTf$W-fTwGU+PglS(0D^?ju-G~?=Txjbd#%Zway&S zdmOdR?B8n~EgF(bC-L1aQu>k>t;wc&(=Q$k-tN%%2PfC6zUs9%gslYmsT zTM+mea%_-kgQiT-KPr}FAaGDE-Edoxhl=oozlQj5P<{);ThId9m)wFChs1R3@ef~W(BW+Vt1gxp}mo%ua_FW|!kYwHZ3H}h35tN(k88jOz} zhS%1obJls;{Ey9@{;HSa`!<~_Wlv*=lvTRil1aUmt$k%lr8= zyj!=MpN~?b7JiT+3-?nc3+|77bDAtafZ~5OvhjMhd{Evur`6(pGTlGB!E)zcd)mvx z+ZWYu+L_WG&DuBWh96Bk@VoBK#a*vf^j-@%AG)<@+q5fwv;^h$wJfDWrM=kUAPdY$ z6*0bIM}?qDK;zwXlDuo}*MxL=i~6Bo>r0_zA^1n}pZFftzlYRKNh^#YiSHpFnMfr0 z8_EtGCiUNt_OjeCHl1uD3-HY!E!oniN)jZHw_vASCT3!tdrgzZP0i+0;HO{+-9!tO zd~_;{wdBxEdThK$)#l8P^RcmXxzt&C4^i%I)j&f{Ws_6T_tAZ*3o zB;dkvV5^F1E-(+1c^Mb7lvW$vaKgmEP9L|H<^J935BzwUa$tIk`n#7ig`BH9o6_E{ zD^e`x_!Qjr4RjGswro)yhU!!%`q$;IniMWTwIp-K4MeU1h;hoAQX$fCl7gIp2ntAb z;)NYdEcHmBJ;t7DhtLixp>eMG8XUN4X}bv7!O=p-N>GqUjz$!(C_?yS=WJBaD_6QPo=J0v1hu-^o%?b!1 z8Kqc3FzR)EQE6^}>D;FzF~0^`J?-Ufr=M8m>qp2ZGJR>}wwI?tSAx*9_6PSb4ND{e z>r~EiT=fw+9nW}1?jf!iCa%fiS{8hS^LUf7Y+6o_1BQRBBw)c?^eE)rPEm*m^*0FA zRrEyxV~+c(^y8jRKqNN9Z4&+(7!MB?LDdC51jq_WaG!Y5519yF2S$f}KB}$+9NJAAk(la8=-G9GkEw&^R7Q&Rg#C$d+^> z08}`OtTm4gM=jA-$*IAuTg{l^KXl|gHf~eD$3-M3_xK2TTIIsZN1wNtcdk)_uYKDl zX`$=&$k2w8_lIGG?pQ)cv9-kY3vvXcK6|nWv9Ukd0V=)Or|(KH!nsXK@g1*FtXwiA z8<)A=QQetKy(nC2<2k3%6xc_VEdW*2vQ^VLk33*3|v78xFYEb*Hrh4o2*n5 zf$Gq+>ZQ5O;COMLa8ZECY9LAYU3^Mz)w0?b%0jf4Jmm)k>Wo(que1fXh=czYY&;ji zD2ssCQQ|ey=3}+*$3l@6Lyr|h$Lr(*wY+#wt?2$pP=2M7KcS{-Pt$nVlxWqW)4Nv6 zD--n1IfSu;@4MY4UgQjD2uKNDy9F zgYbfe(1sBIBPwuf43DS%!YbmjLlYfM*nV#>-{~WJ=h&v_Z2Wd;=%L76;d>&tH6ks3 z9lX3s|Nd)FR3-x>+3s-Civ~8SJ9xZA<1d${($YUSkri`R5V*i8jlP&b>A~GA<{&e$ z5l&?wPGu>a%S7eAH60g6IF$Q~x#$xe=7l&3=kgg@X^4!qrC8yC;B|`# z$Agl9l_Vi;I4Of1@AqukTV)P}y<0|2B}IqtCfzBM?-lrA^reoB9U*PKU6(>>n(Gg8 zGj%c&ir2C-!KCyQp06gwY@==HHsVc|=We6r5~Xcq{%mrpT$}&MHHpOPklIvaU?U<^ z=2;1mmXT_Z0oyW#$a~Hde94BuGC(5GNi>bcDRDY7g`;6@L)>b=F@he1mf*m2d3i7r z7DwQD%0!uaOgS@7u6DJwe5J#R%)$b+Y<|GTN8C9-)K%D#d=YSh{nAs~B>&m1H#xFr zf2iwbAnmh~9-v2FRmcUdIR>HX5RdDPMzmdN17>YXh17iysy$ff#r9O}2)e|omT>41 z1|*alKnO8~d5Ia~Kq0CQ6onZY94=gC@I%!aae}bn*#7_#m1-!atwt+6$P1H3WId2Q z)ETJ{SqP3|%jEtwqzVJ9l$(2%{)Bz)oH&2bFG)W;@IT{O5;i;hUeevZ2fvH)qQz}K zXKx>*G>mrdcBT8QZl8508CQCK)@xSJ&w3(NkJ#?Fg`WB|cJoc}%u=We>~BC<1#i)n z16@xQ`hcFZBW`qOg=+B^ZLpAYZg3X!`B}IS5=@eN&A8)*XCB(E5?+T`>VsR>+Wda7 zcR-oKI4`Ab=V=e7|IsYDFrgZ$c*Czkp){iGU&pdXAG$Ph?mJ~&Bk6{LY}dEvNhIl2 zj$Ywt$t^?%55OKezzJr!E4e!(xQ?u8i-Hh!9w~$|R2j675|JwKbQ>Dca{Uk|P_O}{ zd|`Ku+P5ZEv41$cAOJ+_m@1wp@!}S`#wQX-X}PCm&m^9`_HY8i`z;!#r>TVRi>d z!V3&IC)mLEVOK|%+^SL9hY|&=D#Lpu=T|Oyo5%B4FS*5bTZJ~4nUMhjfoyl-4-i59 zsAR_lrp@yKj|)yn3N5ZTTCtYSqj(KHjuaN?PLp^3$yKc;lT# zvo^w%elJm}lToh=%;Z{`^?P``?oN}kr^`uGU#2jKo2)oM<+VAaMuQ$r+f}VxgVf1n zqv@WxO_m>&VMjMw@g|$!yc4BeTeaslaqpH7VS2WM9#N(EuJn^qj5CplQ{m8}+93E! zV^ssRCDlZP!Mt`oo1If8ljnyP) zY!Ih^T%i}>YImQXB#?`z%5+)Wl+_QDsqSVh-tqXN6L2HyPeZVQypEr7?rM_Rpepe81=0!#c`I!d)1o8_Vjc1k; z2~9CEO*?eU1QDW)+zYwh!8&yskL^FN=E+6<#<1*#ZFAZ#2`2O8r)(=Fv)Fvp_*zJ& zyM87gu%_gFbnvE@ndtL71(`q&)Y==WhHAC;LQAYf6Y}cenWePk$5N^Jfqo^%Gh!X> zCAX+ND1scpOTtT@B07e11K^J6l+J54#Ys>aQ8*T$N*wC!y{Vp9aCt;P0Q?P0=6%%P zM{(Kf^j+2Yy-DYm=2fFU)%*0xkRqG*+i-!<+8gZHVYQq zk>cN!CCWzh1U_wPNf+YhS_`68iH#;o0NyP@+HMJXjy*}Mg73^L{>>Vvyo=bt7|Tk! zmVbxv;358k7UMe(We>g+XPHG`5#O2P{?59R@94pR;yZ6+Y}b?>_)dal z4P7a|Q{MfZZYAF-85?$~DYTOo$`kBSB~-@qs+`IR25f|91Gp1-O6rqpWw+p(K=_9- z3Ibfn5Uu1yU9J=(|3T9>m@VQArGWp0*u!{VWw#rbV?S;`BhQqeLw06K)Mvrirt=&5 zt$w}WTdV&T_UGQEC(*Drc=b;kC+|Ycnyd`$KK+eY|A2|IBF`wF_NppNv0+CW6PbO< z?l!|^%4afN`sfwM>bo;fOMBLaWzr$ZFpki2M-uoTqY5kHj#2%Yo+-3=i8#_QC2rnE*tNX$wu1LHU8x5^ejES z;-qU5<^gY<^ang|5^za4{fueN8b6b+7M)3uYSJ;M@abyMV!Sa%FH2o;2riB-90TW* z*Xc;y{5_}?Y}0_j@R6o-#sF^lj8^~FRqms)1qq}lsU*)wj#5L;^;-hPKZvs*je05# z(FNJss4=H2FrIRP{nU2zeLVnxV-nC51jYyrSG7g*(WwscgKM|-4T}W;1Sh|`;Ymfl zd`OezLA$|T;M9OX z8nX5GmCLSGn)+zbl20op``-cC#c!GPZF!ru+4QElYWQEvtcq<|kJjsFm$u5uNgYSc zaMFlPtO(5{)K?F0LZpFfZTNbk@cT9DMu~1&Jb50eUN`AOgYWiqdIS*I@t)IDg^d z>`_a4ebut^v_&x^<~-GTZ>K7Y=1Z%GO^u%U#Ry)$ZUsK$lJ`TIo-up|QHcJwd2)pO zHv9p&B*=s@+a!Uk;UQGP9IryRwrmkFKpI^Dp=7cn6Vf`w3Q-XYMQOm3UUoltY54fv zsVsD-HZhI;`^xaCg{j(iJJ=>R@cTwvFW$WLTcf>~Zo*pV`P3GH$nvqaA+WT@*p}6| z)!GaX?jcVt_sifa=o2peN1lM+ra*?===<$-_g9$fF=H6=z;_FSZu<}4kD;8L~wqK3P>M-AvQ?2 zWURz8NE{)_%eJ}I=G&WFZ|1Wpj*1<}O}XkB!lD@DSwzdj4SBSxTwiW0OTF|zulkhX zuWmlQPh{}3 zk|WeHeZhjNTkfE-dZDHoAB3U8_+SX~0`$I!9Iyp*9SZOSb08N4Gtk2b>>r!Yjn1Xp zE3R(_g@wZS4~VpRaYxd|pwyCct)FjRYu4CL$_0L&^ubo%srW>ZwD2%%cj_aVWkkQ1 z%`ZL84wp=W2F_^T@@~+U7~~p-nX+7k7-{TFFhgVY7Ne$*WD^z%OFyZ3Akk(H2O?m0 zhP%iZfpbLNUR+q=y9iIs=Yk%gewMU-RE=I!f`dL!`gCj2)}2Y)gW`UFYt*POJ$IC+ zLs*~Q-LZ7q&Y+{`I1fpB5RX&BF6>8eN@Oj6TMgGMRN_7wdFBGh#%=_D8@sV2zzL1Q z_)P_96cvmQmSeV@U#g*a5Cnv>LJ)ZTFwI#Qh_fi zmG>hQ5rFIa#zoG2Llf+sAs8!AmCttOIXDSC^Ug#afboj z!h{|-wSyHwt4^`Rm6QJ!ytNG7KHUWt<#U0-jxJy$tiC$-Ar&ZF{^}T_*X+$wtA#di zK7B^upx2UK&3bx3t0BRc>2d<~K0h%2t6_P^bmv!nNb838>+pk=UR@vd5m0-Nv;2zM zO5&x_=qsORyH5lGelF*E2TV2p<|5fD&FS<2TLln`Xv`O88L8fQ^q9 zHM3Guh=&%7n=lYG0$@xjab=rTA|a+;NMTZ`B&p_B5{9na5KB@{rI5nx(m?{0C=+3U zq%aXAa@bbz6Ga(P5}`Mr4kcKrvqBmL8m2{8i>7!(VTQ@J&pI}cODzCuI2)$~_kB5W zZ=kbzt6mfQ<#4-P%-gqYJs}{Ng*1HMsm%Ixa^a8s)_~64C%Hnk;;4W9984)}(I?y< z^xM8;??k%jK#pd$_nyb$O}yFRZhc^7Sg@kbfxKF*MQ7fsLH9;wySz1YQ#*-Y+}^bt zZ`Po1Yrn4NUO2^LXVhA`QGc*?zUhs?`M29wIXyuW$(B6%IkXJ|$l3h}U}JwXt|@ zE?(P<*Dm6&p}2aiUDXSz3yfhdj1Dl$7y zs;E9Y4=>ZF;icIuyew&rmj#RQvf??sG+2%oXWhoMdX!reb|kM&30jE|@zgOQ+-gR_ z7&PQ;8{jidsF5hxOn(Lyxb$1%2I;1c5D208pmc9gNI{ir1y!;NtDAmXH>6<1wSpnn z3b5&V*9!AXZ5joGt`z_V001D@IHa(N=~sQQV^jpaRsaw-4k_q+t)S<%g083F?R7KVodQ|-u~ij06>pqsiVW)!9q2KS;p)t-?VZO!aX{I1x2{WM6kdJ)}`~b5NG|=z9k=wtvn`jOr^1h@b0jUsx&$R{|=3= zJc@lXcq->Jdynlqi}NY{wKsV>lA|(fCY9~lth2;g)`w}g<1^#xx8uBBBi2S+(5e^f z(24iqwJMZcWVJ7i8+S>2$DYW_PTaqLqV~i7lB4^TPE8zAi;3dD`!&aj|D?0b-Y&;a z;@XELvmTU0-k+tvK~%N%bbspj+;0M;=rYg;C^`-im8eyUs5f0yP7W#H(55>K|4dvj3wB|iuetz{1ewpW0tW~pDkE~0VE+Jrv%d)+F$x|gy zNmu{K%Ztfe)O^l{WwW!Z*RS5EPJ^B;dmM1Ll%3lUcI){8;`S^l4Vp|3)z4cyimtBk zj>mcVpCLOGMwu+PJc@RxO2J~Iz;8d(FI_eYj8r4V8--n>e+8LvN%quH9!1+>(ssWV z!#ekKIVzUVd&YItd1&73wTkjWo2{(RA{N`>nethzNp&`LBj@vn&U&`aXsW9)3M&qj z!V$4iO=n@kmS!x~=kirZ&!V76sdQOb2&$^&rf0KdM+RJpXQQKePS&Ogq;W)h?jpJ@ z9n?0~)>IAEHI7iyF!hHB8@TZh10H0|HhWTFgNrsl4GAB{4aXUVBTXeEm`8wVvGnJb z284vGi=SH(5FA!mmUo_v^p9?nqg`^r3#;}Oz*_Obs=Wp5Ke=Nh=}1A)DIzm_sNuT50ur~O7YQF&g7?&n*dDXUqAC%>ABLhXW@qiAKCWC49zmbHeaE>? z0f~viX1q2;d(gOLTt>~r7!xcQiMqStCXc)t%O{Ke0u3q39ZIW&KZ?gq7X4P zI8F#2NZT<99t9|dX-Weo8jXYz5+GpA%0Y!Hfw-W~BI5-H5ESh!{aJd$d8t_&**@!| zsS^(OwL5>EXLtO5?A7zyRsZg-x=!);@7lV{v_^ido^C$W;n%W3(-Bgi{evnj?L2ZT z1c5f|`kx)#b;G9PTzS|keZIU&6NHv@slo|C+w=@`AvFF-U5F|GHRcO z>)GVMu1GK31=<_WDs>K9)K2um6{*FJEOTll8LLgY7eMPEZ%$4$;EUiHD)9ib7Iag? z3Z0W74T=nS{oe-9zOd@r`@O zq22JFqqk+5@hh!a7VE0G56I&>S83Ie@##G}4g&3#>@#@RRzL(|WFReF3Ky^`rf<+BKNH#|1zql60u8d%L6a^(l152~jQUKo+lAGukWHeI)#V8yS6gK#} zLAz0Y6ZNwbpHF$dQc)%MoiM)cp?fsTY#YZ;od5UVmwB-}i*1F&k=gukhtJ{;XWG`P zDJC6E*e{Ir80x3Wf<(k7%Q}3BokpR@!(-TNhAKw+43{?x;hU<5enKGUc!+Ige}@|2 z{ZrgolSUDqA)Iby^+d`N1!^a(u&UN7`TGbf&0@Aq5E9Q~$ry9%JnVrHt3KMDC?P;J*s^FK=4B zQ9F~yBa@^N9WEaL?a2e}`9j`h3xs6VRE;Z}KgNcBAyvc{m=03?$FN zQ~l6|Nj%j;#4Jnj-F+L=g-rOk$cN6dxr_B@VeT6Z@3heV{)f-tp(PKrsq7%XiGA(H zzUT=7=%w)Z6NJ)lY|?l_>Gok8Kn^WEPPOZAl8wCJsy|ZNgi#x7K>Cn)*cUFCSXl2Tel~yNm$5?H3^H2@xd^y ziv*B#DA_6X!K%grQg6yDOV2_)&Um)vEQF*=&t?WgMqjsNJS>;}sHC!eOm;81``xds zX7dhG%ZC$WRQ6=HTAttJ;n;O3Jci~9eim+Q*}QQe<{C8Encllc#H)%65H1g&6R-XB z(Zz2g=H8hX&|}Dmm0|Pc6>fI+J6Zneh-54A3>q)Vs6gW&oa>K$cE>s#)SrP!mw=?P zPXp5nV0O0pY4BtysFWxs=W0v$746ejrb?em7fW(U>|nMaa14*U9X^1uYN#pZ)xyC< z1Uo^Fmmw)nb@`VOZ!UB@gcKK2N^0P?FiRe4l0H&O!bqf|n!-S_FsQ^3>ja6Uyi>Ey z2!(##%Xq^*~Bv~#H{*At>P1KEq zg+qs`IK0Q8O7J!!E!AMX!W~LSnjoz@g|3D0Z}axCN2+iq%Cjipk*PWd%tRE#H_eMK zu~*;u&>8Hp9V^lHog2E)6?Oau+pl#2-YIWvx!X@GAIK3J)3?)he@60QuBWQpSAGfp zxD?Q6Nz`zFmBrV~K!}9K(hXcE(a)@EAP2)_Mh3l$c4XSoT3(2N;8h^iTy!YlB8ZGQ zvQ**Fp0D%Dt-0De6vx=CXx-Ibp^hr5V`TqLr=7~k{&Nl|Mz!2F>pcg59&LHzStx5^ zm)C0dcjjrQIUh3zE!0bHH66E5R^B-9tQY<{fIo6Qk+m(0{5im_z~wyx%LO)MYBfNw z?i65wIvJTv9Efh27us@arY`0|o~YLZuzv5vHvvwq==0CN9|PWY=l06JcXEeTLgNKOHwlk3&byE@Cg@Nr#S0#iK*;)JGjAmW6A z6^hEm1YsKmv4b0OFhiXiK3w-4MSFwKs#|~bJb?JYPff=ykd+V6$5mkXK0w$X6{-ZS5ZGX# zhJ{%9c0ed@P->NnF4U?+yph^YaHX&>>6;(5CCiI0{luPKen(0#`3iLSODRKtCMwsh zfIQq+WkMd-A8nzNf=n6fFzBRMp;#0sjQHTYYRo3Mm_vVaiZ>i`xFBh8%m#3j8k7#R zPg$MIcWO=4%I-PUs>Yp5SkxO*vxgH{QyvXAF~hBDA7N?wDy8c9Q9(qWc+?Z`yZK`4 zA^|oZ%i~i^?q4c83*O^}@mBogg17YXnJh5&5odz2;mkm2tWXB*6lw$hM+_QUqXY+( zniZ^>eY!iZ=u%Oa8PL0O-M_N7+TZMpWtu9l&;n+$XWe()i?AoppOD=Ou#zCu`BwfL z>XgQ$b5i^8;Zdr zui|ME;-$pCEoW+=lQ8w5A4AdQJ3eUb$4>#aMfzV^xR*tqF{UU5Dlr~ibV0J&;Y0qX z{n2JPpBe*Pr5F4(UiHvV!T9O$82{P+=xuz{|92YJhrTM~UkN{(l`gS9;)_V0#=o0I z?KOJ`z`8Sg*tv*(rKJPLq3m~@bH3-U+zwPX2^Dj>pa%K|o+#p|i2)?lpmYwxJPJ*v zPSxN>q$8$=;&&*$BPu!*WCHqwu9+jp2lj*8v$Zetp8uq8 zD6FXsir)S@!Hc?=`%e=4dhPl^##ei`<$@g7vC9|VWGC#(TL-!~ zXfS%Z#Pi-OG;YH!oQgksc9nwLxSs~vs{T5|LpO%zk2YceyR*hc30Xs=byw0708uF{ z)qSHn`%#DKdF@krZjdKj@}P4}Mca5a(NqP)LR(Ydy-1;>mr{gf$zS+X06UY8LBfYw z_YVf8E|u4>7{x)6HHnh=p`00#M>L@AumjYhDs`#wQRm954*wrs zue7!DnwKDc4DLkY$JTo9?ez2i@^Fl0wk@C4z*`4xFbrl?8VT51FQoOb?w00g} zl2$UitY5E`Kxt2z7hExay!qNmzv6&Z?S}+9*<|(;>$tYQbnYxmKhz{hSvU0K-(~r; zH`xUTe{NQP>`Q{KN*G0v6*g03g+)Q~k$0O*m<#-vFp45CPr5b(Oem&6)ISrkxroE` zrS_9Q3ZLQOg_4WF5Xe4}*T`rhGIu~S$zUQ+5lUg`=@a zoTg>o$_b7c4(yP=^LZk> zAfeAB3If#P7Dy-DKkUN|2q0k_b8*khn3d?EB;pSh5r0T~;a=I|iKJ9jgxA7seF62t zX36+`p4Ly5UBW;KDHc}}uZFbvM9yYrM5;rykVg=z zr5ONxsix>5I&aW@{3AV%f8v%>xjW3gI+c%|D1JW2YMzHV$xGAa-B_8!25XV2nu~?u z8s{wbZiv`KN=y+mJExXRDa+;+#YzKG-RC~#4YfJvce6Lx-sR`D z)xhs(;2O+@1wijs)G`5pK7mWHP!%O0%y05*(skx*t;< z`{BHwXc87Ev|X_d_uLNYJN;=*Kt-6`!ep>0hXh^ zQ=)wpqupk)Wm&D?S(bLKR-Iu>V|W4W0RPETpjV~A(`gf)GyPPAG1^$C*a1#O;AJWV z0LpGL81D70EwEsT=87zt>4-CqpCHowv6Mr9*)2Ig)wn8PCVM?5;6= zhwbPnG1uAztxnqhxzS449&O!)#|*P{$AnGI{imT(x_{1q@AmI5t+gd zDy}V_Elcx%UR6=M{i00vlm4FHlt7$Jv~9Gim^`=^TH}j%q%#w?c-kaPB__5({!#_5 z08xJoHG;_E9$ac$r+9gjs6$MKu885pq0}a99LL5~tsqreo2tE9?YYHgK89c8?>{5% z#>RaxWcz?3*nH0aUS8s#9y{?aKdHQZ$u4EOk=jRgt~+uw$hisVc3sAlqxobx*Cym# zHAokCA?up7a5YkVI|I?pG3wn&coA%o=#Wq~vVJ7k$ehU4kr2=OMvlcNi_#3y&g!Is zYsxGKLlBm*W3MDEm6XwLezN*vw=jDWYw+va-#dSk`i>~-$!4Z#Yau}o>heP^w&3Iq z8B*}}>MV#gu*+YcWJAWv4(;9ZHFJ6lmHfU0Pk!6uv7g8JQ4MFDpzd`8Pmc5QWDyf; z;HN>)1b!Nt97TSbL@+fX6@#Lq@QOXNv`{7(Wx5nic#KH? zV*y&xms-Mpt)O9S?c2xe#iR_Lkr+HwN^AV?gox6&TR98(Vbfx^z)HI$OI_ z#I7*=?lV2v18pQ@m;AJqjF0HvvOA;*l4|VlVy|KF!YzO;Pwy)ff@lc+E?RI_MCutE z_wAJs*ht-185bGwqK#QWyitM43=BwTW-};hMJ75*NDRt?9m6*#KtWapWAjMKywkb3 z$;Eem3IG(YYh^oV5u~H>@eOVaT|wLC+t}}7mwOLg*A)ym%$vr3h0Rn6!hWMrom(;G z5LotUNTcFRjYOaSb~n9(su|s_HxXnL*YMGcICtsAD-kt|YT1?WEhD$+*RVK~%io^W z_Oc$;%g?q;8Mua!JGJfdOIUFLI@(A=rV!Z$1a%7of1+F=c3`k}3ymbwo-Bk?fSW*m zU3;NkQ9W(RrJ{Z8uYJYZcGeHdevWhrSQ6kVk^aFN0s*&vYJ`9ru{*=JDFF5uVjzaW zM9i>wff{JTi6b}1bmLB#^0WzfWCJ5Ne|k9O9+H6c$uzxT!X1suuBNGCS4vil!!~BD$ODkrdY8B}p@5d`?N$gwt=RW5y0H(V<#nSKc4)`6OQIib61H=+wx>1W) z^|y)QyDsr&)-A}unpVmiu{z<>H-$HqI+jrj&g)pt<;vhWPUoP4;laf&_t|sb_&I-R z*Iia-+*x+)8~In>v-9xPuE-mUlK6oRts1s$RF7>`xwLo1kwK{oyA9vkh4W)CHfbq! zYqJBOBAyulndTr)&ma9>ZKfW(7MrIzJlr*!j(bwV1^Xc7VN+eJK=|&@B=>` zK4d>_C;YH)xAXC4(5=!Wp0Ax5isy&Ev$1Z4alc9wmP~;and1$0`=EvNWsq!|~ zya8(tg>E97x?x%1U z6VSJJ#Z!ZAPpbi5jCd0Cef-tL?U3374ug;as%a7QDDdgYTj&5DoHjk(dfCHLoRUm}eMQj(g1!P8& zzzNRV`>jh+G1{kBw3_?0S5tYt#v2Bq+}^0JUp3(WDwlS>{)Nn-MQ9`47x{>8t$Tv= zuB6fSy?b{df-7A!ONM7Jx{Cr_Fo zjXjxiD{a9OK)`PU{J2F&ApWOuRri!aggL6h{=x9TNUk2??!uU`VR z)3Ubb)Bs^W(D|^)XESil7dK^#qk>eH2sOVjva-&A-iG#Beq;T}VCGjJZ|Yq?(t!Lx zQRn!r_CsGdldb^K#Jn9fSj>W;HS!A5x!_31I!iwCuwc$@xK){MWzfjt&f2_GHac+F zsBz2Vij!EYTJai4e4}|VM|T)>H-#_!(y1X2pv9B;IxyKeg={U008G$C+!@i zUBDMf_d}5<(*2yPosR$jO0LORO?*A6G?)O6Qz(GCODvlLi9{q3m%}NN2vt=9B$yD7 zFS z@3l_~13I<)A@5?J`8>Gdn%*y;V(@XEK=Y;e=507*%^7*tCRG@-OlI#tpr4w;;fwJjhAgW_Q6PL32oU5IRI)0Gwem5x~)%`=x zH3SdEv0De2`@Hrpt!2M;Xf}ai_ias4pf=cxEXb38%q716dAu1#y=D{r6Vkd~Q42~956D6d=t`*>HMMgjY z%J{{Ix~jxIA>N1sG0VL2i(Ah0x?Fqvo__70Ecf!Z+IV*nYxgA4*WmIbw}sf2s$ibD zGrsZ*7RAaUh8SoiAY$A<1d0lEG!PI8B!~nOMDWw$LxHCQ2_k{p0|60}u?%!b?>uCI z2u>AD(%7#M==jX{FJqglelQ7jys*0AD^D%BvCrb8^PuKoIbe)%2c8+IRCL2V@xdV9OIY=7&9j{;PfbXivlm4*8uX4zbE_ zyPs9ICemPP3ar9m1q|_CJL1#usbhEi1kPn28WQuTA#l%wz#VD`+|s3UBylr{+;0*8 zt&g6sQ|0}zyJp!Is#4Xbh|WV$GU{ep?0ceBh;dGaq(g>rE>q(gDyHBY*!=8D znXk6)+Nj;rzKfU2uqwBsrfi9`M{e7l-!#jmBs@H}wGa{0sqYSH>V6>2KAaTjT68?q zKg^L`k8{?9g(sk;N)7pa{`$d+XRmQ-*mtus{$Rn1eDSq5Q|^Oa40^ritUp&?Q|#K6 zek92t!$qdp%MA80Nisacroe4YHSQ0I?}K5%c3O1?i+j^@b1jB5;~J~BV6u)_PTCpZ z)w6-V-rFb;*@(}4^Fq(dwHH1Xp{dOmSF$upvp?!xAIIv0kwf6`T_uj~F$Q4a@5WJE zEFoY3Cf`1ZwkVtgYr8j<-K$^-D>Nw?^25_(zo=c(cb|4JRa%sy9bL%o?JE+x23eg; z9>BO{(l#FLFm1s@kyLNsp}}C)&;X%rgrWpkDLN5F5ae4|I~=+v1`s681LQ#XGd35u zYuvNK_6mmzB5D=qIk+_GsqI+}dyxtf8Swt4up39AgzT-VzJCEtXtT{Cxo*0VEbzEPRyg$4vq3}*9huL=9=2+K^H68|#`MxW;Ee{EX1jZ66_ zn@h#g_6;3!TX)4ytHTp94U%ajq9gjLp&~khj@Zbudg2MFK|0W>Y@EefM{e*Irn%&Cjv$=fx+!lz)|vj9l(?_UXGO1y^>D_D=M%xszV*CMhRgT(9u{9b0vg z7}Yk)!wC(5uP6jwuLRpNHCFhGP`-v@Gw>Sb#Yv0AY2YLsh{>9&MhY8(?k%cH-lAvl z;`I-i+()|Khz{4Z`vR26F?m>wKuZxhMM(z;u@iWjA<>E2qu9f>6lajgn*C1UtU^l| z|5`RrcaHH)c%_>AhI4F)H_9NCwX*ZI+5=J&{#Y*+DI0ez-&OLBvT5tWy+p@ka0w@{ zG{bg4O*ib9kg^ltwM;PRL#dT5L5OOwvIW}_0S56J1=6n~!=}D}BJ!p3SsNxpSE7pP zXshU}m=2G;!}Jk{Z0g8G6dAHC0%2h5fcOe#3-J{y97+nIBZDc_T1{qYUUWbN5dKd$ zB7t&I={A~P%;7*1JH_V3Y3qXh*yMO^NotNaD5!d3_{K6X*h6;2uaM&Jo;-NcugJN2 zcR7B1Eq^AKuVW4KC^9IjetBsf4{gEM#(aKXmOp%*ok2}|55X+Kb65HeFiU~8yR3*u zu~7*mA8&$CsHQ{;;+XU1io|r%ZBr+w4dD&75l_RC-FOl@CUMn=|7C>FPYU)x;LPCAai8JBH$odn{@DKM+QZyBZ>;z zPpJ01e74bi*My;`evw~{TM@c4Zb<_a>F>QDz59qEtE#f8aoUm)HibP0!cg|@1kP_9 zVQYJ?yZ8xeEaT(Q32a?Y;1Mjjj#IczMy1Ht9;+0IO@UsAdv8@bFf84`uyXiN&iG*Q zZY1G1k5`IBYznw|fH%Ycs7(ryk|b23Hp7;jbS5}K#QPs5BhyJL1%Ywc1+a1v^gt{k z2eKQKbfnY!Vuu}0_b2hZ;+9o=o%Wz>n^y02Dy~m!I~q4>F(Sz6XxzBv$RI7z6khz^ z^U~AuTWg+v@vJPLT2X)Nd97EszFZ#Ktu@~G!0si5rT}DU?G%xM*jVW7iMAKK9oKy3 z42y1MNb4|ud#~l;M0=KLnZqg(Ule~S>0;33+yb{$u}Tfvzqc-J3RTI@;AF5o-Jb!uq!xtc zIrEU&Gc#ba%7H8oq(IG7ff+S$d&o(XnR=^3-Bu3&=Fz>%9QWTlbM7WZYSw^lbmyT{6ng9Ro|={86kMubI^i{%p$XQ7^}rLy!6rnc86Ko#_MFM1ZY;+zWsq~( zlok&YjFH_M=jWsSs^Sog9j6jex@H(q>07l-9BIpXc56Ch+#D~IGXZp5LArY>j+#^0 zck$Y>+?vlIL{5Hl-jppUYL}f=r>UPKr$&Ps(1_Q*z&6Bk{@lb_+c=*$m}R9g)~r^I ze3l70EDC#?08G;Jk<03l5ulhxPQGC1kL?W%+Qh+BN1%||DId9X7ldjik^*w;AW}hP z>~v%S@qq6n1w~K@|#M zFOo|atJ-8EeH-pigx|faHG7}Esr8BHgZXxMKRz2dfr#h?wB|^ufL4;Nl5K?=UAYQf z6y3grSEGBjuqYdkH1r3xf*)Ce3MynBy;f!BHAI*Y#XbW~BvbahIg_5xlnd4ovXqJ$6&g6~l`|^T=gn$$Emv>cShxtD9XO*+-oO#4 z4l+?|R4%J##d6iEvl*Eco~n>pu^R9x+jEc46A(&9*9boypJ3=OW0n>T$Ov_YY{E zwjY}_cbUHurImaU8R&X;Wy898E{O-Us@~FJuf%d|Et@cRFP96}RR8oFwvKmvmFF~x ziS67m?yRe6CnfM@e9-|LiW19Bq|PXtDuHsv+S-ajvw~$5I{bZy zOp&^zx8b9ES?p)_uXYI;H|MoKamzf5v?i!+*cO=swUD#0L(Od3jP6ZlNI|V@ z^xDviOF}F%3TBDuJ8ENBE`%DURYVGzsn?1lsvJ$>Kz;To!SRB!%;qYz>7)P(HOV1{ zA%-ivRH-L(U0u`1av_BcOFt4_Bf$uL>ND+RYp)-6C>yjN7hU~Dc3exgJ37~H@{A&d z+$=#X>1A_d=4O#GJpnras)Aqh?yDkWn@YZp05c*B@?49`1yF8*=W>O03 zoNb&xcvpW(Svh6T;A(Z74a&&b*fsfucaV}B{_q<#IPI3-tVi?gni7AlSzkW1b!4kP zoDc3uw#C}${Juu+2pdT%vPWZe9}@IGr}q?uiPSg+VQ?}&_-HN3{-wPQxTtv>sMof} zy*8_QaBf;$L!#6*DkzF983g)6G6A=Ug6NsgGc$;vNFghKc;%SCW>>cTrI^0reFIs7a!}0!iix-u(&>wNaqlh`&y!zhm~B)}P}wI;Y>w8MeD3F4KRE(9uSNV0tB-zDtt?|u*VTeWU| zsA7+B$Z{ILm#Rq4FuOfsy>{2LY*$d=u%X%)ytDfNx-)%scI^JT^#{3?ths*J9hXOAxokPj7^!2{rWP##dS9}D43V=!E&I6(G&8upbAiX6A@Bk z_QE_lh=kWWIP&k3zlYD{PFByo5#5J==40KfQET-@KG0p;9Z3`^0&;#MyA7-As8b}d zDx+?mSk)8J%(p7N^)-duo5&Orc+oqo1mQI>;A9|zz=~4mhrkN-Wfb`^{x+|`f#dh( z0&bcFz)VKvE%pqmef*^Tz+ZCr0$^q`KF?jjonb(xhCK%Iu(#8wScd@_LAVXbSk_T$ zmlkzMR7HRDD_sWwqQj$Wmm(Hiw3#hsHQWzbf9)Q-rv=z!O4hJ78gsuxw}c{-;=nPS z(8L<4LAv)8mdgK`drt=c(zu~))Axc?or}j_c z!m<0W#@PMr&Z(m*t#_4sQzf@{0SOED+1p1dHK{*zJWMvFan5BBVHs|c)GhXB0XLF9 z{#TqcU00Lu8khsp{z$+w$bK|xA4cU`!Ny45Yl$mogkQXz{o!mzrj&{BxR#AKVIW4mdY`7 z#=i7MD>)EJk0Se*Qh^})OT1XCviLq<_oe%m)}J-)avyRL9Plc86L|HTJdEeqE92Qw zI#m*or@JR3BuNB@*~vMP!;Z{t7ZvqEXrjGxmzk5NJ&RN#&R{2#rrBqKg21~Zs^>#F zwP)222)2`DBH!Ky?XPr6kkHQGUMeKQ$&F@B{Lkh4I>lyIPM@3WrXSq$vYA`kqdB|BQ{h zGvt$=srKcF--))Z6l-(9@JMTOBs#Jj`HnUYtPL(jgh2Uckw_F+s>af4Lrot8jm*6$ zr20i=#ncbio1x`LwTbEzH706y)T$`|UTSa@8>hSE>jwr$Bt~RK`v?^4hJ0J8Y+nt%(CLM~f?Nzk^7c0*Z&~b;=!HN}Z zKhyrkYQp6&rG57Krq#%pK*lqSKIee7uppBK14!a;APG#!Tq08jtp=H(NFs6IPaXJE z3Ri?-3Jdd^u!zxNE$P_`imgcd-kPia#2Rna7A@WNuKeYS6%Tr{0IcP@d|O^`zl^m+ zqPjVB4Pf(sSqmO1poZlriAt7|uZZP{=u-Sn;0zEEc&O$FfsXh&NUkmnE=6TE!p~sA znT|}LC&V104Y?#XqaD|Qm)BhUkkvZ6FCeA6!_lfj@UwH7wAf$1y>lnKKXIny%!Unb zxYVKPh}gPV`{(j)X}|p%)*feD{r|pp0k-=7`OY@ZKF%>tAc5Ef@G>YdC@UyGs7+9x zAmAm8e(-*Th`gPM(oNy}!Wh#>1k%TeI2r-`+$SKgw13a@?|jT!th(jjsdnnQ%k|!jG)hZ+3Ua_L+X2TwJ{kil^Ow;c5{FvN`_!@DCNaZ}}Pqr%kx4b`Jn9ZZ9 ze&FxPkTwuDQQS>rt@5(Uc}>ytRzaPv3F_psh5SELC)lt9i8=))24)532et|96F4SN zr%oY2sgOsglYWm)VQH zA{4w8K@Ss^0iz3wC-YiiWNEEgH7^ops2sDq_^G507Z5w`a( zx-f49wG~{-Cp?A%X(&2jAm4~?%?G{RntkJh2uDJu=+=yJGx<_UR$jxnWHDceKA#W{ zFiv#KS;Cj{TgnNHNijcDgznH>k=|#%z&A= XQ7xdb*Db4|xw|54t;TxnuVto}Tq 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%0Dx6y_9c8u3sy@X0Crn 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/fonts/roboto/Roboto-Thin.ttf b/themes/nurgul/assets/seller/fonts/roboto/Roboto-Thin.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4e797cf7ef9758a9209fae4e0b07e6b186b2c69d GIT binary patch literal 171500 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 z zOo9(|yc~T#`9gAaa!s<9|6w*K-$!rt!{m;{?EBxD{D`&HceC!b#EW?FXq5N*jkXGV zB}v}ncf!A#=&fE&USqs5d;f2mmYdH$hjSorx+_=VdZCjVgQueL?ie@0O-AoD#WlKS zH&-sjFZ%kThj!V3Hs@P%gWM?JmYZawWF?1Ar!)1~Ui8*3x1iIx4gJjz(A8`~FLO7V zn5}4C?nlG&p!`f8mPgRCJSxAG$7C4@8|pbfqt+b>JRbnNAqzw`i?J`(<|NcQhTqM!GBj>q$d{0_gX0*?L(+v+07e7p;Mndp&Ryhn4Xa&NC51Z~zUv)S{*$HAQ!Pfm z0LMjl_@Ouoerm;rr z#Y{BH&xXnKhL;yZdNf{1m;N&_D_;V3FvG25R(vqhf#GQ7$04WpU~_V<|0K{e$Zlnjx#>>5V47Trv^OTQV?=BfAg9h>vjA^ryz&tcSK zgOnV11k5{W+LEW~tCkmih|y&2%^C_|C+kU!rW=6i)3}Rp7y1ONVS49>xyqqSAO<}g zxyxF~c!bp$A@=7Mi+;tP^eQ0y5ooma4LS4>Ms+!#7$@Y=b{S>sfmyU&)>`&VJJc|d z|27he{AYDf`L8q7-LBqQuGJ}r*2>EL7BGv}%BVUP*r8ts#⪼1irKO40j0qy1+I1 zZ{TyXFWl)rLYkDHo(eI~gqZ&fF|oFL4UZ1T$}8ok7ee}%Li$@RR@VWuXz8t`%G<@B zM-Hu+(N8U*zZuvm#@!vd0T}7Oolq$ky=~Xtg?m^}?Lq@(Y13z!3Gux{{0}Xj!?>t6 zVE!v$$|mLyA-fKt4;Mm57D8w@i7jn)_?6XDfSvLv zutWb9xT!Ry&IXgy1;8$y3(Vr#+o<_Cu%j&H956Zl7`2r1fLZ<^wUlQ8%Tq1_lhY-@ zE*_z>&xGOP<4 z!}vCiRX^CBVWkhgN|*&5#4M;8y~s4?KDMrJ9^;hFd4?xz*pE!EWdAVppU<+o$UHrM zgc;D)jAQGP>#>ruoqa6#%)g`HkRW5mQ=CZ+Bi2?IR^XqlGEG^aW1|LB9+8%t6S zC$@%KH-J~SnKbB?32h-{l&CY_wvgRvR`L}>h1xmuN9ky>Qryyj+gyfwIpFXyS!jbH zteZK~JUA9G)nG=5r4d?nT1gClPs_=y?m0!K$fsR!%VJX1u=48&p6O^> zKF(#E@-x?B*{mp#C9+hEHqTRTk_$`9AAwJtIWk{n$#j`1Gi0vJmNR9Zv`V8i$y8~U z7T)_qWT99OW~BlW#Y7g#BG%n3lV#|iuU7jbym&uK)azs!_%G_0^cuZZ7U^33GG(<; zS`#Ion+%eLl-Wp$k}q+(%;&9ERtmJ7Swh)tsG0+JmilotFOCP2%jPDOmr~3ZV#&J<=H^lghJGJn{TBSAVMZ3*sJ(9JL z%`uDov4$(W1CcZ0Y~E=p+QYSJ43K=f>)drj-{bD3)CM`67Ea3$R^wH>d)<%SJ;c19 o8QozrO#Y5E#T0{h3dbj(#4GJ8IYB1MB$+HH%1M-LZNiiKBS^I^fB*mh literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/fonts/roboto/Roboto-ThinItalic.ttf b/themes/nurgul/assets/seller/fonts/roboto/Roboto-ThinItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eea836f4a37fea4afe61d6483692dc431a9b1c20 GIT binary patch literal 175872 zcmb@v2Ygf2|2KZm9l2?nrfJe9U9?R%Q0Pt=1oJMmWN8oE$T*UFF z68ybqI9{;Ku@AxfMR=Yve9YwO%g>~B;&|E2aS?S!j~g^_g#FGQj+FU0E;xS7!0F@V zhWsf!Ux&X>96NB#kfuqKoE-15V8814ag!#O599`8J$TL~j-NPWd`-`_3ml*S1)hJ+ zNqCPFG9(`-a3(H@vv6VD1jS+t54YF#S!_P8gx;FiZ4kQ+E#Z7z^PWCFE4G+-HtfZo zaCpL*8un5|p2H^Y2Gce$K9OYE}x^}0G2N#C>TezIL1O19_o77y8@4y6A) z{@?TQ+S|N^BV60^Y_Ya!9#@N7r9{@w!j3pBne8+fI}O%pz|K{Fl7x4XEENPv!IKn9 z5FsU)vSWB~3Z-nYtvJH4Z^2d^Yj~Ps^SMiW?kpvPeaM$$E3R4fHYngpPfJTr^Ljj9 zZ=URQ%E_LztG(Gs37rkr=N{I1kadX)7YeA z;}n}uF7e4(#o<-E!WkFG7@nrve2FE##4KOBtvJu{dZMkku<9vj0ePVUla%JAdv!YV zazPbJAW9M0^vL@r*CT%+r4tt)F@B~!#C3eqxViS=$Wyz`y;}5M`i{;oT6$Wo z-Ll*A@vSm5+jLzys$DI0(#bjP7auO3)pYSGb!n}dExRut-M&_4>n_WuewZkZON8p< z>X+XW2ZEOITy-v=ds5RMGKePY6pX@?C|%Yf@g$P6R#KEqSu0bHqIXWXh6sZ}n|ki)MXs>-n2eVe7Wkd-pYU zN!^u8!opha&I#^({A9FkM303>h2*}I>JPj!aqIYXTW0&e-}B)g$38sy%G*y5xiZ0@ zah7*yj41BaXI*E}IdReKx$_^N_BPBJ_rCZ9>BjV+Lm?)*QO+l3`S=o82CN^l0PR;V zH!my3D|NpA*VFVfIE;)@)PqTaN{FTs| zH@7ECF#t4Md>H5nryz~+AaHM>eT7!IQ z>JH6nQ!I7|`v$5z@C`z`hjUOK< ztCc5BpSyJKF|4WyKaY3t&p~pc6;71cr-dw|xxubsD0qwNF_UZjJP+LqY&5=c1ojfA zNmvj_76dse7OISLb`F$Dr76xbSmC@%1B~?_Enh4&ht(9g7=^D`0f&_voRaJuIho`| z7Yh9fXPaum(hh@^heFE3xn!=D;!H`!x_wR?thQk}y1?t+45f3VfzD8t@l{W=bEG7w zd#}UJVa?Eo0?$EglaqKspn{o~YX`fL7bos)Z8B%)5!+jnceav)bMn>uq;=@JIj8^3 zscjDSEFE_0kL(&T5feXOJAlNI>ZI$WuU3s#@2I!bGvd(Qd(^koZ`EJB&AvH~WD)Dn z8$nG1UsG^Mr{S?RR)}n7XF#_vfvD1>yHG@l`eZoVVxemF3NO&JgYT8>ki4mRe6;7j z+R02l4wXi1t9OK+89ZjeFJ0lBTn{D4Mb(@}t1x^^*rVSPKq$UM5yIG)hS`j+h7!Vs z;WA1Ddz1QoUZ^(Bj3#?h*wM@IG?tW|GV!ag#Kr8~x%K-*Pa+9Ard*1NdE38Q5Iy|H z>qjFsFTQQQcV;|nL{|Zg!0Y`oJb$6EuI^%SQ8R)Ep1H%CqncSVaG!aE9h-x zO_?xDDQ78?%pT#CjB*HL8CSJ-#U2?)mmD8Q4GLU(2X#t4UMiC&p1LUT$Z!O9=Dx}5 zalY8(pSNw{shP*y+TDL$JbuOOG4I>H?CRi%$X!#P+sc>n&lUL3_UEUT%>7&~y?y4u zx!ojd>Xb!jh-62#5F)Z24QRCq= zXF&neN5xT9Z{lLbiB(T=267^Y{ZP&5l&y3}&^mU`ktD)iI-Ss&bZf$kG8Dz^jzzua zZ=P|uxg&D*)p3h2c8zcqlEcy}_3xxeM~nSaX1+Di9==mTY_(Cn(7kS_xgRfCac}OE z_m^)b3&~~wE6+@tKj)+Agd8DhE9S1ICwUcI)*UBl;_Cf(UBix*?o$dpNv=Z45Ry!7 zg4nt2`8q;T*;!e5Qd;wHqBPS3EnWk>k^zcFgQB_IWTj?aJ|#{~n=i72-o{r@)(PHm z>b#@d4<*}4`FXZ48!?YTJ1atbHeOe3+41yZ(BvsqG==6bu2J7# zPQgP}x(Gt&<)%1vk00zLIwOuOp1Z^mr+)F;yvsc!oENr^8)c6r=F=03JM6T#Ju>33 z`e$71r6b3PFd+!CMv;9H2wg)i@Z;F}BLUI)r zk{Uq1GALF!fvPw-tVYQMX?#+N(Yt~|Au_a|yq`Z3*M+I++L#*W!O0Zg^b3{FTF@V^R3xWQ-Q}(`DsL{Uc16imkwDqWY z@Mk#>2^Nls+1N)jMc)T5C>r-63UnWW?f=782;B(r3cdY(%=|sMY@?aqO?uQ(RZODt{=<0l!6YDck@hEH#Z@I;=_t13(BCbA#WCLYDT0mq3sjW_Rc#iy z5(}0hqo~dUpV6364;qto*AH4v&>sVlA$=1T&mGYtG<15O1urLilfK@vaYu}Osal>H zvXXj;)x-*%=E(dBgFYJe_|SuE_FTQOYuwe>x7St=RQZiO*G8>xx-Ko^>T|8QDV#4e z%U7Uzjm&LgTDnBB6i~OwXTcUE3w;F5ZL~cF0Y0EF(^i~bwLu@$Un9d)i>QSaCC~_tc?Vt(p8_=loX=zz^K!i|{8`TpteK4gE9&y=@3rnq1m#Im)`9;} zUC8m}XJIj7VKHQQCS8@_5Jtve8xx7ZXi4|j8SU}J1O;ZI3M@#ZKo&wMqv$BX>{aj$ zA{{U?Oo||^^|$|_PzY{JqU!ox{K~`Rl-f=@Ngj42KM0H9z;eB?n#ov=6&5>@TcAX{ zX^8HNW}p{t!z(mtfM=pd07?{LZY(&ue-!DftfeQWTnw>YfocolOP<9RTQ zt?E_k+Zf{g?3_G@n_3#(-T?8`+{aYyKHc5RPsV-pVVraK-1+Mws;S?;ss1#HEIIRc ze9Q|+)QP0Qm0zmG`Yx%@Nk0CyG zoWylhB9kfprTHfTsF?tQ3zXpDp-hQ{{sSR1tX)YGXb?)RC39^Hm>WW!b`1%m;d>+t zd{VsP@Iv**NAoTYA))RZ((&GnZ-WcWSI#f~?pQ)<2;c4LiC2iVkX-!e@9B3|cWCzt z<;y>BUB0zSy<2>vNwY;a#(ne(v=KeKS8#Tr@C{limY7(2a=@ei$1|f8w;B!r=V3S{ zb^!4_06RE`qAY;?8Y+;M4#F>5_QBjB$r_vRn)>lGLw+QU?vpXuaSnUJSBF6EskfJR z?Yi%b`oUo$&3t%)bRyP03GnR7C5P+Zj*m7P`_44>2+069T>p zp?pPevT$?yWXPou@KpeMYYTMM141e$4RCmw)9V&)`s+^?(#&Q1{X!pe*{w1BEBsCW zV2|YU_}9=?_QonNW0gT%YlQ?;-$3JvDg?tIlm9M;Fp+`wQGTo-ACt3`@MOw#K*b-$ZVe%TFZmId zIhArKKqS}~I}0n5^WnuI%L12$>RXDFh>y2ce|_e)UxS3ujD)kqyzRB0#DX_Ze4xJ6 zTOz{E=hpnvuC3ZxCg1Js(wCS&?eN(5r%2+iFJ3%$LA{`oR>^Pt*0vQn?5&`x)SR7t z_y2zO0ob*!U>Isq$rV8yg{x;%=*W2FEJ&y54#VBWww~E#v*&n9JyV3mQwwmuwI!dw zCx4i(WC3m{7YbZTB|2jSM%ef1Uk+KoHP7Hm_ypn7a6&ckD4fey!YZ&c`q_YpMz@tl z5d#nA2_{YpwJInq{O&oHrv7>6#naV1p&{X$XCAocmV9Ngw^jcS7dkc_HR0YxopM%u zr-kdS1c%aK?_c=Q3@v5WMJOQi!Q5Y}zc^+Z6v9)nQcT*jN_!zO+NBZ~jYIxc|LBJ; zuO}A%bXR`_U#$u6zvaJ;#a+0=4

WWna>jL7s&%SeXQBa25FGf3;plc?F6^^1;<>PUQm}zCyBhPy2dB*LK&=sy7b`-@S8BRn!M>Hf{RW{bj^@;*-|c71gvSK+#~J-5n5- zQE-Ar7nX`$F_P&=t;f$wh(MtxnxQjV0A#A{ReME50-`c6LQIC+fRHRL-TiQ+r;I%J z#zzT>>YdNkwPfOpL~_TUKBG?Khxxa`dVPEO^5>oxk34f7UM4q9{hQG|n#%;u!)n#0 z-wHoJy<&9%e!edA)Sa(ZwGJP=-L$Hw**U2Ih^Tw}Pr^HB5FJQ&A>o7Scltj5PvW~% zOMd<*oCFSiL3;`zQIa!|tHJ5A+X1EHg+6kEWQPFWd%z`(HFnfKt(6 zDJ5Lr=+F50*Dk5^_;LRAl8=mfaptB^-2M$#{?PSZhptf#lnJ@m2f4`PhAIwrLfXm$ z42c`M(M?qW?`Emauwa%%Myk`mF*MO`NOdZy>~DSU0GJb6JS{B+z(+%#Ax+Gw1MmTb zj{h~_NrTeBaKeL#BkIm0&28bEzFWB9^~Y_V=+{mjQ2$DGS|d*F{{5xs@GUUkB{2dbNrQ=2j1T}vvs{*Q))GTbK|&Y`rdox*jwvobitl4 zBfZJv)MT!%LMn0-RO<$KQI)4U#JQlc!m{G%u_&1Bbj0$?9RYeFAP=dF zp+YK9wN#gvaOY5ORDy;6E2N!d5PoX&e&}@qWMsRO%E_M z0m2^el{(7ClzgRJa6EihfRz=xg0mpASxZGi~(tgk?)V|x@_lB$%F5+u>QtmcpazxPUV zD`CI6%r1*#%AS^m!;;67DRn3ysn}(rdX*n;nh(jVSt)tQ2cllUXo;Zp3`jjT2JVyH z#LYkPxqACkS-p$$9fzsSU#C4XU;x6sQNECG4BF9L9jVCG@fzx)3mnWDnD~u4q+uPY z`0pE(4kOj8L}6>GtwvkYE^`35Sr|;RaB}Ps(pkRW6ULSIU42-Sl+TN~kX7TCDR^1DC>+oKAk2KST_qM^em^gz=06YJ);OzR{ zlgsu;L=*RCgj9>%v~t<)I8R*J?n6G;AQXlW)xPxCZnb~CuKpcmU(|E#u*u}`+-=9C z-AlHupUSWFo!{Yqu~|WWkegpJpAd25{6Wh=r3T2@+(e~91Tf8^O0b4$!oQ3Kl}s8h zG8a=PlujE)s7g^5LZ|{!%OuaV#(L7vHNuT37YsktZwh31zL$zm>;^Z1gx8NH&OnYr(a%!nuY9yM|PDI>-Y zzc#a|ev`ZE1HN$7m~;L1PE~D_XOp1sDQ`E$E{nkn@z5PML&hx}JP@vLjVTg%3r4n7 z1erQCN@O@y7I2Y_$tb9Ggv)sq`2erx8)$eBFUS#2a$?O5WNv@mxA_G}h}9Ic@y6T( z=PjPlJ)zO>D$YB^jp@qh;h{ zC@RMxFIGi+ed#Rg{Eq-g7Fj~s!tUU}2E+tVRtDCDcJOGhE7dnziUVxvqKFj(R_WRB z-t5Zj=YcBEy=G<9*7rxV^cjTTq^IjXzXB;5>f{7#e)epJj zj}IO3#>~1k#-1HW=8hqy3)eoYzK8uGCoP=Ec|-&87_FGK{h_>$avjw<%(Uv8(^*c5 z4`O&@JmfIGQ9OX4N02N76s@?lzeQ@xz>0cR0(0WRcz1>W20&Q==RpFIDkRqzUg#2G zj@tFntb^yQLQvVyA=Xgm$pz=1O4-zI`)~F6kA=_>`<93e{*}2K)TO^(OlVZUYxlKB z3I9~waWV6|bD^zTObe$y}2$qjr!U$f^A`~@3ee2I`-ItMvcN6Wslh4 ziXo9^^~YjS@NVCDjJN07cz)yjb>31xPR6Z1Cj7)CC6imKBx|uxa#du;L|$Jo+lu~# zVW;MbeMLjCqN(RCi_uhYfKVA+ZpCJ&uPRRM&FFxl0Scj2ui9P}XL{jF0=Ytg5=E(u zJjzfjrat)5ltrgJlak^&m8O=TerrPYVMljTzua(~Wy!33+p?6=}^7vrJvCrR_H;LR`zU~L?=g)Yoi@y#3e2Zoy#}od>dVgE2i|42b--38ZKup(2;k6oNa7I{#LvbWm@Pt=W!a+Nn$!@7N(=cAciI2vdK;A`$&bRVy^ipK@w zsmZVhR{4ZQF;gDN?%*sje6@-_5zw)7aA~(y%xmRkA**0^h-jWRVwJzfG|xG2cBhZ0 zE?qCSy0c);I?Bxj(=CEDWpuw6mPGO;%^D0GPWW3JP%TrhoLjPX$*d_W7fxfmeW7{L z$Z5))>$<#4=>zyaZ9vLhP zVbR;ZUOMjCAtte5#EGT5{B>$OoW~dMQtQ;_bGQ7p`iaX^nvLA@aOI#&)0&Q6|LpDa zJ65cJ_Vcsbkd^#H9U$Dqx+Ade@k+3^Zg_z)73&Ug0hynq6J8f*##1`CDgW>XA3-An zJP)9e=~R?t#!?18qW0Yu?{i7LAy>}x(QwHb-##g$9(@#$^ z2^5(JI7#n}?jfoU9yv=^4C$gVn1eZu|KefQCj6Q4&t{|)sH$f~>({3Y-w@zo?VUaC z#d&-NAtZJ5h|3St_*T6J1$bEVHf&bk*QAEOfn8d;mP)Xp8kcoV=!X|@l9eG467vR! zLkY5IwU7k4b!w`#b8_)l8ZZ4eeHKhZjb>M-r=^Jz(rat{^~HK$PF`T4a$5_suo)|$ zaRtxf3WNWnuOJp$D3DU9Ph359(4M9>!@FHsu;aku@e71`*xR`Bdwf5sA9T_{#aZDGP@Tk3 z4}EW}8eV^*vkRhft&Et4=LWQZ7F!ysL1@KFg;Ph+OOlLm(CNx$l@Hh>b@LqLK<-cS z{pF(2uu)tmzILM{G9R?~viX%-#SkJgC!C__FkMT$6AIfLPJ1|10XJUogNG4-k_8 zK|Mo?+F7kX}VmFl79^MBOj6N z&DBDZRixfi+czh-)h`0*n~8>R>;tu)m9`$jwtZ&ffK*}&hm&DOqYHB5QoO9o~P{IPD=NTH-O zeANU#Brj-Fljp>2x|W|nrM=+nf5is%um8Wo28;Ob&1G-NLNEV#Gye%pRi^Nvmt=vT z8mg@Xhp7Q-Nopx^dM!zoFFXqc-7Fb`d{uDOPL(KzU4l6(QbFly=`>{X+EZOLV&i3+ zQUE04a=OSnW9Ed&A?ZOT*QubX>!MQXl2$>hPDCYVeAKG5Ns!Y*% zv3S&9O)pZ~4pv+8g{DI6FOBmhW%+DbN^BBEx_q%&0j0)L94$dXFG-5SYxf#I>?$;iT0EL@aWSZI_q* zXYF_Mf>Ne6!?7(8MT+P_Apg4d5tngq+TcXtyMVhR}vTTl%Fmrz-Ly+=%iJ;bSQcHny|&eF0&CF8q%GT6TJN zGHu6%?~gKKCECuwEd&CFvXM$~tD79pfEy9FZrR@2vG(+g&({pg zKYE>V+226-dn1NS;-)HgU5a3I9B>dEda_A(QH({R=u%PK5^ZKedty;Ym^;Cp!tvj;&QMeM#m$&MX)KS0t3p!E}4C0-YC$#3O^g&oMdF}*xvl-a#?SA z;(#vZlZ0bc825|ijHZB7EqC$N|_{GPWPtKRJ0Ox2TKJB#NnVV5`>Qc8H-9tbZI3Nx%F-=0H@)%E$n!03r+zju zE#uksnPu@YecxMsh-96zSnn3ERsVQt$H|`EPE~)d|A@n+^P-niFYW8n@#Pw?T=@R( z$@6Lataa*xy>F17&s_XttNMUSUk=W$Kk^vS+!V#dqJM2u3;@y3j@c;cJ#Y~;pNGO3 z#iTs~%*-0&0!|g#OQXD6N_-|(l!zh$TM31{>^R9_nxTaJ<`Ljr4C`V|Ucl1bc+HjP z6%!lzKOzHVbx{p6%d9T0Ti{inG?SS%)um=KME$Cea8`4Ybh7LZ?|m=&saxPq2=(XW zAXVhLDW1(V zBlYOSc%E2!JaD=27xa%sr~UX-QwP{$)L$;Y^I5DX_R^WnKW4;PV&3ZEKkc#|TKit2 zZN;rwuV0Vz*qZMib>L?=(j;3+?o*xJ{_o~L+t_YjHhScuX>w&aG&1 zKP99%X&p7~dY9HjCM7!~-AT@hdy3`EDZguS;$#!JY_5o#r?Gwx&N4@5{knKkm$JT4 zH-{dq0M{U=E`5ZQ5*K1aE=dUsp|H~bP{yYu2&`M7Za@ynm-EjlaRIiEaqRNh0)_=F+IvM*$xOKxfD{rW42KN@Yt?E9T^OidO_EtY0d;qt5*v6-q zP9Cu8>1)SUd$ZeiR#q+OIA|()a(3OPeqU5dc3peww*~6M4_@ZqU!|7q`&2Db|5$}C zf{)2X5(>$Cn?EJwgQoGQdYY(Flwn*{I>hR%l2~uYMBy`g9-KwHhYbOV0__5l7KK|P z;vzC53L_qi=o2wIVs?bN?;|J+?R__>TX06Y7mg^C0>J5@APs$!H5Nf+L$f~KWR{gX z!HbhujhYr_dw$&!G-b;jnvPuN^g2(@7&p%D2@6)Qx7nEC-mR7Dp-j1 ztJF+l9G`6S<(BwT15_Ip8_0(C6vEgPy<3z|MV{3tQe8zYoXaIA)8bWVD(aolmja@=|G-P+i&y%@AGLfy)OJ3ShsmP(qUbmWj`h zh5_Q`Ilu57e+TCh0xO!Moe2wS>6t)lg=Ia04j5aOa6NpoX6FJ$c;B?vhw81CUqvn#gJ>>0D3$03;%x~r2kj|o3t%F9HfSMe}y20SqsH(mn zI27ozVH`@kYz%Lp8PQUrI9ZD!I|tfhtGWIa0*)9=a`TJ*_hqu9f4D8LR-3*HT^{Gt zV~5WOvn^?>~bEWz+L|5*BHBmr; zY0aHfRFX-*rURFT+4^+rJ=awbd0^zYnYM`i?OKFb4}ZHds32%;@BT|{)*+Kxi%o>C zt=c@^yWPO)v-(eI6g{Nzz&Uefpf-=;%C{`P*@x%B8jVw^qtd5nUQOIahtBClDWRA6vY2y!koj%EPE-z)(pM%#W z49iDpbUpvv=B;M0zOL{)OJ95A^Zo<;&q*Is?{))>{04Y|!KfOSS-+09aHb{o!_|>* zpkNLZ*Lyu&9)Pa_y@r1LT~ZRM^VR+`-b}=jn}mPZ5!bxHuO!+0L&%t&cI*`g8Pi^l zN?}e*yCkw{J0cpK;`l3-p&u#VueRgvAwv{~tP-P%4z92#`f^aS!&rx8oh~Gg5!9@p z2+CZ=M64a8>M62MGO!1P!_)!vq^ElaMkg(FSaz);LsnTM=GMt9OlpSU(k1Ql2SO{o!z)66=*Lj5 z8ggP)o5TSqay;AQKc}}CvJQ~-e;LbS*VLqy=esRg;Beej6_Kx z*$7;SzFv;F=r2$voxIM?=eOd16TBNUk$E@21!rf|_Q9fB>?1n|pLrkXWIFrICQP6* zv(Jv;w-TAW#=leb8HPgYpV^Pk%!A&c*FQo(!@Gre9F5E;a=Y-o72o5A8|r4CK|J!S zx`;n7wu7}vMKv&^XENST)+LdlcoeHZ_eixW?nF-47mdd3aGC?Br3pr4E0n#eL`GA; z3j{|>&_w-Cnx03MOd@lrz*t)HLjyTbnb&GY7>4Q-h1%Vs}8;V_TI_2XXT9UNBUOE1YeGBY}o=y4TDrYrI;8dNyA1v zEEiQ9dc0P}J-R~CF;gX+RYC&1GdfeahA|jbLbN|Ze-iCVs%la)0-DrcGMGRlHn0q6 z2lOHVW~FwJ{lnYx1RJ`kD)YM-Mg~hQq2f172@awjBIJ$%)P&)`(9kppkwvO8 zvvbmE=PT|1kO>jU3+kO3B!+BH#>}bQ8fuB!GL5VxBU9DQWK?x@#!pWsOI3IZ0_Q1z zUg{uyz{P-vvULP1poLD?L&jlI)HyKJgDKT(vZCzjHea<8CEi_=GFH6JmjP-?N$C{i zXvAxcN(|wk*eGU+m|S|h0!d3JU@_XL#%G_Iv9#HN5we`&et}qa4ms6mRkM@%K|%J! zeD#2TrM0&(#B;DO?OVtY{$olj+cWa;N2FeUT4cnyL*&g3ANKm?GRfN8w$lmn$&m3A z#$LkiH}j!amWXZIwWM7PKay8RbT7R)loS&2-Ko@D>J1rh1)j5@&Zk#Joe#wo`3jz6 z6oAk%o~y(_2>T56RB0q=y&fUV+qB|@;-L28bhVd+CrSE~0IKLgks>5fYol1r zbg+iciefZtBP+t5-d5;>6}a)m1!gUytdxw1L!;uNGNTHk9*gP|H9Bf`l)0~xpk1pO zyYn@}wVE|*hHI^8hHLf4jd9cpRVmq30FIKYeF`blf~r?(90L&hs25V&LsM>yuX#Tep}nAJVq~b&}mo8Sn`*QDqmYRjXmk)ho`H`P_P~oeqa9 z)@bHsThTwMjZlGSZJaRz5*pg2sLK>kk4Bt;iWy`ATGH`GE<00G;BaUt!OP$>3X);S zkylu`(JIB%Qh$4H)^nXAQ;6l##NsUHM!)m!gm+^;oqx-cJJlmbIZQ<4xe^N{b2T-^(6K#)xzDm z|A^`0I6Ml&ti)!_pX3Z2fK*2)9qjN??CnRUJR-$h`9^e=jb~wzyDFqiOA|CE0sA1& zpIGLRh3jf9hKOk(*&?H%K9Ns)=tkLZ(I3&37M70}eivUx9G3#^(^)ghOvrSJ(*sMR zKA~)Hv==opnZ1An$CoGxZZ`BIfgU+^@tBE-i~th@($Y=^gE~Bz!G`=fL6F4Bsh)y- z&0=`@i4*!yELuE2NX}B)#8(|!y%qikmGJCC@F@Ey({Qdy=-7ei>NrERl!h6?M+tw903)#&hjj*~Gx2 zXHW=91!)p|1qZO{wTi?lFkn1^M{AOWI7dF7|nzr zEp$$S=?oAOl1|A#Iiw^)F~~32UaND3$oxW_c^Z zF*H>d_?F1aiabTa;>MoR5@B(zvRPu?g3>bDWG#vXWSY91O!N0FgOAY)jz%5i;{|Bu zs`J&QTxV#l(sV9Li14TQR6{6H{$=<|1s9(z`BOw z+(Nm*3b9g}Ynuv~K+A#)#1rUor(hR+J9-Fk z&SiIbwNt$w{LA#*daG@vPM}W&W`3C>>BvrlYS;Oh$-e$X*Yj+J0nH1#<}<>bij|{d z4ipEw!_rum9OjnQffK9}P1I5+^{@Ei1zC+8IW0|VwXQVd2zI6Rs**rJCcwwEk5e;&OZmPD>9P!6fzgC~> zIWN}xV%%bK>O>E}+jowS%(ZV{&EIc9>c6wk-xD&!bA8J1%EN$=xDbsUQ{vLnDHlRJ z>e?lMTLX|uT^`wK=%rNDku+=v#HXkw^6^TR1KPPiy;+N!(UiDj8pi(pu!*X62=jU^{kG7LEg24~7NrtJOyw144qS+Hbhkv4Za{(`!= zvX92_SIqvxDMDK5@=c2$%wJcczMq*BLWGwi2>+iqTeTvw5TI@XabU)W$3Hld50kot z@uK>Us(#bB@r$2oe#wt=KC4vpA|tX_iD}$~ZWaADnI-hLeuaJxU_%`2y>vY+K0ge1-7t3mX-JR0hn1CV7pG5fR!)VziHBP=PegzV+2%UXBylS6bz$ zd+RPIymj=ErL);HbTpZVQ1=rI=V2KXaGZ&`@D%UjXKsHxynWf)6X&Xhl|2wbt-;|3 zXP0b_+VSP;YvCPK|Msn~yX=kje5NiDPHdj`*7|50;X7^|FzwCtvEfqZZGSf4Z#gaY zO=A0(_Z@iY;Y(dYi#m2*_6*^dWUl33+jj8$xjoZK@=pu=EuVgC?$=8O6b|$Co%_|& zq5NatTo~GV9PQ=g8be=wjNX_~E>8(DXjCS7y1!n@mXIVvX(X%$!pq7Q7oqXHu}2pc zH4JNzJ7RazRmwkp{WYd))&Rlm49wW;EdJW&=Tq zqTYm|R86slGq@2aV`v-qAqWmA+(uP1@1!j1+3R?3KKj)dB zhgXXf>pLT?t}jnL{51M~5_4Hia74x=y`lcNXU*T|s+T^rMn=Sc8?l|l9-TFN%BZ6+ zZLf9U=J}~}cU)J`9`S4@$m59}Ss-i$m8Q-zu6$Vx>%(p`l%f9hmaXy$)5Bk_yXACJZQ=GSTrB|Us? z%!%jZGl+W@)oX^+8@VPTibRM)Y4HiFt+%fd`*=5PD(1uU(4Vw<<|cZUn-SC3G)eF( zvblar&752+r?U9$B>_yi>Q?>NlUwF=!0p z`Yg6iz2PVO{`S&Dswps$z*OH92I=jtxMC^fqH#1ESgW6Ofa9!Zir|Q`u@)HSYJ}Ec zeGJncE6g%I+J75akTz*qHIMu7@_8BRTeto(x}YR@%@*Q2670|UTKzq6gaKBLYHRUZ z@oD&GBb6vNS4~@a0NxZ35$W(Cvm%vVeziDOFI6p|o>7s58T^FG1%su1yQPd^jvEKsS&ESDCjKk(D`YL$x==dZja%leTq@xRFYFI#9~PVn-kvDcm@vn%0+$ zUue*^cEA_vgi~x9nreuH0_dYeYwv?PIh4KF}({DujtJrH%u$ZfuI$S!3&;4g49JnIwbHPHb3M{Xgof z6W*EGg;fcC{4IeZnM9L5!29qlC;H)=s!0vW2I;t#K@F_(!eun~2ns7L4K}H2 z5T-P(3XkHs`{D(@izx!vhys3yl!+1+g!MX0(Ayc%n}K3GLoNrEewEk9Vp$ZTS$R`w z=)@*1It2%hYuThnV{6-jw!xwx=Oi`hDh++?i4iTD4}K!9W%JrDXL9-&SnD(D6z*L_ zm*KRs8iV*z_z9zA$Z6C1-0%`wN?sUFFya8^(-g;YvOW-sWO(20JliIx)XZ)g+_0!w z;~?u(&G`C#`c_9mJ3Xgn*Ty5q=0Fp@ESZGIq)W)TLwRC8EIV2nc_RErln4OXuseD< zjw&O7FaQLpI2l@uqt!vt@*Iy>c+4@XMU4h^3)4p=d&5Sysou!jAU(geO}f;5P`UwSB~?j(N?sX+>J^s5z>%FGxw9Z)|El^uJ(li5~rARwuDYSxp zG|q)a2J2=a-Gs>>kCgbMmkVv6EO|~j78=#C*s9`F1ZOikcdP%vuz1W*t||dB&G<#q zH{;YFKo3{clRyu{JVWBUA}hHGh>V2zO8@k&&^cfxn*lkZSR2kksmv1-{J=pz^`-0IWV0)SHHda&3#j9SFmP3TULPQ4|U6ewtw;Xg_r!7WxkO*;-7Qc{_BuD{#1cqd}L7De;t$u z8-W@h4Cta$c>;UkDvJZ@v9iWE>^jhK1jlMl0YFX+1QtYpN}<3N5o=v(*u!m%))f6f z(W2OzovIAE8l;E}Kcu=D`WUzRFD3-kJL$Y*WE@N*(r{P!Edf>x2F76SD@H(4fD`{h zg>iD(y6^a>WdF!4p+GKs15KLWcmz^F`54)CsTtNLb48VNm*|H7_eu^Qa8?8I3X}J5m=OAF+3epii1p_R#s-y3K!dLMo-o)Z6RUXC+}Z%lOh?9y*Ht8e?wMj*hJ?K$ zhf+ikd`>GpP+NgtJS)H>!td~}6sE{!g)+ZM?TH~c!ccSBt7N^v`O#5^ky>Li1);!y zik=I8drs)pwz_xQ_>5&OOzz`9@bB@_nZWm5?Ol>mx|V9bOWRdo)k|ivL-Hvi4(f+ z|7(0yin>&NnC4B}^XG)9R5G22$zHNGdeCQEj_e@8M@nCee&X{@M}AU|i@%yy+}n6Z z{Uqqd4b$?UHr*k~L6`h_OW&JeDr;++adY{TcqE(-QB|D&Wl&%&C=i8wKoFZzsO^{u zxvpmd;2Va+>F-oV1)PR_bAhq11>Q!5Z{y)u%PNq@WCu2i+t~pYzDm~Mq|0t~K!?@o6LcpTN2kLjMPm@;5x|Tgen*cMkR;?Y zDa1s7A}SJR0)|UX6VmK>1LhFw3r9#hoA{-^d$m)#?Hf1mi$hICe!;9zwYN+Le zOEx?)X4bhOJZaZ^)~jTQS?$@rCn@^M*LU`f(aY3Q_59%ayMAik-b0R(`g2j_ z3<-N00xNOs4x>-OrGa1#5ul?hCc`7@1qQ{uV~-saa3OYq*G&CY_7fGDQ}JMA&(r^#N2h&so($VhlqYvk|w}))1=Nnz!lD zGBPZ5)sJ6KekirsumAXJXBlgy6uD+?x^uhsCh!@{*yJNwF^l{4zP`76&rbe#_!p80fAhkh>e}VX z%{^rw4jO-c-@eOro~9BoTOBBTjvnD)Sg#;M?QB5w9)P4XB?|}=GYKo^tmM%Ik3gp< z3J2@^Q6%2#(>h922eEGH>-c@dr^WoTr#Ec{<@12INTzD=>vEBY%F=!(C9CS!8Q7I| z3{@<6xXhbft2{#EcXGpGtgO}9&lA zT%a@!00PAifX$H3why-)oal7jS0r>}ZIsf>~ulZ0!q02$jy1VJ?r?I6=gRC>fXH2V8_Wh`+rLC#;d=+Fy&$=k~DC6 zLdwEU%ML!a?C}Z9CJt`^?>*}u0u)f-7DM)`qwCHNdS`GWlpt+RHQGaB5mDQGX%)T-)AqXRW9LA9 z^@w0fh@zU`FtCl5EEqN3qX0Dp>8XNa1sycCipo$u<$~XEqs44aXnwnce8PTd zE;niWd-EpkX=Vzpov;3+Hs`+zj|sxh%{}*5HsU|V~o)*Y}jT7;kbJx^6OBPl9<{U}`2sfzwFR}=9u>LC=%A^h3GzLN-ya1Jv%YYmT z(~{b2BzZxsKF4DvOwP5YYlVvW9X0VSlZC9N=;}Q2(M~O6dZEh4i#!Ff&=UvZnR*m>%YusLF5NC31!T)k1z)t!g84 z`DE#5L1|ce=1C&w1rL}ZILlmOod;`8xxt`DFLjNW01KFj$$l1t)~NyCriOm@%u%D| z_jM8+6C;KzCc6j4erEo{awY5k*r|Q#uc8o|4k+>-`5N^skY!>51(M+Mo&dWcgp> zPVj;Yxf!cr#!7&Q2Ami3->J`s-`z5V;g3Rr@Kw?H3^Wk44I(KZ_vlO*8r>wLU}w{f z#WH5XfR}1DI*OSvi~K(+1-|pLXcYy&r9;J3nEZVH_fkJb03xpc6FQ~@I>wHkKy)7` zB~z-SI!KTF0<1Nw9MIK^?!76Y3|Kd2R;WTXh%OdPO@T=pV?`YkbaqkMgwmuA2}~%z zZp6lBqF{+zd1c1*!>PkOr&59ZT#Gt5d)(0}ZcFHsD-QmcBDNp(=G=PS_mnLh*xi3o z4F8BoWoL%Zn(^MrQD;B=?HW#?2lCdRVmB$s7)2T84h8Ij9mk{mr%2WG%&tM(Q--ru zIRh0NVK$9}esMV^ozbXggNMfs{Q6c?{+yz~% z7S9tOT}hN;x84@p4=5h9{*3zDtr`Q`f7ij4JGa41cXDk1`rf9|b%^U){C<^AX{9;8 z?cl0#%tvUin6;TzXen@3=+%IfuC8!sUc<;xu;2#Cr@;^V?P`g-iRB1 zbBv7qSn@yq^jkEi*R|`ied_HWvZ#!#M{efQ!r298ll+amJG~+qb8`ZOwBd zRkx^Mebr!ThATEL_lpWX`kUx+nk`^umHJWxD5~3ArgQbdTU1O99syW_#-0Igu0*M6 zr|z1GRyDh5^@YdjjATC%L`(e}_b@Hs-^7l50Z#cbkK|5^2j?vJMkora%YiR?nTn>Rhd!B?Yjt|N=*s0`O)joW{t`|Z?7xp(9l`40z zzZ%@*O0WSh2(TRi`>Pz{NX=+63~VxWGz=LeB{-R>G#iGbIO&f)Voy9q@>9jja1Iwj zWVBgVZjnZfG<1Za#1Q7P zo;sm&$eJk!N>X$0{2$)l13ap#Ya5=u&$RTAHX$Ls0RaMp%!J;X^ddz-igXZ=CcQ{6 z(ouR*6s0DI-UI|hv4H~i0*XqrU?-WK|6cpdnVf_8ywCT&-}PS?naoTwWbd`tUgcix z`=o@Oqo+=`2h@G6t9NtKh4<@)*~0epT*TimXBXa2zg<4FD>J^1aVJE_U1F*|Z}chp>*ln_O6mGbe=8X?qPhh+Wh;Lk^-mX5Ctn-m3mW*SU0a zZH6!oywmW~m+(;tGr@5K5yGAw4(UeY2{|foTU|7cz~i>QlvgD_z5K9V712t`GyH|H zs)H(3Dw9`rUTxR-_;xI;;z-*uUM>^abPF4Jw|dv}vAj#wRSJ))6w8$@%|*kBbJ@vy z8*rj+kg3rT+#7@3oRMmlhJ0j|S`l&+x?nOTf9n|=luu+3^=hCT5l;pW0w-}731l^7 z?5G*RR990_SsFu9#_G(QMa=7f^v}#nu>=0{vpacf#QG8TM@}U=0-pSM$WhZ4{?gfboC7!JOio)a;z+)ibOY&i0*>-))1X5Bd})u4+CgT~wI?q93PU z&(Tk$ydql=B}7I_Sj$P<9X&6g{tUTjz~>)Gyd*lsYueBa*AC{EgSyKboI7Ymo87y2 z#G89Q{xCgi)wLOpeasdc6yn;qp#QNRGu-z?8#xoiyS|6`aKfn()?CNeds;OZGsB(f zO`$O%*qJ^*FN3OXWTvTxY?_MybiABmVTSBbwX7UpCV>XEOca3&CYKM0jG_8Q%}Avz z9`LaS7CbOl4`XwHtN)Lq_1+g3J)wNG!@IOh5bv^m)WZktiId{@ChlGho6i2=NsQQo zW&AEGN*7B6I>qv|8mC#t$OzRZqnq$%6Hn{z-oE?*jhjvVtMtf<*~bPxVY;VL z5@o?KT|+d8Y*e84k%n7I?hgrNe5V?Vd)_l+zTflZJ1MBHNLEj)-%rLZtm&l5Jl=`* zZ(bG8vN5O6Gv3hKSew(+RlI0xh!qE6er13!-`_VEz@#`#krG{>${pxh#OQDrD6~Xb z`hjtUSQ=~ZzNgGatW0Fpan});QAdMbRRWTmM6wzWicQGiBK= z@49wvzjKQxSufCaMTfO$x{-!i0+OgYg-xqA zT}(Y%D^K3U2DeKqPNo{{G{mJm@Pgy-aWp6PiWyCh+GbS(OXr1-2mA3DBt1j!e3?H9B&%#V6~Fl zR_Y<24cj48){bd+(8NQ2^#~p^^v+c)1W^m9DFqdBVpV$uLhy|qj9Mm>knIArhccQE z37J$!2!<#0!RpAWN0YtCivdg_qbD*C4c0<>M5c_Fq+1^;cj0)U_&v=Xv+lcTAAO$~ zS+HW^wCJc!e?2?vV!v=tc&CG7-(jvgZ{K>^x#4S!AFRKA|LJvX?4bc47mhEeoN;9S zzx$pi-#{6wgA$fy>b znz3wJ)<7|=0XtJ!IayS%>50&40WZ{e&YBK%yLri3^w+ox z@%_Gi-dicY?>DPr4*eybN8ZyaQM~a5QMB^Ljg`!?Y3lo}w|*%8EGlA2H)@A%o${9rYirfetD=$v0p^Gf?umhvB;X`Nv(2kW;1u)qBnd>Wv&>; zdgE_14z2Q|k|7Z+Anf}ul$QsFejb&~8w!m-R&)E0l$?~-&mOFwb7~cNU7MSGi z@9lPI^Qxm(+-z7d_HeA5=8(Fed9<$Rly(cg#iMS?nAlCiG5Th7sUuaZUz=J2d`7=% zTPRXC_-FSj@ckIht3;WN8gD9gpjl(6;+K1Ar-npH z=NL(c4xim_+JnAq^?$L_e_iE+3nYos4|vZ3==Ti7=B);g(d0p;0>Mfp1k0dVFnx_; z%2SXa9cv20S`=w(KXeEiBG8(jPZd}xZVwH(wjvHqtTKrtcQ-@XkXzFXohY3kfJzTu{gByYDwX+{DXJvP^cQ0&l>8DRmUj2Lg zH%mLVdhc~{b?u*@f%;Q{e$f7?GHH^^H1q>rlirC!BC$Htn9|CmBq5)l?y@c~)X)IZ zBvX)y5Nk@@0yt|hV(8*Lv}%dWcgPjsAcielACkjpwaq#=3=@7M#kpzVtud@tP|9Hz z;G6ZEl5$M^&c6QV#M!8)uRYtk?PzZr?$r}@3s}}hIr8`QGveZ=hmHJ&-A(fwmw-RR zkk9#quTL;VnSy=%X)<3;MA3l+H7Z1l#^)Gi7`pH3L(mQ34J7=*?xt8K{49XiDGG%( z@E-D{l%7LHf@oi#ol<&?4vm^9USb8s-YGF_N3s{Ei&tL$We6YUUCk$0(`G+5k;QDb z-EXgq?uYq^&x!ja?JzUXnq@D8v#yMa@DMHA2{$d#w-af5>zO9H`=G{INop6w<*1=? z^b9==2-#3$@dFsFhFBSS!zKhCmW#|Qp+-m)E+Z%&X%r5(J2?ieS**S=x0Yw3{A|w@ zADy3dx>KZGN#F9_lJV~*xFdFoRda{8Y5OVTr@M(k1>#<^Eu#5LV^GhYYK>^Uod;%I z7dPj9H?Lw?5$l9@ycOoLCni;7$=%V5-kS z??^4tDOY|&7Nu{VFy=kOUdl*mew_6`c`!P3&T!?4$)V9d91uTsWPLWhM_vhl#G<)FPhp1-&7szJGuXV%cRCE{AMb4*#Cw$xEQSRQ?xq;hVd@#RKz4?68 zt0J#sx!&%-kXXQef@=> zIwacu#qTWhZ+<73K?_~b9#MY&pZrc`{n{Sx9xJ@3Tk`he6?9$S($(E%Bm1+t_eZv> zF%S3tEWax8FcHLl(|SAH@qUg|u2gbY*@R(ae+&F_@PtiBJa@kvA@JH@D) zG6JdD!IXjw@;fu6-)V#{!&7A=T$uiblyjhngs6c-w5WHQTjI2u-zftWdij$(15jVO z(mUq46>~1dd*XlD@aln>&>2Je^bL3YvFn95!`9f zfYGI=sT{~Z>VCEOlIMtfkF_Q%dPDiJm~tmGN&i!CkDK`G|G)M2kdus8ye@ltoMV4> z_FiM_TKao?{N}xd;|GTW=2d>gx6}3q{bR8rvsjIg^fcS&6vd8;C-m{`n$$r*z`DYO-&Nt%;;kAJq~upGEFUCvlh<001-?8#(1m&t$>0(zn7=~QPVY*UWXpnmhxA(CUv~bICYpzMngNZ zf~pq_kf@zUOResL%}B9O%F}^~473Eyp>;w>P74`O6fi|_l#?ZCM?SGD#vQ?%jeVqh zUia?f2QIE_R|1qOzZN{%p@X|)-_dKg+*)#2ZstLJ&|{?y`|^Ox|(O0P#Rh1y7gcymL}-(^qXd>V?AQlb$`!5)HA=+u&|r@#15D1~&zfo0Oo{Ts6!=M{PiyEk-u ziotC~#a1hn4P{0SzrISWI9d$ z*EoeejeHTGk(xD;ZEV46?Ku$}`_ln2M->}br@pMt+RL%7mCMn0s{fJaRv)!mMSt&m z>t;?`W7BMHTYIefpC|?YCrY6c*pxJ)yZdsJr6@(re}hs)N|b{3AW;e!*l4&4o$(8+ zS$H%y_GeYhKIU%UkJVjsg|@&+X!A|SRy~gkBC7ay;a!9EbLlm#_U*)oQ7|9hm*c62JV^yV`cEe4L zCMcqBi0`VAG34n$=pyk^GXeD^Jk9(=gBT6C;2joUO3qLI^@W#DD!jw;bCb3maOKA= zU%IQfy7#h!R|sTVt+87dY&d)E=uGj;`B7J1U3!FBzjWu<+;tihZ-JbmFR?4?7Bb1u zEhNrIacMH>JR`vv{e?c;?g5^OB2Zg4uQx?((Jji@Nd(F;qtveh9Fw9=M+f%e>zpYO z3Q{ShU5b!u_$BMYQa4_o`}~`(;J{?@=G9q8+Qo=%UBOeR@TPV|OXIb6MEk_;tTMc^ zeZwCM4sYqyS^Oe)E&O$f2tW!QQVyqoHD5L!5oX@g^5a z$M^o-+Vh*ekrt|^ME@(32jEcTSwp9q(-z1om< z>o71VyvO+&Vq4g#N79MsPI7RFmM}c0b0o^ z)DqVmC1ox+}JI-dhGg(9HUC}`fyKYnb$L^!(2ef{X5~j_(zP!ZS%6ixR z1$uX((iyk*oV>LIOt)5ERGlEYBr#ptxG<7_Qvk@s8d+CWWaS5?XBhg#sF88x>iLJF z$vmD7%R5U;H5kqW$s0i$@u6xAM&Btw(4U+M*r5Rp)sQ?|XsFz5(;l z)|~nL^kf$K?$ArGEZtvX`O@vFx%(XO0Yv2N&A_QK;Mu9FQ}%FzYf<3x-PeE5qSEiH zYSGfBFcSv(REBCnFnpmARsqu*ddHANGZcc7x6VbnzDuE?>!k4 z`{MyIcc0*MYrHZx*^$)y*_;J@XxARB*7^@zuFdQD_}xpE?S!B6?1v}v)C(AjZTJ51 z?4+?vaVufR%e_*j$((=7G||t{1S~u})5OAMKTLEwum+KjN_i&Oq_Mfh|Bz=A>CZEf zIvczz^GxJ^uk(3rJZ(z%Jit4#KdHLGrF)%#yIY6$%Nu!LgZ9(6N_Q6$h$hGnGLPK&^=YTBHdj;>jDYW8gERhT$sdcvb4tsN8iGdCk2Oz2k-33xckb~ zjbRPXO`N_dG#~^e8NoK^GsBl&N!{any6j5IZd*Zdz|}vOjF~!n&AiTStxB=dyyb)i zU!76zXwR;lR_0rMBOg6k`{kqu- zF~a+oZph=@rj^{auS1<&j%A4&TD2Nvl;(HHOQ7>#4m5U-{vy>E5|f**gcp@amq*yN zm{(h8I+n(!mo!t;~J3nw(loBCS$O zolS>HYLyy~{8P#$ZgE`1l6=X~SHGvB?M7R2s5gadQ6c-NPnq6|w<9dYTC z@%w5tW-KI1ygh?rmvQA8tdBoGIeT@1xVPQop3tbt%qz&Y{P^!deW$(IHIeEABXM+Kd!O}X%y_(>*FD$Gh*?^D1wl2VZWhBOt`87Ac> zbiE-8K}Gh4Yp%w*Wb3?e&EAPjkv-q_qE?^Qm$%&4U%!TrM%P$+ZC2)xrvDedbkEK1 zIs^){ZH*T7)op|mJXjG|dy*b${W}XGW8mJW?gsUT7W5z+;p-C(>W6x7;imHvB(GWH zL7N~;IHFF_bfn>sey00Q5|`B3#*a!7%}lVMU!aA^ZXM`hW3-9@Td8642V?;FtXMP; z!SgJKGDCdS&D~XeCw{7<1Ti>F;~rgrN_fU#iL!__c0$t9uTjtOl9}m>*plTs-XB8c~DyRMiR~` z3X$36YP6i-iuL#-vnG9QDk*xX@|L1XM{(o}9h6jKwAs5cXoVY7KZeAz%#1R2C5Mzo zR4eSF8Y_R7Tt~D|p(7c~#> z33Rf)W0pr<%RA3^&H#jLTXD|u@c1WS@C->*Tz$W#EpLr}&eC+inf-HbdM5!iERe1s z2JZm+g-$WbUKgFF$%jJPSQ6wewX)5{ZWx6!u`$?XX>y~9TUR-{Q%q)aI@H?kZOIRb z_rzr6*R4(kUt_=4mmx_KFoR&6nySqpNY(OQi7iciDNP5fdlqu@{{6<6qZu$50*;0; zbdK?6;}hoy$io!3Wu#yb4#6g~AWhODv$D`053eyEirLT)$d&8iH&ail@tN+dkdTbO zItKM{_p){pyK0s9WF>unI!FAf^c>?IbytZB;4O~rx^}HYtrry*x&Gq>mv6pTGjMK1d$oN+SpPS&WX{h<|O&ruJ%%Sq4~N&127_JxUm!%@CWs%h1QhnmRQ9f}Ac#DZ{4Z4V&&k)A@rm#`Cu-^vWX#U)qQfSPf;5#s-Ve z?vDo>gob1mAD@`_^eJ($W>a^=jF-GWOn`>9O({Ok5<>#{U1Eo0yA9mn6rYLlY{nNo zm=_J7+{6~35qkC8Yk)6OQMtcDjnOLiV`yobls4V|6woL|*SNYWkz~p6LB=t>uwy z1R8~ic_@P!YN>+0cI(v&`8A1;0D$CyMm02p)MUcRyQG&F>o=wVY+;NZSF({SH>IEw z00=`wMh&e{iT-;i1Y+eZnQ6cc zWsVa?lw}_n1Zq&$=Ae>3T(snLRKrtbxq7;y_x4n-l{<4*oOiNDy|(Sft{PhJla1HG>m)g_t;8e!9vFbHsX!zZYJrcR68H!u`Qa~ z^_k41nU6pF0*E)TZ1to$&ASibGsb^q&vz(Ropz;t@uFqaaEKbH^~DRM{39eN_%qI= z*`$jzU4N-A*$aCLl9gkrmductK=nxvq?Q>nmgNYkOtSwUNGU^(SssFc$Vf)J4STd4 zxf$W%RsW?Yo=}t%;lW5K`%Ij!uIwys6dL^Y!396uS3c(1I%~G^%EZGU$h5Gmu0#g_gw6(^-{HM{mH>FrgFj%LLeifvmlFE$~6=Z<(j4bCQzzuWf3j%bV9@(9frQ|ou?Ocbb3H5&BT%Euj2pXdzXkLkq{ zp~zGVxTpq)$*J$}*a|%5M%H@X_ z)VYWmAcaj0Z#E1sXnV1sZB9YQiv=A?=SYgmFiK{YA5p|@B_&i^vYtzgE;L+GlG=lL z=#-V=z_3gTNq{YFNE3Adzp?e4u|C8Z(mV6+j;FVV1ALsZ5%lewac8e%`3K2;Bm@cE zv9r6UmDhZ#-SW#ReS>X*vqrABhxPotL%XNTC?0FXs(w`;pU|tS_g3?WXm^?D5w<tu^rF5@+&GvzC7Z++N|Z%i>{w$-+OO1esuXG*N*clEt-v; zWBa5MKQf?W1S|W*%qoMbu-jEzJjDhKqog#;P}KT-Z@cL~wT{}Ub(E)u$0o*8)4BJ5 zacbJp{y#o791%fe`l*qvMW-e&071aGFFG2mU69CsKQ-(5$t!~#!R6Dhy)b5F868lq znD*6n=lrut6(y`X|Ba*y?rc1rFlhdp^qzC_ki8B%wYK9Uji+|?k%$O)8P}86me!S1 z+P1!X`RAFV2z+hZ`meWd;>3NvgzJDcxANq91?jqJk7w+l@yZG|0Nh-+}6pr z+r?{T+>!qcF8_Ca{vauZB{~nUljyTdjo0WSH)5cV&c`NTUeZVZiJ3m}B*-414-8;~ zIQoA|E2h)xzl8ORrv~v??BayWUG~30_*uRD{5f-ASu7G;tyh7FmqYzyWCCHeppoVQ zm<(7Q9z>^j3E9GSHHNz2SsT(1z!B7_1?6)_RNJDE0UzVaKDzSznhu`g!ImL9XATIYxl-?)NG+;@hxUGc{p1#9juwkjXN z`i#Sxu?tMJ%(dDmNvC^Ti+cwzh0n6;D zT6}qGp$7koymB5&D5R=r-<;aF0PS0__ANyF7NLEMl;5ykmm>=xYnI0)zX-y~Vnszc z-am)1)S?{0s(Pyxv)F;+HD;;tH`}tS!K)~6UcR%z4z_(~qaExS@yO2luUZ&-2!2ws z$#xI4~>>oVa`V7JM$<<|?5nQqiyh(L4}nDK+ji zl>Sje8EwV^>hw*;A*`OFgHcj*QkJgQojY*rz}$W#L#=KlqA*9(_Tj)V0q z8rqtbgz3Lc>6|bw>9?~;DTpUhyTtY>YipJ;V;(ABo%idBv+PydUf}#LAayyI2h!Zq z$kpE7^>( zRd`_s!~1~lx>753JQnscybqb18(vtm^c^f08cha>V6YpXEC2Go@ptfC3oiYK&wAHK zPU+sQul-3|`_4&hQ^b_+-Jfud2z<12LS)3$ZjbeKJ{kDvqY2_^!wYX!{FeVGjUr}r z@xOT1@RJI7-lMPfe_4O)(w`0J+Mf>;ckpaTCwdl$XM;QAnfJc_Ox(b;p&jv_ExyYD z`9%Jjd?tTQKEru67f-M@wl^$RWY&kus6hgJ(kvj3lz)(xL+y-cvPTY0n@G_PPLI{V zt9AkBi^Kp61%p)_8TjY1F;9le#vHb+jL0kn9m8Ca4&;dk74)6CHfV3ZnQUJO%Z(5x zik5_k_sX!w%G*}fzLq#!Ji;n4`?+@Sh{swk2&4;6d^9bT)p#=K6HdmiG_{6JkTD@r%pGzTR z?sxQp`~bQw7M&PIsTtZ7-wYbip&hy@sX%&=y0()?qGz4y@dFg`$Vu@b@*8y|G~g)( z00j&{9iR!h8(7g$D{!GnX3!oTJdzTQ;NU1S1sxj4?cv|H&uKkk^q5`c2e}z{XZQyg zJ3Nlyz=d;X-!A`{Yx|Uey*lQ!onP(I=aQB;?cdFN*!JmZ-xT9a@eOM{?6vb7#|rzX z$-LI4#5J?;LTA$KjLVL6+~!d+XTP-P+TUOu zR)l zKeE;;DJj_@w#a@gnU+r>=^VVhZMy{$utXJGWW8Lb1>?5pee3u1KI%NC*}}*pfb}5X zS6(mq67Sa&TVz#KrsWsyef}N3qlYPY@DhGM3Uf~)4IMHiexv(OCWy<=E<`cib3oM` zMa-ulYcgCD26TStYIQox)#@+)Wwn9-x2vTB zJHGgIPZTxHcd){)=h$DJyw}-Ut;o*mMwO*jWheQ6i>)c~KkA&cdx39wzdrb%YRWP# zs1B$5!f^`N9eR*CJL304fbAM5Zp%IB~pjebMjZ*_vg~IbF55CaoZWJ{h@2riEiTbe_5lP z7ye(Z5o*P-#!vXXt~}TwDyVv`9B-hWUtygk=Hk4I_t z59RQae?|{!2)h;Zj>TTe`1+sw_F}4A@P}JzFZ#yNhEH~j0JK1RG3W=t{Ki;4f?x(~ z5p02O;s4YY#3dUR{4st^Qq0XAfh*rm%Dnu=@;-VA;cxu$iR0f}cMUq@+|qqlpfh~c z-b>$WZXe6m#uORvN--%(WYdsapW=TDxSG3l9MGlQLBm9u}} z(PvRpZp%$Mw|>kn@3x>>BR0I3Qo~`bF|PA-pJY`Ejo}R%&iHLz_wH91XLTHIhxquL zkK43)_Qr%t&8|%E+MOwXvdjTzMz!S%%WBnpRav#%A{8= z*p&t?#_e-VIFymdc0S)_(2fv$%Qn3ijUE|jFO&OqkEz0K@7w7@{R#??Tsmk?>tJiO zdbdvWVKqjmPPgOwt|gD|y_h-ivnN>Bkqh44-E^>cds_-;;|6c7I)er5o|$%8IVoO% zeREZ8v0g)0u1rfEOX~zsl#Sp2BVo^E|~jtyVN>sIJ$VmXt6Kn*RtI zW?HWKX#Tv^or^$oszJ@P{OzOpK1uU?unfMy@4HY5YBfwCFxieKJ4W(9L4j6eYJ#x= zTR3R+n^6*C_yB|#22Y z1!C*5H=JyYcs8&)-$fm^Y6OT9jJy5zvh4OnGrpt+5RcVHNgr9elaeEJYRh5I`V0Rx zjEa-1jmj~`w+nCrK>b`;tt_bpt|wbQ!>^a&7cAV3(puDe_nI;3mPVd(}uPu+5Kp`~2uJZJxM&t9!!%eOZpU8e0`*wwh&PrOumW5D7PSCzB5RLxr^t zRiICeT(2$1Sdl_0fLIctV<0BH_)Le=^6oUHKl%ha6ATdnS`D?oaC%hqIG zIH}z72y&#y+0FoMssvx%qUC{9G&<@JE=Wz+dTONSs5$AZmnql+zD<`&@(^2wL>V<% zZ^L0sQj+N)m~?>C&$YXZIUz^_0c0&_aj_I%YKVjX{=yIa;xp$?D&tQ1GAQj3V@s!> z9*%CXk;Pf*krDBqZvXB5vTu4PE8Aj}3wz!X7ivVUWI->z8@g@wx8?Hova+k5yfVK< z%O~F%)qBm$&sW}}G#l0O#JA#|`=CN~bmOTH>7I&c%QzL`AY$R{(wMgtC;wocbgc|K z9hs=<_0zeT6n04ppr{X$Li-S;(8HQ8k-h{mpbRwxpAzVa6ftPmR3gHVlj!cye5; zNofnRt7oMSPr7`6@<&tZhdoj2#Y_CTgk5}5NQ)NZmwbH!{Ml6;k)C5&*!Cw`Egu?zdK_@o#H|N3n@{Xk7+&i>45ON?gsTaeNN zzsr#SLPu&W2t!?noTfrRlOGar_}pOTVizyHM>by2b8jVOUU{FrE&GY=;1Qj9vyeOI zVB=LvIk)8CWhR};P<9Vfu}h8uJ*BRinHH2N0_6!;{w(LEn&~G24%!ige8qK9r71`lL6FJ}FMAm`({h0*Wn9N&2KXrElc>kBOW1$?{Y& z=!Z_vR#m>=0;f$qTQV(ZPD1Zn>jLlQu=VfQ+9Go+4v~P7YB??UxLj%VgXwhr9&4EF zj)HQP{b6BAVX|<^REHYtpI~o@cT!$Ta;c?+x25cG9ASL3v3bzBb2LN!#Y zO2q~ZcMjlA`|hvj_FunyZ0n_iYx=kU#>zY;CE|u?MYu4}v|x}7aLBBUEi884 zsR~dS@dfTM>hkb2jIgw1@vM@WB~$39nS^Ox#V3t6eu z3@)G^8yyY3K!bgTiOEuul7UQ53#0Z~6#B=38zq-nUgM}?E~Q8}6lxZI&ZrSyOs=wV z6uOiTdHhB9$b>|edG(V?V)H>!l8|`jm{Ok4N9ju~&&Yj8KJ$k1T-yr*=aLdN3s&;A3i}?`NiDLRg~uddWjUBZR!nESL!x zx|EisZ-5o}*Uoy5a{sz&*h^hlXf@>b41Rs=h0@*l_JJ+UV#@Set9tZcJsx{Oh-Gel zV{#g+-D!`7L~^5sJiwDrlntP4D$TZ*Uaj7r&?Km(RiNt?y`TQtKEnndiX; z)qz--kyAr8Dw&c-vw_8A6QA01Wy+u3)CPj&uYqR~#FGPSvdxBcdRR6N0z?5fQ2xDk zt4ov2T`|&J)aaz~hr>=rrN_-rhE5xH!m;=GFNr~c6~z&;*}=Mh^Hsd-^y*EpEv=3o zt)_oE-EIxZ53oAs|GcW-_&|F=STJ|?7@&9xw$!eC#NoCc-nQg?N)5H<;p!cFpJI;` z3>d%$3^*b-T;yzM-`WkjHY0sLs^q41Gvr(a^vQ@b)LkZn0Li)v*S%k3=u35mCS!YQ zY(@HpNhT&JBpIYAmEvkvY_udr28Q-(Y(cjHyTxAp#6f6=N*Ty5L)VawNrj^d`v=(L z>PH2SdVBiV{^8+a<0gJ-yD;muNY{?%?_!e0j>9ow6Z));zp{TBi<;5C?UrZ7r`s5x z@>G|{pR(mn>_2irb>)RQ-KVA3+>4#w7H5<*9VKj3Z9%c7(!<8Kpo8I*(lj1Vns&^YX}2BE zUSPrH5?{L@es!?utDh#i4lSBHGCC1Rc3yPSgw$bW?L5V13v|Wq+s}8p_paTz&&@CG zn|UH5p@&dE*M>?CVWgQL4e4ad zeWpmL^nrcCpfq3_YN)nPV3%b~`@}X=e7nS{IZ8K3C!4n4{xz$gQ(5d5?*_9vy9#4c z-rbuRmm8fpF?Db}OS1>YN6eeUestSz{^H@A7MyS5KD})A_AzN=W;&}iTtD<_aA?U# z$nh<~ea%ECVPnTe6Lu==lypI+xBnnq#&~q-cwsoYf)o>ar+LIl7FMyoS736(^UDou(Tm8A=mM zzl(Zxl{`>?gaI~&ai3k@GckQfSuWB_n;7!u zGlCVRZPN)ShFF!5yg-{{>_-dw4r77F&W7HkmUX*5ww}dr>)oe!pWWikozq7*MmZw0 z^e?$---EMELd-4d-z-K`2B{w$B>wf6nZYABqPs9XFy;aiiGKsW+L%RBTLd5Cp{939ZV zP&|8q^A+>DvYy^naF%NGbF@E9wXp4%cMmZ|-`%5yOAV}_py?LM&FYM+hwM~`oZdSH z9b(NfMbumxP=7T#o^Gx@Nb&ho|b5EBi`1ET-Y)Xhb zEMVN#Mg0bI7Qh|ezu`M^CbaWg#}Z!b-RI;>;`B~7eM|!Yz|?8uwzaSAJUFza8erg1 zlK|B%C(0-=td`6tLySUAlAa9#OIn2mOar&ekqPndD;l#&m+bY>tn0o31K!#z7QV&V^pOo45Se;@y4cyd3oMC9eR)2%#t_v z>C?COE8_LtOk1|>F=Z{1QM-|9WYyBH9TM5q{n|<}kYsO;xBx2Od{|#8*>w!*DF*iz zy})IRwUQ|lN-dvG>E19L!0~`seSjhwO~Fo<^V4aNI(a^tj0S6I)6oXG&TpUhOhf{! z{o^wq4-9pObvr)(P4Po{S6CG`YqPWPmiV(me7Nh|9W!n`AM4H#$G%$g(;)WDqQe=L z)zJs83_dV!@P=-imvpZGPQJ2wUXSJ@C-&SvlAZiv=pph1j{>JM;99(s@|W}k&%l2) z;99&B|5kc}7p$}RJlh3i$%ethq7f;;m}P}@SvY#JRB?nj13Cn;iv^4lVk2`MibH|T zKo=#`!)Co%M|n4IW34iQN!1eTR}QqUV4i4kg|SBc>h=UJo^A@frV*dcBl!Uf%I{@d z77R$ha;7(prD85!)Sh)fer@nTX z{0fyLkuax0kcEfyWL}jw;I>|-;1o2hK?7-bh+6pZ?~5-u6?aPU1&87mU%U59G~t|e z8CznHz~6~fxt;;$BM(07Le3kCo!Rizp{~fhG70vG)UmUM4Bn0#wAVVFO+X(h<0q-j z6)+J{Fp`W((C<>}uox75BwDAZPM9`i&?~rmB|A$Vu}rXhi%*tSt-ikrCl>LN($7m{ z6rayc9b7iX9i4bEb==HnX1s#Gdjo&B5B_cdWjw=62SjeCBO?~XVR<~PSwv7!U~2hJ zab@h5Ax-Plshc={+aS>Tlyw=ei@j#D*+p14n{7dC5bt9ryaN8mOg0BJci@qb2~O)| ziE^D`mTcq?%EAzIK(oPn4cFI;yiTwa@|VaB*Y>Wj-Q}Z!zK1I2y^Qv4343}5NClKN zGOatAIvPubtlw+N0lKP|dQE?!YiH7HMq^9H0Eq*DsDcAX5nCIJhFjd5MV^DbTgzRG zowQntkuY3~jTZn@Sjj!n$NCsn5=ni~d~s5;6J%sgUy13DOKaD(5mt_4mp2A9$smPBBmraZV4Ss^#O#v@WIeH4h1~+cr)@chJ)U+8Y zZoX*QwO8ZBX5G3rCoXAUa-Zj0hQQj7$gm)rID)MOmn3MnQxC04+gH!~&~lOSIc1an zIYj=o&*AgD1fOS?!Tbr!7yJX9eOdnmJte0wz~)b+m(rJ(2^F51Ib6wzb|qMq%xG6R zz9A|#JtiuJp?`wi0xR87721LDmV8S~O!Vq)dEQdcGpFEj&C8Njs(y&2_A7BMpcN_p z#;4wzpXOVRR&&*ADqwhHAl~1qWCt0L&P)8_z0m?d%FCBIyeZU?o{RM|TGK;ya zeLFoF?pe}y^rVQ8vU^5#8WTBW>r;~=f@AiGOneV=?HxU8NN#sZe%VNqmUn%0H7OeND z%5E_$QY>X`Dw`#5zGb$u!WIdg6OOzR%9Ylp5aOdA5HulM8J9hq7KytslCR;HZM!kd zA;mI=uhH}H{booAZZ7R*CSRn~v>inTKxf}XBkj6KuR~`v42vDXJyCIn`S%?~bYK;VCW;UWn`7t%0?=WBz3QQlZ(JjE{?A^KVp2XgsMYe(s z?Yj2qR`(GR&bd3MMY|b~d%sq2olB6p0J(P-Q`Od}F2lrYQ*=_-!D_`=39D5!12E>i zO3D&JOfTeO0gAy9!Np?~G6K-%Au1^zR9(_cpEDd-w;tf6adj zh5z6!i|wkk@snUdWdf`EOihzmRY96;?uf^Pi}V}|#-l!M$du|WfgSy%rEb&xOMl{r zEk;5KpJMDyxFJK*g0UoU{j*sslk`5F3wZJBjxZsKNW_ zN`dDPWO$w`f0}+#&6Iyo&C>oZ{-^SU7Q?6oVuawU)SW(JQ?n=f%1W_88)aaSPh^TM z=9J@1MSS(BA^z}Q>FMct+HocuUw!jf9FOkjE_#_eCyPzo#ad^JFfp9fzrzdLh>w+t z?myh#o7_cTc*;HAw-El>_{SfAxY-v)4t5lAfnJE*{Q#=dw7(bC^4he&^3+CCyGJJO zG__5VSfQ?!b$?N6C%+>G32ihM0Mr=C3f7gnSWSzOoSBwmOs#}?N7pFIw>0#N0o~Hb zS94W|7l3#!@^RoAXld<0Pqkcb4S&o^vt9dnfmNwjzg!1irTz{F5175TlDK~9w;}Fg zmVM%rkb}9N>UWD0ZXRKQDT#;nm!JdX51uA%SU_&@-rPLJa_*Y|p8QbJ6|H z9oycuLNawJx#Ktmic!RYY}2mRZ23J43bHQVC+^KcMM+g;;MHO_)m^&|DLA*}UOa*? z@R%hZQPYd(C_uwwu8-m-7S_2|($ydGcgD%4hq^tea_u!ubPXpX7fRDeXuz2UHkdoW@##xK(N+^8h;M-y)YGb~f znKvFC;^ON+l{dDvIBTt?%$w4wlX!zQXwmq)B9ti@E*#wx@ z6zHUE%RKG6%N}34{M4CG%?_4>v9ry}2nnI)WD^jEl99kucm#uI~Pjk3HM?ibqcXdOFK_GHAJZH;gEpK+2=^QffviPLBgB^2<=Bey3Z&7`4kL6oa@{YNd(4eoW0j2}cF#X0~Ry$8nH}nV`%mwW3xT2K9;=sCdNXz+;Aw z3#91NNv7AfQBV+SBM=m@1cnDD2UZQV_A0RB-sJ4Z7)Cpi9V%QzLvpoh1*E1Kg(OtG zp>Y=ZTSg+|j^R2&*E{4g;KJY{LQJCORUySf+6ZDc(_{$4bkS*u7!v|9X;AZMq+v(( zWfssccSc5LN(yzQOJ*rU-79_iCYv4D{6_pL=X7SRFw?Pgu{g)xcCzBXvK1xX8^eFj z7hj1*e5E%u1;$|{mD(v?ajE{~&x~=`>^g|KzYk!W>ev4x|2KBZ`z5puv&;bCa0hXy za+ar5rvVc)!QOsd0>swPh5<|RU*`Nj#BjcRyelC*EhF_m&# z=MaCjV1!M!T1B}m#BU7YEivIS$uU)98pHr^F<|&~rVhwmY9C1l4ZhOSgAK|1bm_Db z&zlb}Ac{f&s;~n+6!$S$8o-pol0JA|KAEjM%@)7a-M$gRS z&XWoFYUXbIi}TlnpPj$X_>$GG8l^a=of4O~aDK08tyVANi>(pUy4ULcGQPZ(9IPpe z9s^p0z}g)S*%^=CJmH31S5tbcZtY4jX_A?G$)0M7lXkGhJTg68s;aVNN5w=yMiPPq zcP$H?PK}Auw4O!${ZpTyA5nRCg)+{t;~ST`mtPfEE91w zYK2n9;o<({5$6sD4nppx#0DUM7?RObht|83_?RQphzch0hd|(W4p0VL5y)kfpK7;@hvp+;VIddWMfag$c1#AUlCA7bDqnH-L;t zl*gX_YRlEvUq)>#`^4PJcyGb*wv{Wj?6hF~N751J6fskV+8HXA(s4^- zWlRYMuk1$Y>s+A&T*x?(Fp1Ng0FGM^L&7K|VW~k$0rfI8OQCuT0P7wIeYXcNy99dB zZi5VI@H}YZsgaec@EWsb2Pm#N>l`Z=4o_Xsw?k`ZwD%3jy&;U{6tRt(fl1SApB5nD8N;b0TyH7;Tnu33C|${Hoq}9K6Qt*>hsT z<4(_>H9saI{^X$myK`XYQCq7rC2&xOQJc$(>UrKfw=tNWN8fU@b8h9_=_UO)pL%WC zkPRnA9e4GPk8fcC)#5unzIjg3I$Nvz2QUx&u&o88&!5Wk*1eEE!Kg5up(@(^OsM$~ zp8%5LQzw!i86k}$^G@j}$b^F0WYJQHqPPuaIW8n@SO_FMLZ{#nl!Mh_Na`W=f%jo% zgi37^L4p?13fgxhbcC;d){|l#^j(b(Z9P32_qgA*hez~yxnq9E7oBXTt&!-$*cnlm zmlgT!JoA3fz81;s>zdfr1mv*KM*J}vR=@z2YgRQ6hZfYtstNk_i`BBSb`w$X!Z52J zwuGBq7+LyKjn;k%QYNPKT?8n}l7uPg>ox;`mmEkX)q$vSrn2qqz7fa91cmNkSsUh@ z=^E|y#?S0WFH3&6 z^|fuZWU=#>-h3{;ucFLC=HMCpC-{Zo+NPw|$AMI>hR>WX`Q095+mGzSWXo~Biax{E zXrECC@%4R1Px6qTIfTD+1Jy`bJk>IbZ;+pvmfd`l z{0w3~v^J%D>1RsUhSO;TkKhqou_X}|1_RU>t-=6GD+#CL8%LnWEKxa3^N}=YS3W~( zm;r28gM2?X-8eMWGkOAGEa0@r`hs2W%SngR!;vnCBZFkJxa7!R8T*5If<{Nvo_V`Q zXkgt<6MH<@JhrL&`0g`7j<)-LTsZ4!$7pLNtNLDnxSeSa4UOJC^Bl{p!J{uKV%o?> z>zQ>yqx|efjTry=_no4(cz?q)Hy6g?F;`NZ$AYLaI3gyJ%|4{ z%u-La`|7WJGY|cN7$`*(7DXPn>2f;gFTqbjTS=I)t~?k3j34keQf@el-gTf-{Snx= z%14gkR%|bCQv9u(Ra87mRkX9sE51g%+s`j4-ytFhK%M|tqqM~TOcL;`;wug%n_qI{ zw_CslN`uWFXsL-=GvuaPFp)xvUwJ!q0VJg~$zlk11bz*SK+P@~+M4H))6bg5@Mmj# zTjoxj;M{WSd0Wr>9XMYAC`I~` z=0qYz58WVhW8gp7sBAIDL%A9lyN)77i^Fz&*sgJ9=878|SDc8B>^^AShcAAfG>v6! z9=iE4tF^=Wx7ZZka>3(ITz@SsAoKW&)qmB>{5v>+wOZ6`;Ae-k1BSiaf3LV-K6?E1 zdG~Le*t(dtoODq9{qfH~4LCi1qWJmJll(BoCCt7vzT%%h^DmB0sqD@lqV{C7f0$hH z>AN$yxbYEsFr62z_+|8pa#`y8>q$r}$ShAi7glB?BaUV~D9Y_LRX4lH#LDu>@CU`` ztHb|B=)^I#-0tZ)^&_ff4_)DUC-#+RYBdS1Uv0?JsO~QxMB%~K<+k`WyLp*hK;X~K zAS9(Rn_$33UPdiqEyYVtgL9TL>Uqu$CMSgM`J8&mD|?!h-5TYoxZpyQfm#7bf{`< zT*D1at}M)GXk_Secy{;&sg5xe0A76xUDrsL0vP~QZKL4tRXKXg!2+2@+5E5WkrcwY=-_S`NqO9+kByApd~r{u?Cg~jhO>^0y*BQdc?&K zqAR!_r15Z`%2Dfbd?Gcxm;V#3z19Bl2@;8P`dx9kk3#C%5K+%p?Xu4d?L(jDA@8#; zM*LawaOB7`bINa!OVooQfJZVuESHt@{+KJS^YWtHU+e}_&{Dls_{V&;ccAx4z8-6A zZ+V%Gw0=afP*kMsf*g;qT(pkBS{C!u>^l5X%6q7xT4Zj347bw-k+NOK@T73V3;dGL z1(h;Bl58M+o$)kqZ*@1w!~ZuC^I9k3go8`+EC(%P@jqwD)&r8E8-x(vlWebQZ(wh4 zxA)SRU9}*#hOn1ii{$T!>zCRgCNwW=S-;eN!`op8n7V4q#2wB=cUMB0AEA;=te>W_ zUbMSlJ(ac0R~_2?3V=cS%rtpiraP|hN5YW$3lmytlBa&~9^Iyl70LV`dI&caj%pMR z83d7mBHSZQK2VTIK}~Az(t`btL(%2Vt(Y|>bnKJ~yUNC}Xs5VU$g5Cudc`w&+fmNz zRL|#pvv;chs(zAoY{NINZcjcfw(e^ zKR0bDZ9(y@Te*uTCEhQuotLcy=S2~L{c50wB;r2n(X0RRykzF9zQKy{dMfHKOox|- zpQP!|QF**5PcQz*lZ4X<3<^Gdyo_9>KpkELzFClIJX>A%BRmMAm`<8nMChjts_dFs zzkXQ#szX+|;@IEX;fIZ$Di1%(A#SN|RX7T*y)+IWT18ZcrdT;+**~~J>m?yM!kz|> z$hK_t(NHt1|4ZsgvOJVvdLp$2N zkapWYtN@dp)~Lz5}mZeUHml3$I0jG8mJy#)YEs~2`@V7 zFRI~1HT{KNG9+226@Jo+SSLT+q|vKMFS?q^d{HYVQeGuu2!*kwxdsJ^;dJW&a%Gf) zTxxD7*?yy5cwvLmcj=d!8D2IBFX(`#+C)?zNMTRnG0{3CMlZm1l>L&6RB*by8CB3P zmS|2RTLA|Vges{Yt%X*zGAaF?q`J)#$Zh?)ww_QcC?GnPd%`#Vf8@P)d=y94Hrmxa zNqH1ULK4anS%A=p91OrbGhu#^BP8gq>xX3yXF>IDwq`lK2Qk;;tF9}yS$U26 z4(+qGThl(H+Qdv3Tht>(Fu6CWH)K+KCz>jGQ@MCUE{IIp@M2CcU zL19>eu_^=+d0Y|;%~qF&@P-3Rvri7JEF7vv4_wN>A z;5IBPZJ2$svFWdE+@+JtN+*<+jx8&FpzLJZN<&8JBW0x%%Sxw|m9{P`ZRsw3u&lI` z`($U+fRSaT`DLYpP-dO}R644xbXZyG;Ih*0Wu;x+RCqnaeX@_~S<~F5i^@u8xJwsv zli?cEpJuvC*OisdahI+yE1l~u-Beb(z+JkTP>drEkDyA;v`3=+5m7Y$!@xe15f(xD zBvS+Nh-r|`3^gYqE1(1@$~&b&hlNEuk3shKlIIsXUwsa(PZyr=^Yi95;x-%*7*LexD4<2O zCoLKt{^&INXNy&yD{oWY&K6cZz0=^M+czDMUy+;EZqj(jpzNDBZ+5oXWSh;=tGq#Z z1Lf9_O`FDMt?aaD=h}rijaoO#Z{B8bmqAbXy4V8u+a!fGv~8EabR5K9!Vru2s6bX0j7bm0EunXTHyJ#Gu z*kb99m~~AEiYD_h=^@T65frA=)F{LTW?|>@hJNp~+u|CQo7dJAG^kNt`(|zHwRQ%1 zJ39_O!>%=cxL@NYJ$mK!?NOr%*nHy8=MF=V@w9uuFC z%TT(9TR2c*)KuLIRrbiCs7CV_ifcvl6I?5PD5C8;6kDe~1trt&I@#X*aCc7KPD7S> zyfH^6jhh|jUjC5w8M|4B6%6dzt6q(f1I90%IegsA*1uz|E3xDk5ijnL+NjKk`@;gc z>G1y5sy2ytOM{nIsa&@zEA%NZRpZRd$YCwL^L$QLJ4i0;)@V2+<+O@l<$i!jIQ;G% z)at2eL`lIEjs7;=zeXW;eZGR8xGQJcu;3VUU~jx zr!62V{_(l|m*~V}C*+5_j9S}BmgPQON3O}0gQksb)dZsHv@tE3&3{srTlXKaPx~~k zY5!5XSz0x$d}PH>%2L~7ILjJ{h~+28<*F$C82!#nC5n5&kpC|Ue;AY!a}h0={>;7{ z2vim?j_&YkiQ;6OW5YiQ3h0$G{K2WAvInIOYPNl$V9(jOh{Z3CUvnhX6&l_^JF5Lr zCm{7x)hgJ+99vbtnLwhf;4SQ(!pj}_oJHhIGG9a|g z>KwWr!Y_{{i&PsbGbB_Q)Q<%&e?im|GFpT!8p4pV8>SMClHlO2dJUE&MJA-0`!~0FNd)& z!+fr?0OGH_E|EpOf;EYeuTFLG(i&+xK{n^Ak?I!cGWF?oCejth*Pun(T^cT~H^4)2r()OKf@JL4 z&v(tlnfPv)@GMvqUAVdEQ#DGWY6*V6%ZX5yevh08+=%npoN~wGaWSiwZF)U1FY)Jt zd!C4id%<@{KAj_n>|0T|v1mEl`ND~HyH05FSn21G5DwcmRn2qnU#V)d^Q95bHG$j2 zbM3@)Z+kCmi(Tx=P+QwsO<_uurH;S?;$3dYgdNmGo)20IYVNKIM-8|T*EQcQ9KETb z826%3;2tlXiAonTuX*9nYhFZn+442TfsU}`n!lXheNb_v)&7M=Dl2C1dp|3~;aI+O z?+0BS?k9H)9&qV<7JB34pf~^2eo+Q2+w;T6?{z9Z^&>mm3!b#EaE`y?ZUsnPRlBKj zIX4R$&@sHn<^VfLCzM4=^uT0#R|D*X#IVSc3IcL$ceYR>o#l@?l~P|Vr;_FHdh6M0 zdRa}J4BBs@#^wgx>&7b6Jz~W9xarz>w&ikj!!of!R2AfpVIHJdP#ghB;Rk`SvfS2p zxpQ7u?OaP%o}4DHXTD6WJG+de9qjc*JTC*!3z7z^QZSJ@fwLC6XpuM!V!|1+;UPoa z8KNwzL%b*wEk$qT3o?TBfDzIEb7Yx)+}`&m>)KMgsfD$b@lZn880V4RcLzl)=S!S{vE&4w!Zw=i|@aGLWwE=*X|3??^S|`zOBGM8(_f+ zT%C&4qmMZ^V1Zzml`8o2VohW!m5;s8_Jwt1QVy1o@OXe%7Rtan9d^jL2;(&DS;R<` z4#_WXKe{p^s{G`n<2{4D;Tx9M-1ccq24j0qEQ^TI{w#gr!^lPv7mjcIym|ziSlGOF z&W=Zx92mH7)Xc|1bQHrd71G2V7uCG7Dh_%!M%}68`%XA$+9BBedatyf@gQ z<1fWUpIrDY%kwQ}qt?C|7x(xf?GpQ1i?gklpW8F*Sar=4C@1ckzxWVV-=(6yEroNr z8ldVn;ctcQ%II@!xrGLzQ`DH*Rts@8t@4n_iSNvE0P38yOS%rCD^$E{GHF!lAp7zY z=WAZ?(sRd+IJetVi`9L7*Y#>)?zrm5PenYn>Vo!5W<2VUKDFvR3#yqAmUuJm-I%9$ z<&RkXJIj1}*RT=WN`I5TS-Dp$e`n`_-mCU$Zx;8*j#}V6?&3TG;blZVJ@=ndcww-9 z9+rD-NZe|W=r9swIRXkhG$A8|KSFmQejt*P3wo zKzkv~)mpsl^lnghz`w4bs#lvfKVyPw((2>-^ip4vSOkk&p@`mEer zA$nRqHk5ChjO^vk~)Kl>wsDRWswb@CTd_>F)$jfPT~qBNvaCkX<;h{?c~>yuL{rRZwv>Z z$|TP4oZ=;rzfk`NSPdg0!Rd(qc4rObC%WD6<`41ptF66u$$JBfdfC?G-ZZ(E9ERUo z-Mfl)F{%PBe~sVlQhil&khJjsLJ7=dRR|T4IrHQRPT%00xn3v_I<%YNw_rd!kXw_h zn9l-jKiMW|`!^|ZGNU^93kV7MR1nh5{pD=$olf2xxl{ikx9;s*&)#h(4=vSt+1C3e zoMr#;{l_;S>j(xtr&ABZz7Qbp-a^N2W5-e_cLQ*{i#Mo#QnIX7Lq*L>xb-k$gxtnQ6tWx4Y4ZKt)L zG7`f=B2TYc@N)BJ+EynkS-j9Kul#XC(KjsV%$^lnw6fxXy;tmS*@$&S6c)dU=&MUq zpofJDRLSvFmtb_$&t zHA{Ri*%ASUr5UmY)sz4)KsdQs+JNzc`u_UMZ5jec2|l|+$R4cXOYpj_z^`-z0^ERTAeLX84|DQNF_ceD z3d^SQscB_qs}E^7<|ZH_);FX~ttP$)+oJ`;5K$=W$-fAXf?-hzUT_Vj8K!+_iu|lL zCM08@{D!0aMVD*f+}PkZoNtCEy!qJ7B~DwgH*oCeRcbXi+bidd)c&ym>AvY7KGn}V z@$DZLOmE-0Rr67kUcE%wAt3q6tB{%Fq}i%nuiQ*@z_L+(m+7b_VKzkx0SEtWJ_2=O z;iKTye=U22JZpAA2lH?#gib;9adS_7M49Rd6eb@KNa%Wcs0XeO{SVoQo*b0@YNnw= zn@hVA&RRLOD-H7+Xjh%Aja$3wVznxoeD6>qZR>mky@R~krz{CC^5ed#)#8oY^DJ(U zo%&tuiSv{3C_e<`(-pGI7fD(NRQ zD57*`TMbz!xB~+s{+#j_^5$kq!I{4Il)AR{8~S%IuZPF@r5Ob_$1M0#IrZd1t$~3C z=S31fDWl>TO!h`Hy_xOU*rnBu4M?;9LcCE%`L4R;mfHCLR?3mSH}$(`UD5FDl{75#f-a&Dj4$xqA) zjx|!XbB;x41}7VSy7ZH)l3|(o650g|ens`r%=g(EZo%zNXqkg(K>U+$`8+Q9p8>v? zoO07+zF4RHjaLrwvO5NaxAn%_oKkC5F)H%l_E|V-mCTbA#;SN`in7l8oUb~NR_SW% zckdV`huz|J0D|s9nDn4O+L>;-MW`|OqMQrwK>)rRG0$EtoUnQjWZPdraUwu-QlxdNNBEaKZt@%AC&jnZ z+IWCzW&kLVNBri=ZXF%wN%CZST6wyA@;#G13q2b>MV`PR=IchGoDwHJ zknUqlj1dn+#46OuBvQ9yB4Bg|GY5x3SO%KP=P+;|#hadi1RYPL!=|{u_NB!>q5ZZq z+8h1NuRy(rehT-pIjJAKxA$$I$exQ9|Yvk0lTbu68w@sWFz{1~pgGm7c zeXn2q%vpZOargO?-^JLJApu{20*?*o#~ksAu=+%-z7aTN3Zf(VvGJS) zW5Gry;Yo9@89dpzd58)&r_+Y>bAU-c1&hwmTl=LVgD}PeGhjxh!jq0;zyoDF>SD+v zcb)AQ7I|#h%i5PQvhs0=w${lS+)(5w*7(ySuecO*w`q(x4ZP?LQAM$lev(4zl|7d@xos>0!vlVK|jEbgfF^ zTCg}Ai$}q@@2V%5;(O;I{+oLgOv$XO+rx1Shh=6Xkd~7x?~t079Ea~?D|)y-3=d?K z5K&K1lZmxE2<2kDdCJ9H?a$L&uSSQ2Rjb9)UpjN$;dLC_e_Xp)J3wyW^1T%t77%u5 zX~}0fY_$49>5d^ocmK#zZ$7p2@e1jkI^Gt2daW#C>Zh}32vAoLyieerb1pn8GW zE9jI2VGU*r>T8hFFeWAgKgDq_iTmNCHtDMGjcH9TtV(evjo+73?GbtJ!>sS5!w>m7 zjAXrcycHL>XD92u@0_il?|tnp^sDjS`C|?Hj~3f|*BRf-J6A2)C9E%wC$Z-U(2ET! z6a8J`jf&K%rUhRuB-Ef6901(O!X-LhDxQ0j^y=|2sGUx-W!pp-0CO%Hqz4mjkP2mT zJ-~QFr6sU!kWdZ|C~(XGz(?{s!*hGH9w#ou#s6?zn>fr@n^Zda1nvBd_}JaMum(J!Ic=Wu++Ud3hQeAhVatv@ck~spHIl z1Dk8-P;-)WWaw_Xj!c0(_cQk@r4ByKknJpTbO6vTg&T!+?Rc#=y@|K6HvMMqbMj|b zyxKX|5yHaR zTfsHBkDi%`J3*0f09j)xkr@aEK(!3q0j0>dr866H;zZ*gPiu2-%7+I;746cV9?6F6 zziI2Ib-SRwe$lp`mA|}bkMHHj=x*=P&e+-lej!+UKQ&ye9ZZ7Oj@pd`M}DJ?>uoqN zETRh73^)oz7=+~qm64L~t|VJ926^FZ7QMT`96cF$N91tUb@BGiFQCX8)``2l?t**vx(fq@$&kDl_#`u_(+I z$=z}_IU?gWR-%XT#vica4j>cuJVYf~Yw^NS;1<4U8#iu529co+$3UKFWQW3s1nC%| zU)-sr6mJ}vJ7TTxau0c!_C$NuV($>|kZr8IBU)%~XeT%GUE}|H$<2MA%L%?ON*MHwYK+Rsyv}p40%tJr&Sk;k6#PoE6qYi3rnAH&2Skmwp zL?oMimug&Ug4hX=2+oEyUXB!TQ)C{txExX_^v0`f^c>l@>8nIDgj zW3@jnop>)IH{#-s$3L%@tu5Z<++KQ988&;vmRTFrC%0VhoU~!=j#JO*vNA=$iYn$b;d(?n)gDQf1hFQ|&9cx4V@)dKs>6M*KJHU=!ibuc z2k%K9nQgCxZAB|$-}7~rJYBC|bb9*yv02)iZP-JN|0QoNAJg{5&;|hua+J#?aWx0M z67;^kzp~^1Nbmh5-b`>|9U>~9LHNQsDo|$IoVK}*%O~kX-b*A%r}DgOt#T7*6M^1v zp(Z%+-5U660g9nesv#~?XyGR_tFvG*)MU@0dp$`Y#R_Ea=;HHll%_PutzUif*#Q?I zf6BT2iSw}p?F-KN>dMtQBtQ#=b-0JFYm0NSaBGW#Yau1Z;>=5ej?Q6{V!#8hw!`;! z0UiuY?+W|;3M~1=^*HC_r@_|{hG?H4-ID%4o`%I0_xDEwD`zRyJhU7TE$H}c@QizX z%!@Lel+Kg;<0cjI8yUmq2s`#LICH7CLFdOcidgTx=b>C^vFDe78#CK3 zWWhm}uz^aUhfe@y!LcutaXbr-WQ>FOJOKFDS9NpzBaS5LGKS^UjkDG5VF+41on+6p z-?sr!49f<@sgq2Bh(aMxuotyCujcd<62(U*Sz^5wOR@xeSO^jfS@d_6dt4J5t=deQ zkVQ>R)=k-FN`;stvSiOghIOo2Q$?^K53+(vWD+LS$N+LCLkOlg0T>RT)ltN+iFHwC zheIMC&3wnvgD051R)DX}Dc22x!c(&3@MjJ48Zz7YZ9+5BKE8JLx`U0`bCfyWt>^Xj z>9wNh*!HKdpWHqa3X%4Yn@^E0P;uA33ww)0Hr7OO$t)tB<qME7I6-6_)1sp zWAX<(;g9Av`X7OTA&|aCs<0OjNrS*=L@Qfvl(BIR1w&?3Bb=NLMr5Bfw;EzW{Gf67 zOj-}jjo2cHVh)$W8P3}S-7h(wEiW7u8T<8Fw(Ev>Fp3(iJsZ1xFPlC{Q?(;4 z9Y^8FjP?Cf={aY)4Yx>CW~$Fu{;(>UJgpYWZ3q`?u!{#V1Y14mJWzzvuo0B_7v9R3 zNOnka^vE4F-!ShmO>;8aF!{X8H@_caa<=acIom7O$kW0|j@8a^IW|t(r@C}+fL;}W zhr=7}#Nr*`k%`7%4DrVTVE)D*jp1=q6c0BySTB~7A02`n%oc1ex~pLx{nCk)Yc5Rb zwNETEuJRrmpWDXUELL0eHxtBj*)pfu-_7(xh=%ZkHua zvC3_u^_tjesP%TKl9L;UtUCpzHf>7?XBXMN+%~z*BDF4+BAVR8_m!~$T}q=>gFaKV zQ55<~xwy6@2!e&tS}cnO_VdHxq=M`Lb_Y50=7BWFl9diiG+zl9-%x27*dKDQ{Q_hf z>>i|VJ=T`gsM{`bWv;?GD)$oN{5q z#A4s`j=2*K->hZ}oHKXD)jBCra&F_9U+(PnaLlgnSJ==Y{r4MV9$NXq}GJKogW{;c+OpEQ}Bn17{FFV^n+x+UtH*SAyMf(1BpirUO%Z<8z`XGv|fcR+n! z#Lc7VN^?(az5A*qz|tb9S@@b^<3fNXH(7upnnOzi`KNTz5MfF3^?gy6wR2m0o5lP! z(ozr%Q?%s_&`I*!&`QDhIgQZeOAGO~tkggb3w~mSCdWLvDPX98r@|^^3L7yAnOo;P z;Dsh|)vyeoBdd=PGhq(C_YW9;#I52wK`bi6^Lt`3{90rmLu*sR8MlgsTkD#EzrgB3 zr3JWFK%No9g#ZtN=xPn!VAHd;@@l=XsXEkyP-pb7IeCq)tsxDed(h{f2fqF+=?J}A zT@7XN+LuASg`Pl?<0-(9^cI^*Z{aN3xKNhU^%E(Z#7`F?)+WIh$4cw58t<4hchsIM zx75`7-Uih-pW}K9h~`b$?5^J;o84(NToG1t*vn9XIUVv;GAc0Z@|1<^8N!2_AtDEn zua}>}hMZ2y$j*QaYclH-H%1m8c{;2{jq2i?$QLtZ*ZAcr5!T@0)^kXUhSeMumK9`z z2!T@mVBec)(-N_LQ=~Uy=G;7%_0pQ>dc=g6?}-Qti9WOL<>PTj8=cVpldEJ0hKIzI zMjhLpKW3z(WW)SLj=L;l-Y4rujvUly*={D!th3NI7bR`#59&T|HAT-gf)6AK`;SFD z%|x{tkEfv$#D*+i<;kEY8$S$W;)aDHum&48S%uXY@mHX^ncBf8VhK}cFqS*v&xLdh ziY7Lim5GWRk&vYY803X(U+ftZSz9Z6ZS|F&o^WM!ggeA@YTb>eXum8VxBQKO@Q~oj_pz}i&AN({TPAxV`KT0PC(5B{6LuRkGLFTbp=2i7sa1u7%C9-#VX??YnHzi><)524XHn%ZuzH5T@>hrHgI11 zwa#C{B<0pkDMGU1!?6wf_gS$|tM~{U!-&tRi!Lsl&hhdH2JtZ5b*dwjO2ERau7){) zq73;vsPdY`vRNxc9p*Fp5HJkHd6^vQr4Ss<{z+i0Nf4qK76_)u#&z(dI~k1^c~Ve( znVP}qVQK;>gIb%&L(_~-AP-c3!BpuAs6cM9X!tVWWx!7=gNs-n&))?6V66w7+Ne0T z%cV_99Mo2i`&rdK=KX-TSZtZ=)xgwSd;GCK%TA=ohrD}ivUkN3UIhQ-ecCNoR`z;Z zzxTNj|8wBRr?pN20b!eF51i|qGNe?EKI=qy)oIts=Gw{L zb6g`w6y0geE;_Z2s1SFVUFgZ%~sm>%TCRg4%HM33@VOZ^qI(Q*Of*cFC8~NP;80e-(rA+*;n;=ApEtSf2 zT=kW^WM%ErL#IIlyAGc@iz4U@VSphe;@Wv4E=9^knN|p^kEsFt|CFSf3vhdct3T8E=p=T^sm&SC zYvh!L;SmRCjhdA!_v)L#ep5vZdRk8}l; z)QDy#@*y{H2JU;O?#R`X3L_#*CQM%(9+<{t_RylNAeS>}@Iw#IX%!qaKuK(9JG1lA zU5`%Rb7)S>_x__@=-i@tz1k0UAF%y_X6<#IMBadNx<5mkTPTcO8QKW3UvtR<$;j3N zAp^OS*Jy!F*j+6YwT|UqeL?c)4MCwLz;7yUVI(B@+R|`=4P0q3rZ?0HwWf=dwt1-g zk0z}q=*ga%_*@OH$xTs^T21|<$tap$ITnPs^1A5>@I3#WSP@tiBs;QKqe>cF3p{&jGm(00T@kMUa~?6uk#mT&2r$V z^^eRAk32qQ=+q!I0?+v6Oqh#3xUKub8ey{i;VvB(rz8aj^<&cu_f499=#jxqn)iL- zo%+nx`+;5!yY?T_wc`UVJL5htkl&E6@S3P`{>%jQNHd8Ug5}8PcXR*X1JBA44?r3z~@F01NfXy7;pTJH$ow9H6`1q#N*`DF#bZ(BxcPBQin;5CE@@u0dxRO z1YH{#OTyEb0XcqgvQlMbX#4Ni?>%B?0YN$C>Z-%aqUNWY`FaF}tXMPP>D7tRb~$j} z)We^!jW6DjlYPuY3+*f(XjzGCEb>jY_|t_VvnEF#;}R6 z@DB8^X^Z72eSOgFY4C~J^RH$ko?O1VajrKzF0Xm(R*SYBLGStfP}WdaOtOdBsUmw7 zkrKxKI4v~Z7;-0<5&VkH|5>EOmmkhWC+?Y_$z>gVZaJl`{IahJik^0nPcdH&UoEVw z73k1w4hie(?T_G~PNx7cUyXrbRjaeoI$|Zt%*qF`3yez*+?>&c9p3gpHT7>T`(M7DRA(lf3&O9XjYr&U`g}RD%;#+7=8d9SC1t2UQlnI^4)m{YG+xG?XX9 zHbJ7BS@(v(W2#6@WgZCu$+xP&xlJxd*ub0LWL-DBF)${whIaC+-sf20Yb+--I=b80 zg|_v|>hIP~`yMgceeZq3T<^}9_x5ZE50z1~Nr>4?H1&nI7*7q-pt=Paz`ZxQ2Z<_} zEL&=lLOKpn0}5I4r;++YW4THj^S5EKC$!(Qs)YuI9a>WI*ML~9{Nt^Cdac^e!(kQ9 z0nY)pREH}S6=^H&cTh87|1p}SR0(4>jtNZz9{ITJIAVrzMR-y3*d*07!>rF>MN!OQ#QDF?2?pa|rzll|@o;R;@3bcgx|6$Bdg97W0ex?LgM9 z=nYTwzRg-G3wru`gu{`l{ic0~quaGCbi}H7&ts#v9fup~-ljQ|*Lj!Cu9>nEHAQ5e zO|l3uaN_>;QG-Nfz#s|%6cpd0wp*?smqLli2Z%JffcvPQk<$s6Ds&SFp-Prh)_m&K z=JJM?j5YQxm($k-q_V!+6Sj5i-ZZvO-q5-YVb!0u+iaV|gEfWo&_%BFtEircs>3J? z=Anc(78cpQPMctl*FJd2(D308E<;h`MB67yC&w5m1m7D)E=c4r!gz%w31>EX);N=# z+0ItZ?#_HCN*M#~0!`u^Y*Vm3qo-@Q2v!J37&>Ah>3g9`q1mCWLc53NhvIv%?YmKJ z4N--Jqg=|1fsVNvnF+* zW*o06j~zrOMQ2C1itZkrAB`O#fg=_>h@~Bf99T#qupC2Ht&Z|sc?xpn4~7qEnKh<* z#K6@0?g0yDp#B5A3Tn%_+v>SZC`C&T5woqb!`YwhG{-?xs~@*MU(^Zo8C1NA&@ zdkMTH8yZv~MPV8k0gDNPS&h193WKJdLtO?`WW-(C1Utt$AP|}m0$1tTpN4IKQ5eSY%IIMu);~UYf6x#0be0% zQlQO=g0Nd^pB)E|!#&EzIQVC5Ko;9o`@Z?Y_O@&6!udN7P}iuBY@gez zIksXwQRLCFtR#+CP{IQ_{0L9&1fRcM7r%JW#UT%#beS+0ILq&rHE2m+9n86;BxU7! zVsOtDcaI}q(mL;i(%cv`DKR?L^>nfdNCvK#Oi7FrJ0O)0bU}O2TG87MvO8#9b5(P9QG^2YnuD z1d$sf3rd6OzKK1iG-Eb*w_H#9!_^|%RnKwvYM5NNX03$w@qDu%v&${JhWEBHWumKH z|Kyq}!-!JC)~fu99*9n4Z2oOFoT0;U3xP$4LGl3!qsnvMR=)X^wYk{-qP7LaQjoW) zQ`1qLn!++*+@1fPnyPL=O5J})N)hxH4x|nLD=E#wrMZuk4s82c(@IKuhUgBh@e8G? z<14H&fvgt>E&cC^y@7^QIXoV{c}y6J7KuCI? zZAV+}R@vHHQ)PMFP3G8g^GiAR+Nq=3XP4l27 zs~_IdR(#rO^RElvc^Q-ltG9<@_2IBHbx>WRKN?80(d&Tw6pdZ@<#sp=&8e0U6fJ4) zsH?&kO;)7{-f4)Tb&F}~2wCyUT~@tXAloM1&^D}mb*dsyysokGVQ1$Z(!RM6smR05 z%wPNab2XEqS2MZzAe+b{*00d+6(801Xy0#84s7{#{wvysPdje?&w}l&##wl|nY4`W z)R}RM#UFV6cU$f|=Rea9H*VgV|aZP~5*?=BuoS`q||tp4HZCAEbBhwf*~N0xEb!(R~fgEViy zmnn-Eyd_-@`p=&7V|IDPn9-qeTelwZrF&yG-I;y#Y;5R^Lf@x{xITu3tBTAEh+2)l5Yr&a@`c;Q z-yzGwpJ5JG0LGf?_^Z`o^|G#1M38YK6}0fIJWxdmMgmA>${}BnOYypVzixPaKuon0 z+V}gPdD(OP%qOgUR>~V6KVU=rA8V#%+NQs{boUR-$JHLhx zXI)nsBOvUIUHPM1xm*7IeCJ%A1jy1*x%P2eazDVlOxtfuwXH)ZxshsoQZlBLpbK)C z8^!=jwfyN?^mCSj@zc)K7Qk=q_wZ?X7-Iy?hf4-OgTB3U6)_<`i^gx z+5Xjsw8O8Z!2uyl|3{PvQk~!b!D()Eo7xsbQSnNmz9LH%f+IzLZgJP z3T;@pkdcaJ+95tanOrG4mBv#j!~FtOo)Ctux@V*4{f|zZ8;~0`U{L?L(Zj+Ao7K>? zj_EOj((L<2Or18OYrj6-zch5wu%_Wiu0U*tb^v`6^5NNvQ<+|)3ARLTKoD9BppB^8 z2fSUp+5z?)(a5e9KR8Nk`#}}5q+==*lpolXpi_QJK$|5a(N8e_=0S>mLZq7MhN;n_ z-Z^@^L8*^j1pHfCI?;>(Mijm zmlp{ILoc>wzvCO+^Vz<;ZXkI8_3UcBG2rSDdArlsqmMkuGj@DC3a$OdGGrDGPmI_1vzvw5QbU=nRlG}8*Y**t_aa}Hq81!dUDc?oPF*@d zmpFgKHMZQ5`$|UJ>XsjGt@JG~bt>y^{r}9jA0V%kc24Uo?Erp;pk76g9^tRwJg&!3 z*EbXKrEFDhw?S?ysH{$_;6m7ulBh1uZWYy_*0{}y=`&t<>T-0$h}|1*L8h&ETsve# z=|RaMcd1M7-^Ojv#BF!T-E8#!DebKCJO6vv_ech=55DmQ_=ZF7{2jelvGXqc@4Y@O<(UOoo?@N>!PCd1_!X)j@}K!;)Z)Lg%5Ts}AXcdRu4c z-hGPG1DYl)puuEe@-WeL11H5|2aef|O!fn3nmXB(%oRPfx7sbtU6}dqvFo$6_MtS zbgBYtNW>jRd<)^E|K`HaXY!1~NodsG*6WL#jM2m`t-hOv=;P^dB;(#iAc~5@N00z5 zSR~{1BZXU!O4+mIH(BE*5k3B;{eCtkZk2EI*=KBWNS)LRns4`Qa)p18Ac=BZJ38TKpfIo2`i{Kl)=N40|kW##gL=UH-{PbKBay7ZQGVDo_>cVeA;UW@N$JD+oB+)-XG^+D4CUf zm*^`*7E^lc{gvo#VdW{PniH~cx>KFbS8wLr|?C-5;v!>9j!{#@c5aw_&lA+rf#!E5=^A}QZ%mfpACUAN@Wc49n0&57A zUP%6L#_zs0W7<D!J6%Pg?2t=ZBc%fGELz;k5Yo`2?ei??dc&#ze)i7gxPgD=+i+qMcVGV^*@Dl0)Z0 zb3=EpeO~(^!FDud&$_)=FCA3b{P*8Hy79F3g0JIK*Kr=5fVs_a9+A+F$Efi_JBE-D zi1W~We;i+pMH|jXjtPFpgCg++eiwf!MFgPvJb>5M^WYw3wBz9$$!kQN0T7NNbg(?$ zSwnWpy{8__oa)tnYn0sK`i%W22|O`}MWf&Cx%P)$mJ zc|Rz)eoY7pNc5WecxK&tXEH0K)5U8%OE(_)I3uaUOO-JB6)@SnX8G%F`b9mq;PJb) zZQTkUy?*bj5C3dmw-rSG3;PC*wt(jBt)&I*+tr)2@9z*~ngRnDAQOtnqX*R}QM(@=mU|5&(xJUzJGf$5^{DZ!EH66pn#<91&zp0$UyqGn z%VM-+a?dTproOU0!Od(vH|MYVcB8G^XXoc?zr0p>3E8G|KlXJTS2}dg7psRgoAC6I z6IvP8UGb|nO!)-sjz+{;ff_1kE+|Pgeccu^!qL_^QN9V|L=6Ii#zbT-L4{2oUIUt9 zj*zfMv6B2OXbL$&oMxI*Nm3#NMVWM>)>to7YQ=ZBHcwELI*zStmwj7fpy%k^Ij<}i z^kn#8-+B9o&krvY^yJLzk4@Jc1@rc@1~{RP*eT&|6y$}8YMjVzh$C@J;4U}#7@Ol% z#du@ET~kOonS3DB(ThdYg>A?p+eV7uc$5-DT0Na-W^N;R{W!(cTj2Dq$HJc}I98)( z1I_1sq~ptl<9Brptn1jkcIoR642(W7Z_z7@M4EUG0GHc|$5PS?XRV%w*rNj8AaVfMmBkl(MhDhnHJ_VS+&(g_ z{6{4uEF|Xmf+rr2-BWYty_WI^&XB-}t;qIsE~>75$)1VCP-2M%fBxqj=f`3AD?`hu!u3EYL_167CfaYDDYwI>;0tnFif68*3Mg|GG z^K#2(4}H(vzMkh_S~7*`&q3`qNX*i&0L&Nm(~vo$-+=fnwT4Vy9kMZHf_S9`YW2Lv zL}}5(DVQ1?qU)W&dP`)3ffJla8|^sNNEn2G=+WXOp1%+rOw>wE5r3>B{)mVOQ|KAT z4+?{Va>p+@xfg`r8y-bRRtz$jfHGiRkuga!^gkhUI@soYXQJcYeKcoactr8!af`zv z4=rL{79gu+%kBqfz4YDdFKCy7R@I*y8M$X*Xig1fS=!j}u%SIW&h|zfSaxu2`v>Qb zd35EX5woZD)kZH<*^4_aY^eF&cO;uHFQ28M$Hl$+jT^~*eV3<$RzC?-yv60qYp!+Des9O>%bm&UGqI1{!Z&)h@2=e1_a84Cs2yROWS>_{`bt)P z-EgTL5InQd`W`uo8hbRvC{-3B6M|dA#Bb;}ABG~&7S$RNuBPSV z2+#nLR33z~LYY&z{F<4?9Nw(Ao_VnvYR%uN>%BGdJye^I+XrLr=ND0DUMp9o`L1tW zwq!4&{uL>z;;e0=?O7ggQ&$?V))W#EqBoJ0fS=X%Ra>&<{f7}BMIpIr0)Ht*4PcYv zqGpIcX1aJ`VNhHv+2Ohj0-jQ{oLPC9tz=>`o;(k8co^gzXg3U70f(U;0Lpuff&#;+ z9{sJN3GGtL4JL3@p%-fPg43hYWi{qZsc|9Lv5};`NM{; zL4o>#+t}&ZPjo3k&H5=@Soxj3!p*drzy7WgSLy};@kT<2i5e}lFMs)v-*~|lJ8~v?8?~k-BgNB8SA}^ z|DY2Fk<~%#%q#OpK{L0T^6dQzIgt#@?l{gGl9GY5L_sZ?$%yg+GKBFLtXNp7K{Xkc zO=&yeF>()X0eWOhVwmrYQM>=$>L<0%Fb3`0(XBEI=U(R1m%tSsK&O~U`3&qTD7=aj z>IVPGr_fBpr4(4-Q$*FR6p8>6+`yut8r(qdXEcxEH!L|y5d>dzu4gH9SrZO}5~439 zIaqk!O?6liK<8l*#!()Nb(c-7 zpAZ?5^jV2^bP^jP-|)&OL_|9`PZUb|oU z2>ND{G((NleaQ(XTcsi7RU#X3(yW+xz+FN}U9#ZZN{(j*HHLnIFAp>&ug!!KQ> z*fQiWLNx$-qFyPt0f<70S(%xjqbQYVTrl~TR@9^C?ZSB*f*hfDNIogywe}`^1)6072 zv2^Wrp7u2CvFAZI;+?HwkIjH##woQ!1Y|4Fc`jUVNrMg~_%@G-&_}oQk1k|CV{`yF zg@jnf)bWqm50k@RXACoq9s)*k{oOEg~kgthYTqPKsR zLu>|~8FSw*qHc48uYdePV;**m0=t4QSiqW+#qucmL?`Q3*7+u#gI@LeAg!N`4|FV)gmeFxyH0_?HvOYMK zwWu`_$xo$;zMnOfF!U3-D18<&nodQGE|l9>j`l|;MO#MG`H0c`*~68i{d0RPqX};? zny)a2pARbYV}&{R98x*Xrx1atjp!c3Ef%DIHySpFCmal89u&KfU=A~2!PA+D1{$#7 zqwN*`(S>YJ6{8I}i_zctNAH)8RWUldawRsK{WbsS66rjwaXO9iucTh(Xr;`4O^oJu zg?p;d@r3ph<)7scOT;sE8sVR%(e2VEpu0Fl8h_P6lo9(!m4j>2?TR9N-d1a;oV0br z=MT~6pb?Wejc5X&)g_07&pYbyx`EO9D!HMF;FY1Tl8?4){?UbOc@?8GEu;VKAH84N zR>kNVmeEATuoBn}#!m&w<36^r_J85i^iEa^3!wWLehzf*4IFGDXAQr(!oh@EbNj-_55uFMaQv?$K`I^f~xwzIQRY zkUds8n%muJbT!Lpx?y7Ue(9;o(f+v;ETiepU^KroYq+=eX|1#JPyWmye1(Nu?3ZDuIqk!32CtYSR)0%hesHLaVngXnrdeCtx#D6z+ zTEl0|aYp!OJShFf+UYYI{FQF+hxRx9Gai)oqvFH;Gjf^%`^$N)&=wDgG!9m^$*PBU zMW*ZnimV70(l=iP@gY(I4F!t7F{E!QPGBx80`IqEW z@>p8-_IKNf5_!~#B4;%*`}E|*g^7q1$xdvA7s@|1g%+wAiK*CT>yY4#gp4{F%`>`W z49?)G9VZ)BhQyU7x=-d+zO51{nQ#JS5q#3Ah!9L6*7I%1Tp zzW}X?;_37C%2mZtaV+HyV~Nq*)~>pp;7ussUsCEB>9hwRscywj57+zYruIi{#8L}P z$3IfDN5RCV%F3@kHJyIdYb#^DPmm^3nKPq&^R&Am;QN* z$Xl-OD^1@QsEh3dXBNiP;CnBUeikg4zu>_I(oU=Z>qL%Hx@iq6rygRSgOVoJfO&MSM51}F z+28Qbb5L3ho1mD-*soX*@nkViF?#`$7{*{8Ls}DD{we=F#jG24BIe<;5VYX|pgk&R zPjzXN8mUL{0Tt*f^5P-}&9Rt$IW;0rfAu(StFDfqt?E$wH`0%6{5XB0`g7#+G3(5T zCy^^JSt-(Y5d3D2pG7SaQ)nF5K2w}&_tPgYsnrz2rM&5DHeJbdwYcxPIfst*rTUb? zuJR8i$}h-o`bK#z7piIDL-tayZv#XEsfl(%xdiG|2fmEuCSOK9P~J=d1;6ZMrcP=D zUev0z0i0V6S~b8xmDp>d{Srs{(ShT7_UeKDj%hZ!4;o4{|8z`Pa!9K<|Ct;BkY*#Q4~ zyv96QzU>dL#bX|#AnZg%Ex?U`*O6;{SI%L}aqDm!v4$M|yQH~3$n{^OX@Sb@NBW!J zdcl3ibRP{UQ#Ro<&f1uQ+tR>BeP%cBZg4V5sb6r?y)Fl8hd+T~C_GyI-bPHoJ52U@rUy`&p8lUduuA)z?eik21c81f(&=SX@s z&UK*n8ggQ2Z`nEq4X&U{>8-Rk6lCG!^X}qv=|2_w@Hu#aGSNZWZ+$*{p)`w0v;tt3 zp#cFy-#5 z&xK`&tQEqtQz(xRTn`cZ1{dbHf=f6;rz>Q8#T`Y~o1vc!)E=?-;48;Ge5c3xj#>c% z&v5M;-{qet@z2F`iN=WM7O|PYT3w#^Ti^`-EmlCXh*$yDzvHq9R$$yqK8C}Tk6{<3 z4)%3)9;Q`tTa)7+=E>n_R=^%&`7{Ov-fHUDD)h#~7$Y>n0z?J7^s_f)4q>yR)r)x! zvL=E;Vje>d6Y~&-6!RQJ_c*?0;E*A6U>-Z;@}-#P2wMXR8O+yH`!-zv{H!sPtp|s{ znCXc00pO2Om?`siX$>)|FXX9GZVjYxW?=&|Y`KQMO)!%9Oc+gLqmHRU+_tTt7CgP$b6%W+n%XaNkuJ3N@HT19ApEcVjkjw zVxIl1+TYAWJdoybNc)F!dEGn% zJRTgXM@2F|ud59-j|WbERgppC`EE)67ON~`$pU|{+XgyB#BK>@VwFXsILxq015>YR z`Q&%Oh{pO!wd8zpvX(CowGYMT=wLx7CC%rbUxgxR8V^g?VNP!+YhBIbrP;bD0T`S<>3$%*#E*rBk3k{_T6KdTZpN^nWg@ECoEuz=W{ z_SZ26^cM4%NSEM4!u)`Ofw6oZ&Lzb>1+2f|l9Yt}TI)S`1F;A@iEU_N4 zF^G8%vQ7d^t?N;Ku)pP>=b&^D9cimr564q6&mkn!x1zgqnCwJHq@VnARl5z723$EzTC44_ zM}o&@AgVQpM;QyI!C9f9awNb=kYK#wj_*+2NZ{8$Y)B@9M-g`y*(BylE>Jd1(N)kT zD3a>0A~eO!QJ@UP%%$f=+9RKcKfJ(h6_|rpH*LH2dVkN8xlbg$c;R^#pLWzr68GXVEK&||Pxi~Hf=5HbGrSIvoa`Ui$v!wpjNz6&;4X6DjWMS%CKCNP4KKld z$pW&?q55dt8M<|79cPT;Gje%T%vcNx%Xu5d=u|+T=V`1)%u~!# z{qq=O#L9?QiFt~cqf+YduS}OZ^cl%!PBVgQP2$u5&(y7w71wbx!F;EXh>0U9J;b_9 zHUkf&-wE6^utJQHpTe2y(C}kz7oARdE6&=xJLln}RYrko9nqoP8} z5cMB;r&drkp)mSwBmG7dhJ@$%|HHX>&q(yckTcl_I5CHuHS#TB5wJ^Ho{?<-9SGglDMH7q+Jxq)y7>Ut^Y?^=( zu+^}$i!lTvF=oHCq>330y^4?KyT)kR^)T$3(~IS_D)t5N%ptYg=7%!(G0>U}zZ7VT z+{b}6>0=AK^HT$5Gju2#(F?`a#0b*#@+(*5pU=?BX!HtN5zR+5siK8MYia@9pFyX| z{=sibiS%vdX>!_UhE!MdTqYK%o%F+Imb%U#j(X<~idcX91UE-WC*G|76)6= zWVJfC&{CW=#Xjo3AxoDeBL#*F7CZ;L3h{x*_L6TXK021soj4*DdpPq(Qp5Oh^;j2688f05)KQvXNz{VF(u9xx(9TqyP!?G4vZht@6`P zF7H74Y!1w!y0z62GaFrnWuIsQ$(a9*W&dtiQop z|JH(AFzfSrxPCrECnMlg1Y3pyOM@4T1J*U*bowifb^E24Dq+bz)C3=cQt{DrPnj5f z5W1iLwEd$Enkh!(ob=JfY*7_+8t!`KmsK6-a7_k7Hpcq2JgJ@(d@3*{K&oc-Ou~$dHo&DXf$V}qoX6~sEoE>Xz-bMd}+%u?9tPCnE*}Sjt%RyxdMtRbD0c5p$p{!QuH9@Zs74!}u z#VgTjcjz8_|By|wHFkX#F=(zVSVn7uT75>_WIel>R)(D|8ApHC2u;#pgpOc;eMK75 zwUSh6HbSq4>^P<2>$J`23D{|`<-uQ(2H!hs8a{YOaT%xb%b>o2yQhVBQpXHfAH)9B z&Gxgbhq|dC_KnG*RyDiWf2f#K#pDb7kFVq6zqJ4Sr}4+)I;Q&X#vh062euGdZ<^1- z{$Er&nHNa;4Q3rX-{Y)L9JU98BFV84+9}5__JqBVbzgH)^ydqy zxNNFnAZ?E=aPR|Lt#t!FGFy@-WT5YDZfqGj|AEK@cJFjW{(M+ktd*0#xA$46< z-ET*!Ro6%@o}WOeRM$u)uIWCF@tJ9i&$u>^QrG1i*J^~yOe0RXuf}j-<2Tb7juBpN zRpA5G^-<6xYq^=M>$txI*V#GGg6)7UH22vC*fGKA&BSUfw<`-(%_|(h=8+wLmg$wmAn|p-Ky^2=wmjYeu zXa!|WZEa1Ak<3XgX=7oFH11YD!-n?!Olp|Op!rO33(P=#2t}#*PR)n~kEv&?XHzp` z6=#({I7|Aa9?g?AMh7YP!8Mg@*^OL7ZSQFH8c(7=Vw5MyS=5Ls-;gVgk+mThL42Ze z_M8z$t7(MESthEKT|%g&VYxr(82Y0xGgce4g8zJFz1*&z9m?Mr)=R`ewe8U7Q6p8R zKQW)DXLPnwrIp2^oMxi^-jJ(W}W%KKlmezH@plcQ5J3|7t&?-w*TK_gmd2;?I$5ug)7; zzhc{=rD~sb#-Wwmudz}qLBtR*_gos9p*^Gmzs!n%($dzfJ2aFHKP%8 z)BLbYjhDUuPU5SYQx0XL>TSrf>rA_7Y$r@|og=H-r3SO?T=q*#ze^2$e|^RJcWM6VCm*TI85>iWAh9;s1k@Q5^vS{G0ap$4j%{#M1Qp`4+1 zHl)tcV^d?xiZd8nM(#91NSftirkOan4o6+~mD&Bazpy*lauu$L3P*LpbJH_O)@%E_ z2I_I?CEPxaM5C(IcZC(Ery4~`lW!ISb=g9#uc@S{glpfXjTfo59gSH!+TCj*%{SF7 zd&o7kVmM!f)Z2TtDl}!KBeX%A##jy7Lq#@2$Nk6H8O`=FC=S)2lPMK0V`l~((xIS3 z+8r}*tASH0HfnVWo+W=?U2#U$`ffBg4Xp(g%kp0tYs+A0XoE*8O~fNw2eARv>}gVK zhA2&rp88eUm4AboE@q5!Q*J$$T{VAoZC2MM^b{>g&9^eCIGOl#@>g@Fnwt(GPRrC= zR$?~UElMZKkhi_A*e1vE;btbxm`kTdtf8wIRu7j^{dA=zRE>c)72-KmaD$tm;Al?= zK@`WRSsKlaFxq2dmWH=;ZVcw<@1^RrI&9X83-bGGSuMpvD*c!TrK;x-a2Kd=QHdXKa(bmu-A8K_q ze~J7}$Tfs7XKOC0d>3Z7iT_$NK2_fi|B|*AVw1|31iOD$JsSQ$A-v1_N`&91!q>7j zcU@Bj|Jur5m5Q`BG#hQ}g8d1pZFoq%A2qFO&8u&OEWK4V*DaOa)jR<;m%Us#M?>wc zTs<1xe5&e*SN72DP)E3iro3^qiNAao^}YUgt58saFhA68$56HPSJt$u^=DsM$7YNn zD;YtIz*99|taS4fb#2H#)!v5e|8M8Fk4Hq3Dm2nA`Ys=s+N*bVk7ui=PVz)j%3wU$(s#|M#+o7dM-5=7P`j~ z#whs|OVClVX{)rf@hrs>&(d4_QyW~hX;d65*h3rZJ&m^cafGIN0HM|DE@umf=TdwM zL60e!@`?MXYjvOIjM9De?rKm8ke*v=SqDVS_)YMIH79W3?8|f}%Ra%p!)UIZ$aK>}^fr4ydRY zLVF_*zq-!L9-3-S?C?tmUdZDwgFZ!Rd2Y4;u^}020i($xNlSUe}PrmNKYpv zdsuNItEu|19_0*bn}l?=%@(;(!3no9Q@QAIi8?9bL?SvX(lRU_KQ#}c* zvqQ5Rt516(3~DMBrW@A47@DAjy;k1~I&a(}9CWaDs1UE=(AH{@h}t!tPVEkwa-exZEq#w%GeVu*r%(B==1n2~kR!Eo0rE=azoTAozQ@siQBt91 zQXv)e6s=`ePf@wH*Cx)l*{v{2>z8ud>r6{!_Sl%oi}n+8*qGm;QgFpQ+?j&PED{_- znNszKeWkLU)_y0g!1T0elUqACu9!zUX$Af(t^Dq=JKOWH3XA3S>5Y(O#LI=&33Gyz zRuz21#^bB;s_AyeNvkP)3OoDPXgxPCbJA*xv4gDtNeg-7tZl(%wdV6*^Tsh=LwVy| z1*)FHD$sw;8^_2(TU#=%$U=-zgF^3Zk&_wiQXFP`OKX+jkCvbEZ^tD3jT)EAzft3E zlE;nm?=rS*v>JOD&msnB9U(p_|NpTvEwhu(di3qpN)eY4Xrhx~I^(3X9zBZ8b~=uc zB#KY6(jzK9&?6<&%DHo{eAYYIdP_+LXv#@6)?lm^f*v8A>^ky9?Vw`L`Q=7>Nsk!x zL%IA4{VYyBWu(2FlYS_h^%eR>?%>0yDn6iZDysB|K|hRprs)x9{6XKYrzrkA%*6lt zRPvxl7NgvK8Gq2XTO^J6lO8eXSHy~Bryg;oPa8~8zJuqd%~PH9E3(;o(%0yhw#T33 zN9hsJM=qf33My;mRFgFF|UyLwX3Q8Dc&m~N#Ex~0q4`g1HQFWeXOLke$1Ai@9 zm4zQ|ujB*O>NDCxTjWvHoYaGOD&D9vLTw=`JMGj=c-7i*JAgPKJjGMm_!x@Amn$jE z-4O=QsxXaFXCn-BqGLV@=$HcCCOharwtMl`j=WIw0H}_1))~}3l0PZgRx}~ous=D% zD_u_9glyQ?P8ji|yjJnlLV2~X&@Xu>s+^J6s_kbc**55hVpspK(znYt#lM@|XD9tI zUZ3}I#K#%`;&-CTI_YC9XT6ht82c4=cDro5#@{a6M*KP>yEm}UZXnSK?$LLPzZARys{%KHbQe+ zsb~-FoZIRcu{LNoaMBLvzkh|ceI~4(Hd%ZO+To0B6kpP|x8s;Wo9YiE-kVINFuU~2 zcvo|cw~~5;_9odIQvW4w$L==-j|V&%UG`=t^7du3^w#kAAarcMT^`9J#c> zmS8SnHW{>4*~K^lan|-!o|l`A)GPmvs!UI}CD0lI_=h1^Nd}Io@Pkn6V%9zU+uHs8 zl)tg2g7h@PBR@BpvKYDwJu-*=jm9t%%)N|fDU9q1Ee#!jl@Km#Gt8BgRcVP`E{det zYt-&sqyroy9-t_nD*NVAyId?zv%shkZqfjb73zp1Xp=3-pdHTprO|fo#^abJVbCV) zjzK$|-A$wIG!r{!&Ka~R{RZt#G7;&w=be+bVaot*pk)Ar?O=#|8Z1j82v_AZ;bsxNM26q-9Tpt>icYNOW|L|kPEqocc47S zNVkWPKD)(}g0>h z!ia$?H0<`|Tbz6w*vgoOl0AUqS$d~7MxO=$^0xM}8r91j7JC(!lWL|oS^p2IzAuH> zs4p#Z!xrp~nF&LpbEv)fX+Js-%yy-*54CGJ6)(C_tq~f>^UmTy19;x)_UMb&3}3V| zuoX&1Y=uHwa?`M$%T!ldexE(vR1s_}Kzp~!0{)II2RVJai?;mGj@V{b<&AGW%;#r& zaK{#La)JB8lEEeT54M`ac(bEi`sF)*SdOzTxV~f8RXHyB(xdQYr-)sQv7aLLqs{O|eyF`4jV&Lv zHMSmOgU0rA|9*(5?fyBjAOBUmomxn{9jvVkPF;keiTWJlNmz6B)!2}#{eKvn^0pQ2 zgWIolU-zx{qkHP%CcLxenfgZa4CYB8wi<|yvi%f*JZEPUqnXQ|u1bMA zHMVi|*CyH?RD9(4>U?S(K0|*v*8N$9;0pL?Xmi^p`}gPRgX^++FfV4iPU%8BN<4&) z%Fc#Ho9*d>3Zn!#+fo0Xnk>e^Wcn0DYxXUqk;eb~q|oNO+6`OeK<5|hZG-R)`&+Z! z=M)Yu%m>TF)B*Ny*VCu$Wn%EHTS$k}*{1E7<=HwKpHl~44Ly@?zJSwmPbpHnjF^|n?zSTz2;Lp0={(M>tW#a#$3y9SMoc}0k0zi8qU9VLq6>#AP;peUPwdQ^k@i^~ z4RfteI=O~sfDmJsb9_M!yD#HtY_N(6G5CiNBf1o0G4>UoP~A2+b$2c8y9Dt(sSABL8GFXKywDrb50ND1KnhAJfrgqV^Nw~4P z*o~w=V?BGST09gyNL3@`IaOUxwhUi&ol9M#S1&Vyt{FR#Q~e%^``@YS-0FHD_1`cu zhc9?#r~6fLzp}c{tFGtbTB_@OD*Py1`{V1O_-eMgzZloaYJGAEiZ}XLO^x;M*s;nn zugKVQg?6k$`;Nl!*~SPh`sI#UWynzM_(|>N@+wR?r@ck(ElOuaLrzy1n3muUje5R(55!S^f&zu6EBc0wW;67QGyY1XDgLHAXk-z6{RF7qQ8V-md(CF;8hRCW`YJqe#~I!} zE>#opNBdI6=T@4%%&7)oQ?T2ojPWY6G@%wz;fsO$uKXnWY4L9j{zR$x2iwEXON+m% zZ7BX&TkdD17u<%d6MZ~M^u?+)`f46O(N7ztHu{Ccf1_WxS<)`H_V_p}0{h%$a2mZA z*gz?Nk#j2kHPiCfsXTJuQ9CGupFcr1zgP28FWBd+hQb$iTiEGnMrmQR^o{;YBW2sF z0vpyPHNs!V?%!GUcPadF6&|ZvRKKQ=3f}?!AR0fi?^uR@4a&Eo-^VpP)-x1Wdzo~= z%ypOW@GqlguD3(KiRMrh#_TzR{u4#Nnk`wi(bX

b-50Kb1L8HOdED9r$3(7xT2w z7mKcj&m<^$rP6j?^_QF4!$pI?=wHF6?-<2sr+0AO@djyF%K9S>)$}f|JKn%Q2>e&P zOSf;#7CBwT$qaj;%T6`07p59M5mXfGawimAZeSl6OHS_u?EGw=%Z)}lcltc}%C8XPVV~aSb{EZTH6meE1NDDG) z=s_d(u&iKSwSC8z-ykpUYA33SDrM`LZj3La%~5AVAS*XbLDC;utgk z4N~fkIT?i+sHhw;a()P;l;-WKCzXFzl`}E6WVaSds-Xu}4)0U`YeB~d-`?(@OY!g> zcuVuR)tY-nXSwo!3Hqy4f7ck@-6BJke|uO|3!DBy8LoihitjVp<`7TR>d)~eShHyL zC+KX|r`u?Hd@5w1h{>H{ZCYjJZ;Q6wM;>{={}1x#v3CE%%0Dmou*f9f|HSTp(RK^r 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/Group 1.svg b/themes/nurgul/assets/seller/images/Group 1.svg new file mode 100644 index 0000000..2419c58 --- /dev/null +++ b/themes/nurgul/assets/seller/images/Group 1.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/Group 2.svg b/themes/nurgul/assets/seller/images/Group 2.svg new file mode 100644 index 0000000..d98973a --- /dev/null +++ b/themes/nurgul/assets/seller/images/Group 2.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/bg-login-page-dark.svg b/themes/nurgul/assets/seller/images/bg-login-page-dark.svg new file mode 100644 index 0000000..4b34ad0 --- /dev/null +++ b/themes/nurgul/assets/seller/images/bg-login-page-dark.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/bg-login-page.svg b/themes/nurgul/assets/seller/images/bg-login-page.svg new file mode 100644 index 0000000..18cfd2d --- /dev/null +++ b/themes/nurgul/assets/seller/images/bg-login-page.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/bg-main-dark.svg b/themes/nurgul/assets/seller/images/bg-main-dark.svg new file mode 100644 index 0000000..3347a47 --- /dev/null +++ b/themes/nurgul/assets/seller/images/bg-main-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/nurgul/assets/seller/images/bg-main.svg b/themes/nurgul/assets/seller/images/bg-main.svg new file mode 100644 index 0000000..01060cc --- /dev/null +++ b/themes/nurgul/assets/seller/images/bg-main.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/nurgul/assets/seller/images/error-illustration.svg b/themes/nurgul/assets/seller/images/error-illustration.svg new file mode 100644 index 0000000..19f09e9 --- /dev/null +++ b/themes/nurgul/assets/seller/images/error-illustration.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/food-beverage-1.jpg b/themes/nurgul/assets/seller/images/food-beverage-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d40faa8ef56fc445d43de95a9fb0252352a0c02 GIT binary patch literal 1851 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/illustration2.svg b/themes/nurgul/assets/seller/images/illustration2.svg new file mode 100644 index 0000000..0203db9 --- /dev/null +++ b/themes/nurgul/assets/seller/images/illustration2.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/logo.svg b/themes/nurgul/assets/seller/images/logo.svg new file mode 100644 index 0000000..28c5228 --- /dev/null +++ b/themes/nurgul/assets/seller/images/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/map-marker-dark.svg b/themes/nurgul/assets/seller/images/map-marker-dark.svg new file mode 100644 index 0000000..474b9e7 --- /dev/null +++ b/themes/nurgul/assets/seller/images/map-marker-dark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/themes/nurgul/assets/seller/images/map-marker-region-dark.svg b/themes/nurgul/assets/seller/images/map-marker-region-dark.svg new file mode 100644 index 0000000..4e774e7 --- /dev/null +++ b/themes/nurgul/assets/seller/images/map-marker-region-dark.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/map-marker-region.png b/themes/nurgul/assets/seller/images/map-marker-region.png new file mode 100644 index 0000000000000000000000000000000000000000..62e898bf469771dddb772e68174b8f0ca17ef538 GIT binary patch literal 3134 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/map-marker-region.svg b/themes/nurgul/assets/seller/images/map-marker-region.svg new file mode 100644 index 0000000..3f6991f --- /dev/null +++ b/themes/nurgul/assets/seller/images/map-marker-region.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/map-marker.png b/themes/nurgul/assets/seller/images/map-marker.png new file mode 100644 index 0000000000000000000000000000000000000000..06a41ce32e3079c5b2729eaa3a211f0ce4dd2514 GIT binary patch literal 956 zcmV;t14I0YP)Px#IAvH#W=%~1DgXcg2mk?xX#fNO00031000^Q000000-yo_1ONa40RR919-spN z1ONa40RR919smFU0O^SpKL7v&GD$>1R7ee-RzXtRPz?QY3mcee)(taogQoie=?Q=Z z$#m7+060Oz2}n;+x+Gl?PJjbFKzf68hA>@{nX-Y#s@})?{W#xtT+KL=_1}~HWm!LD zDoA~^-!YNd7D|KU0+o#!i5hW2gWK!<3-}fh;g`$n&9hyK%n2FVC_=O0F(>Be_PRYN z!eOm6aeb@bBQghNf&6u5?oF=RN4_s>M_Gq|A4obi%*RaT?ai=7xM0I4ys2`D=n!1J z59!<;qr6c>=Sq@Ye7%pB5AWi=JN5ax);zDRBo9&@`l$XS;k~@Fzf@3GQ$+5GkyJ|8 z0cP#px2Ac)pTun7USwoubbJ%<#qva*`qr7zcMcOBJOIiT%BSZ2SB1XA$)MhQX&VQ#I2Df(!YlZ1xhiN=Q!e&SJnvOgNZ}H z1%0_+NtPc>%*OmwV7=LYdSbStQQcvkVjM?Mek`99Oe_N-RuCn;Ywd)(>dVzB#&H1j zV)?wB#1uOa(E*0T&G-E{oltJ+nIY2)7+|HL4%`}hv7FP$Srd@Sb?ekCQEi1EPXN2Q zYIkK=yqEe7x-`j99RBF-IMKn%6By08mn{GICfONn=esmBpt=qH0lqJ(y2=pc#RDX?-x z{+JBgjg&X13KKu=;&CjjS98oV2g;AW$dTYXR%~|sslQC)P$^0Zeqmw&en-naQSPjT zuSDFTQiLl_j9ts$8N9#6Bt2Bhz=iMFCrek41-$P2vNk@!$*{GN^@r|DcdVqMPeU;@ zqmJ5Tdf~+OFU-^62*+e|QPxmCapA<4ls~Vhf1=sqeIUUqCB}~MsrXNBZE2`q@rUu8 zzrax`G2+akr0d5+L+PCM{bhFL#Ml|L`K*DfG?a3nD<=l&K3eLE!pT&rp} + + + + + diff --git a/themes/nurgul/assets/seller/images/phone-illustration.svg b/themes/nurgul/assets/seller/images/phone-illustration.svg new file mode 100644 index 0000000..279c65a --- /dev/null +++ b/themes/nurgul/assets/seller/images/phone-illustration.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/images/placeholders/200x200.jpg b/themes/nurgul/assets/seller/images/placeholders/200x200.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d40faa8ef56fc445d43de95a9fb0252352a0c02 GIT binary patch literal 1851 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-1.jpg b/themes/nurgul/assets/seller/images/preview-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-10.jpg b/themes/nurgul/assets/seller/images/preview-10.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-11.jpg b/themes/nurgul/assets/seller/images/preview-11.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-12.jpg b/themes/nurgul/assets/seller/images/preview-12.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-13.jpg b/themes/nurgul/assets/seller/images/preview-13.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 zcmeI2XHZjN*2ixMod}{q>7YTRiGoxW5`=)D^xjmO(vhlykSHRG0*0nw2~|1*f|Afg zlu)Hg52&Fxkt!i&!|u+$v-{~S`|hXQJ7*@D+?%=o|M@-7IVThPF#S8Q-$>t39{_ao|2Ra4fgWCE@^0FAZcWVG>{BaQlJdFn?45U0-WsZ9PDhI92^{6T%6nx=spM!4@Bs|K|ZLMu!Ojn zu&Ah{l;Uy8qY5xlQ5khvg;Po@Dk>7kHMKO9&ncc(QQrF!5EmC0ga;zHZ=ay@5z!;c z|Ko%H5#Z+pOEON-QGkUX1m*|PKLZi~0AgdP-4p!x1H=MmWn<^y>vnkb{g?-_ z4k)4y9_a?ufu&DA~RrUK1H8}jI=FeYR2(4}HefFQh^$%tLqKluQi-naH%*wH+3&e7h5nz5+wj)aH z2XxFiTmlasRlds!J&(z%XySsMwpbN#4eI4SB&G7>*zY}Qe^vJ16L#-^rR*QV{!7;= z00Dy-$piBPaA2cdCL7Jo45kN62AB*m8DKKNWPr&4lL00JOa_lBjsO`J6-^;AxJ80{;{jIt%iiqjQpsU5P$5uJ2npX}fel z2O$z-t3<7ce7Tb|UuFFwG92;INnZ$6S0@ZiWT!(bx&@QeAo*EPG9Z&(eED*-hoBd) z9rc@-F<_sKYYXkjhu4k>ZVACl)wH~Sizu{{dQ{|>Ft0L}VC#>KF+20+x8^!xYgh)HpIyEjIyio48YD4!c{0W?r{tj+ zrw2?jVFRc#M*`6QV8Bix6$k(%*(sjbK^(6teQg2_=lz5?Hg5NNhoO!~T^Hz{uXq$H zXtkz(eNBjw_^^Imul-uhDc#7+jq%3PcloanFa2m7Z4#(J0)az^)*LUnrntl|I`d+} z{QcB$9W6IZ3zn@n{|q!k8$XK#d^ey24#jg2TJZ5u;XF@S*9@@!D4-Vad*s~# z{`HRTAEQ;C;Pl46+;>-$MD93u2X5x|o!nR78lSk5tD#M(D2wlP*EbNd5j=|Hd1zeU zi4iXt&g5-*`V=Jfo%_Mp0PU}`Tx}jg1+GOP_T^>dsxz_ zYXWy`>{?lS#pc-6-eaEo@R*%XjufJ_)`0>GMD@LuO<>6~FlsU~f z;G&$ah~be>Z>2~o09o$YR(&F6n+^~}C~~7`TI1$|N|g5jXX0clFJSch&iYvkNu$M( z7PO%XI`Enf{2`%YoNORjvFDXFG9ku6ODm36=iGuB_*?mg%m>Qn}5K}+e<=~y_J zOkIO3%IEaw@XxP;h+qjq29Qs^8}NbZi`yhoN2v~qE@m!bP_5SYfK`oo^XlZ4bxM&jOTcDN z^4!O$Sh5*A(QWZ&9@Ozjlgl&hiPQ?G$nln+EA|nm12>iteD5mLwwxb*N~|MfmIh|( zd`Qndv7i)(%Xj2)l)B{7IzDM>QvgnD?9Z*dYB(vR0fA$R9gh7ljOv`7_P5kZ%=2^l z_(AR0!4Q`n;VGS4$2oFZCNWUZNUyQM0sXRiK^ED8f8LG$b$9yrz6aS_Jn6_c$tfGB zIne>58NcJZTH`@mmfijJVFFzX8D7N{|J^U*iY9O^J(5A?c2M0?m?g-tsr5lzBgbuC3$c=9JJ^lfn;UZ(?_Htze|LN($q zC=!Z=7fMf9^buVz2exUyK}$;khI8^yT-{S%FO5(Z-{Lf?pOaxIxvAv`ivdiJBS0nK>exkaAOJiDzT1N@W%mca+RCET+sIEmH)aYRer4IFLi33Dnx30q6iSh1>u)8q8!Vo+Qi+ zn=~#R+zGaktyG*FF};BVg2MQwCqIr5zH-cd2`$M=DTdrTg$%^Js?6Gu9P&blrfwEi z;XUa&rdH zymu@$pB7CXOrFqx5BL6R>5tgnD6=NcKCkFFi|y=TtC#Cuwndb82Chxe?&0H#UA#}6 zI0Pr1!)+H^f!Y?#pKl5^t&BBl``o;MvtLR*z22gRSsqQc>TejnOZu3u&#|l9hZ~+s z8})1bB4(m21FkF@8j|<%Trus`hlXc-7M`9McU6uITer%`WlV2(PA3NFAh-gAGJa|h zY_7^zmc+wM*3h_TY|rnYgYPanY=F9bx?j}v?-pV^ztyvAy{|MRVkMr^fyKeF%HTr7 zC62YyctJN~-33FcCkvHPl%c8*x97_uvLNtok{$W%(m;;TkGmXej5}<$GHa`L2)nF9 z>iI9d_e*Sj%;bGNPpLJ;_Ht3>Q{E?b;p4PBze{|@JDZV=v2*a}C1MKx1DWDej3V-F zuUgy67a2@1Sn_^ep)3}a1voi*3vD7$uK-^!(?;X_$*rtW`eio$4}$Yay{$CsJOtZb zlkgu3{w`%5p7vSp9BG_mZCil!$s?pcw&em9Z;fmQHJWyplmFO6CHg9!3?j)35)&;) z(TB$LYibZndPd>?3n=ba8(b_in%@$$oNP9spq38k`@R&6kw#gxVWYaa;FM3%xy0;xf$ApQGo}_wSllbaJPv%6+lF+&nQu*?*j^ZXZNg*Y z2FjFH?b8F&ne%*eX-pDR55@MOHJS!%y-7zc`i~~$q07Faxo1>;;FZKf=DRq}D{kYq zruN}en9}F^LSX^PV`8Q|o0*V<=N^nB9JgIQfPOhR9K)t7)da5P^Q@rA-;$k8Ql$d& zTVR4?YvtRF!swZuF257V@F&!eQNFI2yTKgK51Th*#>qC3r77D_^e%o}AfV+WG7Pos z6K9M=w|Y)gKU<>A8=o}CQBU`jkPu_)SMRQ|e&Id$+TT16&14!E~XJLeBye1VdiUTP$fC;ytU zXXbwRkXh=>s5`c2^JV??0eHhcAYfr~jpxNG&9!_3yTh&fhYr9TM>Ep;^TE5gGL*3& z{s{-QBq{{-t#@ycoPCQTtf7XKC|x1eT|R!b=CIu&j!jw>C?}KA6Fg>QPL~qnZ4>q| z*Xtu0r<(I0TOxZ)QLsT$)DgSgn5W)66;LC#+BjJ1b0b~h=G|nG>#Os2WRISzItXFP zrMkX;4qTM|bU#9JO8mY>4_m}i4$PgHS}!Ff@3!wV zv?GfRd&a+$NWXn0(2-%^>5{e?Zw1f~=*dl5b&u2dvC>+j*}FaASfi;&w`YzQ*G9Sb za3Hf=EKOMHfXE>lwl8alB+cngTjbxN1LR^8&inff_Rqz!Aqx=xzIjg|@0AQm80-__r>t$UEq^LkQtq>L^@Xj(FAQ znXBQU5#IBnABOtSvR)PGs)E4MSfip(Nr@Ocq(f>pJ3eQThI$oX#&Q69zyz4em_E4@ zPaHF(fbWZcds|A}G2;n=pTkCs_=tZRAQE#?&EFbQfQuedHi1r9{A_-Ho@wqxWX7VK z1hK7YODjI)G$MJdNVCYUX<~W3+InUh{hDMtg(c19frRO6KJ_8qI34h4@`x#b^PdrqXIg%I zY=1y-)Ieje3Dtb%C@~uBHh?T}iA3xi7PLA0Y|ay0 z#JZnTlRfQSRYZkW=0og+o>HPYW4HjyE}A8GHKwm)YQd{N@h8qNIXJw#KI^|fV(4@L zR}C)V$hR>lsDHlq`NkZS4%~!e;e(|X02E*czFYi#G~OGJ|NjH*d`QpTCDrAgd}>2w zglyc?OV?LEyrlz|@$J5t+yVJmFk-8`%Qm;Y6Y*Mui)*}rs1>Dloe)=Z$T_7wNhv5C54KJ5ZE=oM31Kdf2pCMp(@#_CW=DVGdIAi(Vr`pA;=vqvdW%4!V=Y>Yg~L zd#;ZaWI{$lU*OCNJT7hPbXnfxQoLqI61qm!TJ$)ljiziv40h!cf0v&1x!`xuSN6%K zRu^#S{i2UQ<~VY%x|pURA4p@q3g{ba=e*`zfvrtDx0(bd!Bc@C+tbxu&FxgXjScbC z9?vc8_3CxOJB&ZFh!yGN+C^g-W3G6>@8WtHpu{<-|A_z7AZ=UPgZG7Hj}?3qluJ%A zT2y>wZ&j@={KhJ26ko0bL_hV$ZXpvXtBgHX{Z^q19XA>T7E0fa4Ll zGcw<8vKV$hPU66$HW#`Y9{X`Yc2Z-v@ljSF1A}s}V~3R$`EMg4unv=%5D0II8Owf7 z$tTfH4LPoZ!7o`{-BRIw_>6yWqyp-2^tM$it`LPTl_;}mlWg!c=VR{4F6?(x%~Oo# zQBpGM-Q}<0_6=u6%ovWuW-$H?1CUHw`?|`C>Y#i&7k5P<|?_CdFmgMQ2Ga!dZHBB>H literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-14.jpg b/themes/nurgul/assets/seller/images/preview-14.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-15.jpg b/themes/nurgul/assets/seller/images/preview-15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-16.jpg b/themes/nurgul/assets/seller/images/preview-16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-17.jpg b/themes/nurgul/assets/seller/images/preview-17.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-18.jpg b/themes/nurgul/assets/seller/images/preview-18.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-19.jpg b/themes/nurgul/assets/seller/images/preview-19.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-2.jpg b/themes/nurgul/assets/seller/images/preview-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-3.jpg b/themes/nurgul/assets/seller/images/preview-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-4.jpg b/themes/nurgul/assets/seller/images/preview-4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-5.jpg b/themes/nurgul/assets/seller/images/preview-5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-6.jpg b/themes/nurgul/assets/seller/images/preview-6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-7.jpg b/themes/nurgul/assets/seller/images/preview-7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-8.jpg b/themes/nurgul/assets/seller/images/preview-8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/preview-9.jpg b/themes/nurgul/assets/seller/images/preview-9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..560c7f6b6712d54f9ab756b8007b9efcb3b093dd GIT binary patch literal 14451 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 literal 0 HcmV?d00001 diff --git a/themes/nurgul/assets/seller/images/profile-1.jpg b/themes/nurgul/assets/seller/images/profile-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d40faa8ef56fc445d43de95a9fb0252352a0c02 GIT binary patch literal 1851 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/nurgul/assets/seller/js/app.js b/themes/nurgul/assets/seller/js/app.js new file mode 100644 index 0000000..c2c7268 --- /dev/null +++ b/themes/nurgul/assets/seller/js/app.js @@ -0,0 +1,201489 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/@fullcalendar/common/main.js": +/*!***************************************************!*\ + !*** ./node_modules/@fullcalendar/common/main.js ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Component": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.Component), +/* harmony export */ "Fragment": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.Fragment), +/* harmony export */ "createContext": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createContext), +/* harmony export */ "createElement": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement), +/* harmony export */ "createPortal": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createPortal), +/* harmony export */ "createRef": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createRef), +/* harmony export */ "flushToDom": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.flushToDom), +/* harmony export */ "render": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.render), +/* harmony export */ "unmountComponentAtNode": () => (/* reexport safe */ _vdom_js__WEBPACK_IMPORTED_MODULE_1__.unmountComponentAtNode), +/* harmony export */ "BASE_OPTION_DEFAULTS": () => (/* binding */ BASE_OPTION_DEFAULTS), +/* harmony export */ "BASE_OPTION_REFINERS": () => (/* binding */ BASE_OPTION_REFINERS), +/* harmony export */ "BaseComponent": () => (/* binding */ BaseComponent), +/* harmony export */ "BgEvent": () => (/* binding */ BgEvent), +/* harmony export */ "CalendarApi": () => (/* binding */ CalendarApi), +/* harmony export */ "CalendarContent": () => (/* binding */ CalendarContent), +/* harmony export */ "CalendarDataManager": () => (/* binding */ CalendarDataManager), +/* harmony export */ "CalendarDataProvider": () => (/* binding */ CalendarDataProvider), +/* harmony export */ "CalendarRoot": () => (/* binding */ CalendarRoot), +/* harmony export */ "ContentHook": () => (/* binding */ ContentHook), +/* harmony export */ "CustomContentRenderContext": () => (/* binding */ CustomContentRenderContext), +/* harmony export */ "DateComponent": () => (/* binding */ DateComponent), +/* harmony export */ "DateEnv": () => (/* binding */ DateEnv), +/* harmony export */ "DateProfileGenerator": () => (/* binding */ DateProfileGenerator), +/* harmony export */ "DayCellContent": () => (/* binding */ DayCellContent), +/* harmony export */ "DayCellRoot": () => (/* binding */ DayCellRoot), +/* harmony export */ "DayHeader": () => (/* binding */ DayHeader), +/* harmony export */ "DaySeriesModel": () => (/* binding */ DaySeriesModel), +/* harmony export */ "DayTableModel": () => (/* binding */ DayTableModel), +/* harmony export */ "DelayedRunner": () => (/* binding */ DelayedRunner), +/* harmony export */ "ElementDragging": () => (/* binding */ ElementDragging), +/* harmony export */ "ElementScrollController": () => (/* binding */ ElementScrollController), +/* harmony export */ "Emitter": () => (/* binding */ Emitter), +/* harmony export */ "EventApi": () => (/* binding */ EventApi), +/* harmony export */ "EventRoot": () => (/* binding */ EventRoot), +/* harmony export */ "EventSourceApi": () => (/* binding */ EventSourceApi), +/* harmony export */ "Interaction": () => (/* binding */ Interaction), +/* harmony export */ "MoreLinkRoot": () => (/* binding */ MoreLinkRoot), +/* harmony export */ "MountHook": () => (/* binding */ MountHook), +/* harmony export */ "NamedTimeZoneImpl": () => (/* binding */ NamedTimeZoneImpl), +/* harmony export */ "NowIndicatorRoot": () => (/* binding */ NowIndicatorRoot), +/* harmony export */ "NowTimer": () => (/* binding */ NowTimer), +/* harmony export */ "PositionCache": () => (/* binding */ PositionCache), +/* harmony export */ "RefMap": () => (/* binding */ RefMap), +/* harmony export */ "RenderHook": () => (/* binding */ RenderHook), +/* harmony export */ "ScrollController": () => (/* binding */ ScrollController), +/* harmony export */ "ScrollResponder": () => (/* binding */ ScrollResponder), +/* harmony export */ "Scroller": () => (/* binding */ Scroller), +/* harmony export */ "SegHierarchy": () => (/* binding */ SegHierarchy), +/* harmony export */ "SimpleScrollGrid": () => (/* binding */ SimpleScrollGrid), +/* harmony export */ "Slicer": () => (/* binding */ Slicer), +/* harmony export */ "Splitter": () => (/* binding */ Splitter), +/* harmony export */ "StandardEvent": () => (/* binding */ StandardEvent), +/* harmony export */ "TableDateCell": () => (/* binding */ TableDateCell), +/* harmony export */ "TableDowCell": () => (/* binding */ TableDowCell), +/* harmony export */ "Theme": () => (/* binding */ Theme), +/* harmony export */ "ViewApi": () => (/* binding */ ViewApi), +/* harmony export */ "ViewContextType": () => (/* binding */ ViewContextType), +/* harmony export */ "ViewRoot": () => (/* binding */ ViewRoot), +/* harmony export */ "WeekNumberRoot": () => (/* binding */ WeekNumberRoot), +/* harmony export */ "WindowScrollController": () => (/* binding */ WindowScrollController), +/* harmony export */ "addDays": () => (/* binding */ addDays), +/* harmony export */ "addDurations": () => (/* binding */ addDurations), +/* harmony export */ "addMs": () => (/* binding */ addMs), +/* harmony export */ "addWeeks": () => (/* binding */ addWeeks), +/* harmony export */ "allowContextMenu": () => (/* binding */ allowContextMenu), +/* harmony export */ "allowSelection": () => (/* binding */ allowSelection), +/* harmony export */ "applyMutationToEventStore": () => (/* binding */ applyMutationToEventStore), +/* harmony export */ "applyStyle": () => (/* binding */ applyStyle), +/* harmony export */ "applyStyleProp": () => (/* binding */ applyStyleProp), +/* harmony export */ "asCleanDays": () => (/* binding */ asCleanDays), +/* harmony export */ "asRoughMinutes": () => (/* binding */ asRoughMinutes), +/* harmony export */ "asRoughMs": () => (/* binding */ asRoughMs), +/* harmony export */ "asRoughSeconds": () => (/* binding */ asRoughSeconds), +/* harmony export */ "binarySearch": () => (/* binding */ binarySearch), +/* harmony export */ "buildClassNameNormalizer": () => (/* binding */ buildClassNameNormalizer), +/* harmony export */ "buildEntryKey": () => (/* binding */ buildEntryKey), +/* harmony export */ "buildEventApis": () => (/* binding */ buildEventApis), +/* harmony export */ "buildEventRangeKey": () => (/* binding */ buildEventRangeKey), +/* harmony export */ "buildHashFromArray": () => (/* binding */ buildHashFromArray), +/* harmony export */ "buildIsoString": () => (/* binding */ buildIsoString), +/* harmony export */ "buildNavLinkAttrs": () => (/* binding */ buildNavLinkAttrs), +/* harmony export */ "buildSegCompareObj": () => (/* binding */ buildSegCompareObj), +/* harmony export */ "buildSegTimeText": () => (/* binding */ buildSegTimeText), +/* harmony export */ "collectFromHash": () => (/* binding */ collectFromHash), +/* harmony export */ "combineEventUis": () => (/* binding */ combineEventUis), +/* harmony export */ "compareByFieldSpec": () => (/* binding */ compareByFieldSpec), +/* harmony export */ "compareByFieldSpecs": () => (/* binding */ compareByFieldSpecs), +/* harmony export */ "compareNumbers": () => (/* binding */ compareNumbers), +/* harmony export */ "compareObjs": () => (/* binding */ compareObjs), +/* harmony export */ "computeEarliestSegStart": () => (/* binding */ computeEarliestSegStart), +/* harmony export */ "computeEdges": () => (/* binding */ computeEdges), +/* harmony export */ "computeFallbackHeaderFormat": () => (/* binding */ computeFallbackHeaderFormat), +/* harmony export */ "computeHeightAndMargins": () => (/* binding */ computeHeightAndMargins), +/* harmony export */ "computeInnerRect": () => (/* binding */ computeInnerRect), +/* harmony export */ "computeRect": () => (/* binding */ computeRect), +/* harmony export */ "computeSegDraggable": () => (/* binding */ computeSegDraggable), +/* harmony export */ "computeSegEndResizable": () => (/* binding */ computeSegEndResizable), +/* harmony export */ "computeSegStartResizable": () => (/* binding */ computeSegStartResizable), +/* harmony export */ "computeShrinkWidth": () => (/* binding */ computeShrinkWidth), +/* harmony export */ "computeSmallestCellWidth": () => (/* binding */ computeSmallestCellWidth), +/* harmony export */ "computeVisibleDayRange": () => (/* binding */ computeVisibleDayRange), +/* harmony export */ "config": () => (/* binding */ config), +/* harmony export */ "constrainPoint": () => (/* binding */ constrainPoint), +/* harmony export */ "createAriaClickAttrs": () => (/* binding */ createAriaClickAttrs), +/* harmony export */ "createDuration": () => (/* binding */ createDuration), +/* harmony export */ "createEmptyEventStore": () => (/* binding */ createEmptyEventStore), +/* harmony export */ "createEventInstance": () => (/* binding */ createEventInstance), +/* harmony export */ "createEventUi": () => (/* binding */ createEventUi), +/* harmony export */ "createFormatter": () => (/* binding */ createFormatter), +/* harmony export */ "createPlugin": () => (/* binding */ createPlugin), +/* harmony export */ "diffDates": () => (/* binding */ diffDates), +/* harmony export */ "diffDayAndTime": () => (/* binding */ diffDayAndTime), +/* harmony export */ "diffDays": () => (/* binding */ diffDays), +/* harmony export */ "diffPoints": () => (/* binding */ diffPoints), +/* harmony export */ "diffWeeks": () => (/* binding */ diffWeeks), +/* harmony export */ "diffWholeDays": () => (/* binding */ diffWholeDays), +/* harmony export */ "diffWholeWeeks": () => (/* binding */ diffWholeWeeks), +/* harmony export */ "disableCursor": () => (/* binding */ disableCursor), +/* harmony export */ "elementClosest": () => (/* binding */ elementClosest), +/* harmony export */ "elementMatches": () => (/* binding */ elementMatches), +/* harmony export */ "enableCursor": () => (/* binding */ enableCursor), +/* harmony export */ "eventTupleToStore": () => (/* binding */ eventTupleToStore), +/* harmony export */ "filterEventStoreDefs": () => (/* binding */ filterEventStoreDefs), +/* harmony export */ "filterHash": () => (/* binding */ filterHash), +/* harmony export */ "findDirectChildren": () => (/* binding */ findDirectChildren), +/* harmony export */ "findElements": () => (/* binding */ findElements), +/* harmony export */ "flexibleCompare": () => (/* binding */ flexibleCompare), +/* harmony export */ "formatDate": () => (/* binding */ formatDate), +/* harmony export */ "formatDayString": () => (/* binding */ formatDayString), +/* harmony export */ "formatIsoTimeString": () => (/* binding */ formatIsoTimeString), +/* harmony export */ "formatRange": () => (/* binding */ formatRange), +/* harmony export */ "getAllowYScrolling": () => (/* binding */ getAllowYScrolling), +/* harmony export */ "getCanVGrowWithinCell": () => (/* binding */ getCanVGrowWithinCell), +/* harmony export */ "getClippingParents": () => (/* binding */ getClippingParents), +/* harmony export */ "getDateMeta": () => (/* binding */ getDateMeta), +/* harmony export */ "getDayClassNames": () => (/* binding */ getDayClassNames), +/* harmony export */ "getDefaultEventEnd": () => (/* binding */ getDefaultEventEnd), +/* harmony export */ "getElRoot": () => (/* binding */ getElRoot), +/* harmony export */ "getElSeg": () => (/* binding */ getElSeg), +/* harmony export */ "getEntrySpanEnd": () => (/* binding */ getEntrySpanEnd), +/* harmony export */ "getEventClassNames": () => (/* binding */ getEventClassNames), +/* harmony export */ "getEventTargetViaRoot": () => (/* binding */ getEventTargetViaRoot), +/* harmony export */ "getIsRtlScrollbarOnLeft": () => (/* binding */ getIsRtlScrollbarOnLeft), +/* harmony export */ "getRectCenter": () => (/* binding */ getRectCenter), +/* harmony export */ "getRelevantEvents": () => (/* binding */ getRelevantEvents), +/* harmony export */ "getScrollGridClassNames": () => (/* binding */ getScrollGridClassNames), +/* harmony export */ "getScrollbarWidths": () => (/* binding */ getScrollbarWidths), +/* harmony export */ "getSectionClassNames": () => (/* binding */ getSectionClassNames), +/* harmony export */ "getSectionHasLiquidHeight": () => (/* binding */ getSectionHasLiquidHeight), +/* harmony export */ "getSegAnchorAttrs": () => (/* binding */ getSegAnchorAttrs), +/* harmony export */ "getSegMeta": () => (/* binding */ getSegMeta), +/* harmony export */ "getSlotClassNames": () => (/* binding */ getSlotClassNames), +/* harmony export */ "getStickyFooterScrollbar": () => (/* binding */ getStickyFooterScrollbar), +/* harmony export */ "getStickyHeaderDates": () => (/* binding */ getStickyHeaderDates), +/* harmony export */ "getUnequalProps": () => (/* binding */ getUnequalProps), +/* harmony export */ "getUniqueDomId": () => (/* binding */ getUniqueDomId), +/* harmony export */ "globalLocales": () => (/* binding */ globalLocales), +/* harmony export */ "globalPlugins": () => (/* binding */ globalPlugins), +/* harmony export */ "greatestDurationDenominator": () => (/* binding */ greatestDurationDenominator), +/* harmony export */ "groupIntersectingEntries": () => (/* binding */ groupIntersectingEntries), +/* harmony export */ "guid": () => (/* binding */ guid), +/* harmony export */ "hasBgRendering": () => (/* binding */ hasBgRendering), +/* harmony export */ "hasShrinkWidth": () => (/* binding */ hasShrinkWidth), +/* harmony export */ "identity": () => (/* binding */ identity), +/* harmony export */ "interactionSettingsStore": () => (/* binding */ interactionSettingsStore), +/* harmony export */ "interactionSettingsToStore": () => (/* binding */ interactionSettingsToStore), +/* harmony export */ "intersectRanges": () => (/* binding */ intersectRanges), +/* harmony export */ "intersectRects": () => (/* binding */ intersectRects), +/* harmony export */ "intersectSpans": () => (/* binding */ intersectSpans), +/* harmony export */ "isArraysEqual": () => (/* binding */ isArraysEqual), +/* harmony export */ "isColPropsEqual": () => (/* binding */ isColPropsEqual), +/* harmony export */ "isDateSelectionValid": () => (/* binding */ isDateSelectionValid), +/* harmony export */ "isDateSpansEqual": () => (/* binding */ isDateSpansEqual), +/* harmony export */ "isInt": () => (/* binding */ isInt), +/* harmony export */ "isInteractionValid": () => (/* binding */ isInteractionValid), +/* harmony export */ "isMultiDayRange": () => (/* binding */ isMultiDayRange), +/* harmony export */ "isPropsEqual": () => (/* binding */ isPropsEqual), +/* harmony export */ "isPropsValid": () => (/* binding */ isPropsValid), +/* harmony export */ "isValidDate": () => (/* binding */ isValidDate), +/* harmony export */ "joinSpans": () => (/* binding */ joinSpans), +/* harmony export */ "listenBySelector": () => (/* binding */ listenBySelector), +/* harmony export */ "mapHash": () => (/* binding */ mapHash), +/* harmony export */ "memoize": () => (/* binding */ memoize), +/* harmony export */ "memoizeArraylike": () => (/* binding */ memoizeArraylike), +/* harmony export */ "memoizeHashlike": () => (/* binding */ memoizeHashlike), +/* harmony export */ "memoizeObjArg": () => (/* binding */ memoizeObjArg), +/* harmony export */ "mergeEventStores": () => (/* binding */ mergeEventStores), +/* harmony export */ "multiplyDuration": () => (/* binding */ multiplyDuration), +/* harmony export */ "padStart": () => (/* binding */ padStart), +/* harmony export */ "parseBusinessHours": () => (/* binding */ parseBusinessHours), +/* harmony export */ "parseClassNames": () => (/* binding */ parseClassNames), +/* harmony export */ "parseDragMeta": () => (/* binding */ parseDragMeta), +/* harmony export */ "parseEventDef": () => (/* binding */ parseEventDef), +/* harmony export */ "parseFieldSpecs": () => (/* binding */ parseFieldSpecs), +/* harmony export */ "parseMarker": () => (/* binding */ parse), +/* harmony export */ "pointInsideRect": () => (/* binding */ pointInsideRect), +/* harmony export */ "preventContextMenu": () => (/* binding */ preventContextMenu), +/* harmony export */ "preventDefault": () => (/* binding */ preventDefault), +/* harmony export */ "preventSelection": () => (/* binding */ preventSelection), +/* harmony export */ "rangeContainsMarker": () => (/* binding */ rangeContainsMarker), +/* harmony export */ "rangeContainsRange": () => (/* binding */ rangeContainsRange), +/* harmony export */ "rangesEqual": () => (/* binding */ rangesEqual), +/* harmony export */ "rangesIntersect": () => (/* binding */ rangesIntersect), +/* harmony export */ "refineEventDef": () => (/* binding */ refineEventDef), +/* harmony export */ "refineProps": () => (/* binding */ refineProps), +/* harmony export */ "removeElement": () => (/* binding */ removeElement), +/* harmony export */ "removeExact": () => (/* binding */ removeExact), +/* harmony export */ "renderChunkContent": () => (/* binding */ renderChunkContent), +/* harmony export */ "renderFill": () => (/* binding */ renderFill), +/* harmony export */ "renderMicroColGroup": () => (/* binding */ renderMicroColGroup), +/* harmony export */ "renderScrollShim": () => (/* binding */ renderScrollShim), +/* harmony export */ "requestJson": () => (/* binding */ requestJson), +/* harmony export */ "sanitizeShrinkWidth": () => (/* binding */ sanitizeShrinkWidth), +/* harmony export */ "setElSeg": () => (/* binding */ setElSeg), +/* harmony export */ "setRef": () => (/* binding */ setRef), +/* harmony export */ "sliceEventStore": () => (/* binding */ sliceEventStore), +/* harmony export */ "sliceEvents": () => (/* binding */ sliceEvents), +/* harmony export */ "sortEventSegs": () => (/* binding */ sortEventSegs), +/* harmony export */ "startOfDay": () => (/* binding */ startOfDay), +/* harmony export */ "translateRect": () => (/* binding */ translateRect), +/* harmony export */ "triggerDateSelect": () => (/* binding */ triggerDateSelect), +/* harmony export */ "unpromisify": () => (/* binding */ unpromisify), +/* harmony export */ "version": () => (/* binding */ version), +/* harmony export */ "whenTransitionDone": () => (/* binding */ whenTransitionDone), +/* harmony export */ "wholeDivideDurations": () => (/* binding */ wholeDivideDurations) +/* harmony export */ }); +/* harmony import */ var _main_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./main.css */ "./node_modules/@fullcalendar/common/main.css"); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _vdom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vdom.js */ "./node_modules/@fullcalendar/common/vdom.js"); +/*! +FullCalendar v5.10.1 +Docs & License: https://fullcalendar.io/ +(c) 2021 Adam Shaw +*/ + + + + + + +// no public types yet. when there are, export from: +// import {} from './api-type-deps' +var EventSourceApi = /** @class */ (function () { + function EventSourceApi(context, internalEventSource) { + this.context = context; + this.internalEventSource = internalEventSource; + } + EventSourceApi.prototype.remove = function () { + this.context.dispatch({ + type: 'REMOVE_EVENT_SOURCE', + sourceId: this.internalEventSource.sourceId, + }); + }; + EventSourceApi.prototype.refetch = function () { + this.context.dispatch({ + type: 'FETCH_EVENT_SOURCES', + sourceIds: [this.internalEventSource.sourceId], + isRefetch: true, + }); + }; + Object.defineProperty(EventSourceApi.prototype, "id", { + get: function () { + return this.internalEventSource.publicId; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventSourceApi.prototype, "url", { + get: function () { + return this.internalEventSource.meta.url; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventSourceApi.prototype, "format", { + get: function () { + return this.internalEventSource.meta.format; // TODO: bad. not guaranteed + }, + enumerable: false, + configurable: true + }); + return EventSourceApi; +}()); + +function removeElement(el) { + if (el.parentNode) { + el.parentNode.removeChild(el); + } +} +// Querying +// ---------------------------------------------------------------------------------------------------------------- +function elementClosest(el, selector) { + if (el.closest) { + return el.closest(selector); + // really bad fallback for IE + // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest + } + if (!document.documentElement.contains(el)) { + return null; + } + do { + if (elementMatches(el, selector)) { + return el; + } + el = (el.parentElement || el.parentNode); + } while (el !== null && el.nodeType === 1); + return null; +} +function elementMatches(el, selector) { + var method = el.matches || el.matchesSelector || el.msMatchesSelector; + return method.call(el, selector); +} +// accepts multiple subject els +// returns a real array. good for methods like forEach +// TODO: accept the document +function findElements(container, selector) { + var containers = container instanceof HTMLElement ? [container] : container; + var allMatches = []; + for (var i = 0; i < containers.length; i += 1) { + var matches = containers[i].querySelectorAll(selector); + for (var j = 0; j < matches.length; j += 1) { + allMatches.push(matches[j]); + } + } + return allMatches; +} +// accepts multiple subject els +// only queries direct child elements // TODO: rename to findDirectChildren! +function findDirectChildren(parent, selector) { + var parents = parent instanceof HTMLElement ? [parent] : parent; + var allMatches = []; + for (var i = 0; i < parents.length; i += 1) { + var childNodes = parents[i].children; // only ever elements + for (var j = 0; j < childNodes.length; j += 1) { + var childNode = childNodes[j]; + if (!selector || elementMatches(childNode, selector)) { + allMatches.push(childNode); + } + } + } + return allMatches; +} +// Style +// ---------------------------------------------------------------------------------------------------------------- +var PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i; +function applyStyle(el, props) { + for (var propName in props) { + applyStyleProp(el, propName, props[propName]); + } +} +function applyStyleProp(el, name, val) { + if (val == null) { + el.style[name] = ''; + } + else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) { + el.style[name] = val + "px"; + } + else { + el.style[name] = val; + } +} +// Event Handling +// ---------------------------------------------------------------------------------------------------------------- +// if intercepting bubbled events at the document/window/body level, +// and want to see originating element (the 'target'), use this util instead +// of `ev.target` because it goes within web-component boundaries. +function getEventTargetViaRoot(ev) { + var _a, _b; + return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target; +} +// Shadow DOM consuderations +// ---------------------------------------------------------------------------------------------------------------- +function getElRoot(el) { + return el.getRootNode ? el.getRootNode() : document; +} +// Unique ID for DOM attribute +var guid$1 = 0; +function getUniqueDomId() { + guid$1 += 1; + return 'fc-dom-' + guid$1; +} + +// Stops a mouse/touch event from doing it's native browser action +function preventDefault(ev) { + ev.preventDefault(); +} +// Event Delegation +// ---------------------------------------------------------------------------------------------------------------- +function buildDelegationHandler(selector, handler) { + return function (ev) { + var matchedChild = elementClosest(ev.target, selector); + if (matchedChild) { + handler.call(matchedChild, ev, matchedChild); + } + }; +} +function listenBySelector(container, eventType, selector, handler) { + var attachedHandler = buildDelegationHandler(selector, handler); + container.addEventListener(eventType, attachedHandler); + return function () { + container.removeEventListener(eventType, attachedHandler); + }; +} +function listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) { + var currentMatchedChild; + return listenBySelector(container, 'mouseover', selector, function (mouseOverEv, matchedChild) { + if (matchedChild !== currentMatchedChild) { + currentMatchedChild = matchedChild; + onMouseEnter(mouseOverEv, matchedChild); + var realOnMouseLeave_1 = function (mouseLeaveEv) { + currentMatchedChild = null; + onMouseLeave(mouseLeaveEv, matchedChild); + matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1); + }; + // listen to the next mouseleave, and then unattach + matchedChild.addEventListener('mouseleave', realOnMouseLeave_1); + } + }); +} +// Animation +// ---------------------------------------------------------------------------------------------------------------- +var transitionEventNames = [ + 'webkitTransitionEnd', + 'otransitionend', + 'oTransitionEnd', + 'msTransitionEnd', + 'transitionend', +]; +// triggered only when the next single subsequent transition finishes +function whenTransitionDone(el, callback) { + var realCallback = function (ev) { + callback(ev); + transitionEventNames.forEach(function (eventName) { + el.removeEventListener(eventName, realCallback); + }); + }; + transitionEventNames.forEach(function (eventName) { + el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes + }); +} +// ARIA workarounds +// ---------------------------------------------------------------------------------------------------------------- +function createAriaClickAttrs(handler) { + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ onClick: handler }, createAriaKeyboardAttrs(handler)); +} +function createAriaKeyboardAttrs(handler) { + return { + tabIndex: 0, + onKeyDown: function (ev) { + if (ev.key === 'Enter' || ev.key === ' ') { + handler(ev); + ev.preventDefault(); // if space, don't scroll down page + } + }, + }; +} + +var guidNumber = 0; +function guid() { + guidNumber += 1; + return String(guidNumber); +} +/* FullCalendar-specific DOM Utilities +----------------------------------------------------------------------------------------------------------------------*/ +// Make the mouse cursor express that an event is not allowed in the current area +function disableCursor() { + document.body.classList.add('fc-not-allowed'); +} +// Returns the mouse cursor to its original look +function enableCursor() { + document.body.classList.remove('fc-not-allowed'); +} +/* Selection +----------------------------------------------------------------------------------------------------------------------*/ +function preventSelection(el) { + el.classList.add('fc-unselectable'); + el.addEventListener('selectstart', preventDefault); +} +function allowSelection(el) { + el.classList.remove('fc-unselectable'); + el.removeEventListener('selectstart', preventDefault); +} +/* Context Menu +----------------------------------------------------------------------------------------------------------------------*/ +function preventContextMenu(el) { + el.addEventListener('contextmenu', preventDefault); +} +function allowContextMenu(el) { + el.removeEventListener('contextmenu', preventDefault); +} +function parseFieldSpecs(input) { + var specs = []; + var tokens = []; + var i; + var token; + if (typeof input === 'string') { + tokens = input.split(/\s*,\s*/); + } + else if (typeof input === 'function') { + tokens = [input]; + } + else if (Array.isArray(input)) { + tokens = input; + } + for (i = 0; i < tokens.length; i += 1) { + token = tokens[i]; + if (typeof token === 'string') { + specs.push(token.charAt(0) === '-' ? + { field: token.substring(1), order: -1 } : + { field: token, order: 1 }); + } + else if (typeof token === 'function') { + specs.push({ func: token }); + } + } + return specs; +} +function compareByFieldSpecs(obj0, obj1, fieldSpecs) { + var i; + var cmp; + for (i = 0; i < fieldSpecs.length; i += 1) { + cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]); + if (cmp) { + return cmp; + } + } + return 0; +} +function compareByFieldSpec(obj0, obj1, fieldSpec) { + if (fieldSpec.func) { + return fieldSpec.func(obj0, obj1); + } + return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field]) + * (fieldSpec.order || 1); +} +function flexibleCompare(a, b) { + if (!a && !b) { + return 0; + } + if (b == null) { + return -1; + } + if (a == null) { + return 1; + } + if (typeof a === 'string' || typeof b === 'string') { + return String(a).localeCompare(String(b)); + } + return a - b; +} +/* String Utilities +----------------------------------------------------------------------------------------------------------------------*/ +function padStart(val, len) { + var s = String(val); + return '000'.substr(0, len - s.length) + s; +} +function formatWithOrdinals(formatter, args, fallbackText) { + if (typeof formatter === 'function') { + return formatter.apply(void 0, args); + } + if (typeof formatter === 'string') { // non-blank string + return args.reduce(function (str, arg, index) { return (str.replace('$' + index, arg || '')); }, formatter); + } + return fallbackText; +} +/* Number Utilities +----------------------------------------------------------------------------------------------------------------------*/ +function compareNumbers(a, b) { + return a - b; +} +function isInt(n) { + return n % 1 === 0; +} +/* FC-specific DOM dimension stuff +----------------------------------------------------------------------------------------------------------------------*/ +function computeSmallestCellWidth(cellEl) { + var allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame'); + var contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion'); + if (!allWidthEl) { + throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const + } + if (!contentWidthEl) { + throw new Error('needs fc-scrollgrid-shrink-cushion className'); + } + return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border + contentWidthEl.getBoundingClientRect().width; +} + +var DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; +// Adding +function addWeeks(m, n) { + var a = dateToUtcArray(m); + a[2] += n * 7; + return arrayToUtcDate(a); +} +function addDays(m, n) { + var a = dateToUtcArray(m); + a[2] += n; + return arrayToUtcDate(a); +} +function addMs(m, n) { + var a = dateToUtcArray(m); + a[6] += n; + return arrayToUtcDate(a); +} +// Diffing (all return floats) +// TODO: why not use ranges? +function diffWeeks(m0, m1) { + return diffDays(m0, m1) / 7; +} +function diffDays(m0, m1) { + return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24); +} +function diffHours(m0, m1) { + return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60); +} +function diffMinutes(m0, m1) { + return (m1.valueOf() - m0.valueOf()) / (1000 * 60); +} +function diffSeconds(m0, m1) { + return (m1.valueOf() - m0.valueOf()) / 1000; +} +function diffDayAndTime(m0, m1) { + var m0day = startOfDay(m0); + var m1day = startOfDay(m1); + return { + years: 0, + months: 0, + days: Math.round(diffDays(m0day, m1day)), + milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()), + }; +} +// Diffing Whole Units +function diffWholeWeeks(m0, m1) { + var d = diffWholeDays(m0, m1); + if (d !== null && d % 7 === 0) { + return d / 7; + } + return null; +} +function diffWholeDays(m0, m1) { + if (timeAsMs(m0) === timeAsMs(m1)) { + return Math.round(diffDays(m0, m1)); + } + return null; +} +// Start-Of +function startOfDay(m) { + return arrayToUtcDate([ + m.getUTCFullYear(), + m.getUTCMonth(), + m.getUTCDate(), + ]); +} +function startOfHour(m) { + return arrayToUtcDate([ + m.getUTCFullYear(), + m.getUTCMonth(), + m.getUTCDate(), + m.getUTCHours(), + ]); +} +function startOfMinute(m) { + return arrayToUtcDate([ + m.getUTCFullYear(), + m.getUTCMonth(), + m.getUTCDate(), + m.getUTCHours(), + m.getUTCMinutes(), + ]); +} +function startOfSecond(m) { + return arrayToUtcDate([ + m.getUTCFullYear(), + m.getUTCMonth(), + m.getUTCDate(), + m.getUTCHours(), + m.getUTCMinutes(), + m.getUTCSeconds(), + ]); +} +// Week Computation +function weekOfYear(marker, dow, doy) { + var y = marker.getUTCFullYear(); + var w = weekOfGivenYear(marker, y, dow, doy); + if (w < 1) { + return weekOfGivenYear(marker, y - 1, dow, doy); + } + var nextW = weekOfGivenYear(marker, y + 1, dow, doy); + if (nextW >= 1) { + return Math.min(w, nextW); + } + return w; +} +function weekOfGivenYear(marker, year, dow, doy) { + var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]); + var dayStart = startOfDay(marker); + var days = Math.round(diffDays(firstWeekStart, dayStart)); + return Math.floor(days / 7) + 1; // zero-indexed +} +// start-of-first-week - start-of-year +function firstWeekOffset(year, dow, doy) { + // first-week day -- which january is always in the first week (4 for iso, 1 for other) + var fwd = 7 + dow - doy; + // first-week day local weekday -- which local weekday is fwd + var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7; + return -fwdlw + fwd - 1; +} +// Array Conversion +function dateToLocalArray(date) { + return [ + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds(), + ]; +} +function arrayToLocalDate(a) { + return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month + a[3] || 0, a[4] || 0, a[5] || 0); +} +function dateToUtcArray(date) { + return [ + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds(), + date.getUTCMilliseconds(), + ]; +} +function arrayToUtcDate(a) { + // according to web standards (and Safari), a month index is required. + // massage if only given a year. + if (a.length === 1) { + a = a.concat([0]); + } + return new Date(Date.UTC.apply(Date, a)); +} +// Other Utils +function isValidDate(m) { + return !isNaN(m.valueOf()); +} +function timeAsMs(m) { + return m.getUTCHours() * 1000 * 60 * 60 + + m.getUTCMinutes() * 1000 * 60 + + m.getUTCSeconds() * 1000 + + m.getUTCMilliseconds(); +} + +function createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) { + return { + instanceId: guid(), + defId: defId, + range: range, + forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo, + forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo, + }; +} + +var hasOwnProperty = Object.prototype.hasOwnProperty; +// Merges an array of objects into a single object. +// The second argument allows for an array of property names who's object values will be merged together. +function mergeProps(propObjs, complexPropsMap) { + var dest = {}; + if (complexPropsMap) { + for (var name_1 in complexPropsMap) { + var complexObjs = []; + // collect the trailing object values, stopping when a non-object is discovered + for (var i = propObjs.length - 1; i >= 0; i -= 1) { + var val = propObjs[i][name_1]; + if (typeof val === 'object' && val) { // non-null object + complexObjs.unshift(val); + } + else if (val !== undefined) { + dest[name_1] = val; // if there were no objects, this value will be used + break; + } + } + // if the trailing values were objects, use the merged value + if (complexObjs.length) { + dest[name_1] = mergeProps(complexObjs); + } + } + } + // copy values into the destination, going from last to first + for (var i = propObjs.length - 1; i >= 0; i -= 1) { + var props = propObjs[i]; + for (var name_2 in props) { + if (!(name_2 in dest)) { // if already assigned by previous props or complex props, don't reassign + dest[name_2] = props[name_2]; + } + } + } + return dest; +} +function filterHash(hash, func) { + var filtered = {}; + for (var key in hash) { + if (func(hash[key], key)) { + filtered[key] = hash[key]; + } + } + return filtered; +} +function mapHash(hash, func) { + var newHash = {}; + for (var key in hash) { + newHash[key] = func(hash[key], key); + } + return newHash; +} +function arrayToHash(a) { + var hash = {}; + for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { + var item = a_1[_i]; + hash[item] = true; + } + return hash; +} +function buildHashFromArray(a, func) { + var hash = {}; + for (var i = 0; i < a.length; i += 1) { + var tuple = func(a[i], i); + hash[tuple[0]] = tuple[1]; + } + return hash; +} +function hashValuesToArray(obj) { + var a = []; + for (var key in obj) { + a.push(obj[key]); + } + return a; +} +function isPropsEqual(obj0, obj1) { + if (obj0 === obj1) { + return true; + } + for (var key in obj0) { + if (hasOwnProperty.call(obj0, key)) { + if (!(key in obj1)) { + return false; + } + } + } + for (var key in obj1) { + if (hasOwnProperty.call(obj1, key)) { + if (obj0[key] !== obj1[key]) { + return false; + } + } + } + return true; +} +function getUnequalProps(obj0, obj1) { + var keys = []; + for (var key in obj0) { + if (hasOwnProperty.call(obj0, key)) { + if (!(key in obj1)) { + keys.push(key); + } + } + } + for (var key in obj1) { + if (hasOwnProperty.call(obj1, key)) { + if (obj0[key] !== obj1[key]) { + keys.push(key); + } + } + } + return keys; +} +function compareObjs(oldProps, newProps, equalityFuncs) { + if (equalityFuncs === void 0) { equalityFuncs = {}; } + if (oldProps === newProps) { + return true; + } + for (var key in newProps) { + if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ; + else { + return false; + } + } + // check for props that were omitted in the new + for (var key in oldProps) { + if (!(key in newProps)) { + return false; + } + } + return true; +} +/* +assumed "true" equality for handler names like "onReceiveSomething" +*/ +function isObjValsEqual(val0, val1, comparator) { + if (val0 === val1 || comparator === true) { + return true; + } + if (comparator) { + return comparator(val0, val1); + } + return false; +} +function collectFromHash(hash, startIndex, endIndex, step) { + if (startIndex === void 0) { startIndex = 0; } + if (step === void 0) { step = 1; } + var res = []; + if (endIndex == null) { + endIndex = Object.keys(hash).length; + } + for (var i = startIndex; i < endIndex; i += step) { + var val = hash[i]; + if (val !== undefined) { // will disregard undefined for sparse arrays + res.push(val); + } + } + return res; +} + +function parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) { + for (var i = 0; i < recurringTypes.length; i += 1) { + var parsed = recurringTypes[i].parse(refined, dateEnv); + if (parsed) { + var allDay = refined.allDay; + if (allDay == null) { + allDay = defaultAllDay; + if (allDay == null) { + allDay = parsed.allDayGuess; + if (allDay == null) { + allDay = false; + } + } + } + return { + allDay: allDay, + duration: parsed.duration, + typeData: parsed.typeData, + typeId: i, + }; + } + } + return null; +} +function expandRecurring(eventStore, framingRange, context) { + var dateEnv = context.dateEnv, pluginHooks = context.pluginHooks, options = context.options; + var defs = eventStore.defs, instances = eventStore.instances; + // remove existing recurring instances + // TODO: bad. always expand events as a second step + instances = filterHash(instances, function (instance) { return !defs[instance.defId].recurringDef; }); + for (var defId in defs) { + var def = defs[defId]; + if (def.recurringDef) { + var duration = def.recurringDef.duration; + if (!duration) { + duration = def.allDay ? + options.defaultAllDayEventDuration : + options.defaultTimedEventDuration; + } + var starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes); + for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) { + var start = starts_1[_i]; + var instance = createEventInstance(defId, { + start: start, + end: dateEnv.add(start, duration), + }); + instances[instance.instanceId] = instance; + } + } + } + return { defs: defs, instances: instances }; +} +/* +Event MUST have a recurringDef +*/ +function expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) { + var typeDef = recurringTypes[eventDef.recurringDef.typeId]; + var markers = typeDef.expand(eventDef.recurringDef.typeData, { + start: dateEnv.subtract(framingRange.start, duration), + end: framingRange.end, + }, dateEnv); + // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to + if (eventDef.allDay) { + markers = markers.map(startOfDay); + } + return markers; +} + +var INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds']; +var PARSE_RE = /^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/; +// Parsing and Creation +function createDuration(input, unit) { + var _a; + if (typeof input === 'string') { + return parseString(input); + } + if (typeof input === 'object' && input) { // non-null object + return parseObject(input); + } + if (typeof input === 'number') { + return parseObject((_a = {}, _a[unit || 'milliseconds'] = input, _a)); + } + return null; +} +function parseString(s) { + var m = PARSE_RE.exec(s); + if (m) { + var sign = m[1] ? -1 : 1; + return { + years: 0, + months: 0, + days: sign * (m[2] ? parseInt(m[2], 10) : 0), + milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours + (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes + (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds + (m[6] ? parseInt(m[6], 10) : 0) // ms + ), + }; + } + return null; +} +function parseObject(obj) { + var duration = { + years: obj.years || obj.year || 0, + months: obj.months || obj.month || 0, + days: obj.days || obj.day || 0, + milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours + (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes + (obj.seconds || obj.second || 0) * 1000 + // seconds + (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms + }; + var weeks = obj.weeks || obj.week; + if (weeks) { + duration.days += weeks * 7; + duration.specifiedWeeks = true; + } + return duration; +} +// Equality +function durationsEqual(d0, d1) { + return d0.years === d1.years && + d0.months === d1.months && + d0.days === d1.days && + d0.milliseconds === d1.milliseconds; +} +function asCleanDays(dur) { + if (!dur.years && !dur.months && !dur.milliseconds) { + return dur.days; + } + return 0; +} +// Simple Math +function addDurations(d0, d1) { + return { + years: d0.years + d1.years, + months: d0.months + d1.months, + days: d0.days + d1.days, + milliseconds: d0.milliseconds + d1.milliseconds, + }; +} +function subtractDurations(d1, d0) { + return { + years: d1.years - d0.years, + months: d1.months - d0.months, + days: d1.days - d0.days, + milliseconds: d1.milliseconds - d0.milliseconds, + }; +} +function multiplyDuration(d, n) { + return { + years: d.years * n, + months: d.months * n, + days: d.days * n, + milliseconds: d.milliseconds * n, + }; +} +// Conversions +// "Rough" because they are based on average-case Gregorian months/years +function asRoughYears(dur) { + return asRoughDays(dur) / 365; +} +function asRoughMonths(dur) { + return asRoughDays(dur) / 30; +} +function asRoughDays(dur) { + return asRoughMs(dur) / 864e5; +} +function asRoughMinutes(dur) { + return asRoughMs(dur) / (1000 * 60); +} +function asRoughSeconds(dur) { + return asRoughMs(dur) / 1000; +} +function asRoughMs(dur) { + return dur.years * (365 * 864e5) + + dur.months * (30 * 864e5) + + dur.days * 864e5 + + dur.milliseconds; +} +// Advanced Math +function wholeDivideDurations(numerator, denominator) { + var res = null; + for (var i = 0; i < INTERNAL_UNITS.length; i += 1) { + var unit = INTERNAL_UNITS[i]; + if (denominator[unit]) { + var localRes = numerator[unit] / denominator[unit]; + if (!isInt(localRes) || (res !== null && res !== localRes)) { + return null; + } + res = localRes; + } + else if (numerator[unit]) { + // needs to divide by something but can't! + return null; + } + } + return res; +} +function greatestDurationDenominator(dur) { + var ms = dur.milliseconds; + if (ms) { + if (ms % 1000 !== 0) { + return { unit: 'millisecond', value: ms }; + } + if (ms % (1000 * 60) !== 0) { + return { unit: 'second', value: ms / 1000 }; + } + if (ms % (1000 * 60 * 60) !== 0) { + return { unit: 'minute', value: ms / (1000 * 60) }; + } + if (ms) { + return { unit: 'hour', value: ms / (1000 * 60 * 60) }; + } + } + if (dur.days) { + if (dur.specifiedWeeks && dur.days % 7 === 0) { + return { unit: 'week', value: dur.days / 7 }; + } + return { unit: 'day', value: dur.days }; + } + if (dur.months) { + return { unit: 'month', value: dur.months }; + } + if (dur.years) { + return { unit: 'year', value: dur.years }; + } + return { unit: 'millisecond', value: 0 }; +} + +// timeZoneOffset is in minutes +function buildIsoString(marker, timeZoneOffset, stripZeroTime) { + if (stripZeroTime === void 0) { stripZeroTime = false; } + var s = marker.toISOString(); + s = s.replace('.000', ''); + if (stripZeroTime) { + s = s.replace('T00:00:00Z', ''); + } + if (s.length > 10) { // time part wasn't stripped, can add timezone info + if (timeZoneOffset == null) { + s = s.replace('Z', ''); + } + else if (timeZoneOffset !== 0) { + s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true)); + } + // otherwise, its UTC-0 and we want to keep the Z + } + return s; +} +// formats the date, but with no time part +// TODO: somehow merge with buildIsoString and stripZeroTime +// TODO: rename. omit "string" +function formatDayString(marker) { + return marker.toISOString().replace(/T.*$/, ''); +} +// TODO: use Date::toISOString and use everything after the T? +function formatIsoTimeString(marker) { + return padStart(marker.getUTCHours(), 2) + ':' + + padStart(marker.getUTCMinutes(), 2) + ':' + + padStart(marker.getUTCSeconds(), 2); +} +function formatTimeZoneOffset(minutes, doIso) { + if (doIso === void 0) { doIso = false; } + var sign = minutes < 0 ? '-' : '+'; + var abs = Math.abs(minutes); + var hours = Math.floor(abs / 60); + var mins = Math.round(abs % 60); + if (doIso) { + return sign + padStart(hours, 2) + ":" + padStart(mins, 2); + } + return "GMT" + sign + hours + (mins ? ":" + padStart(mins, 2) : ''); +} + +// TODO: new util arrayify? +function removeExact(array, exactVal) { + var removeCnt = 0; + var i = 0; + while (i < array.length) { + if (array[i] === exactVal) { + array.splice(i, 1); + removeCnt += 1; + } + else { + i += 1; + } + } + return removeCnt; +} +function isArraysEqual(a0, a1, equalityFunc) { + if (a0 === a1) { + return true; + } + var len = a0.length; + var i; + if (len !== a1.length) { // not array? or not same length? + return false; + } + for (i = 0; i < len; i += 1) { + if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) { + return false; + } + } + return true; +} + +function memoize(workerFunc, resEquality, teardownFunc) { + var currentArgs; + var currentRes; + return function () { + var newArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + newArgs[_i] = arguments[_i]; + } + if (!currentArgs) { + currentRes = workerFunc.apply(this, newArgs); + } + else if (!isArraysEqual(currentArgs, newArgs)) { + if (teardownFunc) { + teardownFunc(currentRes); + } + var res = workerFunc.apply(this, newArgs); + if (!resEquality || !resEquality(res, currentRes)) { + currentRes = res; + } + } + currentArgs = newArgs; + return currentRes; + }; +} +function memoizeObjArg(workerFunc, resEquality, teardownFunc) { + var _this = this; + var currentArg; + var currentRes; + return function (newArg) { + if (!currentArg) { + currentRes = workerFunc.call(_this, newArg); + } + else if (!isPropsEqual(currentArg, newArg)) { + if (teardownFunc) { + teardownFunc(currentRes); + } + var res = workerFunc.call(_this, newArg); + if (!resEquality || !resEquality(res, currentRes)) { + currentRes = res; + } + } + currentArg = newArg; + return currentRes; + }; +} +function memoizeArraylike(// used at all? +workerFunc, resEquality, teardownFunc) { + var _this = this; + var currentArgSets = []; + var currentResults = []; + return function (newArgSets) { + var currentLen = currentArgSets.length; + var newLen = newArgSets.length; + var i = 0; + for (; i < currentLen; i += 1) { + if (!newArgSets[i]) { // one of the old sets no longer exists + if (teardownFunc) { + teardownFunc(currentResults[i]); + } + } + else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) { + if (teardownFunc) { + teardownFunc(currentResults[i]); + } + var res = workerFunc.apply(_this, newArgSets[i]); + if (!resEquality || !resEquality(res, currentResults[i])) { + currentResults[i] = res; + } + } + } + for (; i < newLen; i += 1) { + currentResults[i] = workerFunc.apply(_this, newArgSets[i]); + } + currentArgSets = newArgSets; + currentResults.splice(newLen); // remove excess + return currentResults; + }; +} +function memoizeHashlike(// used? +workerFunc, resEquality, teardownFunc) { + var _this = this; + var currentArgHash = {}; + var currentResHash = {}; + return function (newArgHash) { + var newResHash = {}; + for (var key in newArgHash) { + if (!currentResHash[key]) { + newResHash[key] = workerFunc.apply(_this, newArgHash[key]); + } + else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) { + if (teardownFunc) { + teardownFunc(currentResHash[key]); + } + var res = workerFunc.apply(_this, newArgHash[key]); + newResHash[key] = (resEquality && resEquality(res, currentResHash[key])) + ? currentResHash[key] + : res; + } + else { + newResHash[key] = currentResHash[key]; + } + } + currentArgHash = newArgHash; + currentResHash = newResHash; + return newResHash; + }; +} + +var EXTENDED_SETTINGS_AND_SEVERITIES = { + week: 3, + separator: 0, + omitZeroMinute: 0, + meridiem: 0, + omitCommas: 0, +}; +var STANDARD_DATE_PROP_SEVERITIES = { + timeZoneName: 7, + era: 6, + year: 5, + month: 4, + day: 2, + weekday: 2, + hour: 1, + minute: 1, + second: 1, +}; +var MERIDIEM_RE = /\s*([ap])\.?m\.?/i; // eats up leading spaces too +var COMMA_RE = /,/g; // we need re for globalness +var MULTI_SPACE_RE = /\s+/g; +var LTR_RE = /\u200e/g; // control character +var UTC_RE = /UTC|GMT/; +var NativeFormatter = /** @class */ (function () { + function NativeFormatter(formatSettings) { + var standardDateProps = {}; + var extendedSettings = {}; + var severity = 0; + for (var name_1 in formatSettings) { + if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) { + extendedSettings[name_1] = formatSettings[name_1]; + severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity); + } + else { + standardDateProps[name_1] = formatSettings[name_1]; + if (name_1 in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity + severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity); + } + } + } + this.standardDateProps = standardDateProps; + this.extendedSettings = extendedSettings; + this.severity = severity; + this.buildFormattingFunc = memoize(buildFormattingFunc); + } + NativeFormatter.prototype.format = function (date, context) { + return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date); + }; + NativeFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) { + var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings; + var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem); + if (!diffSeverity) { + return this.format(start, context); + } + var biggestUnitForPartial = diffSeverity; + if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time + (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') && + (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') && + (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) { + biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time + } + var full0 = this.format(start, context); + var full1 = this.format(end, context); + if (full0 === full1) { + return full0; + } + var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial); + var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context); + var partial0 = partialFormattingFunc(start); + var partial1 = partialFormattingFunc(end); + var insertion = findCommonInsertion(full0, partial0, full1, partial1); + var separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || ''; + if (insertion) { + return insertion.before + partial0 + separator + partial1 + insertion.after; + } + return full0 + separator + full1; + }; + NativeFormatter.prototype.getLargestUnit = function () { + switch (this.severity) { + case 7: + case 6: + case 5: + return 'year'; + case 4: + return 'month'; + case 3: + return 'week'; + case 2: + return 'day'; + default: + return 'time'; // really? + } + }; + return NativeFormatter; +}()); +function buildFormattingFunc(standardDateProps, extendedSettings, context) { + var standardDatePropCnt = Object.keys(standardDateProps).length; + if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') { + return function (date) { return (formatTimeZoneOffset(date.timeZoneOffset)); }; + } + if (standardDatePropCnt === 0 && extendedSettings.week) { + return function (date) { return (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week)); }; + } + return buildNativeFormattingFunc(standardDateProps, extendedSettings, context); +} +function buildNativeFormattingFunc(standardDateProps, extendedSettings, context) { + standardDateProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, standardDateProps); // copy + extendedSettings = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, extendedSettings); // copy + sanitizeSettings(standardDateProps, extendedSettings); + standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers + var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps); + var zeroFormat; // needed? + if (extendedSettings.omitZeroMinute) { + var zeroProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, standardDateProps); + delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings + zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps); + } + return function (date) { + var marker = date.marker; + var format; + if (zeroFormat && !marker.getUTCMinutes()) { + format = zeroFormat; + } + else { + format = normalFormat; + } + var s = format.format(marker); + return postProcess(s, date, standardDateProps, extendedSettings, context); + }; +} +function sanitizeSettings(standardDateProps, extendedSettings) { + // deal with a browser inconsistency where formatting the timezone + // requires that the hour/minute be present. + if (standardDateProps.timeZoneName) { + if (!standardDateProps.hour) { + standardDateProps.hour = '2-digit'; + } + if (!standardDateProps.minute) { + standardDateProps.minute = '2-digit'; + } + } + // only support short timezone names + if (standardDateProps.timeZoneName === 'long') { + standardDateProps.timeZoneName = 'short'; + } + // if requesting to display seconds, MUST display minutes + if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) { + delete extendedSettings.omitZeroMinute; + } +} +function postProcess(s, date, standardDateProps, extendedSettings, context) { + s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes + if (standardDateProps.timeZoneName === 'short') { + s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ? + 'UTC' : // important to normalize for IE, which does "GMT" + formatTimeZoneOffset(date.timeZoneOffset)); + } + if (extendedSettings.omitCommas) { + s = s.replace(COMMA_RE, '').trim(); + } + if (extendedSettings.omitZeroMinute) { + s = s.replace(':00', ''); // zeroFormat doesn't always achieve this + } + // ^ do anything that might create adjacent spaces before this point, + // because MERIDIEM_RE likes to eat up loading spaces + if (extendedSettings.meridiem === false) { + s = s.replace(MERIDIEM_RE, '').trim(); + } + else if (extendedSettings.meridiem === 'narrow') { // a/p + s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase(); }); + } + else if (extendedSettings.meridiem === 'short') { // am/pm + s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase() + "m"; }); + } + else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase + s = s.replace(MERIDIEM_RE, function (m0) { return m0.toLocaleLowerCase(); }); + } + s = s.replace(MULTI_SPACE_RE, ' '); + s = s.trim(); + return s; +} +function injectTzoStr(s, tzoStr) { + var replaced = false; + s = s.replace(UTC_RE, function () { + replaced = true; + return tzoStr; + }); + // IE11 doesn't include UTC/GMT in the original string, so append to end + if (!replaced) { + s += " " + tzoStr; + } + return s; +} +function formatWeekNumber(num, weekText, weekTextLong, locale, display) { + var parts = []; + if (display === 'long') { + parts.push(weekTextLong); + } + else if (display === 'short' || display === 'narrow') { + parts.push(weekText); + } + if (display === 'long' || display === 'short') { + parts.push(' '); + } + parts.push(locale.simpleNumberFormat.format(num)); + if (locale.options.direction === 'rtl') { // TODO: use control characters instead? + parts.reverse(); + } + return parts.join(''); +} +// Range Formatting Utils +// 0 = exactly the same +// 1 = different by time +// and bigger +function computeMarkerDiffSeverity(d0, d1, ca) { + if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) { + return 5; + } + if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) { + return 4; + } + if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) { + return 2; + } + if (timeAsMs(d0) !== timeAsMs(d1)) { + return 1; + } + return 0; +} +function computePartialFormattingOptions(options, biggestUnit) { + var partialOptions = {}; + for (var name_2 in options) { + if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone) + STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) { + partialOptions[name_2] = options[name_2]; + } + } + return partialOptions; +} +function findCommonInsertion(full0, partial0, full1, partial1) { + var i0 = 0; + while (i0 < full0.length) { + var found0 = full0.indexOf(partial0, i0); + if (found0 === -1) { + break; + } + var before0 = full0.substr(0, found0); + i0 = found0 + partial0.length; + var after0 = full0.substr(i0); + var i1 = 0; + while (i1 < full1.length) { + var found1 = full1.indexOf(partial1, i1); + if (found1 === -1) { + break; + } + var before1 = full1.substr(0, found1); + i1 = found1 + partial1.length; + var after1 = full1.substr(i1); + if (before0 === before1 && after0 === after1) { + return { + before: before0, + after: after0, + }; + } + } + } + return null; +} + +function expandZonedMarker(dateInfo, calendarSystem) { + var a = calendarSystem.markerToArray(dateInfo.marker); + return { + marker: dateInfo.marker, + timeZoneOffset: dateInfo.timeZoneOffset, + array: a, + year: a[0], + month: a[1], + day: a[2], + hour: a[3], + minute: a[4], + second: a[5], + millisecond: a[6], + }; +} + +function createVerboseFormattingArg(start, end, context, betterDefaultSeparator) { + var startInfo = expandZonedMarker(start, context.calendarSystem); + var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null; + return { + date: startInfo, + start: startInfo, + end: endInfo, + timeZone: context.timeZone, + localeCodes: context.locale.codes, + defaultSeparator: betterDefaultSeparator || context.defaultSeparator, + }; +} + +/* +TODO: fix the terminology of "formatter" vs "formatting func" +*/ +/* +At the time of instantiation, this object does not know which cmd-formatting system it will use. +It receives this at the time of formatting, as a setting. +*/ +var CmdFormatter = /** @class */ (function () { + function CmdFormatter(cmdStr) { + this.cmdStr = cmdStr; + } + CmdFormatter.prototype.format = function (date, context, betterDefaultSeparator) { + return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator)); + }; + CmdFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) { + return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator)); + }; + return CmdFormatter; +}()); + +var FuncFormatter = /** @class */ (function () { + function FuncFormatter(func) { + this.func = func; + } + FuncFormatter.prototype.format = function (date, context, betterDefaultSeparator) { + return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator)); + }; + FuncFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) { + return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator)); + }; + return FuncFormatter; +}()); + +function createFormatter(input) { + if (typeof input === 'object' && input) { // non-null object + return new NativeFormatter(input); + } + if (typeof input === 'string') { + return new CmdFormatter(input); + } + if (typeof input === 'function') { + return new FuncFormatter(input); + } + return null; +} + +// base options +// ------------ +var BASE_OPTION_REFINERS = { + navLinkDayClick: identity, + navLinkWeekClick: identity, + duration: createDuration, + bootstrapFontAwesome: identity, + buttonIcons: identity, + customButtons: identity, + defaultAllDayEventDuration: createDuration, + defaultTimedEventDuration: createDuration, + nextDayThreshold: createDuration, + scrollTime: createDuration, + scrollTimeReset: Boolean, + slotMinTime: createDuration, + slotMaxTime: createDuration, + dayPopoverFormat: createFormatter, + slotDuration: createDuration, + snapDuration: createDuration, + headerToolbar: identity, + footerToolbar: identity, + defaultRangeSeparator: String, + titleRangeSeparator: String, + forceEventDuration: Boolean, + dayHeaders: Boolean, + dayHeaderFormat: createFormatter, + dayHeaderClassNames: identity, + dayHeaderContent: identity, + dayHeaderDidMount: identity, + dayHeaderWillUnmount: identity, + dayCellClassNames: identity, + dayCellContent: identity, + dayCellDidMount: identity, + dayCellWillUnmount: identity, + initialView: String, + aspectRatio: Number, + weekends: Boolean, + weekNumberCalculation: identity, + weekNumbers: Boolean, + weekNumberClassNames: identity, + weekNumberContent: identity, + weekNumberDidMount: identity, + weekNumberWillUnmount: identity, + editable: Boolean, + viewClassNames: identity, + viewDidMount: identity, + viewWillUnmount: identity, + nowIndicator: Boolean, + nowIndicatorClassNames: identity, + nowIndicatorContent: identity, + nowIndicatorDidMount: identity, + nowIndicatorWillUnmount: identity, + showNonCurrentDates: Boolean, + lazyFetching: Boolean, + startParam: String, + endParam: String, + timeZoneParam: String, + timeZone: String, + locales: identity, + locale: identity, + themeSystem: String, + dragRevertDuration: Number, + dragScroll: Boolean, + allDayMaintainDuration: Boolean, + unselectAuto: Boolean, + dropAccept: identity, + eventOrder: parseFieldSpecs, + eventOrderStrict: Boolean, + handleWindowResize: Boolean, + windowResizeDelay: Number, + longPressDelay: Number, + eventDragMinDistance: Number, + expandRows: Boolean, + height: identity, + contentHeight: identity, + direction: String, + weekNumberFormat: createFormatter, + eventResizableFromStart: Boolean, + displayEventTime: Boolean, + displayEventEnd: Boolean, + weekText: String, + weekTextLong: String, + progressiveEventRendering: Boolean, + businessHours: identity, + initialDate: identity, + now: identity, + eventDataTransform: identity, + stickyHeaderDates: identity, + stickyFooterScrollbar: identity, + viewHeight: identity, + defaultAllDay: Boolean, + eventSourceFailure: identity, + eventSourceSuccess: identity, + eventDisplay: String, + eventStartEditable: Boolean, + eventDurationEditable: Boolean, + eventOverlap: identity, + eventConstraint: identity, + eventAllow: identity, + eventBackgroundColor: String, + eventBorderColor: String, + eventTextColor: String, + eventColor: String, + eventClassNames: identity, + eventContent: identity, + eventDidMount: identity, + eventWillUnmount: identity, + selectConstraint: identity, + selectOverlap: identity, + selectAllow: identity, + droppable: Boolean, + unselectCancel: String, + slotLabelFormat: identity, + slotLaneClassNames: identity, + slotLaneContent: identity, + slotLaneDidMount: identity, + slotLaneWillUnmount: identity, + slotLabelClassNames: identity, + slotLabelContent: identity, + slotLabelDidMount: identity, + slotLabelWillUnmount: identity, + dayMaxEvents: identity, + dayMaxEventRows: identity, + dayMinWidth: Number, + slotLabelInterval: createDuration, + allDayText: String, + allDayClassNames: identity, + allDayContent: identity, + allDayDidMount: identity, + allDayWillUnmount: identity, + slotMinWidth: Number, + navLinks: Boolean, + eventTimeFormat: createFormatter, + rerenderDelay: Number, + moreLinkText: identity, + moreLinkHint: identity, + selectMinDistance: Number, + selectable: Boolean, + selectLongPressDelay: Number, + eventLongPressDelay: Number, + selectMirror: Boolean, + eventMaxStack: Number, + eventMinHeight: Number, + eventMinWidth: Number, + eventShortHeight: Number, + slotEventOverlap: Boolean, + plugins: identity, + firstDay: Number, + dayCount: Number, + dateAlignment: String, + dateIncrement: createDuration, + hiddenDays: identity, + monthMode: Boolean, + fixedWeekCount: Boolean, + validRange: identity, + visibleRange: identity, + titleFormat: identity, + eventInteractive: Boolean, + // only used by list-view, but languages define the value, so we need it in base options + noEventsText: String, + viewHint: identity, + navLinkHint: identity, + closeHint: String, + timeHint: String, + eventHint: String, + moreLinkClick: identity, + moreLinkClassNames: identity, + moreLinkContent: identity, + moreLinkDidMount: identity, + moreLinkWillUnmount: identity, +}; +// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results. +// raw values. +var BASE_OPTION_DEFAULTS = { + eventDisplay: 'auto', + defaultRangeSeparator: ' - ', + titleRangeSeparator: ' \u2013 ', + defaultTimedEventDuration: '01:00:00', + defaultAllDayEventDuration: { day: 1 }, + forceEventDuration: false, + nextDayThreshold: '00:00:00', + dayHeaders: true, + initialView: '', + aspectRatio: 1.35, + headerToolbar: { + start: 'title', + center: '', + end: 'today prev,next', + }, + weekends: true, + weekNumbers: false, + weekNumberCalculation: 'local', + editable: false, + nowIndicator: false, + scrollTime: '06:00:00', + scrollTimeReset: true, + slotMinTime: '00:00:00', + slotMaxTime: '24:00:00', + showNonCurrentDates: true, + lazyFetching: true, + startParam: 'start', + endParam: 'end', + timeZoneParam: 'timeZone', + timeZone: 'local', + locales: [], + locale: '', + themeSystem: 'standard', + dragRevertDuration: 500, + dragScroll: true, + allDayMaintainDuration: false, + unselectAuto: true, + dropAccept: '*', + eventOrder: 'start,-duration,allDay,title', + dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' }, + handleWindowResize: true, + windowResizeDelay: 100, + longPressDelay: 1000, + eventDragMinDistance: 5, + expandRows: false, + navLinks: false, + selectable: false, + eventMinHeight: 15, + eventMinWidth: 30, + eventShortHeight: 30, +}; +// calendar listeners +// ------------------ +var CALENDAR_LISTENER_REFINERS = { + datesSet: identity, + eventsSet: identity, + eventAdd: identity, + eventChange: identity, + eventRemove: identity, + windowResize: identity, + eventClick: identity, + eventMouseEnter: identity, + eventMouseLeave: identity, + select: identity, + unselect: identity, + loading: identity, + // internal + _unmount: identity, + _beforeprint: identity, + _afterprint: identity, + _noEventDrop: identity, + _noEventResize: identity, + _resize: identity, + _scrollRequest: identity, +}; +// calendar-specific options +// ------------------------- +var CALENDAR_OPTION_REFINERS = { + buttonText: identity, + buttonHints: identity, + views: identity, + plugins: identity, + initialEvents: identity, + events: identity, + eventSources: identity, +}; +var COMPLEX_OPTION_COMPARATORS = { + headerToolbar: isBoolComplexEqual, + footerToolbar: isBoolComplexEqual, + buttonText: isBoolComplexEqual, + buttonHints: isBoolComplexEqual, + buttonIcons: isBoolComplexEqual, +}; +function isBoolComplexEqual(a, b) { + if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects + return isPropsEqual(a, b); + } + return a === b; +} +// view-specific options +// --------------------- +var VIEW_OPTION_REFINERS = { + type: String, + component: identity, + buttonText: String, + buttonTextKey: String, + dateProfileGeneratorClass: identity, + usesMinMaxTime: Boolean, + classNames: identity, + content: identity, + didMount: identity, + willUnmount: identity, +}; +// util funcs +// ---------------------------------------------------------------------------------------------------- +function mergeRawOptions(optionSets) { + return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS); +} +function refineProps(input, refiners) { + var refined = {}; + var extra = {}; + for (var propName in refiners) { + if (propName in input) { + refined[propName] = refiners[propName](input[propName]); + } + } + for (var propName in input) { + if (!(propName in refiners)) { + extra[propName] = input[propName]; + } + } + return { refined: refined, extra: extra }; +} +function identity(raw) { + return raw; +} + +function parseEvents(rawEvents, eventSource, context, allowOpenRange) { + var eventStore = createEmptyEventStore(); + var eventRefiners = buildEventRefiners(context); + for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) { + var rawEvent = rawEvents_1[_i]; + var tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners); + if (tuple) { + eventTupleToStore(tuple, eventStore); + } + } + return eventStore; +} +function eventTupleToStore(tuple, eventStore) { + if (eventStore === void 0) { eventStore = createEmptyEventStore(); } + eventStore.defs[tuple.def.defId] = tuple.def; + if (tuple.instance) { + eventStore.instances[tuple.instance.instanceId] = tuple.instance; + } + return eventStore; +} +// retrieves events that have the same groupId as the instance specified by `instanceId` +// or they are the same as the instance. +// why might instanceId not be in the store? an event from another calendar? +function getRelevantEvents(eventStore, instanceId) { + var instance = eventStore.instances[instanceId]; + if (instance) { + var def_1 = eventStore.defs[instance.defId]; + // get events/instances with same group + var newStore = filterEventStoreDefs(eventStore, function (lookDef) { return isEventDefsGrouped(def_1, lookDef); }); + // add the original + // TODO: wish we could use eventTupleToStore or something like it + newStore.defs[def_1.defId] = def_1; + newStore.instances[instance.instanceId] = instance; + return newStore; + } + return createEmptyEventStore(); +} +function isEventDefsGrouped(def0, def1) { + return Boolean(def0.groupId && def0.groupId === def1.groupId); +} +function createEmptyEventStore() { + return { defs: {}, instances: {} }; +} +function mergeEventStores(store0, store1) { + return { + defs: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, store0.defs), store1.defs), + instances: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, store0.instances), store1.instances), + }; +} +function filterEventStoreDefs(eventStore, filterFunc) { + var defs = filterHash(eventStore.defs, filterFunc); + var instances = filterHash(eventStore.instances, function (instance) { return (defs[instance.defId] // still exists? + ); }); + return { defs: defs, instances: instances }; +} +function excludeSubEventStore(master, sub) { + var defs = master.defs, instances = master.instances; + var filteredDefs = {}; + var filteredInstances = {}; + for (var defId in defs) { + if (!sub.defs[defId]) { // not explicitly excluded + filteredDefs[defId] = defs[defId]; + } + } + for (var instanceId in instances) { + if (!sub.instances[instanceId] && // not explicitly excluded + filteredDefs[instances[instanceId].defId] // def wasn't filtered away + ) { + filteredInstances[instanceId] = instances[instanceId]; + } + } + return { + defs: filteredDefs, + instances: filteredInstances, + }; +} + +function normalizeConstraint(input, context) { + if (Array.isArray(input)) { + return parseEvents(input, null, context, true); // allowOpenRange=true + } + if (typeof input === 'object' && input) { // non-null object + return parseEvents([input], null, context, true); // allowOpenRange=true + } + if (input != null) { + return String(input); + } + return null; +} + +function parseClassNames(raw) { + if (Array.isArray(raw)) { + return raw; + } + if (typeof raw === 'string') { + return raw.split(/\s+/); + } + return []; +} + +// TODO: better called "EventSettings" or "EventConfig" +// TODO: move this file into structs +// TODO: separate constraint/overlap/allow, because selection uses only that, not other props +var EVENT_UI_REFINERS = { + display: String, + editable: Boolean, + startEditable: Boolean, + durationEditable: Boolean, + constraint: identity, + overlap: identity, + allow: identity, + className: parseClassNames, + classNames: parseClassNames, + color: String, + backgroundColor: String, + borderColor: String, + textColor: String, +}; +var EMPTY_EVENT_UI = { + display: null, + startEditable: null, + durationEditable: null, + constraints: [], + overlap: null, + allows: [], + backgroundColor: '', + borderColor: '', + textColor: '', + classNames: [], +}; +function createEventUi(refined, context) { + var constraint = normalizeConstraint(refined.constraint, context); + return { + display: refined.display || null, + startEditable: refined.startEditable != null ? refined.startEditable : refined.editable, + durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable, + constraints: constraint != null ? [constraint] : [], + overlap: refined.overlap != null ? refined.overlap : null, + allows: refined.allow != null ? [refined.allow] : [], + backgroundColor: refined.backgroundColor || refined.color || '', + borderColor: refined.borderColor || refined.color || '', + textColor: refined.textColor || '', + classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural + }; +} +// TODO: prevent against problems with <2 args! +function combineEventUis(uis) { + return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI); +} +function combineTwoEventUis(item0, item1) { + return { + display: item1.display != null ? item1.display : item0.display, + startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable, + durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable, + constraints: item0.constraints.concat(item1.constraints), + overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap, + allows: item0.allows.concat(item1.allows), + backgroundColor: item1.backgroundColor || item0.backgroundColor, + borderColor: item1.borderColor || item0.borderColor, + textColor: item1.textColor || item0.textColor, + classNames: item0.classNames.concat(item1.classNames), + }; +} + +var EVENT_NON_DATE_REFINERS = { + id: String, + groupId: String, + title: String, + url: String, + interactive: Boolean, +}; +var EVENT_DATE_REFINERS = { + start: identity, + end: identity, + date: identity, + allDay: Boolean, +}; +var EVENT_REFINERS = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity }); +function parseEvent(raw, eventSource, context, allowOpenRange, refiners) { + if (refiners === void 0) { refiners = buildEventRefiners(context); } + var _a = refineEventDef(raw, context, refiners), refined = _a.refined, extra = _a.extra; + var defaultAllDay = computeIsDefaultAllDay(eventSource, context); + var recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes); + if (recurringRes) { + var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context); + def.recurringDef = { + typeId: recurringRes.typeId, + typeData: recurringRes.typeData, + duration: recurringRes.duration, + }; + return { def: def, instance: null }; + } + var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange); + if (singleRes) { + var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context); + var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo); + return { def: def, instance: instance }; + } + return null; +} +function refineEventDef(raw, context, refiners) { + if (refiners === void 0) { refiners = buildEventRefiners(context); } + return refineProps(raw, refiners); +} +function buildEventRefiners(context) { + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners); +} +/* +Will NOT populate extendedProps with the leftover properties. +Will NOT populate date-related props. +*/ +function parseEventDef(refined, extra, sourceId, allDay, hasEnd, context) { + var def = { + title: refined.title || '', + groupId: refined.groupId || '', + publicId: refined.id || '', + url: refined.url || '', + recurringDef: null, + defId: guid(), + sourceId: sourceId, + allDay: allDay, + hasEnd: hasEnd, + interactive: refined.interactive, + ui: createEventUi(refined, context), + extendedProps: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, (refined.extendedProps || {})), extra), + }; + for (var _i = 0, _a = context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++) { + var memberAdder = _a[_i]; + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(def, memberAdder(refined)); + } + // help out EventApi from having user modify props + Object.freeze(def.ui.classNames); + Object.freeze(def.extendedProps); + return def; +} +function parseSingle(refined, defaultAllDay, context, allowOpenRange) { + var allDay = refined.allDay; + var startMeta; + var startMarker = null; + var hasEnd = false; + var endMeta; + var endMarker = null; + var startInput = refined.start != null ? refined.start : refined.date; + startMeta = context.dateEnv.createMarkerMeta(startInput); + if (startMeta) { + startMarker = startMeta.marker; + } + else if (!allowOpenRange) { + return null; + } + if (refined.end != null) { + endMeta = context.dateEnv.createMarkerMeta(refined.end); + } + if (allDay == null) { + if (defaultAllDay != null) { + allDay = defaultAllDay; + } + else { + // fall back to the date props LAST + allDay = (!startMeta || startMeta.isTimeUnspecified) && + (!endMeta || endMeta.isTimeUnspecified); + } + } + if (allDay && startMarker) { + startMarker = startOfDay(startMarker); + } + if (endMeta) { + endMarker = endMeta.marker; + if (allDay) { + endMarker = startOfDay(endMarker); + } + if (startMarker && endMarker <= startMarker) { + endMarker = null; + } + } + if (endMarker) { + hasEnd = true; + } + else if (!allowOpenRange) { + hasEnd = context.options.forceEventDuration || false; + endMarker = context.dateEnv.add(startMarker, allDay ? + context.options.defaultAllDayEventDuration : + context.options.defaultTimedEventDuration); + } + return { + allDay: allDay, + hasEnd: hasEnd, + range: { start: startMarker, end: endMarker }, + forcedStartTzo: startMeta ? startMeta.forcedTzo : null, + forcedEndTzo: endMeta ? endMeta.forcedTzo : null, + }; +} +function computeIsDefaultAllDay(eventSource, context) { + var res = null; + if (eventSource) { + res = eventSource.defaultAllDay; + } + if (res == null) { + res = context.options.defaultAllDay; + } + return res; +} + +/* Date stuff that doesn't belong in datelib core +----------------------------------------------------------------------------------------------------------------------*/ +// given a timed range, computes an all-day range that has the same exact duration, +// but whose start time is aligned with the start of the day. +function computeAlignedDayRange(timedRange) { + var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1; + var start = startOfDay(timedRange.start); + var end = addDays(start, dayCnt); + return { start: start, end: end }; +} +// given a timed range, computes an all-day range based on how for the end date bleeds into the next day +// TODO: give nextDayThreshold a default arg +function computeVisibleDayRange(timedRange, nextDayThreshold) { + if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); } + var startDay = null; + var endDay = null; + if (timedRange.end) { + endDay = startOfDay(timedRange.end); + var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay` + // If the end time is actually inclusively part of the next day and is equal to or + // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`. + // Otherwise, leaving it as inclusive will cause it to exclude `endDay`. + if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) { + endDay = addDays(endDay, 1); + } + } + if (timedRange.start) { + startDay = startOfDay(timedRange.start); // the beginning of the day the range starts + // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day. + if (endDay && endDay <= startDay) { + endDay = addDays(startDay, 1); + } + } + return { start: startDay, end: endDay }; +} +// spans from one day into another? +function isMultiDayRange(range) { + var visibleRange = computeVisibleDayRange(range); + return diffDays(visibleRange.start, visibleRange.end) > 1; +} +function diffDates(date0, date1, dateEnv, largeUnit) { + if (largeUnit === 'year') { + return createDuration(dateEnv.diffWholeYears(date0, date1), 'year'); + } + if (largeUnit === 'month') { + return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month'); + } + return diffDayAndTime(date0, date1); // returns a duration +} + +function parseRange(input, dateEnv) { + var start = null; + var end = null; + if (input.start) { + start = dateEnv.createMarker(input.start); + } + if (input.end) { + end = dateEnv.createMarker(input.end); + } + if (!start && !end) { + return null; + } + if (start && end && end < start) { + return null; + } + return { start: start, end: end }; +} +// SIDE-EFFECT: will mutate ranges. +// Will return a new array result. +function invertRanges(ranges, constraintRange) { + var invertedRanges = []; + var start = constraintRange.start; // the end of the previous range. the start of the new range + var i; + var dateRange; + // ranges need to be in order. required for our date-walking algorithm + ranges.sort(compareRanges); + for (i = 0; i < ranges.length; i += 1) { + dateRange = ranges[i]; + // add the span of time before the event (if there is any) + if (dateRange.start > start) { // compare millisecond time (skip any ambig logic) + invertedRanges.push({ start: start, end: dateRange.start }); + } + if (dateRange.end > start) { + start = dateRange.end; + } + } + // add the span of time after the last event (if there is any) + if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic) + invertedRanges.push({ start: start, end: constraintRange.end }); + } + return invertedRanges; +} +function compareRanges(range0, range1) { + return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first +} +function intersectRanges(range0, range1) { + var start = range0.start, end = range0.end; + var newRange = null; + if (range1.start !== null) { + if (start === null) { + start = range1.start; + } + else { + start = new Date(Math.max(start.valueOf(), range1.start.valueOf())); + } + } + if (range1.end != null) { + if (end === null) { + end = range1.end; + } + else { + end = new Date(Math.min(end.valueOf(), range1.end.valueOf())); + } + } + if (start === null || end === null || start < end) { + newRange = { start: start, end: end }; + } + return newRange; +} +function rangesEqual(range0, range1) { + return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) && + (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf()); +} +function rangesIntersect(range0, range1) { + return (range0.end === null || range1.start === null || range0.end > range1.start) && + (range0.start === null || range1.end === null || range0.start < range1.end); +} +function rangeContainsRange(outerRange, innerRange) { + return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) && + (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end)); +} +function rangeContainsMarker(range, date) { + return (range.start === null || date >= range.start) && + (range.end === null || date < range.end); +} +// If the given date is not within the given range, move it inside. +// (If it's past the end, make it one millisecond before the end). +function constrainMarkerToRange(date, range) { + if (range.start != null && date < range.start) { + return range.start; + } + if (range.end != null && date >= range.end) { + return new Date(range.end.valueOf() - 1); + } + return date; +} + +/* +Specifying nextDayThreshold signals that all-day ranges should be sliced. +*/ +function sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) { + var inverseBgByGroupId = {}; + var inverseBgByDefId = {}; + var defByGroupId = {}; + var bgRanges = []; + var fgRanges = []; + var eventUis = compileEventUis(eventStore.defs, eventUiBases); + for (var defId in eventStore.defs) { + var def = eventStore.defs[defId]; + var ui = eventUis[def.defId]; + if (ui.display === 'inverse-background') { + if (def.groupId) { + inverseBgByGroupId[def.groupId] = []; + if (!defByGroupId[def.groupId]) { + defByGroupId[def.groupId] = def; + } + } + else { + inverseBgByDefId[defId] = []; + } + } + } + for (var instanceId in eventStore.instances) { + var instance = eventStore.instances[instanceId]; + var def = eventStore.defs[instance.defId]; + var ui = eventUis[def.defId]; + var origRange = instance.range; + var normalRange = (!def.allDay && nextDayThreshold) ? + computeVisibleDayRange(origRange, nextDayThreshold) : + origRange; + var slicedRange = intersectRanges(normalRange, framingRange); + if (slicedRange) { + if (ui.display === 'inverse-background') { + if (def.groupId) { + inverseBgByGroupId[def.groupId].push(slicedRange); + } + else { + inverseBgByDefId[instance.defId].push(slicedRange); + } + } + else if (ui.display !== 'none') { + (ui.display === 'background' ? bgRanges : fgRanges).push({ + def: def, + ui: ui, + instance: instance, + range: slicedRange, + isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(), + isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(), + }); + } + } + } + for (var groupId in inverseBgByGroupId) { // BY GROUP + var ranges = inverseBgByGroupId[groupId]; + var invertedRanges = invertRanges(ranges, framingRange); + for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) { + var invertedRange = invertedRanges_1[_i]; + var def = defByGroupId[groupId]; + var ui = eventUis[def.defId]; + bgRanges.push({ + def: def, + ui: ui, + instance: null, + range: invertedRange, + isStart: false, + isEnd: false, + }); + } + } + for (var defId in inverseBgByDefId) { + var ranges = inverseBgByDefId[defId]; + var invertedRanges = invertRanges(ranges, framingRange); + for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) { + var invertedRange = invertedRanges_2[_a]; + bgRanges.push({ + def: eventStore.defs[defId], + ui: eventUis[defId], + instance: null, + range: invertedRange, + isStart: false, + isEnd: false, + }); + } + } + return { bg: bgRanges, fg: fgRanges }; +} +function hasBgRendering(def) { + return def.ui.display === 'background' || def.ui.display === 'inverse-background'; +} +function setElSeg(el, seg) { + el.fcSeg = seg; +} +function getElSeg(el) { + return el.fcSeg || + el.parentNode.fcSeg || // for the harness + null; +} +// event ui computation +function compileEventUis(eventDefs, eventUiBases) { + return mapHash(eventDefs, function (eventDef) { return compileEventUi(eventDef, eventUiBases); }); +} +function compileEventUi(eventDef, eventUiBases) { + var uis = []; + if (eventUiBases['']) { + uis.push(eventUiBases['']); + } + if (eventUiBases[eventDef.defId]) { + uis.push(eventUiBases[eventDef.defId]); + } + uis.push(eventDef.ui); + return combineEventUis(uis); +} +function sortEventSegs(segs, eventOrderSpecs) { + var objs = segs.map(buildSegCompareObj); + objs.sort(function (obj0, obj1) { return compareByFieldSpecs(obj0, obj1, eventOrderSpecs); }); + return objs.map(function (c) { return c._seg; }); +} +// returns a object with all primitive props that can be compared +function buildSegCompareObj(seg) { + var eventRange = seg.eventRange; + var eventDef = eventRange.def; + var range = eventRange.instance ? eventRange.instance.range : eventRange.range; + var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events + var end = range.end ? range.end.valueOf() : 0; // " + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start: start, + end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg }); +} +function computeSegDraggable(seg, context) { + var pluginHooks = context.pluginHooks; + var transformers = pluginHooks.isDraggableTransformers; + var _a = seg.eventRange, def = _a.def, ui = _a.ui; + var val = ui.startEditable; + for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) { + var transformer = transformers_1[_i]; + val = transformer(val, def, ui, context); + } + return val; +} +function computeSegStartResizable(seg, context) { + return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart; +} +function computeSegEndResizable(seg, context) { + return seg.isEnd && seg.eventRange.ui.durationEditable; +} +function buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true +defaultDisplayEventEnd, // defaults to true +startOverride, endOverride) { + var dateEnv = context.dateEnv, options = context.options; + var displayEventTime = options.displayEventTime, displayEventEnd = options.displayEventEnd; + var eventDef = seg.eventRange.def; + var eventInstance = seg.eventRange.instance; + if (displayEventTime == null) { + displayEventTime = defaultDisplayEventTime !== false; + } + if (displayEventEnd == null) { + displayEventEnd = defaultDisplayEventEnd !== false; + } + var wholeEventStart = eventInstance.range.start; + var wholeEventEnd = eventInstance.range.end; + var segStart = startOverride || seg.start || seg.eventRange.range.start; + var segEnd = endOverride || seg.end || seg.eventRange.range.end; + var isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf(); + var isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf(); + if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) { + segStart = isStartDay ? wholeEventStart : segStart; + segEnd = isEndDay ? wholeEventEnd : segEnd; + if (displayEventEnd && eventDef.hasEnd) { + return dateEnv.formatRange(segStart, segEnd, timeFormat, { + forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo, + forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo, + }); + } + return dateEnv.format(segStart, timeFormat, { + forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same + }); + } + return ''; +} +function getSegMeta(seg, todayRange, nowDate) { + var segRange = seg.eventRange.range; + return { + isPast: segRange.end < (nowDate || todayRange.start), + isFuture: segRange.start >= (nowDate || todayRange.end), + isToday: todayRange && rangeContainsMarker(todayRange, segRange.start), + }; +} +function getEventClassNames(props) { + var classNames = ['fc-event']; + if (props.isMirror) { + classNames.push('fc-event-mirror'); + } + if (props.isDraggable) { + classNames.push('fc-event-draggable'); + } + if (props.isStartResizable || props.isEndResizable) { + classNames.push('fc-event-resizable'); + } + if (props.isDragging) { + classNames.push('fc-event-dragging'); + } + if (props.isResizing) { + classNames.push('fc-event-resizing'); + } + if (props.isSelected) { + classNames.push('fc-event-selected'); + } + if (props.isStart) { + classNames.push('fc-event-start'); + } + if (props.isEnd) { + classNames.push('fc-event-end'); + } + if (props.isPast) { + classNames.push('fc-event-past'); + } + if (props.isToday) { + classNames.push('fc-event-today'); + } + if (props.isFuture) { + classNames.push('fc-event-future'); + } + return classNames; +} +function buildEventRangeKey(eventRange) { + return eventRange.instance + ? eventRange.instance.instanceId + : eventRange.def.defId + ":" + eventRange.range.start.toISOString(); + // inverse-background events don't have specific instances. TODO: better solution +} +function getSegAnchorAttrs(seg, context) { + var _a = seg.eventRange, def = _a.def, instance = _a.instance; + var url = def.url; + if (url) { + return { href: url }; + } + var emitter = context.emitter, options = context.options; + var eventInteractive = options.eventInteractive; + if (eventInteractive == null) { + eventInteractive = def.interactive; + if (eventInteractive == null) { + eventInteractive = Boolean(emitter.hasHandlers('eventClick')); + } + } + // mock what happens in EventClicking + if (eventInteractive) { + // only attach keyboard-related handlers because click handler is already done in EventClicking + return createAriaKeyboardAttrs(function (ev) { + emitter.trigger('eventClick', { + el: ev.target, + event: new EventApi(context, def, instance), + jsEvent: ev, + view: context.viewApi, + }); + }); + } + return {}; +} + +var STANDARD_PROPS = { + start: identity, + end: identity, + allDay: Boolean, +}; +function parseDateSpan(raw, dateEnv, defaultDuration) { + var span = parseOpenDateSpan(raw, dateEnv); + var range = span.range; + if (!range.start) { + return null; + } + if (!range.end) { + if (defaultDuration == null) { + return null; + } + range.end = dateEnv.add(range.start, defaultDuration); + } + return span; +} +/* +TODO: somehow combine with parseRange? +Will return null if the start/end props were present but parsed invalidly. +*/ +function parseOpenDateSpan(raw, dateEnv) { + var _a = refineProps(raw, STANDARD_PROPS), standardProps = _a.refined, extra = _a.extra; + var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null; + var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null; + var allDay = standardProps.allDay; + if (allDay == null) { + allDay = (startMeta && startMeta.isTimeUnspecified) && + (!endMeta || endMeta.isTimeUnspecified); + } + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ range: { + start: startMeta ? startMeta.marker : null, + end: endMeta ? endMeta.marker : null, + }, allDay: allDay }, extra); +} +function isDateSpansEqual(span0, span1) { + return rangesEqual(span0.range, span1.range) && + span0.allDay === span1.allDay && + isSpanPropsEqual(span0, span1); +} +// the NON-DATE-RELATED props +function isSpanPropsEqual(span0, span1) { + for (var propName in span1) { + if (propName !== 'range' && propName !== 'allDay') { + if (span0[propName] !== span1[propName]) { + return false; + } + } + } + // are there any props that span0 has that span1 DOESN'T have? + // both have range/allDay, so no need to special-case. + for (var propName in span0) { + if (!(propName in span1)) { + return false; + } + } + return true; +} +function buildDateSpanApi(span, dateEnv) { + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, buildRangeApi(span.range, dateEnv, span.allDay)), { allDay: span.allDay }); +} +function buildRangeApiWithTimeZone(range, dateEnv, omitTime) { + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone }); +} +function buildRangeApi(range, dateEnv, omitTime) { + return { + start: dateEnv.toDate(range.start), + end: dateEnv.toDate(range.end), + startStr: dateEnv.formatIso(range.start, { omitTime: omitTime }), + endStr: dateEnv.formatIso(range.end, { omitTime: omitTime }), + }; +} +function fabricateEventRange(dateSpan, eventUiBases, context) { + var res = refineEventDef({ editable: false }, context); + var def = parseEventDef(res.refined, res.extra, '', // sourceId + dateSpan.allDay, true, // hasEnd + context); + return { + def: def, + ui: compileEventUi(def, eventUiBases), + instance: createEventInstance(def.defId, dateSpan.range), + range: dateSpan.range, + isStart: true, + isEnd: true, + }; +} + +function triggerDateSelect(selection, pev, context) { + context.emitter.trigger('select', (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view })); +} +function triggerDateUnselect(pev, context) { + context.emitter.trigger('unselect', { + jsEvent: pev ? pev.origEvent : null, + view: context.viewApi || context.calendarApi.view, + }); +} +function buildDateSpanApiWithContext(dateSpan, context) { + var props = {}; + for (var _i = 0, _a = context.pluginHooks.dateSpanTransforms; _i < _a.length; _i++) { + var transform = _a[_i]; + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(props, transform(dateSpan, context)); + } + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(props, buildDateSpanApi(dateSpan, context.dateEnv)); + return props; +} +// Given an event's allDay status and start date, return what its fallback end date should be. +// TODO: rename to computeDefaultEventEnd +function getDefaultEventEnd(allDay, marker, context) { + var dateEnv = context.dateEnv, options = context.options; + var end = marker; + if (allDay) { + end = startOfDay(end); + end = dateEnv.add(end, options.defaultAllDayEventDuration); + } + else { + end = dateEnv.add(end, options.defaultTimedEventDuration); + } + return end; +} + +// applies the mutation to ALL defs/instances within the event store +function applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) { + var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase); + var dest = createEmptyEventStore(); + for (var defId in eventStore.defs) { + var def = eventStore.defs[defId]; + dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context); + } + for (var instanceId in eventStore.instances) { + var instance = eventStore.instances[instanceId]; + var def = dest.defs[instance.defId]; // important to grab the newly modified def + dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context); + } + return dest; +} +function applyMutationToEventDef(eventDef, eventConfig, mutation, context) { + var standardProps = mutation.standardProps || {}; + // if hasEnd has not been specified, guess a good value based on deltas. + // if duration will change, there's no way the default duration will persist, + // and thus, we need to mark the event as having a real end + if (standardProps.hasEnd == null && + eventConfig.durationEditable && + (mutation.startDelta || mutation.endDelta)) { + standardProps.hasEnd = true; // TODO: is this mutation okay? + } + var copy = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventDef), standardProps), { ui: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventDef.ui), standardProps.ui) }); + if (mutation.extendedProps) { + copy.extendedProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, copy.extendedProps), mutation.extendedProps); + } + for (var _i = 0, _a = context.pluginHooks.eventDefMutationAppliers; _i < _a.length; _i++) { + var applier = _a[_i]; + applier(copy, mutation, context); + } + if (!copy.hasEnd && context.options.forceEventDuration) { + copy.hasEnd = true; + } + return copy; +} +function applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef +eventConfig, mutation, context) { + var dateEnv = context.dateEnv; + var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true; + var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false; + var copy = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventInstance); + if (forceAllDay) { + copy.range = computeAlignedDayRange(copy.range); + } + if (mutation.datesDelta && eventConfig.startEditable) { + copy.range = { + start: dateEnv.add(copy.range.start, mutation.datesDelta), + end: dateEnv.add(copy.range.end, mutation.datesDelta), + }; + } + if (mutation.startDelta && eventConfig.durationEditable) { + copy.range = { + start: dateEnv.add(copy.range.start, mutation.startDelta), + end: copy.range.end, + }; + } + if (mutation.endDelta && eventConfig.durationEditable) { + copy.range = { + start: copy.range.start, + end: dateEnv.add(copy.range.end, mutation.endDelta), + }; + } + if (clearEnd) { + copy.range = { + start: copy.range.start, + end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context), + }; + } + // in case event was all-day but the supplied deltas were not + // better util for this? + if (eventDef.allDay) { + copy.range = { + start: startOfDay(copy.range.start), + end: startOfDay(copy.range.end), + }; + } + // handle invalid durations + if (copy.range.end < copy.range.start) { + copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context); + } + return copy; +} + +// no public types yet. when there are, export from: +// import {} from './api-type-deps' +var ViewApi = /** @class */ (function () { + function ViewApi(type, getCurrentData, dateEnv) { + this.type = type; + this.getCurrentData = getCurrentData; + this.dateEnv = dateEnv; + } + Object.defineProperty(ViewApi.prototype, "calendar", { + get: function () { + return this.getCurrentData().calendarApi; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ViewApi.prototype, "title", { + get: function () { + return this.getCurrentData().viewTitle; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ViewApi.prototype, "activeStart", { + get: function () { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ViewApi.prototype, "activeEnd", { + get: function () { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ViewApi.prototype, "currentStart", { + get: function () { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ViewApi.prototype, "currentEnd", { + get: function () { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end); + }, + enumerable: false, + configurable: true + }); + ViewApi.prototype.getOption = function (name) { + return this.getCurrentData().options[name]; // are the view-specific options + }; + return ViewApi; +}()); + +var EVENT_SOURCE_REFINERS = { + id: String, + defaultAllDay: Boolean, + url: String, + format: String, + events: identity, + eventDataTransform: identity, + // for any network-related sources + success: identity, + failure: identity, +}; +function parseEventSource(raw, context, refiners) { + if (refiners === void 0) { refiners = buildEventSourceRefiners(context); } + var rawObj; + if (typeof raw === 'string') { + rawObj = { url: raw }; + } + else if (typeof raw === 'function' || Array.isArray(raw)) { + rawObj = { events: raw }; + } + else if (typeof raw === 'object' && raw) { // not null + rawObj = raw; + } + if (rawObj) { + var _a = refineProps(rawObj, refiners), refined = _a.refined, extra = _a.extra; + var metaRes = buildEventSourceMeta(refined, context); + if (metaRes) { + return { + _raw: raw, + isFetching: false, + latestFetchId: '', + fetchRange: null, + defaultAllDay: refined.defaultAllDay, + eventDataTransform: refined.eventDataTransform, + success: refined.success, + failure: refined.failure, + publicId: refined.id || '', + sourceId: guid(), + sourceDefId: metaRes.sourceDefId, + meta: metaRes.meta, + ui: createEventUi(refined, context), + extendedProps: extra, + }; + } + } + return null; +} +function buildEventSourceRefiners(context) { + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners); +} +function buildEventSourceMeta(raw, context) { + var defs = context.pluginHooks.eventSourceDefs; + for (var i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence + var def = defs[i]; + var meta = def.parseMeta(raw); + if (meta) { + return { sourceDefId: i, meta: meta }; + } + } + return null; +} + +function reduceCurrentDate(currentDate, action) { + switch (action.type) { + case 'CHANGE_DATE': + return action.dateMarker; + default: + return currentDate; + } +} +function getInitialDate(options, dateEnv) { + var initialDateInput = options.initialDate; + // compute the initial ambig-timezone date + if (initialDateInput != null) { + return dateEnv.createMarker(initialDateInput); + } + return getNow(options.now, dateEnv); // getNow already returns unzoned +} +function getNow(nowInput, dateEnv) { + if (typeof nowInput === 'function') { + nowInput = nowInput(); + } + if (nowInput == null) { + return dateEnv.createNowMarker(); + } + return dateEnv.createMarker(nowInput); +} + +var CalendarApi = /** @class */ (function () { + function CalendarApi() { + } + CalendarApi.prototype.getCurrentData = function () { + return this.currentDataManager.getCurrentData(); + }; + CalendarApi.prototype.dispatch = function (action) { + return this.currentDataManager.dispatch(action); + }; + Object.defineProperty(CalendarApi.prototype, "view", { + get: function () { return this.getCurrentData().viewApi; } // for public API + , + enumerable: false, + configurable: true + }); + CalendarApi.prototype.batchRendering = function (callback) { + callback(); + }; + CalendarApi.prototype.updateSize = function () { + this.trigger('_resize', true); + }; + // Options + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.setOption = function (name, val) { + this.dispatch({ + type: 'SET_OPTION', + optionName: name, + rawOptionValue: val, + }); + }; + CalendarApi.prototype.getOption = function (name) { + return this.currentDataManager.currentCalendarOptionsInput[name]; + }; + CalendarApi.prototype.getAvailableLocaleCodes = function () { + return Object.keys(this.getCurrentData().availableRawLocales); + }; + // Trigger + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.on = function (handlerName, handler) { + var currentDataManager = this.currentDataManager; + if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) { + currentDataManager.emitter.on(handlerName, handler); + } + else { + console.warn("Unknown listener name '" + handlerName + "'"); + } + }; + CalendarApi.prototype.off = function (handlerName, handler) { + this.currentDataManager.emitter.off(handlerName, handler); + }; + // not meant for public use + CalendarApi.prototype.trigger = function (handlerName) { + var _a; + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (_a = this.currentDataManager.emitter).trigger.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([handlerName], args)); + }; + // View + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.changeView = function (viewType, dateOrRange) { + var _this = this; + this.batchRendering(function () { + _this.unselect(); + if (dateOrRange) { + if (dateOrRange.start && dateOrRange.end) { // a range + _this.dispatch({ + type: 'CHANGE_VIEW_TYPE', + viewType: viewType, + }); + _this.dispatch({ + type: 'SET_OPTION', + optionName: 'visibleRange', + rawOptionValue: dateOrRange, + }); + } + else { + var dateEnv = _this.getCurrentData().dateEnv; + _this.dispatch({ + type: 'CHANGE_VIEW_TYPE', + viewType: viewType, + dateMarker: dateEnv.createMarker(dateOrRange), + }); + } + } + else { + _this.dispatch({ + type: 'CHANGE_VIEW_TYPE', + viewType: viewType, + }); + } + }); + }; + // Forces navigation to a view for the given date. + // `viewType` can be a specific view name or a generic one like "week" or "day". + // needs to change + CalendarApi.prototype.zoomTo = function (dateMarker, viewType) { + var state = this.getCurrentData(); + var spec; + viewType = viewType || 'day'; // day is default zoom + spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType); + this.unselect(); + if (spec) { + this.dispatch({ + type: 'CHANGE_VIEW_TYPE', + viewType: spec.type, + dateMarker: dateMarker, + }); + } + else { + this.dispatch({ + type: 'CHANGE_DATE', + dateMarker: dateMarker, + }); + } + }; + // Given a duration singular unit, like "week" or "day", finds a matching view spec. + // Preference is given to views that have corresponding buttons. + CalendarApi.prototype.getUnitViewSpec = function (unit) { + var _a = this.getCurrentData(), viewSpecs = _a.viewSpecs, toolbarConfig = _a.toolbarConfig; + var viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []); + var i; + var spec; + for (var viewType in viewSpecs) { + viewTypes.push(viewType); + } + for (i = 0; i < viewTypes.length; i += 1) { + spec = viewSpecs[viewTypes[i]]; + if (spec) { + if (spec.singleUnit === unit) { + return spec; + } + } + } + return null; + }; + // Current Date + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.prev = function () { + this.unselect(); + this.dispatch({ type: 'PREV' }); + }; + CalendarApi.prototype.next = function () { + this.unselect(); + this.dispatch({ type: 'NEXT' }); + }; + CalendarApi.prototype.prevYear = function () { + var state = this.getCurrentData(); + this.unselect(); + this.dispatch({ + type: 'CHANGE_DATE', + dateMarker: state.dateEnv.addYears(state.currentDate, -1), + }); + }; + CalendarApi.prototype.nextYear = function () { + var state = this.getCurrentData(); + this.unselect(); + this.dispatch({ + type: 'CHANGE_DATE', + dateMarker: state.dateEnv.addYears(state.currentDate, 1), + }); + }; + CalendarApi.prototype.today = function () { + var state = this.getCurrentData(); + this.unselect(); + this.dispatch({ + type: 'CHANGE_DATE', + dateMarker: getNow(state.calendarOptions.now, state.dateEnv), + }); + }; + CalendarApi.prototype.gotoDate = function (zonedDateInput) { + var state = this.getCurrentData(); + this.unselect(); + this.dispatch({ + type: 'CHANGE_DATE', + dateMarker: state.dateEnv.createMarker(zonedDateInput), + }); + }; + CalendarApi.prototype.incrementDate = function (deltaInput) { + var state = this.getCurrentData(); + var delta = createDuration(deltaInput); + if (delta) { // else, warn about invalid input? + this.unselect(); + this.dispatch({ + type: 'CHANGE_DATE', + dateMarker: state.dateEnv.add(state.currentDate, delta), + }); + } + }; + // for external API + CalendarApi.prototype.getDate = function () { + var state = this.getCurrentData(); + return state.dateEnv.toDate(state.currentDate); + }; + // Date Formatting Utils + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.formatDate = function (d, formatter) { + var dateEnv = this.getCurrentData().dateEnv; + return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter)); + }; + // `settings` is for formatter AND isEndExclusive + CalendarApi.prototype.formatRange = function (d0, d1, settings) { + var dateEnv = this.getCurrentData().dateEnv; + return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings); + }; + CalendarApi.prototype.formatIso = function (d, omitTime) { + var dateEnv = this.getCurrentData().dateEnv; + return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime }); + }; + // Date Selection / Event Selection / DayClick + // ----------------------------------------------------------------------------------------------------------------- + // this public method receives start/end dates in any format, with any timezone + // NOTE: args were changed from v3 + CalendarApi.prototype.select = function (dateOrObj, endDate) { + var selectionInput; + if (endDate == null) { + if (dateOrObj.start != null) { + selectionInput = dateOrObj; + } + else { + selectionInput = { + start: dateOrObj, + end: null, + }; + } + } + else { + selectionInput = { + start: dateOrObj, + end: endDate, + }; + } + var state = this.getCurrentData(); + var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 })); + if (selection) { // throw parse error otherwise? + this.dispatch({ type: 'SELECT_DATES', selection: selection }); + triggerDateSelect(selection, null, state); + } + }; + // public method + CalendarApi.prototype.unselect = function (pev) { + var state = this.getCurrentData(); + if (state.dateSelection) { + this.dispatch({ type: 'UNSELECT_DATES' }); + triggerDateUnselect(pev, state); + } + }; + // Public Events API + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.addEvent = function (eventInput, sourceInput) { + if (eventInput instanceof EventApi) { + var def = eventInput._def; + var instance = eventInput._instance; + var currentData = this.getCurrentData(); + // not already present? don't want to add an old snapshot + if (!currentData.eventStore.defs[def.defId]) { + this.dispatch({ + type: 'ADD_EVENTS', + eventStore: eventTupleToStore({ def: def, instance: instance }), // TODO: better util for two args? + }); + this.triggerEventAdd(eventInput); + } + return eventInput; + } + var state = this.getCurrentData(); + var eventSource; + if (sourceInput instanceof EventSourceApi) { + eventSource = sourceInput.internalEventSource; + } + else if (typeof sourceInput === 'boolean') { + if (sourceInput) { // true. part of the first event source + eventSource = hashValuesToArray(state.eventSources)[0]; + } + } + else if (sourceInput != null) { // an ID. accepts a number too + var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function + if (!sourceApi) { + console.warn("Could not find an event source with ID \"" + sourceInput + "\""); // TODO: test + return null; + } + eventSource = sourceApi.internalEventSource; + } + var tuple = parseEvent(eventInput, eventSource, state, false); + if (tuple) { + var newEventApi = new EventApi(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance); + this.dispatch({ + type: 'ADD_EVENTS', + eventStore: eventTupleToStore(tuple), + }); + this.triggerEventAdd(newEventApi); + return newEventApi; + } + return null; + }; + CalendarApi.prototype.triggerEventAdd = function (eventApi) { + var _this = this; + var emitter = this.getCurrentData().emitter; + emitter.trigger('eventAdd', { + event: eventApi, + relatedEvents: [], + revert: function () { + _this.dispatch({ + type: 'REMOVE_EVENTS', + eventStore: eventApiToStore(eventApi), + }); + }, + }); + }; + // TODO: optimize + CalendarApi.prototype.getEventById = function (id) { + var state = this.getCurrentData(); + var _a = state.eventStore, defs = _a.defs, instances = _a.instances; + id = String(id); + for (var defId in defs) { + var def = defs[defId]; + if (def.publicId === id) { + if (def.recurringDef) { + return new EventApi(state, def, null); + } + for (var instanceId in instances) { + var instance = instances[instanceId]; + if (instance.defId === def.defId) { + return new EventApi(state, def, instance); + } + } + } + } + return null; + }; + CalendarApi.prototype.getEvents = function () { + var currentData = this.getCurrentData(); + return buildEventApis(currentData.eventStore, currentData); + }; + CalendarApi.prototype.removeAllEvents = function () { + this.dispatch({ type: 'REMOVE_ALL_EVENTS' }); + }; + // Public Event Sources API + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.getEventSources = function () { + var state = this.getCurrentData(); + var sourceHash = state.eventSources; + var sourceApis = []; + for (var internalId in sourceHash) { + sourceApis.push(new EventSourceApi(state, sourceHash[internalId])); + } + return sourceApis; + }; + CalendarApi.prototype.getEventSourceById = function (id) { + var state = this.getCurrentData(); + var sourceHash = state.eventSources; + id = String(id); + for (var sourceId in sourceHash) { + if (sourceHash[sourceId].publicId === id) { + return new EventSourceApi(state, sourceHash[sourceId]); + } + } + return null; + }; + CalendarApi.prototype.addEventSource = function (sourceInput) { + var state = this.getCurrentData(); + if (sourceInput instanceof EventSourceApi) { + // not already present? don't want to add an old snapshot + if (!state.eventSources[sourceInput.internalEventSource.sourceId]) { + this.dispatch({ + type: 'ADD_EVENT_SOURCES', + sources: [sourceInput.internalEventSource], + }); + } + return sourceInput; + } + var eventSource = parseEventSource(sourceInput, state); + if (eventSource) { // TODO: error otherwise? + this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] }); + return new EventSourceApi(state, eventSource); + } + return null; + }; + CalendarApi.prototype.removeAllEventSources = function () { + this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' }); + }; + CalendarApi.prototype.refetchEvents = function () { + this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true }); + }; + // Scroll + // ----------------------------------------------------------------------------------------------------------------- + CalendarApi.prototype.scrollToTime = function (timeInput) { + var time = createDuration(timeInput); + if (time) { + this.trigger('_scrollRequest', { time: time }); + } + }; + return CalendarApi; +}()); + +var EventApi = /** @class */ (function () { + // instance will be null if expressing a recurring event that has no current instances, + // OR if trying to validate an incoming external event that has no dates assigned + function EventApi(context, def, instance) { + this._context = context; + this._def = def; + this._instance = instance || null; + } + /* + TODO: make event struct more responsible for this + */ + EventApi.prototype.setProp = function (name, val) { + var _a, _b; + if (name in EVENT_DATE_REFINERS) { + console.warn('Could not set date-related prop \'name\'. Use one of the date-related methods instead.'); + // TODO: make proper aliasing system? + } + else if (name === 'id') { + val = EVENT_NON_DATE_REFINERS[name](val); + this.mutate({ + standardProps: { publicId: val }, // hardcoded internal name + }); + } + else if (name in EVENT_NON_DATE_REFINERS) { + val = EVENT_NON_DATE_REFINERS[name](val); + this.mutate({ + standardProps: (_a = {}, _a[name] = val, _a), + }); + } + else if (name in EVENT_UI_REFINERS) { + var ui = EVENT_UI_REFINERS[name](val); + if (name === 'color') { + ui = { backgroundColor: val, borderColor: val }; + } + else if (name === 'editable') { + ui = { startEditable: val, durationEditable: val }; + } + else { + ui = (_b = {}, _b[name] = val, _b); + } + this.mutate({ + standardProps: { ui: ui }, + }); + } + else { + console.warn("Could not set prop '" + name + "'. Use setExtendedProp instead."); + } + }; + EventApi.prototype.setExtendedProp = function (name, val) { + var _a; + this.mutate({ + extendedProps: (_a = {}, _a[name] = val, _a), + }); + }; + EventApi.prototype.setStart = function (startInput, options) { + if (options === void 0) { options = {}; } + var dateEnv = this._context.dateEnv; + var start = dateEnv.createMarker(startInput); + if (start && this._instance) { // TODO: warning if parsed bad + var instanceRange = this._instance.range; + var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!? + if (options.maintainDuration) { + this.mutate({ datesDelta: startDelta }); + } + else { + this.mutate({ startDelta: startDelta }); + } + } + }; + EventApi.prototype.setEnd = function (endInput, options) { + if (options === void 0) { options = {}; } + var dateEnv = this._context.dateEnv; + var end; + if (endInput != null) { + end = dateEnv.createMarker(endInput); + if (!end) { + return; // TODO: warning if parsed bad + } + } + if (this._instance) { + if (end) { + var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity); + this.mutate({ endDelta: endDelta }); + } + else { + this.mutate({ standardProps: { hasEnd: false } }); + } + } + }; + EventApi.prototype.setDates = function (startInput, endInput, options) { + if (options === void 0) { options = {}; } + var dateEnv = this._context.dateEnv; + var standardProps = { allDay: options.allDay }; + var start = dateEnv.createMarker(startInput); + var end; + if (!start) { + return; // TODO: warning if parsed bad + } + if (endInput != null) { + end = dateEnv.createMarker(endInput); + if (!end) { // TODO: warning if parsed bad + return; + } + } + if (this._instance) { + var instanceRange = this._instance.range; + // when computing the diff for an event being converted to all-day, + // compute diff off of the all-day values the way event-mutation does. + if (options.allDay === true) { + instanceRange = computeAlignedDayRange(instanceRange); + } + var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); + if (end) { + var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity); + if (durationsEqual(startDelta, endDelta)) { + this.mutate({ datesDelta: startDelta, standardProps: standardProps }); + } + else { + this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps }); + } + } + else { // means "clear the end" + standardProps.hasEnd = false; + this.mutate({ datesDelta: startDelta, standardProps: standardProps }); + } + } + }; + EventApi.prototype.moveStart = function (deltaInput) { + var delta = createDuration(deltaInput); + if (delta) { // TODO: warning if parsed bad + this.mutate({ startDelta: delta }); + } + }; + EventApi.prototype.moveEnd = function (deltaInput) { + var delta = createDuration(deltaInput); + if (delta) { // TODO: warning if parsed bad + this.mutate({ endDelta: delta }); + } + }; + EventApi.prototype.moveDates = function (deltaInput) { + var delta = createDuration(deltaInput); + if (delta) { // TODO: warning if parsed bad + this.mutate({ datesDelta: delta }); + } + }; + EventApi.prototype.setAllDay = function (allDay, options) { + if (options === void 0) { options = {}; } + var standardProps = { allDay: allDay }; + var maintainDuration = options.maintainDuration; + if (maintainDuration == null) { + maintainDuration = this._context.options.allDayMaintainDuration; + } + if (this._def.allDay !== allDay) { + standardProps.hasEnd = maintainDuration; + } + this.mutate({ standardProps: standardProps }); + }; + EventApi.prototype.formatRange = function (formatInput) { + var dateEnv = this._context.dateEnv; + var instance = this._instance; + var formatter = createFormatter(formatInput); + if (this._def.hasEnd) { + return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, { + forcedStartTzo: instance.forcedStartTzo, + forcedEndTzo: instance.forcedEndTzo, + }); + } + return dateEnv.format(instance.range.start, formatter, { + forcedTzo: instance.forcedStartTzo, + }); + }; + EventApi.prototype.mutate = function (mutation) { + var instance = this._instance; + if (instance) { + var def = this._def; + var context_1 = this._context; + var eventStore_1 = context_1.getCurrentData().eventStore; + var relevantEvents = getRelevantEvents(eventStore_1, instance.instanceId); + var eventConfigBase = { + '': { + display: '', + startEditable: true, + durationEditable: true, + constraints: [], + overlap: null, + allows: [], + backgroundColor: '', + borderColor: '', + textColor: '', + classNames: [], + }, + }; + relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context_1); + var oldEvent = new EventApi(context_1, def, instance); // snapshot + this._def = relevantEvents.defs[def.defId]; + this._instance = relevantEvents.instances[instance.instanceId]; + context_1.dispatch({ + type: 'MERGE_EVENTS', + eventStore: relevantEvents, + }); + context_1.emitter.trigger('eventChange', { + oldEvent: oldEvent, + event: this, + relatedEvents: buildEventApis(relevantEvents, context_1, instance), + revert: function () { + context_1.dispatch({ + type: 'RESET_EVENTS', + eventStore: eventStore_1, + }); + }, + }); + } + }; + EventApi.prototype.remove = function () { + var context = this._context; + var asStore = eventApiToStore(this); + context.dispatch({ + type: 'REMOVE_EVENTS', + eventStore: asStore, + }); + context.emitter.trigger('eventRemove', { + event: this, + relatedEvents: [], + revert: function () { + context.dispatch({ + type: 'MERGE_EVENTS', + eventStore: asStore, + }); + }, + }); + }; + Object.defineProperty(EventApi.prototype, "source", { + get: function () { + var sourceId = this._def.sourceId; + if (sourceId) { + return new EventSourceApi(this._context, this._context.getCurrentData().eventSources[sourceId]); + } + return null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "start", { + get: function () { + return this._instance ? + this._context.dateEnv.toDate(this._instance.range.start) : + null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "end", { + get: function () { + return (this._instance && this._def.hasEnd) ? + this._context.dateEnv.toDate(this._instance.range.end) : + null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "startStr", { + get: function () { + var instance = this._instance; + if (instance) { + return this._context.dateEnv.formatIso(instance.range.start, { + omitTime: this._def.allDay, + forcedTzo: instance.forcedStartTzo, + }); + } + return ''; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "endStr", { + get: function () { + var instance = this._instance; + if (instance && this._def.hasEnd) { + return this._context.dateEnv.formatIso(instance.range.end, { + omitTime: this._def.allDay, + forcedTzo: instance.forcedEndTzo, + }); + } + return ''; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "id", { + // computable props that all access the def + // TODO: find a TypeScript-compatible way to do this at scale + get: function () { return this._def.publicId; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "groupId", { + get: function () { return this._def.groupId; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "allDay", { + get: function () { return this._def.allDay; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "title", { + get: function () { return this._def.title; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "url", { + get: function () { return this._def.url; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "display", { + get: function () { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier + , + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "startEditable", { + get: function () { return this._def.ui.startEditable; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "durationEditable", { + get: function () { return this._def.ui.durationEditable; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "constraint", { + get: function () { return this._def.ui.constraints[0] || null; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "overlap", { + get: function () { return this._def.ui.overlap; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "allow", { + get: function () { return this._def.ui.allows[0] || null; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "backgroundColor", { + get: function () { return this._def.ui.backgroundColor; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "borderColor", { + get: function () { return this._def.ui.borderColor; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "textColor", { + get: function () { return this._def.ui.textColor; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "classNames", { + // NOTE: user can't modify these because Object.freeze was called in event-def parsing + get: function () { return this._def.ui.classNames; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EventApi.prototype, "extendedProps", { + get: function () { return this._def.extendedProps; }, + enumerable: false, + configurable: true + }); + EventApi.prototype.toPlainObject = function (settings) { + if (settings === void 0) { settings = {}; } + var def = this._def; + var ui = def.ui; + var _a = this, startStr = _a.startStr, endStr = _a.endStr; + var res = {}; + if (def.title) { + res.title = def.title; + } + if (startStr) { + res.start = startStr; + } + if (endStr) { + res.end = endStr; + } + if (def.publicId) { + res.id = def.publicId; + } + if (def.groupId) { + res.groupId = def.groupId; + } + if (def.url) { + res.url = def.url; + } + if (ui.display && ui.display !== 'auto') { + res.display = ui.display; + } + // TODO: what about recurring-event properties??? + // TODO: include startEditable/durationEditable/constraint/overlap/allow + if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) { + res.color = ui.backgroundColor; + } + else { + if (ui.backgroundColor) { + res.backgroundColor = ui.backgroundColor; + } + if (ui.borderColor) { + res.borderColor = ui.borderColor; + } + } + if (ui.textColor) { + res.textColor = ui.textColor; + } + if (ui.classNames.length) { + res.classNames = ui.classNames; + } + if (Object.keys(def.extendedProps).length) { + if (settings.collapseExtendedProps) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(res, def.extendedProps); + } + else { + res.extendedProps = def.extendedProps; + } + } + return res; + }; + EventApi.prototype.toJSON = function () { + return this.toPlainObject(); + }; + return EventApi; +}()); +function eventApiToStore(eventApi) { + var _a, _b; + var def = eventApi._def; + var instance = eventApi._instance; + return { + defs: (_a = {}, _a[def.defId] = def, _a), + instances: instance + ? (_b = {}, _b[instance.instanceId] = instance, _b) : {}, + }; +} +function buildEventApis(eventStore, context, excludeInstance) { + var defs = eventStore.defs, instances = eventStore.instances; + var eventApis = []; + var excludeInstanceId = excludeInstance ? excludeInstance.instanceId : ''; + for (var id in instances) { + var instance = instances[id]; + var def = defs[instance.defId]; + if (instance.instanceId !== excludeInstanceId) { + eventApis.push(new EventApi(context, def, instance)); + } + } + return eventApis; +} + +var calendarSystemClassMap = {}; +function registerCalendarSystem(name, theClass) { + calendarSystemClassMap[name] = theClass; +} +function createCalendarSystem(name) { + return new calendarSystemClassMap[name](); +} +var GregorianCalendarSystem = /** @class */ (function () { + function GregorianCalendarSystem() { + } + GregorianCalendarSystem.prototype.getMarkerYear = function (d) { + return d.getUTCFullYear(); + }; + GregorianCalendarSystem.prototype.getMarkerMonth = function (d) { + return d.getUTCMonth(); + }; + GregorianCalendarSystem.prototype.getMarkerDay = function (d) { + return d.getUTCDate(); + }; + GregorianCalendarSystem.prototype.arrayToMarker = function (arr) { + return arrayToUtcDate(arr); + }; + GregorianCalendarSystem.prototype.markerToArray = function (marker) { + return dateToUtcArray(marker); + }; + return GregorianCalendarSystem; +}()); +registerCalendarSystem('gregory', GregorianCalendarSystem); + +var ISO_RE = /^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/; +function parse(str) { + var m = ISO_RE.exec(str); + if (m) { + var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number("0." + m[12]) * 1000 : 0)); + if (isValidDate(marker)) { + var timeZoneOffset = null; + if (m[13]) { + timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 + + Number(m[18] || 0)); + } + return { + marker: marker, + isTimeUnspecified: !m[6], + timeZoneOffset: timeZoneOffset, + }; + } + } + return null; +} + +var DateEnv = /** @class */ (function () { + function DateEnv(settings) { + var timeZone = this.timeZone = settings.timeZone; + var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC'; + if (settings.namedTimeZoneImpl && isNamedTimeZone) { + this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone); + } + this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl); + this.calendarSystem = createCalendarSystem(settings.calendarSystem); + this.locale = settings.locale; + this.weekDow = settings.locale.week.dow; + this.weekDoy = settings.locale.week.doy; + if (settings.weekNumberCalculation === 'ISO') { + this.weekDow = 1; + this.weekDoy = 4; + } + if (typeof settings.firstDay === 'number') { + this.weekDow = settings.firstDay; + } + if (typeof settings.weekNumberCalculation === 'function') { + this.weekNumberFunc = settings.weekNumberCalculation; + } + this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText; + this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText; + this.cmdFormatter = settings.cmdFormatter; + this.defaultSeparator = settings.defaultSeparator; + } + // Creating / Parsing + DateEnv.prototype.createMarker = function (input) { + var meta = this.createMarkerMeta(input); + if (meta === null) { + return null; + } + return meta.marker; + }; + DateEnv.prototype.createNowMarker = function () { + if (this.canComputeOffset) { + return this.timestampToMarker(new Date().valueOf()); + } + // if we can't compute the current date val for a timezone, + // better to give the current local date vals than UTC + return arrayToUtcDate(dateToLocalArray(new Date())); + }; + DateEnv.prototype.createMarkerMeta = function (input) { + if (typeof input === 'string') { + return this.parse(input); + } + var marker = null; + if (typeof input === 'number') { + marker = this.timestampToMarker(input); + } + else if (input instanceof Date) { + input = input.valueOf(); + if (!isNaN(input)) { + marker = this.timestampToMarker(input); + } + } + else if (Array.isArray(input)) { + marker = arrayToUtcDate(input); + } + if (marker === null || !isValidDate(marker)) { + return null; + } + return { marker: marker, isTimeUnspecified: false, forcedTzo: null }; + }; + DateEnv.prototype.parse = function (s) { + var parts = parse(s); + if (parts === null) { + return null; + } + var marker = parts.marker; + var forcedTzo = null; + if (parts.timeZoneOffset !== null) { + if (this.canComputeOffset) { + marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000); + } + else { + forcedTzo = parts.timeZoneOffset; + } + } + return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo }; + }; + // Accessors + DateEnv.prototype.getYear = function (marker) { + return this.calendarSystem.getMarkerYear(marker); + }; + DateEnv.prototype.getMonth = function (marker) { + return this.calendarSystem.getMarkerMonth(marker); + }; + // Adding / Subtracting + DateEnv.prototype.add = function (marker, dur) { + var a = this.calendarSystem.markerToArray(marker); + a[0] += dur.years; + a[1] += dur.months; + a[2] += dur.days; + a[6] += dur.milliseconds; + return this.calendarSystem.arrayToMarker(a); + }; + DateEnv.prototype.subtract = function (marker, dur) { + var a = this.calendarSystem.markerToArray(marker); + a[0] -= dur.years; + a[1] -= dur.months; + a[2] -= dur.days; + a[6] -= dur.milliseconds; + return this.calendarSystem.arrayToMarker(a); + }; + DateEnv.prototype.addYears = function (marker, n) { + var a = this.calendarSystem.markerToArray(marker); + a[0] += n; + return this.calendarSystem.arrayToMarker(a); + }; + DateEnv.prototype.addMonths = function (marker, n) { + var a = this.calendarSystem.markerToArray(marker); + a[1] += n; + return this.calendarSystem.arrayToMarker(a); + }; + // Diffing Whole Units + DateEnv.prototype.diffWholeYears = function (m0, m1) { + var calendarSystem = this.calendarSystem; + if (timeAsMs(m0) === timeAsMs(m1) && + calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) && + calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) { + return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0); + } + return null; + }; + DateEnv.prototype.diffWholeMonths = function (m0, m1) { + var calendarSystem = this.calendarSystem; + if (timeAsMs(m0) === timeAsMs(m1) && + calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) { + return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) + + (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12; + } + return null; + }; + // Range / Duration + DateEnv.prototype.greatestWholeUnit = function (m0, m1) { + var n = this.diffWholeYears(m0, m1); + if (n !== null) { + return { unit: 'year', value: n }; + } + n = this.diffWholeMonths(m0, m1); + if (n !== null) { + return { unit: 'month', value: n }; + } + n = diffWholeWeeks(m0, m1); + if (n !== null) { + return { unit: 'week', value: n }; + } + n = diffWholeDays(m0, m1); + if (n !== null) { + return { unit: 'day', value: n }; + } + n = diffHours(m0, m1); + if (isInt(n)) { + return { unit: 'hour', value: n }; + } + n = diffMinutes(m0, m1); + if (isInt(n)) { + return { unit: 'minute', value: n }; + } + n = diffSeconds(m0, m1); + if (isInt(n)) { + return { unit: 'second', value: n }; + } + return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() }; + }; + DateEnv.prototype.countDurationsBetween = function (m0, m1, d) { + // TODO: can use greatestWholeUnit + var diff; + if (d.years) { + diff = this.diffWholeYears(m0, m1); + if (diff !== null) { + return diff / asRoughYears(d); + } + } + if (d.months) { + diff = this.diffWholeMonths(m0, m1); + if (diff !== null) { + return diff / asRoughMonths(d); + } + } + if (d.days) { + diff = diffWholeDays(m0, m1); + if (diff !== null) { + return diff / asRoughDays(d); + } + } + return (m1.valueOf() - m0.valueOf()) / asRoughMs(d); + }; + // Start-Of + // these DON'T return zoned-dates. only UTC start-of dates + DateEnv.prototype.startOf = function (m, unit) { + if (unit === 'year') { + return this.startOfYear(m); + } + if (unit === 'month') { + return this.startOfMonth(m); + } + if (unit === 'week') { + return this.startOfWeek(m); + } + if (unit === 'day') { + return startOfDay(m); + } + if (unit === 'hour') { + return startOfHour(m); + } + if (unit === 'minute') { + return startOfMinute(m); + } + if (unit === 'second') { + return startOfSecond(m); + } + return null; + }; + DateEnv.prototype.startOfYear = function (m) { + return this.calendarSystem.arrayToMarker([ + this.calendarSystem.getMarkerYear(m), + ]); + }; + DateEnv.prototype.startOfMonth = function (m) { + return this.calendarSystem.arrayToMarker([ + this.calendarSystem.getMarkerYear(m), + this.calendarSystem.getMarkerMonth(m), + ]); + }; + DateEnv.prototype.startOfWeek = function (m) { + return this.calendarSystem.arrayToMarker([ + this.calendarSystem.getMarkerYear(m), + this.calendarSystem.getMarkerMonth(m), + m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7), + ]); + }; + // Week Number + DateEnv.prototype.computeWeekNumber = function (marker) { + if (this.weekNumberFunc) { + return this.weekNumberFunc(this.toDate(marker)); + } + return weekOfYear(marker, this.weekDow, this.weekDoy); + }; + // TODO: choke on timeZoneName: long + DateEnv.prototype.format = function (marker, formatter, dateOptions) { + if (dateOptions === void 0) { dateOptions = {}; } + return formatter.format({ + marker: marker, + timeZoneOffset: dateOptions.forcedTzo != null ? + dateOptions.forcedTzo : + this.offsetForMarker(marker), + }, this); + }; + DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) { + if (dateOptions === void 0) { dateOptions = {}; } + if (dateOptions.isEndExclusive) { + end = addMs(end, -1); + } + return formatter.formatRange({ + marker: start, + timeZoneOffset: dateOptions.forcedStartTzo != null ? + dateOptions.forcedStartTzo : + this.offsetForMarker(start), + }, { + marker: end, + timeZoneOffset: dateOptions.forcedEndTzo != null ? + dateOptions.forcedEndTzo : + this.offsetForMarker(end), + }, this, dateOptions.defaultSeparator); + }; + /* + DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that, + might as well use buildIsoString or some other util directly + */ + DateEnv.prototype.formatIso = function (marker, extraOptions) { + if (extraOptions === void 0) { extraOptions = {}; } + var timeZoneOffset = null; + if (!extraOptions.omitTimeZoneOffset) { + if (extraOptions.forcedTzo != null) { + timeZoneOffset = extraOptions.forcedTzo; + } + else { + timeZoneOffset = this.offsetForMarker(marker); + } + } + return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime); + }; + // TimeZone + DateEnv.prototype.timestampToMarker = function (ms) { + if (this.timeZone === 'local') { + return arrayToUtcDate(dateToLocalArray(new Date(ms))); + } + if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) { + return new Date(ms); + } + return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms)); + }; + DateEnv.prototype.offsetForMarker = function (m) { + if (this.timeZone === 'local') { + return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert "inverse" offset to "normal" offset + } + if (this.timeZone === 'UTC') { + return 0; + } + if (this.namedTimeZoneImpl) { + return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)); + } + return null; + }; + // Conversion + DateEnv.prototype.toDate = function (m, forcedTzo) { + if (this.timeZone === 'local') { + return arrayToLocalDate(dateToUtcArray(m)); + } + if (this.timeZone === 'UTC') { + return new Date(m.valueOf()); // make sure it's a copy + } + if (!this.namedTimeZoneImpl) { + return new Date(m.valueOf() - (forcedTzo || 0)); + } + return new Date(m.valueOf() - + this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60); + }; + return DateEnv; +}()); + +var globalLocales = []; + +var MINIMAL_RAW_EN_LOCALE = { + code: 'en', + week: { + dow: 0, + doy: 4, // 4 days need to be within the year to be considered the first week + }, + direction: 'ltr', + buttonText: { + prev: 'prev', + next: 'next', + prevYear: 'prev year', + nextYear: 'next year', + year: 'year', + today: 'today', + month: 'month', + week: 'week', + day: 'day', + list: 'list', + }, + weekText: 'W', + weekTextLong: 'Week', + closeHint: 'Close', + timeHint: 'Time', + eventHint: 'Event', + allDayText: 'all-day', + moreLinkText: 'more', + noEventsText: 'No events to display', +}; +var RAW_EN_LOCALE = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, MINIMAL_RAW_EN_LOCALE), { + // Includes things we don't want other locales to inherit, + // things that derive from other translatable strings. + buttonHints: { + prev: 'Previous $0', + next: 'Next $0', + today: function (buttonText, unit) { + return (unit === 'day') + ? 'Today' + : "This " + buttonText; + }, + }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint: function (eventCnt) { + return "Show " + eventCnt + " more event" + (eventCnt === 1 ? '' : 's'); + } }); +function organizeRawLocales(explicitRawLocales) { + var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en'; + var allRawLocales = globalLocales.concat(explicitRawLocales); + var rawLocaleMap = { + en: RAW_EN_LOCALE, + }; + for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) { + var rawLocale = allRawLocales_1[_i]; + rawLocaleMap[rawLocale.code] = rawLocale; + } + return { + map: rawLocaleMap, + defaultCode: defaultCode, + }; +} +function buildLocale(inputSingular, available) { + if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) { + return parseLocale(inputSingular.code, [inputSingular.code], inputSingular); + } + return queryLocale(inputSingular, available); +} +function queryLocale(codeArg, available) { + var codes = [].concat(codeArg || []); // will convert to array + var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE; + return parseLocale(codeArg, codes, raw); +} +function queryRawLocale(codes, available) { + for (var i = 0; i < codes.length; i += 1) { + var parts = codes[i].toLocaleLowerCase().split('-'); + for (var j = parts.length; j > 0; j -= 1) { + var simpleId = parts.slice(0, j).join('-'); + if (available[simpleId]) { + return available[simpleId]; + } + } + } + return null; +} +function parseLocale(codeArg, codes, raw) { + var merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']); + delete merged.code; // don't want this part of the options + var week = merged.week; + delete merged.week; + return { + codeArg: codeArg, + codes: codes, + week: week, + simpleNumberFormat: new Intl.NumberFormat(codeArg), + options: merged, + }; +} + +function formatDate(dateInput, options) { + if (options === void 0) { options = {}; } + var dateEnv = buildDateEnv$1(options); + var formatter = createFormatter(options); + var dateMeta = dateEnv.createMarkerMeta(dateInput); + if (!dateMeta) { // TODO: warning? + return ''; + } + return dateEnv.format(dateMeta.marker, formatter, { + forcedTzo: dateMeta.forcedTzo, + }); +} +function formatRange(startInput, endInput, options) { + var dateEnv = buildDateEnv$1(typeof options === 'object' && options ? options : {}); // pass in if non-null object + var formatter = createFormatter(options); + var startMeta = dateEnv.createMarkerMeta(startInput); + var endMeta = dateEnv.createMarkerMeta(endInput); + if (!startMeta || !endMeta) { // TODO: warning? + return ''; + } + return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, { + forcedStartTzo: startMeta.forcedTzo, + forcedEndTzo: endMeta.forcedTzo, + isEndExclusive: options.isEndExclusive, + defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator, + }); +} +// TODO: more DRY and optimized +function buildDateEnv$1(settings) { + var locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere + return new DateEnv((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale: locale })); +} + +var DEF_DEFAULTS = { + startTime: '09:00', + endTime: '17:00', + daysOfWeek: [1, 2, 3, 4, 5], + display: 'inverse-background', + classNames: 'fc-non-business', + groupId: '_businessHours', // so multiple defs get grouped +}; +/* +TODO: pass around as EventDefHash!!! +*/ +function parseBusinessHours(input, context) { + return parseEvents(refineInputs(input), null, context); +} +function refineInputs(input) { + var rawDefs; + if (input === true) { + rawDefs = [{}]; // will get DEF_DEFAULTS verbatim + } + else if (Array.isArray(input)) { + // if specifying an array, every sub-definition NEEDS a day-of-week + rawDefs = input.filter(function (rawDef) { return rawDef.daysOfWeek; }); + } + else if (typeof input === 'object' && input) { // non-null object + rawDefs = [input]; + } + else { // is probably false + rawDefs = []; + } + rawDefs = rawDefs.map(function (rawDef) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, DEF_DEFAULTS), rawDef)); }); + return rawDefs; +} + +function pointInsideRect(point, rect) { + return point.left >= rect.left && + point.left < rect.right && + point.top >= rect.top && + point.top < rect.bottom; +} +// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false +function intersectRects(rect1, rect2) { + var res = { + left: Math.max(rect1.left, rect2.left), + right: Math.min(rect1.right, rect2.right), + top: Math.max(rect1.top, rect2.top), + bottom: Math.min(rect1.bottom, rect2.bottom), + }; + if (res.left < res.right && res.top < res.bottom) { + return res; + } + return false; +} +function translateRect(rect, deltaX, deltaY) { + return { + left: rect.left + deltaX, + right: rect.right + deltaX, + top: rect.top + deltaY, + bottom: rect.bottom + deltaY, + }; +} +// Returns a new point that will have been moved to reside within the given rectangle +function constrainPoint(point, rect) { + return { + left: Math.min(Math.max(point.left, rect.left), rect.right), + top: Math.min(Math.max(point.top, rect.top), rect.bottom), + }; +} +// Returns a point that is the center of the given rectangle +function getRectCenter(rect) { + return { + left: (rect.left + rect.right) / 2, + top: (rect.top + rect.bottom) / 2, + }; +} +// Subtracts point2's coordinates from point1's coordinates, returning a delta +function diffPoints(point1, point2) { + return { + left: point1.left - point2.left, + top: point1.top - point2.top, + }; +} + +var canVGrowWithinCell; +function getCanVGrowWithinCell() { + if (canVGrowWithinCell == null) { + canVGrowWithinCell = computeCanVGrowWithinCell(); + } + return canVGrowWithinCell; +} +function computeCanVGrowWithinCell() { + // for SSR, because this function is call immediately at top-level + // TODO: just make this logic execute top-level, immediately, instead of doing lazily + if (typeof document === 'undefined') { + return true; + } + var el = document.createElement('div'); + el.style.position = 'absolute'; + el.style.top = '0px'; + el.style.left = '0px'; + el.innerHTML = '
'; + el.querySelector('table').style.height = '100px'; + el.querySelector('div').style.height = '100%'; + document.body.appendChild(el); + var div = el.querySelector('div'); + var possible = div.offsetHeight > 0; + document.body.removeChild(el); + return possible; +} + +var EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere +var Splitter = /** @class */ (function () { + function Splitter() { + this.getKeysForEventDefs = memoize(this._getKeysForEventDefs); + this.splitDateSelection = memoize(this._splitDateSpan); + this.splitEventStore = memoize(this._splitEventStore); + this.splitIndividualUi = memoize(this._splitIndividualUi); + this.splitEventDrag = memoize(this._splitInteraction); + this.splitEventResize = memoize(this._splitInteraction); + this.eventUiBuilders = {}; // TODO: typescript protection + } + Splitter.prototype.splitProps = function (props) { + var _this = this; + var keyInfos = this.getKeyInfo(props); + var defKeys = this.getKeysForEventDefs(props.eventStore); + var dateSelections = this.splitDateSelection(props.dateSelection); + var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases* + var eventStores = this.splitEventStore(props.eventStore, defKeys); + var eventDrags = this.splitEventDrag(props.eventDrag); + var eventResizes = this.splitEventResize(props.eventResize); + var splitProps = {}; + this.eventUiBuilders = mapHash(keyInfos, function (info, key) { return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); }); + for (var key in keyInfos) { + var keyInfo = keyInfos[key]; + var eventStore = eventStores[key] || EMPTY_EVENT_STORE; + var buildEventUi = this.eventUiBuilders[key]; + splitProps[key] = { + businessHours: keyInfo.businessHours || props.businessHours, + dateSelection: dateSelections[key] || null, + eventStore: eventStore, + eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]), + eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '', + eventDrag: eventDrags[key] || null, + eventResize: eventResizes[key] || null, + }; + } + return splitProps; + }; + Splitter.prototype._splitDateSpan = function (dateSpan) { + var dateSpans = {}; + if (dateSpan) { + var keys = this.getKeysForDateSpan(dateSpan); + for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { + var key = keys_1[_i]; + dateSpans[key] = dateSpan; + } + } + return dateSpans; + }; + Splitter.prototype._getKeysForEventDefs = function (eventStore) { + var _this = this; + return mapHash(eventStore.defs, function (eventDef) { return _this.getKeysForEventDef(eventDef); }); + }; + Splitter.prototype._splitEventStore = function (eventStore, defKeys) { + var defs = eventStore.defs, instances = eventStore.instances; + var splitStores = {}; + for (var defId in defs) { + for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) { + var key = _a[_i]; + if (!splitStores[key]) { + splitStores[key] = createEmptyEventStore(); + } + splitStores[key].defs[defId] = defs[defId]; + } + } + for (var instanceId in instances) { + var instance = instances[instanceId]; + for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) { + var key = _c[_b]; + if (splitStores[key]) { // must have already been created + splitStores[key].instances[instanceId] = instance; + } + } + } + return splitStores; + }; + Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) { + var splitHashes = {}; + for (var defId in eventUiBases) { + if (defId) { // not the '' key + for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) { + var key = _a[_i]; + if (!splitHashes[key]) { + splitHashes[key] = {}; + } + splitHashes[key][defId] = eventUiBases[defId]; + } + } + } + return splitHashes; + }; + Splitter.prototype._splitInteraction = function (interaction) { + var splitStates = {}; + if (interaction) { + var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents)); + // can't rely on defKeys because event data is mutated + var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents); + var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId); + var populate = function (key) { + if (!splitStates[key]) { + splitStates[key] = { + affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE, + mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE, + isEvent: interaction.isEvent, + }; + } + }; + for (var key in affectedStores_1) { + populate(key); + } + for (var key in mutatedStores_1) { + populate(key); + } + } + return splitStates; + }; + return Splitter; +}()); +function buildEventUiForKey(allUi, eventUiForKey, individualUi) { + var baseParts = []; + if (allUi) { + baseParts.push(allUi); + } + if (eventUiForKey) { + baseParts.push(eventUiForKey); + } + var stuff = { + '': combineEventUis(baseParts), + }; + if (individualUi) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(stuff, individualUi); + } + return stuff; +} + +function getDateMeta(date, todayRange, nowDate, dateProfile) { + return { + dow: date.getUTCDay(), + isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)), + isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)), + isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)), + isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false), + isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false), + }; +} +function getDayClassNames(meta, theme) { + var classNames = [ + 'fc-day', + "fc-day-" + DAY_IDS[meta.dow], + ]; + if (meta.isDisabled) { + classNames.push('fc-day-disabled'); + } + else { + if (meta.isToday) { + classNames.push('fc-day-today'); + classNames.push(theme.getClass('today')); + } + if (meta.isPast) { + classNames.push('fc-day-past'); + } + if (meta.isFuture) { + classNames.push('fc-day-future'); + } + if (meta.isOther) { + classNames.push('fc-day-other'); + } + } + return classNames; +} +function getSlotClassNames(meta, theme) { + var classNames = [ + 'fc-slot', + "fc-slot-" + DAY_IDS[meta.dow], + ]; + if (meta.isDisabled) { + classNames.push('fc-slot-disabled'); + } + else { + if (meta.isToday) { + classNames.push('fc-slot-today'); + classNames.push(theme.getClass('today')); + } + if (meta.isPast) { + classNames.push('fc-slot-past'); + } + if (meta.isFuture) { + classNames.push('fc-slot-future'); + } + } + return classNames; +} + +var DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' }); +var WEEK_FORMAT = createFormatter({ week: 'long' }); +function buildNavLinkAttrs(context, dateMarker, viewType, isTabbable) { + if (viewType === void 0) { viewType = 'day'; } + if (isTabbable === void 0) { isTabbable = true; } + var dateEnv = context.dateEnv, options = context.options, calendarApi = context.calendarApi; + var dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT); + if (options.navLinks) { + var zonedDate = dateEnv.toDate(dateMarker); + var handleInteraction = function (ev) { + var customAction = viewType === 'day' ? options.navLinkDayClick : + viewType === 'week' ? options.navLinkWeekClick : null; + if (typeof customAction === 'function') { + customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev); + } + else { + if (typeof customAction === 'string') { + viewType = customAction; + } + calendarApi.zoomTo(dateMarker, viewType); + } + }; + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable + ? createAriaClickAttrs(handleInteraction) + : { onClick: handleInteraction })); + } + return { 'aria-label': dateStr }; +} + +var _isRtlScrollbarOnLeft = null; +function getIsRtlScrollbarOnLeft() { + if (_isRtlScrollbarOnLeft === null) { + _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft(); + } + return _isRtlScrollbarOnLeft; +} +function computeIsRtlScrollbarOnLeft() { + var outerEl = document.createElement('div'); + applyStyle(outerEl, { + position: 'absolute', + top: -1000, + left: 0, + border: 0, + padding: 0, + overflow: 'scroll', + direction: 'rtl', + }); + outerEl.innerHTML = '

'; + document.body.appendChild(outerEl); + var innerEl = outerEl.firstChild; + var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left; + removeElement(outerEl); + return res; +} + +var _scrollbarWidths; +function getScrollbarWidths() { + if (!_scrollbarWidths) { + _scrollbarWidths = computeScrollbarWidths(); + } + return _scrollbarWidths; +} +function computeScrollbarWidths() { + var el = document.createElement('div'); + el.style.overflow = 'scroll'; + el.style.position = 'absolute'; + el.style.top = '-9999px'; + el.style.left = '-9999px'; + document.body.appendChild(el); + var res = computeScrollbarWidthsForEl(el); + document.body.removeChild(el); + return res; +} +// WARNING: will include border +function computeScrollbarWidthsForEl(el) { + return { + x: el.offsetHeight - el.clientHeight, + y: el.offsetWidth - el.clientWidth, + }; +} + +function computeEdges(el, getPadding) { + if (getPadding === void 0) { getPadding = false; } + var computedStyle = window.getComputedStyle(el); + var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0; + var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0; + var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0; + var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0; + var badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border! + var scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight; + var scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom; + var res = { + borderLeft: borderLeft, + borderRight: borderRight, + borderTop: borderTop, + borderBottom: borderBottom, + scrollbarBottom: scrollbarBottom, + scrollbarLeft: 0, + scrollbarRight: 0, + }; + if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side? + res.scrollbarLeft = scrollbarLeftRight; + } + else { + res.scrollbarRight = scrollbarLeftRight; + } + if (getPadding) { + res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0; + res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0; + res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0; + res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0; + } + return res; +} +function computeInnerRect(el, goWithinPadding, doFromWindowViewport) { + if (goWithinPadding === void 0) { goWithinPadding = false; } + var outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el); + var edges = computeEdges(el, goWithinPadding); + var res = { + left: outerRect.left + edges.borderLeft + edges.scrollbarLeft, + right: outerRect.right - edges.borderRight - edges.scrollbarRight, + top: outerRect.top + edges.borderTop, + bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom, + }; + if (goWithinPadding) { + res.left += edges.paddingLeft; + res.right -= edges.paddingRight; + res.top += edges.paddingTop; + res.bottom -= edges.paddingBottom; + } + return res; +} +function computeRect(el) { + var rect = el.getBoundingClientRect(); + return { + left: rect.left + window.pageXOffset, + top: rect.top + window.pageYOffset, + right: rect.right + window.pageXOffset, + bottom: rect.bottom + window.pageYOffset, + }; +} +function computeClippedClientRect(el) { + var clippingParents = getClippingParents(el); + var rect = el.getBoundingClientRect(); + for (var _i = 0, clippingParents_1 = clippingParents; _i < clippingParents_1.length; _i++) { + var clippingParent = clippingParents_1[_i]; + var intersection = intersectRects(rect, clippingParent.getBoundingClientRect()); + if (intersection) { + rect = intersection; + } + else { + return null; + } + } + return rect; +} +function computeHeightAndMargins(el) { + return el.getBoundingClientRect().height + computeVMargins(el); +} +function computeVMargins(el) { + var computed = window.getComputedStyle(el); + return parseInt(computed.marginTop, 10) + + parseInt(computed.marginBottom, 10); +} +// does not return window +function getClippingParents(el) { + var parents = []; + while (el instanceof HTMLElement) { // will stop when gets to document or null + var computedStyle = window.getComputedStyle(el); + if (computedStyle.position === 'fixed') { + break; + } + if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) { + parents.push(el); + } + el = el.parentNode; + } + return parents; +} + +// given a function that resolves a result asynchronously. +// the function can either call passed-in success and failure callbacks, +// or it can return a promise. +// if you need to pass additional params to func, bind them first. +function unpromisify(func, success, failure) { + // guard against success/failure callbacks being called more than once + // and guard against a promise AND callback being used together. + var isResolved = false; + var wrappedSuccess = function () { + if (!isResolved) { + isResolved = true; + success.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + }; + var wrappedFailure = function () { + if (!isResolved) { + isResolved = true; + if (failure) { + failure.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + } + }; + var res = func(wrappedSuccess, wrappedFailure); + if (res && typeof res.then === 'function') { + res.then(wrappedSuccess, wrappedFailure); + } +} + +var Emitter = /** @class */ (function () { + function Emitter() { + this.handlers = {}; + this.thisContext = null; + } + Emitter.prototype.setThisContext = function (thisContext) { + this.thisContext = thisContext; + }; + Emitter.prototype.setOptions = function (options) { + this.options = options; + }; + Emitter.prototype.on = function (type, handler) { + addToHash(this.handlers, type, handler); + }; + Emitter.prototype.off = function (type, handler) { + removeFromHash(this.handlers, type, handler); + }; + Emitter.prototype.trigger = function (type) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + var attachedHandlers = this.handlers[type] || []; + var optionHandler = this.options && this.options[type]; + var handlers = [].concat(optionHandler || [], attachedHandlers); + for (var _a = 0, handlers_1 = handlers; _a < handlers_1.length; _a++) { + var handler = handlers_1[_a]; + handler.apply(this.thisContext, args); + } + }; + Emitter.prototype.hasHandlers = function (type) { + return Boolean((this.handlers[type] && this.handlers[type].length) || + (this.options && this.options[type])); + }; + return Emitter; +}()); +function addToHash(hash, type, handler) { + (hash[type] || (hash[type] = [])) + .push(handler); +} +function removeFromHash(hash, type, handler) { + if (handler) { + if (hash[type]) { + hash[type] = hash[type].filter(function (func) { return func !== handler; }); + } + } + else { + delete hash[type]; // remove all handler funcs for this type + } +} + +/* +Records offset information for a set of elements, relative to an origin element. +Can record the left/right OR the top/bottom OR both. +Provides methods for querying the cache by position. +*/ +var PositionCache = /** @class */ (function () { + function PositionCache(originEl, els, isHorizontal, isVertical) { + this.els = els; + var originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left + if (isHorizontal) { + this.buildElHorizontals(originClientRect.left); + } + if (isVertical) { + this.buildElVerticals(originClientRect.top); + } + } + // Populates the left/right internal coordinate arrays + PositionCache.prototype.buildElHorizontals = function (originClientLeft) { + var lefts = []; + var rights = []; + for (var _i = 0, _a = this.els; _i < _a.length; _i++) { + var el = _a[_i]; + var rect = el.getBoundingClientRect(); + lefts.push(rect.left - originClientLeft); + rights.push(rect.right - originClientLeft); + } + this.lefts = lefts; + this.rights = rights; + }; + // Populates the top/bottom internal coordinate arrays + PositionCache.prototype.buildElVerticals = function (originClientTop) { + var tops = []; + var bottoms = []; + for (var _i = 0, _a = this.els; _i < _a.length; _i++) { + var el = _a[_i]; + var rect = el.getBoundingClientRect(); + tops.push(rect.top - originClientTop); + bottoms.push(rect.bottom - originClientTop); + } + this.tops = tops; + this.bottoms = bottoms; + }; + // Given a left offset (from document left), returns the index of the el that it horizontally intersects. + // If no intersection is made, returns undefined. + PositionCache.prototype.leftToIndex = function (leftPosition) { + var _a = this, lefts = _a.lefts, rights = _a.rights; + var len = lefts.length; + var i; + for (i = 0; i < len; i += 1) { + if (leftPosition >= lefts[i] && leftPosition < rights[i]) { + return i; + } + } + return undefined; // TODO: better + }; + // Given a top offset (from document top), returns the index of the el that it vertically intersects. + // If no intersection is made, returns undefined. + PositionCache.prototype.topToIndex = function (topPosition) { + var _a = this, tops = _a.tops, bottoms = _a.bottoms; + var len = tops.length; + var i; + for (i = 0; i < len; i += 1) { + if (topPosition >= tops[i] && topPosition < bottoms[i]) { + return i; + } + } + return undefined; // TODO: better + }; + // Gets the width of the element at the given index + PositionCache.prototype.getWidth = function (leftIndex) { + return this.rights[leftIndex] - this.lefts[leftIndex]; + }; + // Gets the height of the element at the given index + PositionCache.prototype.getHeight = function (topIndex) { + return this.bottoms[topIndex] - this.tops[topIndex]; + }; + return PositionCache; +}()); + +/* eslint max-classes-per-file: "off" */ +/* +An object for getting/setting scroll-related information for an element. +Internally, this is done very differently for window versus DOM element, +so this object serves as a common interface. +*/ +var ScrollController = /** @class */ (function () { + function ScrollController() { + } + ScrollController.prototype.getMaxScrollTop = function () { + return this.getScrollHeight() - this.getClientHeight(); + }; + ScrollController.prototype.getMaxScrollLeft = function () { + return this.getScrollWidth() - this.getClientWidth(); + }; + ScrollController.prototype.canScrollVertically = function () { + return this.getMaxScrollTop() > 0; + }; + ScrollController.prototype.canScrollHorizontally = function () { + return this.getMaxScrollLeft() > 0; + }; + ScrollController.prototype.canScrollUp = function () { + return this.getScrollTop() > 0; + }; + ScrollController.prototype.canScrollDown = function () { + return this.getScrollTop() < this.getMaxScrollTop(); + }; + ScrollController.prototype.canScrollLeft = function () { + return this.getScrollLeft() > 0; + }; + ScrollController.prototype.canScrollRight = function () { + return this.getScrollLeft() < this.getMaxScrollLeft(); + }; + return ScrollController; +}()); +var ElementScrollController = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ElementScrollController, _super); + function ElementScrollController(el) { + var _this = _super.call(this) || this; + _this.el = el; + return _this; + } + ElementScrollController.prototype.getScrollTop = function () { + return this.el.scrollTop; + }; + ElementScrollController.prototype.getScrollLeft = function () { + return this.el.scrollLeft; + }; + ElementScrollController.prototype.setScrollTop = function (top) { + this.el.scrollTop = top; + }; + ElementScrollController.prototype.setScrollLeft = function (left) { + this.el.scrollLeft = left; + }; + ElementScrollController.prototype.getScrollWidth = function () { + return this.el.scrollWidth; + }; + ElementScrollController.prototype.getScrollHeight = function () { + return this.el.scrollHeight; + }; + ElementScrollController.prototype.getClientHeight = function () { + return this.el.clientHeight; + }; + ElementScrollController.prototype.getClientWidth = function () { + return this.el.clientWidth; + }; + return ElementScrollController; +}(ScrollController)); +var WindowScrollController = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(WindowScrollController, _super); + function WindowScrollController() { + return _super !== null && _super.apply(this, arguments) || this; + } + WindowScrollController.prototype.getScrollTop = function () { + return window.pageYOffset; + }; + WindowScrollController.prototype.getScrollLeft = function () { + return window.pageXOffset; + }; + WindowScrollController.prototype.setScrollTop = function (n) { + window.scroll(window.pageXOffset, n); + }; + WindowScrollController.prototype.setScrollLeft = function (n) { + window.scroll(n, window.pageYOffset); + }; + WindowScrollController.prototype.getScrollWidth = function () { + return document.documentElement.scrollWidth; + }; + WindowScrollController.prototype.getScrollHeight = function () { + return document.documentElement.scrollHeight; + }; + WindowScrollController.prototype.getClientHeight = function () { + return document.documentElement.clientHeight; + }; + WindowScrollController.prototype.getClientWidth = function () { + return document.documentElement.clientWidth; + }; + return WindowScrollController; +}(ScrollController)); + +var Theme = /** @class */ (function () { + function Theme(calendarOptions) { + if (this.iconOverrideOption) { + this.setIconOverride(calendarOptions[this.iconOverrideOption]); + } + } + Theme.prototype.setIconOverride = function (iconOverrideHash) { + var iconClassesCopy; + var buttonName; + if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object + iconClassesCopy = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.iconClasses); + for (buttonName in iconOverrideHash) { + iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]); + } + this.iconClasses = iconClassesCopy; + } + else if (iconOverrideHash === false) { + this.iconClasses = {}; + } + }; + Theme.prototype.applyIconOverridePrefix = function (className) { + var prefix = this.iconOverridePrefix; + if (prefix && className.indexOf(prefix) !== 0) { // if not already present + className = prefix + className; + } + return className; + }; + Theme.prototype.getClass = function (key) { + return this.classes[key] || ''; + }; + Theme.prototype.getIconClass = function (buttonName, isRtl) { + var className; + if (isRtl && this.rtlIconClasses) { + className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName]; + } + else { + className = this.iconClasses[buttonName]; + } + if (className) { + return this.baseIconClass + " " + className; + } + return ''; + }; + Theme.prototype.getCustomButtonIconClass = function (customButtonProps) { + var className; + if (this.iconOverrideCustomButtonOption) { + className = customButtonProps[this.iconOverrideCustomButtonOption]; + if (className) { + return this.baseIconClass + " " + this.applyIconOverridePrefix(className); + } + } + return ''; + }; + return Theme; +}()); +Theme.prototype.classes = {}; +Theme.prototype.iconClasses = {}; +Theme.prototype.baseIconClass = ''; +Theme.prototype.iconOverridePrefix = ''; + +var ScrollResponder = /** @class */ (function () { + function ScrollResponder(execFunc, emitter, scrollTime, scrollTimeReset) { + var _this = this; + this.execFunc = execFunc; + this.emitter = emitter; + this.scrollTime = scrollTime; + this.scrollTimeReset = scrollTimeReset; + this.handleScrollRequest = function (request) { + _this.queuedRequest = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, _this.queuedRequest || {}, request); + _this.drain(); + }; + emitter.on('_scrollRequest', this.handleScrollRequest); + this.fireInitialScroll(); + } + ScrollResponder.prototype.detach = function () { + this.emitter.off('_scrollRequest', this.handleScrollRequest); + }; + ScrollResponder.prototype.update = function (isDatesNew) { + if (isDatesNew && this.scrollTimeReset) { + this.fireInitialScroll(); // will drain + } + else { + this.drain(); + } + }; + ScrollResponder.prototype.fireInitialScroll = function () { + this.handleScrollRequest({ + time: this.scrollTime, + }); + }; + ScrollResponder.prototype.drain = function () { + if (this.queuedRequest && this.execFunc(this.queuedRequest)) { + this.queuedRequest = null; + } + }; + return ScrollResponder; +}()); + +var ViewContextType = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createContext)({}); // for Components +function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) { + return { + dateEnv: dateEnv, + options: viewOptions, + pluginHooks: pluginHooks, + emitter: emitter, + dispatch: dispatch, + getCurrentData: getCurrentData, + calendarApi: calendarApi, + viewSpec: viewSpec, + viewApi: viewApi, + dateProfileGenerator: dateProfileGenerator, + theme: theme, + isRtl: viewOptions.direction === 'rtl', + addResizeHandler: function (handler) { + emitter.on('_resize', handler); + }, + removeResizeHandler: function (handler) { + emitter.off('_resize', handler); + }, + createScrollResponder: function (execFunc) { + return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset); + }, + registerInteractiveComponent: registerInteractiveComponent, + unregisterInteractiveComponent: unregisterInteractiveComponent, + }; +} + +/* eslint max-classes-per-file: off */ +var PureComponent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(PureComponent, _super); + function PureComponent() { + return _super !== null && _super.apply(this, arguments) || this; + } + PureComponent.prototype.shouldComponentUpdate = function (nextProps, nextState) { + if (this.debug) { + // eslint-disable-next-line no-console + console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state)); + } + return !compareObjs(this.props, nextProps, this.propEquality) || + !compareObjs(this.state, nextState, this.stateEquality); + }; + PureComponent.addPropsEquality = addPropsEquality; + PureComponent.addStateEquality = addStateEquality; + PureComponent.contextType = ViewContextType; + return PureComponent; +}(_vdom_js__WEBPACK_IMPORTED_MODULE_1__.Component)); +PureComponent.prototype.propEquality = {}; +PureComponent.prototype.stateEquality = {}; +var BaseComponent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(BaseComponent, _super); + function BaseComponent() { + return _super !== null && _super.apply(this, arguments) || this; + } + BaseComponent.contextType = ViewContextType; + return BaseComponent; +}(PureComponent)); +function addPropsEquality(propEquality) { + var hash = Object.create(this.prototype.propEquality); + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(hash, propEquality); + this.prototype.propEquality = hash; +} +function addStateEquality(stateEquality) { + var hash = Object.create(this.prototype.stateEquality); + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(hash, stateEquality); + this.prototype.stateEquality = hash; +} +// use other one +function setRef(ref, current) { + if (typeof ref === 'function') { + ref(current); + } + else if (ref) { + // see https://github.com/facebook/react/issues/13029 + ref.current = current; + } +} + +/* +an INTERACTABLE date component + +PURPOSES: +- hook up to fg, fill, and mirror renderers +- interface for dragging and hits +*/ +var DateComponent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DateComponent, _super); + function DateComponent() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.uid = guid(); + return _this; + } + // Hit System + // ----------------------------------------------------------------------------------------------------------------- + DateComponent.prototype.prepareHits = function () { + }; + DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) { + return null; // this should be abstract + }; + // Pointer Interaction Utils + // ----------------------------------------------------------------------------------------------------------------- + DateComponent.prototype.isValidSegDownEl = function (el) { + return !this.props.eventDrag && // HACK + !this.props.eventResize && // HACK + !elementClosest(el, '.fc-event-mirror'); + }; + DateComponent.prototype.isValidDateDownEl = function (el) { + return !elementClosest(el, '.fc-event:not(.fc-bg-event)') && + !elementClosest(el, '.fc-more-link') && // a "more.." link + !elementClosest(el, 'a[data-navlink]') && // a clickable nav link + !elementClosest(el, '.fc-popover'); // hack + }; + return DateComponent; +}(BaseComponent)); + +// TODO: easier way to add new hooks? need to update a million things +function createPlugin(input) { + return { + id: guid(), + deps: input.deps || [], + reducers: input.reducers || [], + isLoadingFuncs: input.isLoadingFuncs || [], + contextInit: [].concat(input.contextInit || []), + eventRefiners: input.eventRefiners || {}, + eventDefMemberAdders: input.eventDefMemberAdders || [], + eventSourceRefiners: input.eventSourceRefiners || {}, + isDraggableTransformers: input.isDraggableTransformers || [], + eventDragMutationMassagers: input.eventDragMutationMassagers || [], + eventDefMutationAppliers: input.eventDefMutationAppliers || [], + dateSelectionTransformers: input.dateSelectionTransformers || [], + datePointTransforms: input.datePointTransforms || [], + dateSpanTransforms: input.dateSpanTransforms || [], + views: input.views || {}, + viewPropsTransformers: input.viewPropsTransformers || [], + isPropsValid: input.isPropsValid || null, + externalDefTransforms: input.externalDefTransforms || [], + viewContainerAppends: input.viewContainerAppends || [], + eventDropTransformers: input.eventDropTransformers || [], + componentInteractions: input.componentInteractions || [], + calendarInteractions: input.calendarInteractions || [], + themeClasses: input.themeClasses || {}, + eventSourceDefs: input.eventSourceDefs || [], + cmdFormatter: input.cmdFormatter, + recurringTypes: input.recurringTypes || [], + namedTimeZonedImpl: input.namedTimeZonedImpl, + initialView: input.initialView || '', + elementDraggingImpl: input.elementDraggingImpl, + optionChangeHandlers: input.optionChangeHandlers || {}, + scrollGridImpl: input.scrollGridImpl || null, + contentTypeHandlers: input.contentTypeHandlers || {}, + listenerRefiners: input.listenerRefiners || {}, + optionRefiners: input.optionRefiners || {}, + propSetHandlers: input.propSetHandlers || {}, + }; +} +function buildPluginHooks(pluginDefs, globalDefs) { + var isAdded = {}; + var hooks = { + reducers: [], + isLoadingFuncs: [], + contextInit: [], + eventRefiners: {}, + eventDefMemberAdders: [], + eventSourceRefiners: {}, + isDraggableTransformers: [], + eventDragMutationMassagers: [], + eventDefMutationAppliers: [], + dateSelectionTransformers: [], + datePointTransforms: [], + dateSpanTransforms: [], + views: {}, + viewPropsTransformers: [], + isPropsValid: null, + externalDefTransforms: [], + viewContainerAppends: [], + eventDropTransformers: [], + componentInteractions: [], + calendarInteractions: [], + themeClasses: {}, + eventSourceDefs: [], + cmdFormatter: null, + recurringTypes: [], + namedTimeZonedImpl: null, + initialView: '', + elementDraggingImpl: null, + optionChangeHandlers: {}, + scrollGridImpl: null, + contentTypeHandlers: {}, + listenerRefiners: {}, + optionRefiners: {}, + propSetHandlers: {}, + }; + function addDefs(defs) { + for (var _i = 0, defs_1 = defs; _i < defs_1.length; _i++) { + var def = defs_1[_i]; + if (!isAdded[def.id]) { + isAdded[def.id] = true; + addDefs(def.deps); + hooks = combineHooks(hooks, def); + } + } + } + if (pluginDefs) { + addDefs(pluginDefs); + } + addDefs(globalDefs); + return hooks; +} +function buildBuildPluginHooks() { + var currentOverrideDefs = []; + var currentGlobalDefs = []; + var currentHooks; + return function (overrideDefs, globalDefs) { + if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) { + currentHooks = buildPluginHooks(overrideDefs, globalDefs); + } + currentOverrideDefs = overrideDefs; + currentGlobalDefs = globalDefs; + return currentHooks; + }; +} +function combineHooks(hooks0, hooks1) { + return { + reducers: hooks0.reducers.concat(hooks1.reducers), + isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs), + contextInit: hooks0.contextInit.concat(hooks1.contextInit), + eventRefiners: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.eventRefiners), hooks1.eventRefiners), + eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders), + eventSourceRefiners: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners), + isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers), + eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers), + eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers), + dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers), + datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms), + dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms), + views: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.views), hooks1.views), + viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers), + isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid, + externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms), + viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends), + eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers), + calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions), + componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions), + themeClasses: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.themeClasses), hooks1.themeClasses), + eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs), + cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter, + recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes), + namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl, + initialView: hooks0.initialView || hooks1.initialView, + elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl, + optionChangeHandlers: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers), + scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl, + contentTypeHandlers: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers), + listenerRefiners: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.listenerRefiners), hooks1.listenerRefiners), + optionRefiners: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.optionRefiners), hooks1.optionRefiners), + propSetHandlers: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, hooks0.propSetHandlers), hooks1.propSetHandlers), + }; +} + +var StandardTheme = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(StandardTheme, _super); + function StandardTheme() { + return _super !== null && _super.apply(this, arguments) || this; + } + return StandardTheme; +}(Theme)); +StandardTheme.prototype.classes = { + root: 'fc-theme-standard', + tableCellShaded: 'fc-cell-shaded', + buttonGroup: 'fc-button-group', + button: 'fc-button fc-button-primary', + buttonActive: 'fc-button-active', +}; +StandardTheme.prototype.baseIconClass = 'fc-icon'; +StandardTheme.prototype.iconClasses = { + close: 'fc-icon-x', + prev: 'fc-icon-chevron-left', + next: 'fc-icon-chevron-right', + prevYear: 'fc-icon-chevrons-left', + nextYear: 'fc-icon-chevrons-right', +}; +StandardTheme.prototype.rtlIconClasses = { + prev: 'fc-icon-chevron-right', + next: 'fc-icon-chevron-left', + prevYear: 'fc-icon-chevrons-right', + nextYear: 'fc-icon-chevrons-left', +}; +StandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly +StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'; +StandardTheme.prototype.iconOverridePrefix = 'fc-icon-'; + +function compileViewDefs(defaultConfigs, overrideConfigs) { + var hash = {}; + var viewType; + for (viewType in defaultConfigs) { + ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs); + } + for (viewType in overrideConfigs) { + ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs); + } + return hash; +} +function ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) { + if (hash[viewType]) { + return hash[viewType]; + } + var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs); + if (viewDef) { + hash[viewType] = viewDef; + } + return viewDef; +} +function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) { + var defaultConfig = defaultConfigs[viewType]; + var overrideConfig = overrideConfigs[viewType]; + var queryProp = function (name) { return ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] : + ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)); }; + var theComponent = queryProp('component'); + var superType = queryProp('superType'); + var superDef = null; + if (superType) { + if (superType === viewType) { + throw new Error('Can\'t have a custom view type that references itself'); + } + superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs); + } + if (!theComponent && superDef) { + theComponent = superDef.component; + } + if (!theComponent) { + return null; // don't throw a warning, might be settings for a single-unit view + } + return { + type: viewType, + component: theComponent, + defaults: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})), + overrides: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})), + }; +} + +/* eslint max-classes-per-file: off */ +// NOTE: in JSX, you should always use this class with arg. otherwise, will default to any??? +var RenderHook = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(RenderHook, _super); + function RenderHook() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.rootElRef = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.handleRootEl = function (el) { + setRef(_this.rootElRef, el); + if (_this.props.elRef) { + setRef(_this.props.elRef, el); + } + }; + return _this; + } + RenderHook.prototype.render = function () { + var _this = this; + var props = this.props; + var hookProps = props.hookProps; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(MountHook, { hookProps: hookProps, didMount: props.didMount, willUnmount: props.willUnmount, elRef: this.handleRootEl }, function (rootElRef) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ContentHook, { hookProps: hookProps, content: props.content, defaultContent: props.defaultContent, backupElRef: _this.rootElRef }, function (innerElRef, innerContent) { return props.children(rootElRef, normalizeClassNames(props.classNames, hookProps), innerElRef, innerContent); })); })); + }; + return RenderHook; +}(BaseComponent)); +// TODO: rename to be about function, not default. use in above type +// for forcing rerender of components that use the ContentHook +var CustomContentRenderContext = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createContext)(0); +function ContentHook(props) { + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(CustomContentRenderContext.Consumer, null, function (renderId) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ContentHookInner, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ renderId: renderId }, props))); })); +} +var ContentHookInner = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ContentHookInner, _super); + function ContentHookInner() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.innerElRef = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + return _this; + } + ContentHookInner.prototype.render = function () { + return this.props.children(this.innerElRef, this.renderInnerContent()); + }; + ContentHookInner.prototype.componentDidMount = function () { + this.updateCustomContent(); + }; + ContentHookInner.prototype.componentDidUpdate = function () { + this.updateCustomContent(); + }; + ContentHookInner.prototype.componentWillUnmount = function () { + if (this.customContentInfo && this.customContentInfo.destroy) { + this.customContentInfo.destroy(); + } + }; + ContentHookInner.prototype.renderInnerContent = function () { + var customContentInfo = this.customContentInfo; // only populated if using non-[p]react node(s) + var innerContent = this.getInnerContent(); + var meta = this.getContentMeta(innerContent); + // initial run, or content-type changing? (from vue -> react for example) + if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) { + // clearing old value + if (customContentInfo) { + if (customContentInfo.destroy) { + customContentInfo.destroy(); + } + customContentInfo = this.customContentInfo = null; + } + // assigning new value + if (meta.contentKey) { + customContentInfo = this.customContentInfo = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ contentKey: meta.contentKey, contentVal: innerContent[meta.contentKey] }, meta.buildLifecycleFuncs()); + } + // updating + } + else if (customContentInfo) { + customContentInfo.contentVal = innerContent[meta.contentKey]; + } + return customContentInfo + ? [] // signal that something was specified + : innerContent; // assume a [p]react vdom node. use it + }; + ContentHookInner.prototype.getInnerContent = function () { + var props = this.props; + var innerContent = normalizeContent(props.content, props.hookProps); + if (innerContent === undefined) { // use the default + innerContent = normalizeContent(props.defaultContent, props.hookProps); + } + return innerContent == null ? null : innerContent; // convert undefined to null (better for React) + }; + ContentHookInner.prototype.getContentMeta = function (innerContent) { + var contentTypeHandlers = this.context.pluginHooks.contentTypeHandlers; + var contentKey = ''; + var buildLifecycleFuncs = null; + if (innerContent) { // allowed to be null, for convenience to caller + for (var searchKey in contentTypeHandlers) { + if (innerContent[searchKey] !== undefined) { + contentKey = searchKey; + buildLifecycleFuncs = contentTypeHandlers[searchKey]; + break; + } + } + } + return { contentKey: contentKey, buildLifecycleFuncs: buildLifecycleFuncs }; + }; + ContentHookInner.prototype.updateCustomContent = function () { + if (this.customContentInfo) { // for non-[p]react + this.customContentInfo.render(this.innerElRef.current || this.props.backupElRef.current, // the element to render into + this.customContentInfo.contentVal); + } + }; + return ContentHookInner; +}(BaseComponent)); +var MountHook = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(MountHook, _super); + function MountHook() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.handleRootEl = function (rootEl) { + _this.rootEl = rootEl; + if (_this.props.elRef) { + setRef(_this.props.elRef, rootEl); + } + }; + return _this; + } + MountHook.prototype.render = function () { + return this.props.children(this.handleRootEl); + }; + MountHook.prototype.componentDidMount = function () { + var callback = this.props.didMount; + if (callback) { + callback((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.props.hookProps), { el: this.rootEl })); + } + }; + MountHook.prototype.componentWillUnmount = function () { + var callback = this.props.willUnmount; + if (callback) { + callback((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.props.hookProps), { el: this.rootEl })); + } + }; + return MountHook; +}(BaseComponent)); +function buildClassNameNormalizer() { + var currentGenerator; + var currentHookProps; + var currentClassNames = []; + return function (generator, hookProps) { + if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) { + currentGenerator = generator; + currentHookProps = hookProps; + currentClassNames = normalizeClassNames(generator, hookProps); + } + return currentClassNames; + }; +} +function normalizeClassNames(classNames, hookProps) { + if (typeof classNames === 'function') { + classNames = classNames(hookProps); + } + return parseClassNames(classNames); +} +function normalizeContent(input, hookProps) { + if (typeof input === 'function') { + return input(hookProps, _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement); // give the function the vdom-creation func + } + return input; +} + +var ViewRoot = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ViewRoot, _super); + function ViewRoot() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.normalizeClassNames = buildClassNameNormalizer(); + return _this; + } + ViewRoot.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var options = context.options; + var hookProps = { view: context.viewApi }; + var customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(MountHook, { hookProps: hookProps, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, ["fc-" + props.viewSpec.type + "-view", 'fc-view'].concat(customClassNames)); })); + }; + return ViewRoot; +}(BaseComponent)); + +function parseViewConfigs(inputs) { + return mapHash(inputs, parseViewConfig); +} +function parseViewConfig(input) { + var rawOptions = typeof input === 'function' ? + { component: input } : + input; + var component = rawOptions.component; + if (rawOptions.content) { + component = createViewHookComponent(rawOptions); + // TODO: remove content/classNames/didMount/etc from options? + } + return { + superType: rawOptions.type, + component: component, + rawOptions: rawOptions, + }; +} +function createViewHookComponent(options) { + return function (viewProps) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewContextType.Consumer, null, function (context) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewRoot, { viewSpec: context.viewSpec }, function (viewElRef, viewClassNames) { + var hookProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(RenderHook, { hookProps: hookProps, classNames: options.classNames, content: options.content, didMount: options.didMount, willUnmount: options.willUnmount, elRef: viewElRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: viewClassNames.concat(customClassNames).join(' '), ref: rootElRef }, innerContent)); })); + })); })); }; +} + +function buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) { + var defaultConfigs = parseViewConfigs(defaultInputs); + var overrideConfigs = parseViewConfigs(optionOverrides.views); + var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs); + return mapHash(viewDefs, function (viewDef) { return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults); }); +} +function buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) { + var durationInput = viewDef.overrides.duration || + viewDef.defaults.duration || + dynamicOptionOverrides.duration || + optionOverrides.duration; + var duration = null; + var durationUnit = ''; + var singleUnit = ''; + var singleUnitOverrides = {}; + if (durationInput) { + duration = createDurationCached(durationInput); + if (duration) { // valid? + var denom = greatestDurationDenominator(duration); + durationUnit = denom.unit; + if (denom.value === 1) { + singleUnit = durationUnit; + singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {}; + } + } + } + var queryButtonText = function (optionsSubset) { + var buttonTextMap = optionsSubset.buttonText || {}; + var buttonTextKey = viewDef.defaults.buttonTextKey; + if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) { + return buttonTextMap[buttonTextKey]; + } + if (buttonTextMap[viewDef.type] != null) { + return buttonTextMap[viewDef.type]; + } + if (buttonTextMap[singleUnit] != null) { + return buttonTextMap[singleUnit]; + } + return null; + }; + var queryButtonTitle = function (optionsSubset) { + var buttonHints = optionsSubset.buttonHints || {}; + var buttonKey = viewDef.defaults.buttonTextKey; // use same key as text + if (buttonKey != null && buttonHints[buttonKey] != null) { + return buttonHints[buttonKey]; + } + if (buttonHints[viewDef.type] != null) { + return buttonHints[viewDef.type]; + } + if (buttonHints[singleUnit] != null) { + return buttonHints[singleUnit]; + } + return null; + }; + return { + type: viewDef.type, + component: viewDef.component, + duration: duration, + durationUnit: durationUnit, + singleUnit: singleUnit, + optionDefaults: viewDef.defaults, + optionOverrides: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, singleUnitOverrides), viewDef.overrides), + buttonTextOverride: queryButtonText(dynamicOptionOverrides) || + queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence + viewDef.overrides.buttonText, + buttonTextDefault: queryButtonText(localeDefaults) || + viewDef.defaults.buttonText || + queryButtonText(BASE_OPTION_DEFAULTS) || + viewDef.type, + // not DRY + buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) || + queryButtonTitle(optionOverrides) || + viewDef.overrides.buttonHint, + buttonTitleDefault: queryButtonTitle(localeDefaults) || + viewDef.defaults.buttonHint || + queryButtonTitle(BASE_OPTION_DEFAULTS), + // will eventually fall back to buttonText + }; +} +// hack to get memoization working +var durationInputMap = {}; +function createDurationCached(durationInput) { + var json = JSON.stringify(durationInput); + var res = durationInputMap[json]; + if (res === undefined) { + res = createDuration(durationInput); + durationInputMap[json] = res; + } + return res; +} + +var DateProfileGenerator = /** @class */ (function () { + function DateProfileGenerator(props) { + this.props = props; + this.nowDate = getNow(props.nowInput, props.dateEnv); + this.initHiddenDays(); + } + /* Date Range Computation + ------------------------------------------------------------------------------------------------------------------*/ + // Builds a structure with info about what the dates/ranges will be for the "prev" view. + DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate, forceToValid) { + var dateEnv = this.props.dateEnv; + var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month + currentDateProfile.dateIncrement); + return this.build(prevDate, -1, forceToValid); + }; + // Builds a structure with info about what the dates/ranges will be for the "next" view. + DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate, forceToValid) { + var dateEnv = this.props.dateEnv; + var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month + currentDateProfile.dateIncrement); + return this.build(nextDate, 1, forceToValid); + }; + // Builds a structure holding dates/ranges for rendering around the given date. + // Optional direction param indicates whether the date is being incremented/decremented + // from its previous value. decremented = -1, incremented = 1 (default). + DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) { + if (forceToValid === void 0) { forceToValid = true; } + var props = this.props; + var validRange; + var currentInfo; + var isRangeAllDay; + var renderRange; + var activeRange; + var isValid; + validRange = this.buildValidRange(); + validRange = this.trimHiddenDays(validRange); + if (forceToValid) { + currentDate = constrainMarkerToRange(currentDate, validRange); + } + currentInfo = this.buildCurrentRangeInfo(currentDate, direction); + isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit); + renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay); + renderRange = this.trimHiddenDays(renderRange); + activeRange = renderRange; + if (!props.showNonCurrentDates) { + activeRange = intersectRanges(activeRange, currentInfo.range); + } + activeRange = this.adjustActiveRange(activeRange); + activeRange = intersectRanges(activeRange, validRange); // might return null + // it's invalid if the originally requested date is not contained, + // or if the range is completely outside of the valid range. + isValid = rangesIntersect(currentInfo.range, validRange); + return { + // constraint for where prev/next operations can go and where events can be dragged/resized to. + // an object with optional start and end properties. + validRange: validRange, + // range the view is formally responsible for. + // for example, a month view might have 1st-31st, excluding padded dates + currentRange: currentInfo.range, + // name of largest unit being displayed, like "month" or "week" + currentRangeUnit: currentInfo.unit, + isRangeAllDay: isRangeAllDay, + // dates that display events and accept drag-n-drop + // will be `null` if no dates accept events + activeRange: activeRange, + // date range with a rendered skeleton + // includes not-active days that need some sort of DOM + renderRange: renderRange, + // Duration object that denotes the first visible time of any given day + slotMinTime: props.slotMinTime, + // Duration object that denotes the exclusive visible end time of any given day + slotMaxTime: props.slotMaxTime, + isValid: isValid, + // how far the current date will move for a prev/next operation + dateIncrement: this.buildDateIncrement(currentInfo.duration), + // pass a fallback (might be null) ^ + }; + }; + // Builds an object with optional start/end properties. + // Indicates the minimum/maximum dates to display. + // not responsible for trimming hidden days. + DateProfileGenerator.prototype.buildValidRange = function () { + var input = this.props.validRangeInput; + var simpleInput = typeof input === 'function' + ? input.call(this.props.calendarApi, this.nowDate) + : input; + return this.refineRange(simpleInput) || + { start: null, end: null }; // completely open-ended + }; + // Builds a structure with info about the "current" range, the range that is + // highlighted as being the current month for example. + // See build() for a description of `direction`. + // Guaranteed to have `range` and `unit` properties. `duration` is optional. + DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) { + var props = this.props; + var duration = null; + var unit = null; + var range = null; + var dayCount; + if (props.duration) { + duration = props.duration; + unit = props.durationUnit; + range = this.buildRangeFromDuration(date, direction, duration, unit); + } + else if ((dayCount = this.props.dayCount)) { + unit = 'day'; + range = this.buildRangeFromDayCount(date, direction, dayCount); + } + else if ((range = this.buildCustomVisibleRange(date))) { + unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit; + } + else { + duration = this.getFallbackDuration(); + unit = greatestDurationDenominator(duration).unit; + range = this.buildRangeFromDuration(date, direction, duration, unit); + } + return { duration: duration, unit: unit, range: range }; + }; + DateProfileGenerator.prototype.getFallbackDuration = function () { + return createDuration({ day: 1 }); + }; + // Returns a new activeRange to have time values (un-ambiguate) + // slotMinTime or slotMaxTime causes the range to expand. + DateProfileGenerator.prototype.adjustActiveRange = function (range) { + var _a = this.props, dateEnv = _a.dateEnv, usesMinMaxTime = _a.usesMinMaxTime, slotMinTime = _a.slotMinTime, slotMaxTime = _a.slotMaxTime; + var start = range.start, end = range.end; + if (usesMinMaxTime) { + // expand active range if slotMinTime is negative (why not when positive?) + if (asRoughDays(slotMinTime) < 0) { + start = startOfDay(start); // necessary? + start = dateEnv.add(start, slotMinTime); + } + // expand active range if slotMaxTime is beyond one day (why not when negative?) + if (asRoughDays(slotMaxTime) > 1) { + end = startOfDay(end); // necessary? + end = addDays(end, -1); + end = dateEnv.add(end, slotMaxTime); + } + } + return { start: start, end: end }; + }; + // Builds the "current" range when it is specified as an explicit duration. + // `unit` is the already-computed greatestDurationDenominator unit of duration. + DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) { + var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment; + var start; + var end; + var res; + // compute what the alignment should be + if (!dateAlignment) { + var dateIncrement = this.props.dateIncrement; + if (dateIncrement) { + // use the smaller of the two units + if (asRoughMs(dateIncrement) < asRoughMs(duration)) { + dateAlignment = greatestDurationDenominator(dateIncrement).unit; + } + else { + dateAlignment = unit; + } + } + else { + dateAlignment = unit; + } + } + // if the view displays a single day or smaller + if (asRoughDays(duration) <= 1) { + if (this.isHiddenDay(start)) { + start = this.skipHiddenDays(start, direction); + start = startOfDay(start); + } + } + function computeRes() { + start = dateEnv.startOf(date, dateAlignment); + end = dateEnv.add(start, duration); + res = { start: start, end: end }; + } + computeRes(); + // if range is completely enveloped by hidden days, go past the hidden days + if (!this.trimHiddenDays(res)) { + date = this.skipHiddenDays(date, direction); + computeRes(); + } + return res; + }; + // Builds the "current" range when a dayCount is specified. + DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) { + var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment; + var runningCount = 0; + var start = date; + var end; + if (dateAlignment) { + start = dateEnv.startOf(start, dateAlignment); + } + start = startOfDay(start); + start = this.skipHiddenDays(start, direction); + end = start; + do { + end = addDays(end, 1); + if (!this.isHiddenDay(end)) { + runningCount += 1; + } + } while (runningCount < dayCount); + return { start: start, end: end }; + }; + // Builds a normalized range object for the "visible" range, + // which is a way to define the currentRange and activeRange at the same time. + DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) { + var props = this.props; + var input = props.visibleRangeInput; + var simpleInput = typeof input === 'function' + ? input.call(props.calendarApi, props.dateEnv.toDate(date)) + : input; + var range = this.refineRange(simpleInput); + if (range && (range.start == null || range.end == null)) { + return null; + } + return range; + }; + // Computes the range that will represent the element/cells for *rendering*, + // but which may have voided days/times. + // not responsible for trimming hidden days. + DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { + return currentRange; + }; + // Compute the duration value that should be added/substracted to the current date + // when a prev/next operation happens. + DateProfileGenerator.prototype.buildDateIncrement = function (fallback) { + var dateIncrement = this.props.dateIncrement; + var customAlignment; + if (dateIncrement) { + return dateIncrement; + } + if ((customAlignment = this.props.dateAlignment)) { + return createDuration(1, customAlignment); + } + if (fallback) { + return fallback; + } + return createDuration({ days: 1 }); + }; + DateProfileGenerator.prototype.refineRange = function (rangeInput) { + if (rangeInput) { + var range = parseRange(rangeInput, this.props.dateEnv); + if (range) { + range = computeVisibleDayRange(range); + } + return range; + } + return null; + }; + /* Hidden Days + ------------------------------------------------------------------------------------------------------------------*/ + // Initializes internal variables related to calculating hidden days-of-week + DateProfileGenerator.prototype.initHiddenDays = function () { + var hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden + var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) + var dayCnt = 0; + var i; + if (this.props.weekends === false) { + hiddenDays.push(0, 6); // 0=sunday, 6=saturday + } + for (i = 0; i < 7; i += 1) { + if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) { + dayCnt += 1; + } + } + if (!dayCnt) { + throw new Error('invalid hiddenDays'); // all days were hidden? bad. + } + this.isHiddenDayHash = isHiddenDayHash; + }; + // Remove days from the beginning and end of the range that are computed as hidden. + // If the whole range is trimmed off, returns null + DateProfileGenerator.prototype.trimHiddenDays = function (range) { + var start = range.start, end = range.end; + if (start) { + start = this.skipHiddenDays(start); + } + if (end) { + end = this.skipHiddenDays(end, -1, true); + } + if (start == null || end == null || start < end) { + return { start: start, end: end }; + } + return null; + }; + // Is the current day hidden? + // `day` is a day-of-week index (0-6), or a Date (used for UTC) + DateProfileGenerator.prototype.isHiddenDay = function (day) { + if (day instanceof Date) { + day = day.getUTCDay(); + } + return this.isHiddenDayHash[day]; + }; + // Incrementing the current day until it is no longer a hidden day, returning a copy. + // DOES NOT CONSIDER validRange! + // If the initial value of `date` is not a hidden day, don't do anything. + // Pass `isExclusive` as `true` if you are dealing with an end date. + // `inc` defaults to `1` (increment one day forward each time) + DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) { + if (inc === void 0) { inc = 1; } + if (isExclusive === void 0) { isExclusive = false; } + while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) { + date = addDays(date, inc); + } + return date; + }; + return DateProfileGenerator; +}()); + +function reduceViewType(viewType, action) { + switch (action.type) { + case 'CHANGE_VIEW_TYPE': + viewType = action.viewType; + } + return viewType; +} + +function reduceDynamicOptionOverrides(dynamicOptionOverrides, action) { + var _a; + switch (action.type) { + case 'SET_OPTION': + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, dynamicOptionOverrides), (_a = {}, _a[action.optionName] = action.rawOptionValue, _a)); + default: + return dynamicOptionOverrides; + } +} + +function reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) { + var dp; + switch (action.type) { + case 'CHANGE_VIEW_TYPE': + return dateProfileGenerator.build(action.dateMarker || currentDate); + case 'CHANGE_DATE': + return dateProfileGenerator.build(action.dateMarker); + case 'PREV': + dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate); + if (dp.isValid) { + return dp; + } + break; + case 'NEXT': + dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate); + if (dp.isValid) { + return dp; + } + break; + } + return currentDateProfile; +} + +function initEventSources(calendarOptions, dateProfile, context) { + var activeRange = dateProfile ? dateProfile.activeRange : null; + return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context); +} +function reduceEventSources(eventSources, action, dateProfile, context) { + var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check? + switch (action.type) { + case 'ADD_EVENT_SOURCES': // already parsed + return addSources(eventSources, action.sources, activeRange, context); + case 'REMOVE_EVENT_SOURCE': + return removeSource(eventSources, action.sourceId); + case 'PREV': // TODO: how do we track all actions that affect dateProfile :( + case 'NEXT': + case 'CHANGE_DATE': + case 'CHANGE_VIEW_TYPE': + if (dateProfile) { + return fetchDirtySources(eventSources, activeRange, context); + } + return eventSources; + case 'FETCH_EVENT_SOURCES': + return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type? + arrayToHash(action.sourceIds) : + excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context); + case 'RECEIVE_EVENTS': + case 'RECEIVE_EVENT_ERROR': + return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange); + case 'REMOVE_ALL_EVENT_SOURCES': + return {}; + default: + return eventSources; + } +} +function reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) { + var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check? + return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context); +} +function computeEventSourcesLoading(eventSources) { + for (var sourceId in eventSources) { + if (eventSources[sourceId].isFetching) { + return true; + } + } + return false; +} +function addSources(eventSourceHash, sources, fetchRange, context) { + var hash = {}; + for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) { + var source = sources_1[_i]; + hash[source.sourceId] = source; + } + if (fetchRange) { + hash = fetchDirtySources(hash, fetchRange, context); + } + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventSourceHash), hash); +} +function removeSource(eventSourceHash, sourceId) { + return filterHash(eventSourceHash, function (eventSource) { return eventSource.sourceId !== sourceId; }); +} +function fetchDirtySources(sourceHash, fetchRange, context) { + return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { return isSourceDirty(eventSource, fetchRange, context); }), fetchRange, false, context); +} +function isSourceDirty(eventSource, fetchRange, context) { + if (!doesSourceNeedRange(eventSource, context)) { + return !eventSource.latestFetchId; + } + return !context.options.lazyFetching || + !eventSource.fetchRange || + eventSource.isFetching || // always cancel outdated in-progress fetches + fetchRange.start < eventSource.fetchRange.start || + fetchRange.end > eventSource.fetchRange.end; +} +function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) { + var nextSources = {}; + for (var sourceId in prevSources) { + var source = prevSources[sourceId]; + if (sourceIdHash[sourceId]) { + nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context); + } + else { + nextSources[sourceId] = source; + } + } + return nextSources; +} +function fetchSource(eventSource, fetchRange, isRefetch, context) { + var options = context.options, calendarApi = context.calendarApi; + var sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId]; + var fetchId = guid(); + sourceDef.fetch({ + eventSource: eventSource, + range: fetchRange, + isRefetch: isRefetch, + context: context, + }, function (res) { + var rawEvents = res.rawEvents; + if (options.eventSourceSuccess) { + rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents; + } + if (eventSource.success) { + rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents; + } + context.dispatch({ + type: 'RECEIVE_EVENTS', + sourceId: eventSource.sourceId, + fetchId: fetchId, + fetchRange: fetchRange, + rawEvents: rawEvents, + }); + }, function (error) { + console.warn(error.message, error); + if (options.eventSourceFailure) { + options.eventSourceFailure.call(calendarApi, error); + } + if (eventSource.failure) { + eventSource.failure(error); + } + context.dispatch({ + type: 'RECEIVE_EVENT_ERROR', + sourceId: eventSource.sourceId, + fetchId: fetchId, + fetchRange: fetchRange, + error: error, + }); + }); + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventSource), { isFetching: true, latestFetchId: fetchId }); +} +function receiveResponse(sourceHash, sourceId, fetchId, fetchRange) { + var _a; + var eventSource = sourceHash[sourceId]; + if (eventSource && // not already removed + fetchId === eventSource.latestFetchId) { + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, sourceHash), (_a = {}, _a[sourceId] = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventSource), { isFetching: false, fetchRange: fetchRange }), _a)); + } + return sourceHash; +} +function excludeStaticSources(eventSources, context) { + return filterHash(eventSources, function (eventSource) { return doesSourceNeedRange(eventSource, context); }); +} +function parseInitialSources(rawOptions, context) { + var refiners = buildEventSourceRefiners(context); + var rawSources = [].concat(rawOptions.eventSources || []); + var sources = []; // parsed + if (rawOptions.initialEvents) { + rawSources.unshift(rawOptions.initialEvents); + } + if (rawOptions.events) { + rawSources.unshift(rawOptions.events); + } + for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) { + var rawSource = rawSources_1[_i]; + var source = parseEventSource(rawSource, context, refiners); + if (source) { + sources.push(source); + } + } + return sources; +} +function doesSourceNeedRange(eventSource, context) { + var defs = context.pluginHooks.eventSourceDefs; + return !defs[eventSource.sourceDefId].ignoreRange; +} + +function reduceEventStore(eventStore, action, eventSources, dateProfile, context) { + switch (action.type) { + case 'RECEIVE_EVENTS': // raw + return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context); + case 'ADD_EVENTS': // already parsed, but not expanded + return addEvent(eventStore, action.eventStore, // new ones + dateProfile ? dateProfile.activeRange : null, context); + case 'RESET_EVENTS': + return action.eventStore; + case 'MERGE_EVENTS': // already parsed and expanded + return mergeEventStores(eventStore, action.eventStore); + case 'PREV': // TODO: how do we track all actions that affect dateProfile :( + case 'NEXT': + case 'CHANGE_DATE': + case 'CHANGE_VIEW_TYPE': + if (dateProfile) { + return expandRecurring(eventStore, dateProfile.activeRange, context); + } + return eventStore; + case 'REMOVE_EVENTS': + return excludeSubEventStore(eventStore, action.eventStore); + case 'REMOVE_EVENT_SOURCE': + return excludeEventsBySourceId(eventStore, action.sourceId); + case 'REMOVE_ALL_EVENT_SOURCES': + return filterEventStoreDefs(eventStore, function (eventDef) { return (!eventDef.sourceId // only keep events with no source id + ); }); + case 'REMOVE_ALL_EVENTS': + return createEmptyEventStore(); + default: + return eventStore; + } +} +function receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) { + if (eventSource && // not already removed + fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources + ) { + var subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context); + if (fetchRange) { + subset = expandRecurring(subset, fetchRange, context); + } + return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset); + } + return eventStore; +} +function transformRawEvents(rawEvents, eventSource, context) { + var calEachTransform = context.options.eventDataTransform; + var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null; + if (sourceEachTransform) { + rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform); + } + if (calEachTransform) { + rawEvents = transformEachRawEvent(rawEvents, calEachTransform); + } + return rawEvents; +} +function transformEachRawEvent(rawEvents, func) { + var refinedEvents; + if (!func) { + refinedEvents = rawEvents; + } + else { + refinedEvents = []; + for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) { + var rawEvent = rawEvents_1[_i]; + var refinedEvent = func(rawEvent); + if (refinedEvent) { + refinedEvents.push(refinedEvent); + } + else if (refinedEvent == null) { + refinedEvents.push(rawEvent); + } // if a different falsy value, do nothing + } + } + return refinedEvents; +} +function addEvent(eventStore, subset, expandRange, context) { + if (expandRange) { + subset = expandRecurring(subset, expandRange, context); + } + return mergeEventStores(eventStore, subset); +} +function rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) { + var defs = eventStore.defs; + var instances = mapHash(eventStore.instances, function (instance) { + var def = defs[instance.defId]; + if (def.allDay || def.recurringDef) { + return instance; // isn't dependent on timezone + } + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, instance), { range: { + start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)), + end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)), + }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo }); + }); + return { defs: defs, instances: instances }; +} +function excludeEventsBySourceId(eventStore, sourceId) { + return filterEventStoreDefs(eventStore, function (eventDef) { return eventDef.sourceId !== sourceId; }); +} +// QUESTION: why not just return instances? do a general object-property-exclusion util +function excludeInstances(eventStore, removals) { + return { + defs: eventStore.defs, + instances: filterHash(eventStore.instances, function (instance) { return !removals[instance.instanceId]; }), + }; +} + +function reduceDateSelection(currentSelection, action) { + switch (action.type) { + case 'UNSELECT_DATES': + return null; + case 'SELECT_DATES': + return action.selection; + default: + return currentSelection; + } +} + +function reduceSelectedEvent(currentInstanceId, action) { + switch (action.type) { + case 'UNSELECT_EVENT': + return ''; + case 'SELECT_EVENT': + return action.eventInstanceId; + default: + return currentInstanceId; + } +} + +function reduceEventDrag(currentDrag, action) { + var newDrag; + switch (action.type) { + case 'UNSET_EVENT_DRAG': + return null; + case 'SET_EVENT_DRAG': + newDrag = action.state; + return { + affectedEvents: newDrag.affectedEvents, + mutatedEvents: newDrag.mutatedEvents, + isEvent: newDrag.isEvent, + }; + default: + return currentDrag; + } +} + +function reduceEventResize(currentResize, action) { + var newResize; + switch (action.type) { + case 'UNSET_EVENT_RESIZE': + return null; + case 'SET_EVENT_RESIZE': + newResize = action.state; + return { + affectedEvents: newResize.affectedEvents, + mutatedEvents: newResize.mutatedEvents, + isEvent: newResize.isEvent, + }; + default: + return currentResize; + } +} + +function parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) { + var header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null; + var footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null; + return { header: header, footer: footer }; +} +function parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) { + var sectionWidgets = {}; + var viewsWithButtons = []; + var hasTitle = false; + for (var sectionName in sectionStrHash) { + var sectionStr = sectionStrHash[sectionName]; + var sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi); + sectionWidgets[sectionName] = sectionRes.widgets; + viewsWithButtons.push.apply(viewsWithButtons, sectionRes.viewsWithButtons); + hasTitle = hasTitle || sectionRes.hasTitle; + } + return { sectionWidgets: sectionWidgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle }; +} +/* +BAD: querying icons and text here. should be done at render time +*/ +function parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined +calendarOptionOverrides, // overrides only!, unrefined :( +theme, viewSpecs, calendarApi) { + var isRtl = calendarOptions.direction === 'rtl'; + var calendarCustomButtons = calendarOptions.customButtons || {}; + var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {}; + var calendarButtonText = calendarOptions.buttonText || {}; + var calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {}; + var calendarButtonHints = calendarOptions.buttonHints || {}; + var sectionSubstrs = sectionStr ? sectionStr.split(' ') : []; + var viewsWithButtons = []; + var hasTitle = false; + var widgets = sectionSubstrs.map(function (buttonGroupStr) { return (buttonGroupStr.split(',').map(function (buttonName) { + if (buttonName === 'title') { + hasTitle = true; + return { buttonName: buttonName }; + } + var customButtonProps; + var viewSpec; + var buttonClick; + var buttonIcon; // only one of these will be set + var buttonText; // " + var buttonHint; + // ^ for the title="" attribute, for accessibility + if ((customButtonProps = calendarCustomButtons[buttonName])) { + buttonClick = function (ev) { + if (customButtonProps.click) { + customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context? + } + }; + (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || + (buttonIcon = theme.getIconClass(buttonName, isRtl)) || + (buttonText = customButtonProps.text); + buttonHint = customButtonProps.hint || customButtonProps.text; + } + else if ((viewSpec = viewSpecs[buttonName])) { + viewsWithButtons.push(buttonName); + buttonClick = function () { + calendarApi.changeView(buttonName); + }; + (buttonText = viewSpec.buttonTextOverride) || + (buttonIcon = theme.getIconClass(buttonName, isRtl)) || + (buttonText = viewSpec.buttonTextDefault); + var textFallback = viewSpec.buttonTextOverride || + viewSpec.buttonTextDefault; + buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride || + viewSpec.buttonTitleDefault || + calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName + textFallback); + } + else if (calendarApi[buttonName]) { // a calendarApi method + buttonClick = function () { + calendarApi[buttonName](); + }; + (buttonText = calendarButtonTextOverrides[buttonName]) || + (buttonIcon = theme.getIconClass(buttonName, isRtl)) || + (buttonText = calendarButtonText[buttonName]); // everything else is considered default + if (buttonName === 'prevYear' || buttonName === 'nextYear') { + var prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next'; + buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] || + calendarButtonHints[prevOrNext], [ + calendarButtonText.year || 'year', + 'year', + ], calendarButtonText[buttonName]); + } + else { + buttonHint = function (navUnit) { return formatWithOrdinals(calendarButtonHintOverrides[buttonName] || + calendarButtonHints[buttonName], [ + calendarButtonText[navUnit] || navUnit, + navUnit, + ], calendarButtonText[buttonName]); }; + } + } + return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText, buttonHint: buttonHint }; + })); }); + return { widgets: widgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle }; +} + +var eventSourceDef$2 = { + ignoreRange: true, + parseMeta: function (refined) { + if (Array.isArray(refined.events)) { + return refined.events; + } + return null; + }, + fetch: function (arg, success) { + success({ + rawEvents: arg.eventSource.meta, + }); + }, +}; +var arrayEventSourcePlugin = createPlugin({ + eventSourceDefs: [eventSourceDef$2], +}); + +var eventSourceDef$1 = { + parseMeta: function (refined) { + if (typeof refined.events === 'function') { + return refined.events; + } + return null; + }, + fetch: function (arg, success, failure) { + var dateEnv = arg.context.dateEnv; + var func = arg.eventSource.meta; + unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents) { + success({ rawEvents: rawEvents }); // needs an object response + }, failure); + }, +}; +var funcEventSourcePlugin = createPlugin({ + eventSourceDefs: [eventSourceDef$1], +}); + +function requestJson(method, url, params, successCallback, failureCallback) { + method = method.toUpperCase(); + var body = null; + if (method === 'GET') { + url = injectQueryStringParams(url, params); + } + else { + body = encodeParams(params); + } + var xhr = new XMLHttpRequest(); + xhr.open(method, url, true); + if (method !== 'GET') { + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } + xhr.onload = function () { + if (xhr.status >= 200 && xhr.status < 400) { + var parsed = false; + var res = void 0; + try { + res = JSON.parse(xhr.responseText); + parsed = true; + } + catch (err) { + // will handle parsed=false + } + if (parsed) { + successCallback(res, xhr); + } + else { + failureCallback('Failure parsing JSON', xhr); + } + } + else { + failureCallback('Request failed', xhr); + } + }; + xhr.onerror = function () { + failureCallback('Request failed', xhr); + }; + xhr.send(body); +} +function injectQueryStringParams(url, params) { + return url + + (url.indexOf('?') === -1 ? '?' : '&') + + encodeParams(params); +} +function encodeParams(params) { + var parts = []; + for (var key in params) { + parts.push(encodeURIComponent(key) + "=" + encodeURIComponent(params[key])); + } + return parts.join('&'); +} + +var JSON_FEED_EVENT_SOURCE_REFINERS = { + method: String, + extraParams: identity, + startParam: String, + endParam: String, + timeZoneParam: String, +}; + +var eventSourceDef = { + parseMeta: function (refined) { + if (refined.url && (refined.format === 'json' || !refined.format)) { + return { + url: refined.url, + format: 'json', + method: (refined.method || 'GET').toUpperCase(), + extraParams: refined.extraParams, + startParam: refined.startParam, + endParam: refined.endParam, + timeZoneParam: refined.timeZoneParam, + }; + } + return null; + }, + fetch: function (arg, success, failure) { + var meta = arg.eventSource.meta; + var requestParams = buildRequestParams(meta, arg.range, arg.context); + requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) { + success({ rawEvents: rawEvents, xhr: xhr }); + }, function (errorMessage, xhr) { + failure({ message: errorMessage, xhr: xhr }); + }); + }, +}; +var jsonFeedEventSourcePlugin = createPlugin({ + eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS, + eventSourceDefs: [eventSourceDef], +}); +function buildRequestParams(meta, range, context) { + var dateEnv = context.dateEnv, options = context.options; + var startParam; + var endParam; + var timeZoneParam; + var customRequestParams; + var params = {}; + startParam = meta.startParam; + if (startParam == null) { + startParam = options.startParam; + } + endParam = meta.endParam; + if (endParam == null) { + endParam = options.endParam; + } + timeZoneParam = meta.timeZoneParam; + if (timeZoneParam == null) { + timeZoneParam = options.timeZoneParam; + } + // retrieve any outbound GET/POST data from the options + if (typeof meta.extraParams === 'function') { + // supplied as a function that returns a key/value object + customRequestParams = meta.extraParams(); + } + else { + // probably supplied as a straight key/value object + customRequestParams = meta.extraParams || {}; + } + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(params, customRequestParams); + params[startParam] = dateEnv.formatIso(range.start); + params[endParam] = dateEnv.formatIso(range.end); + if (dateEnv.timeZone !== 'local') { + params[timeZoneParam] = dateEnv.timeZone; + } + return params; +} + +var SIMPLE_RECURRING_REFINERS = { + daysOfWeek: identity, + startTime: createDuration, + endTime: createDuration, + duration: createDuration, + startRecur: identity, + endRecur: identity, +}; + +var recurring = { + parse: function (refined, dateEnv) { + if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) { + var recurringData = { + daysOfWeek: refined.daysOfWeek || null, + startTime: refined.startTime || null, + endTime: refined.endTime || null, + startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null, + endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null, + }; + var duration = void 0; + if (refined.duration) { + duration = refined.duration; + } + if (!duration && refined.startTime && refined.endTime) { + duration = subtractDurations(refined.endTime, refined.startTime); + } + return { + allDayGuess: Boolean(!refined.startTime && !refined.endTime), + duration: duration, + typeData: recurringData, // doesn't need endTime anymore but oh well + }; + } + return null; + }, + expand: function (typeData, framingRange, dateEnv) { + var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur }); + if (clippedFramingRange) { + return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv); + } + return []; + }, +}; +var simpleRecurringEventsPlugin = createPlugin({ + recurringTypes: [recurring], + eventRefiners: SIMPLE_RECURRING_REFINERS, +}); +function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) { + var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null; + var dayMarker = startOfDay(framingRange.start); + var endMarker = framingRange.end; + var instanceStarts = []; + while (dayMarker < endMarker) { + var instanceStart + // if everyday, or this particular day-of-week + = void 0; + // if everyday, or this particular day-of-week + if (!dowHash || dowHash[dayMarker.getUTCDay()]) { + if (startTime) { + instanceStart = dateEnv.add(dayMarker, startTime); + } + else { + instanceStart = dayMarker; + } + instanceStarts.push(instanceStart); + } + dayMarker = addDays(dayMarker, 1); + } + return instanceStarts; +} + +var changeHandlerPlugin = createPlugin({ + optionChangeHandlers: { + events: function (events, context) { + handleEventSources([events], context); + }, + eventSources: handleEventSources, + }, +}); +/* +BUG: if `event` was supplied, all previously-given `eventSources` will be wiped out +*/ +function handleEventSources(inputs, context) { + var unfoundSources = hashValuesToArray(context.getCurrentData().eventSources); + var newInputs = []; + for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) { + var input = inputs_1[_i]; + var inputFound = false; + for (var i = 0; i < unfoundSources.length; i += 1) { + if (unfoundSources[i]._raw === input) { + unfoundSources.splice(i, 1); // delete + inputFound = true; + break; + } + } + if (!inputFound) { + newInputs.push(input); + } + } + for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) { + var unfoundSource = unfoundSources_1[_a]; + context.dispatch({ + type: 'REMOVE_EVENT_SOURCE', + sourceId: unfoundSource.sourceId, + }); + } + for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) { + var newInput = newInputs_1[_b]; + context.calendarApi.addEventSource(newInput); + } +} + +function handleDateProfile(dateProfile, context) { + context.emitter.trigger('datesSet', (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi })); +} + +function handleEventStore(eventStore, context) { + var emitter = context.emitter; + if (emitter.hasHandlers('eventsSet')) { + emitter.trigger('eventsSet', buildEventApis(eventStore, context)); + } +} + +/* +this array is exposed on the root namespace so that UMD plugins can add to it. +see the rollup-bundles script. +*/ +var globalPlugins = [ + arrayEventSourcePlugin, + funcEventSourcePlugin, + jsonFeedEventSourcePlugin, + simpleRecurringEventsPlugin, + changeHandlerPlugin, + createPlugin({ + isLoadingFuncs: [ + function (state) { return computeEventSourcesLoading(state.eventSources); }, + ], + contentTypeHandlers: { + html: buildHtmlRenderer, + domNodes: buildDomNodeRenderer, + }, + propSetHandlers: { + dateProfile: handleDateProfile, + eventStore: handleEventStore, + }, + }), +]; +function buildHtmlRenderer() { + var currentEl = null; + var currentHtml = ''; + function render(el, html) { + if (el !== currentEl || html !== currentHtml) { + el.innerHTML = html; + } + currentEl = el; + currentHtml = html; + } + function destroy() { + currentEl.innerHTML = ''; + currentEl = null; + currentHtml = ''; + } + return { render: render, destroy: destroy }; +} +function buildDomNodeRenderer() { + var currentEl = null; + var currentDomNodes = []; + function render(el, domNodes) { + var newDomNodes = Array.prototype.slice.call(domNodes); + if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) { + // append first, remove second (for scroll resetting) + for (var _i = 0, newDomNodes_1 = newDomNodes; _i < newDomNodes_1.length; _i++) { + var newNode = newDomNodes_1[_i]; + el.appendChild(newNode); + } + destroy(); + } + currentEl = el; + currentDomNodes = newDomNodes; + } + function destroy() { + currentDomNodes.forEach(removeElement); + currentDomNodes = []; + currentEl = null; + } + return { render: render, destroy: destroy }; +} + +var DelayedRunner = /** @class */ (function () { + function DelayedRunner(drainedOption) { + this.drainedOption = drainedOption; + this.isRunning = false; + this.isDirty = false; + this.pauseDepths = {}; + this.timeoutId = 0; + } + DelayedRunner.prototype.request = function (delay) { + this.isDirty = true; + if (!this.isPaused()) { + this.clearTimeout(); + if (delay == null) { + this.tryDrain(); + } + else { + this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce + this.tryDrain.bind(this), delay); + } + } + }; + DelayedRunner.prototype.pause = function (scope) { + if (scope === void 0) { scope = ''; } + var pauseDepths = this.pauseDepths; + pauseDepths[scope] = (pauseDepths[scope] || 0) + 1; + this.clearTimeout(); + }; + DelayedRunner.prototype.resume = function (scope, force) { + if (scope === void 0) { scope = ''; } + var pauseDepths = this.pauseDepths; + if (scope in pauseDepths) { + if (force) { + delete pauseDepths[scope]; + } + else { + pauseDepths[scope] -= 1; + var depth = pauseDepths[scope]; + if (depth <= 0) { + delete pauseDepths[scope]; + } + } + this.tryDrain(); + } + }; + DelayedRunner.prototype.isPaused = function () { + return Object.keys(this.pauseDepths).length; + }; + DelayedRunner.prototype.tryDrain = function () { + if (!this.isRunning && !this.isPaused()) { + this.isRunning = true; + while (this.isDirty) { + this.isDirty = false; + this.drained(); // might set isDirty to true again + } + this.isRunning = false; + } + }; + DelayedRunner.prototype.clear = function () { + this.clearTimeout(); + this.isDirty = false; + this.pauseDepths = {}; + }; + DelayedRunner.prototype.clearTimeout = function () { + if (this.timeoutId) { + clearTimeout(this.timeoutId); + this.timeoutId = 0; + } + }; + DelayedRunner.prototype.drained = function () { + if (this.drainedOption) { + this.drainedOption(); + } + }; + return DelayedRunner; +}()); + +var TaskRunner = /** @class */ (function () { + function TaskRunner(runTaskOption, drainedOption) { + this.runTaskOption = runTaskOption; + this.drainedOption = drainedOption; + this.queue = []; + this.delayedRunner = new DelayedRunner(this.drain.bind(this)); + } + TaskRunner.prototype.request = function (task, delay) { + this.queue.push(task); + this.delayedRunner.request(delay); + }; + TaskRunner.prototype.pause = function (scope) { + this.delayedRunner.pause(scope); + }; + TaskRunner.prototype.resume = function (scope, force) { + this.delayedRunner.resume(scope, force); + }; + TaskRunner.prototype.drain = function () { + var queue = this.queue; + while (queue.length) { + var completedTasks = []; + var task = void 0; + while ((task = queue.shift())) { + this.runTask(task); + completedTasks.push(task); + } + this.drained(completedTasks); + } // keep going, in case new tasks were added in the drained handler + }; + TaskRunner.prototype.runTask = function (task) { + if (this.runTaskOption) { + this.runTaskOption(task); + } + }; + TaskRunner.prototype.drained = function (completedTasks) { + if (this.drainedOption) { + this.drainedOption(completedTasks); + } + }; + return TaskRunner; +}()); + +// Computes what the title at the top of the calendarApi should be for this view +function buildTitle(dateProfile, viewOptions, dateEnv) { + var range; + // for views that span a large unit of time, show the proper interval, ignoring stray days before and after + if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) { + range = dateProfile.currentRange; + } + else { // for day units or smaller, use the actual day range + range = dateProfile.activeRange; + } + return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), { + isEndExclusive: dateProfile.isRangeAllDay, + defaultSeparator: viewOptions.titleRangeSeparator, + }); +} +// Generates the format string that should be used to generate the title for the current date range. +// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`. +function buildTitleFormat(dateProfile) { + var currentRangeUnit = dateProfile.currentRangeUnit; + if (currentRangeUnit === 'year') { + return { year: 'numeric' }; + } + if (currentRangeUnit === 'month') { + return { year: 'numeric', month: 'long' }; // like "September 2014" + } + var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end); + if (days !== null && days > 1) { + // multi-day range. shorter, like "Sep 9 - 10 2014" + return { year: 'numeric', month: 'short', day: 'numeric' }; + } + // one day. longer, like "September 9 2014" + return { year: 'numeric', month: 'long', day: 'numeric' }; +} + +// in future refactor, do the redux-style function(state=initial) for initial-state +// also, whatever is happening in constructor, have it happen in action queue too +var CalendarDataManager = /** @class */ (function () { + function CalendarDataManager(props) { + var _this = this; + this.computeOptionsData = memoize(this._computeOptionsData); + this.computeCurrentViewData = memoize(this._computeCurrentViewData); + this.organizeRawLocales = memoize(organizeRawLocales); + this.buildLocale = memoize(buildLocale); + this.buildPluginHooks = buildBuildPluginHooks(); + this.buildDateEnv = memoize(buildDateEnv); + this.buildTheme = memoize(buildTheme); + this.parseToolbars = memoize(parseToolbars); + this.buildViewSpecs = memoize(buildViewSpecs); + this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator); + this.buildViewApi = memoize(buildViewApi); + this.buildViewUiProps = memoizeObjArg(buildViewUiProps); + this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual); + this.buildEventUiBases = memoize(buildEventUiBases); + this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours); + this.buildTitle = memoize(buildTitle); + this.emitter = new Emitter(); + this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this)); + this.currentCalendarOptionsInput = {}; + this.currentCalendarOptionsRefined = {}; + this.currentViewOptionsInput = {}; + this.currentViewOptionsRefined = {}; + this.currentCalendarOptionsRefiners = {}; + this.getCurrentData = function () { return _this.data; }; + this.dispatch = function (action) { + _this.actionRunner.request(action); // protects against recursive calls to _handleAction + }; + this.props = props; + this.actionRunner.pause(); + var dynamicOptionOverrides = {}; + var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi); + var currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView; + var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides); + // wire things up + // TODO: not DRY + props.calendarApi.currentDataManager = this; + this.emitter.setThisContext(props.calendarApi); + this.emitter.setOptions(currentViewData.options); + var currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv); + var dateProfile = currentViewData.dateProfileGenerator.build(currentDate); + if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) { + currentDate = dateProfile.currentRange.start; + } + var calendarContext = { + dateEnv: optionsData.dateEnv, + options: optionsData.calendarOptions, + pluginHooks: optionsData.pluginHooks, + calendarApi: props.calendarApi, + dispatch: this.dispatch, + emitter: this.emitter, + getCurrentData: this.getCurrentData, + }; + // needs to be after setThisContext + for (var _i = 0, _a = optionsData.pluginHooks.contextInit; _i < _a.length; _i++) { + var callback = _a[_i]; + callback(calendarContext); + } + // NOT DRY + var eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext); + var initialState = { + dynamicOptionOverrides: dynamicOptionOverrides, + currentViewType: currentViewType, + currentDate: currentDate, + dateProfile: dateProfile, + businessHours: this.parseContextBusinessHours(calendarContext), + eventSources: eventSources, + eventUiBases: {}, + eventStore: createEmptyEventStore(), + renderableEventStore: createEmptyEventStore(), + dateSelection: null, + eventSelection: '', + eventDrag: null, + eventResize: null, + selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig, + }; + var contextAndState = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, calendarContext), initialState); + for (var _b = 0, _c = optionsData.pluginHooks.reducers; _b < _c.length; _b++) { + var reducer = _c[_b]; + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(initialState, reducer(null, null, contextAndState)); + } + if (computeIsLoading(initialState, calendarContext)) { + this.emitter.trigger('loading', true); // NOT DRY + } + this.state = initialState; + this.updateData(); + this.actionRunner.resume(); + } + CalendarDataManager.prototype.resetOptions = function (optionOverrides, append) { + var props = this.props; + props.optionOverrides = append + ? (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, props.optionOverrides), optionOverrides) : optionOverrides; + this.actionRunner.request({ + type: 'NOTHING', + }); + }; + CalendarDataManager.prototype._handleAction = function (action) { + var _a = this, props = _a.props, state = _a.state, emitter = _a.emitter; + var dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action); + var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi); + var currentViewType = reduceViewType(state.currentViewType, action); + var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides); + // wire things up + // TODO: not DRY + props.calendarApi.currentDataManager = this; + emitter.setThisContext(props.calendarApi); + emitter.setOptions(currentViewData.options); + var calendarContext = { + dateEnv: optionsData.dateEnv, + options: optionsData.calendarOptions, + pluginHooks: optionsData.pluginHooks, + calendarApi: props.calendarApi, + dispatch: this.dispatch, + emitter: emitter, + getCurrentData: this.getCurrentData, + }; + var currentDate = state.currentDate, dateProfile = state.dateProfile; + if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack + dateProfile = currentViewData.dateProfileGenerator.build(currentDate); + } + currentDate = reduceCurrentDate(currentDate, action); + dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator); + if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator + action.type === 'NEXT' || // " + !rangeContainsMarker(dateProfile.currentRange, currentDate)) { + currentDate = dateProfile.currentRange.start; + } + var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext); + var eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext); + var isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading + var renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ? + (state.renderableEventStore || eventStore) : // try from previous state + eventStore; + var _b = this.buildViewUiProps(calendarContext), eventUiSingleBase = _b.eventUiSingleBase, selectionConfig = _b.selectionConfig; // will memoize obj + var eventUiBySource = this.buildEventUiBySource(eventSources); + var eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource); + var newState = { + dynamicOptionOverrides: dynamicOptionOverrides, + currentViewType: currentViewType, + currentDate: currentDate, + dateProfile: dateProfile, + eventSources: eventSources, + eventStore: eventStore, + renderableEventStore: renderableEventStore, + selectionConfig: selectionConfig, + eventUiBases: eventUiBases, + businessHours: this.parseContextBusinessHours(calendarContext), + dateSelection: reduceDateSelection(state.dateSelection, action), + eventSelection: reduceSelectedEvent(state.eventSelection, action), + eventDrag: reduceEventDrag(state.eventDrag, action), + eventResize: reduceEventResize(state.eventResize, action), + }; + var contextAndState = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, calendarContext), newState); + for (var _i = 0, _c = optionsData.pluginHooks.reducers; _i < _c.length; _i++) { + var reducer = _c[_i]; + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value + } + var wasLoading = computeIsLoading(state, calendarContext); + var isLoading = computeIsLoading(newState, calendarContext); + // TODO: use propSetHandlers in plugin system + if (!wasLoading && isLoading) { + emitter.trigger('loading', true); + } + else if (wasLoading && !isLoading) { + emitter.trigger('loading', false); + } + this.state = newState; + if (props.onAction) { + props.onAction(action); + } + }; + CalendarDataManager.prototype.updateData = function () { + var _a = this, props = _a.props, state = _a.state; + var oldData = this.data; + var optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi); + var currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides); + var data = this.data = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state); + var changeHandlers = optionsData.pluginHooks.optionChangeHandlers; + var oldCalendarOptions = oldData && oldData.calendarOptions; + var newCalendarOptions = optionsData.calendarOptions; + if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) { + if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) { + // hack + state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data); + state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv); + } + for (var optionName in changeHandlers) { + if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) { + changeHandlers[optionName](newCalendarOptions[optionName], data); + } + } + } + if (props.onData) { + props.onData(data); + } + }; + CalendarDataManager.prototype._computeOptionsData = function (optionOverrides, dynamicOptionOverrides, calendarApi) { + // TODO: blacklist options that are handled by optionChangeHandlers + var _a = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, pluginHooks = _a.pluginHooks, localeDefaults = _a.localeDefaults, availableLocaleData = _a.availableLocaleData, extra = _a.extra; + warnUnknownOptions(extra); + var dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator); + var viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults); + var theme = this.buildTheme(refinedOptions, pluginHooks); + var toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi); + return { + calendarOptions: refinedOptions, + pluginHooks: pluginHooks, + dateEnv: dateEnv, + viewSpecs: viewSpecs, + theme: theme, + toolbarConfig: toolbarConfig, + localeDefaults: localeDefaults, + availableRawLocales: availableLocaleData.map, + }; + }; + // always called from behind a memoizer + CalendarDataManager.prototype.processRawCalendarOptions = function (optionOverrides, dynamicOptionOverrides) { + var _a = mergeRawOptions([ + BASE_OPTION_DEFAULTS, + optionOverrides, + dynamicOptionOverrides, + ]), locales = _a.locales, locale = _a.locale; + var availableLocaleData = this.organizeRawLocales(locales); + var availableRawLocales = availableLocaleData.map; + var localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options; + var pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins); + var refiners = this.currentCalendarOptionsRefiners = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners); + var extra = {}; + var raw = mergeRawOptions([ + BASE_OPTION_DEFAULTS, + localeDefaults, + optionOverrides, + dynamicOptionOverrides, + ]); + var refined = {}; + var currentRaw = this.currentCalendarOptionsInput; + var currentRefined = this.currentCalendarOptionsRefined; + var anyChanges = false; + for (var optionName in raw) { + if (optionName !== 'plugins') { // because plugins is special-cased + if (raw[optionName] === currentRaw[optionName] || + (COMPLEX_OPTION_COMPARATORS[optionName] && + (optionName in currentRaw) && + COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) { + refined[optionName] = currentRefined[optionName]; + } + else if (refiners[optionName]) { + refined[optionName] = refiners[optionName](raw[optionName]); + anyChanges = true; + } + else { + extra[optionName] = currentRaw[optionName]; + } + } + } + if (anyChanges) { + this.currentCalendarOptionsInput = raw; + this.currentCalendarOptionsRefined = refined; + } + return { + rawOptions: this.currentCalendarOptionsInput, + refinedOptions: this.currentCalendarOptionsRefined, + pluginHooks: pluginHooks, + availableLocaleData: availableLocaleData, + localeDefaults: localeDefaults, + extra: extra, + }; + }; + CalendarDataManager.prototype._computeCurrentViewData = function (viewType, optionsData, optionOverrides, dynamicOptionOverrides) { + var viewSpec = optionsData.viewSpecs[viewType]; + if (!viewSpec) { + throw new Error("viewType \"" + viewType + "\" is not available. Please make sure you've loaded all neccessary plugins"); + } + var _a = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, extra = _a.extra; + warnUnknownOptions(extra); + var dateProfileGenerator = this.buildDateProfileGenerator({ + dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass, + duration: viewSpec.duration, + durationUnit: viewSpec.durationUnit, + usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime, + dateEnv: optionsData.dateEnv, + calendarApi: this.props.calendarApi, + slotMinTime: refinedOptions.slotMinTime, + slotMaxTime: refinedOptions.slotMaxTime, + showNonCurrentDates: refinedOptions.showNonCurrentDates, + dayCount: refinedOptions.dayCount, + dateAlignment: refinedOptions.dateAlignment, + dateIncrement: refinedOptions.dateIncrement, + hiddenDays: refinedOptions.hiddenDays, + weekends: refinedOptions.weekends, + nowInput: refinedOptions.now, + validRangeInput: refinedOptions.validRange, + visibleRangeInput: refinedOptions.visibleRange, + monthMode: refinedOptions.monthMode, + fixedWeekCount: refinedOptions.fixedWeekCount, + }); + var viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv); + return { viewSpec: viewSpec, options: refinedOptions, dateProfileGenerator: dateProfileGenerator, viewApi: viewApi }; + }; + CalendarDataManager.prototype.processRawViewOptions = function (viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) { + var raw = mergeRawOptions([ + BASE_OPTION_DEFAULTS, + viewSpec.optionDefaults, + localeDefaults, + optionOverrides, + viewSpec.optionOverrides, + dynamicOptionOverrides, + ]); + var refiners = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners); + var refined = {}; + var currentRaw = this.currentViewOptionsInput; + var currentRefined = this.currentViewOptionsRefined; + var anyChanges = false; + var extra = {}; + for (var optionName in raw) { + if (raw[optionName] === currentRaw[optionName]) { + refined[optionName] = currentRefined[optionName]; + } + else { + if (raw[optionName] === this.currentCalendarOptionsInput[optionName]) { + if (optionName in this.currentCalendarOptionsRefined) { // might be an "extra" prop + refined[optionName] = this.currentCalendarOptionsRefined[optionName]; + } + } + else if (refiners[optionName]) { + refined[optionName] = refiners[optionName](raw[optionName]); + } + else { + extra[optionName] = raw[optionName]; + } + anyChanges = true; + } + } + if (anyChanges) { + this.currentViewOptionsInput = raw; + this.currentViewOptionsRefined = refined; + } + return { + rawOptions: this.currentViewOptionsInput, + refinedOptions: this.currentViewOptionsRefined, + extra: extra, + }; + }; + return CalendarDataManager; +}()); +function buildDateEnv(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) { + var locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map); + return new DateEnv({ + calendarSystem: 'gregory', + timeZone: timeZone, + namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl, + locale: locale, + weekNumberCalculation: weekNumberCalculation, + firstDay: firstDay, + weekText: weekText, + cmdFormatter: pluginHooks.cmdFormatter, + defaultSeparator: defaultSeparator, + }); +} +function buildTheme(options, pluginHooks) { + var ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme; + return new ThemeClass(options); +} +function buildDateProfileGenerator(props) { + var DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator; + return new DateProfileGeneratorClass(props); +} +function buildViewApi(type, getCurrentData, dateEnv) { + return new ViewApi(type, getCurrentData, dateEnv); +} +function buildEventUiBySource(eventSources) { + return mapHash(eventSources, function (eventSource) { return eventSource.ui; }); +} +function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) { + var eventUiBases = { '': eventUiSingleBase }; + for (var defId in eventDefs) { + var def = eventDefs[defId]; + if (def.sourceId && eventUiBySource[def.sourceId]) { + eventUiBases[defId] = eventUiBySource[def.sourceId]; + } + } + return eventUiBases; +} +function buildViewUiProps(calendarContext) { + var options = calendarContext.options; + return { + eventUiSingleBase: createEventUi({ + display: options.eventDisplay, + editable: options.editable, + startEditable: options.eventStartEditable, + durationEditable: options.eventDurationEditable, + constraint: options.eventConstraint, + overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined, + allow: options.eventAllow, + backgroundColor: options.eventBackgroundColor, + borderColor: options.eventBorderColor, + textColor: options.eventTextColor, + color: options.eventColor, + // classNames: options.eventClassNames // render hook will handle this + }, calendarContext), + selectionConfig: createEventUi({ + constraint: options.selectConstraint, + overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined, + allow: options.selectAllow, + }, calendarContext), + }; +} +function computeIsLoading(state, context) { + for (var _i = 0, _a = context.pluginHooks.isLoadingFuncs; _i < _a.length; _i++) { + var isLoadingFunc = _a[_i]; + if (isLoadingFunc(state)) { + return true; + } + } + return false; +} +function parseContextBusinessHours(calendarContext) { + return parseBusinessHours(calendarContext.options.businessHours, calendarContext); +} +function warnUnknownOptions(options, viewName) { + for (var optionName in options) { + console.warn("Unknown option '" + optionName + "'" + + (viewName ? " for view '" + viewName + "'" : '')); + } +} + +// TODO: move this to react plugin? +var CalendarDataProvider = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(CalendarDataProvider, _super); + function CalendarDataProvider(props) { + var _this = _super.call(this, props) || this; + _this.handleData = function (data) { + if (!_this.dataManager) { // still within initial run, before assignment in constructor + // eslint-disable-next-line react/no-direct-mutation-state + _this.state = data; // can't use setState yet + } + else { + _this.setState(data); + } + }; + _this.dataManager = new CalendarDataManager({ + optionOverrides: props.optionOverrides, + calendarApi: props.calendarApi, + onData: _this.handleData, + }); + return _this; + } + CalendarDataProvider.prototype.render = function () { + return this.props.children(this.state); + }; + CalendarDataProvider.prototype.componentDidUpdate = function (prevProps) { + var newOptionOverrides = this.props.optionOverrides; + if (newOptionOverrides !== prevProps.optionOverrides) { // prevent recursive handleData + this.dataManager.resetOptions(newOptionOverrides); + } + }; + return CalendarDataProvider; +}(_vdom_js__WEBPACK_IMPORTED_MODULE_1__.Component)); + +// HELPERS +/* +if nextDayThreshold is specified, slicing is done in an all-day fashion. +you can get nextDayThreshold from context.nextDayThreshold +*/ +function sliceEvents(props, allDay) { + return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg; +} + +var NamedTimeZoneImpl = /** @class */ (function () { + function NamedTimeZoneImpl(timeZoneName) { + this.timeZoneName = timeZoneName; + } + return NamedTimeZoneImpl; +}()); + +var SegHierarchy = /** @class */ (function () { + function SegHierarchy() { + // settings + this.strictOrder = false; + this.allowReslicing = false; + this.maxCoord = -1; // -1 means no max + this.maxStackCnt = -1; // -1 means no max + this.levelCoords = []; // ordered + this.entriesByLevel = []; // parallel with levelCoords + this.stackCnts = {}; // TODO: use better technique!? + } + SegHierarchy.prototype.addSegs = function (inputs) { + var hiddenEntries = []; + for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) { + var input = inputs_1[_i]; + this.insertEntry(input, hiddenEntries); + } + return hiddenEntries; + }; + SegHierarchy.prototype.insertEntry = function (entry, hiddenEntries) { + var insertion = this.findInsertion(entry); + if (this.isInsertionValid(insertion, entry)) { + this.insertEntryAt(entry, insertion); + return 1; + } + return this.handleInvalidInsertion(insertion, entry, hiddenEntries); + }; + SegHierarchy.prototype.isInsertionValid = function (insertion, entry) { + return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) && + (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt); + }; + // returns number of new entries inserted + SegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) { + if (this.allowReslicing && insertion.touchingEntry) { + return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries); + } + hiddenEntries.push(entry); + return 0; + }; + SegHierarchy.prototype.splitEntry = function (entry, barrier, hiddenEntries) { + var partCnt = 0; + var splitHiddenEntries = []; + var entrySpan = entry.span; + var barrierSpan = barrier.span; + if (entrySpan.start < barrierSpan.start) { + partCnt += this.insertEntry({ + index: entry.index, + thickness: entry.thickness, + span: { start: entrySpan.start, end: barrierSpan.start }, + }, splitHiddenEntries); + } + if (entrySpan.end > barrierSpan.end) { + partCnt += this.insertEntry({ + index: entry.index, + thickness: entry.thickness, + span: { start: barrierSpan.end, end: entrySpan.end }, + }, splitHiddenEntries); + } + if (partCnt) { + hiddenEntries.push.apply(hiddenEntries, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([{ + index: entry.index, + thickness: entry.thickness, + span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect + }], splitHiddenEntries)); + return partCnt; + } + hiddenEntries.push(entry); + return 0; + }; + SegHierarchy.prototype.insertEntryAt = function (entry, insertion) { + var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords; + if (insertion.lateral === -1) { + // create a new level + insertAt(levelCoords, insertion.level, insertion.levelCoord); + insertAt(entriesByLevel, insertion.level, [entry]); + } + else { + // insert into existing level + insertAt(entriesByLevel[insertion.level], insertion.lateral, entry); + } + this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt; + }; + SegHierarchy.prototype.findInsertion = function (newEntry) { + var _a = this, levelCoords = _a.levelCoords, entriesByLevel = _a.entriesByLevel, strictOrder = _a.strictOrder, stackCnts = _a.stackCnts; + var levelCnt = levelCoords.length; + var candidateCoord = 0; + var touchingLevel = -1; + var touchingLateral = -1; + var touchingEntry = null; + var stackCnt = 0; + for (var trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) { + var trackingCoord = levelCoords[trackingLevel]; + // if the current level is past the placed entry, we have found a good empty space and can stop. + // if strictOrder, keep finding more lateral intersections. + if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) { + break; + } + var trackingEntries = entriesByLevel[trackingLevel]; + var trackingEntry = void 0; + var searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end + var lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one + while ( // loop through entries that horizontally intersect + (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list + trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry + ) { + var trackingEntryBottom = trackingCoord + trackingEntry.thickness; + // intersects into the top of the candidate? + if (trackingEntryBottom > candidateCoord) { + candidateCoord = trackingEntryBottom; + touchingEntry = trackingEntry; + touchingLevel = trackingLevel; + touchingLateral = lateralIndex; + } + // butts up against top of candidate? (will happen if just intersected as well) + if (trackingEntryBottom === candidateCoord) { + // accumulate the highest possible stackCnt of the trackingEntries that butt up + stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1); + } + lateralIndex += 1; + } + } + // the destination level will be after touchingEntry's level. find it + var destLevel = 0; + if (touchingEntry) { + destLevel = touchingLevel + 1; + while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) { + destLevel += 1; + } + } + // if adding to an existing level, find where to insert + var destLateral = -1; + if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) { + destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0]; + } + return { + touchingLevel: touchingLevel, + touchingLateral: touchingLateral, + touchingEntry: touchingEntry, + stackCnt: stackCnt, + levelCoord: candidateCoord, + level: destLevel, + lateral: destLateral, + }; + }; + // sorted by levelCoord (lowest to highest) + SegHierarchy.prototype.toRects = function () { + var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords; + var levelCnt = entriesByLevel.length; + var rects = []; + for (var level = 0; level < levelCnt; level += 1) { + var entries = entriesByLevel[level]; + var levelCoord = levelCoords[level]; + for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { + var entry = entries_1[_i]; + rects.push((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, entry), { levelCoord: levelCoord })); + } + } + return rects; + }; + return SegHierarchy; +}()); +function getEntrySpanEnd(entry) { + return entry.span.end; +} +function buildEntryKey(entry) { + return entry.index + ':' + entry.span.start; +} +// returns groups with entries sorted by input order +function groupIntersectingEntries(entries) { + var merges = []; + for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) { + var entry = entries_2[_i]; + var filteredMerges = []; + var hungryMerge = { + span: entry.span, + entries: [entry], + }; + for (var _a = 0, merges_1 = merges; _a < merges_1.length; _a++) { + var merge = merges_1[_a]; + if (intersectSpans(merge.span, hungryMerge.span)) { + hungryMerge = { + entries: merge.entries.concat(hungryMerge.entries), + span: joinSpans(merge.span, hungryMerge.span), + }; + } + else { + filteredMerges.push(merge); + } + } + filteredMerges.push(hungryMerge); + merges = filteredMerges; + } + return merges; +} +function joinSpans(span0, span1) { + return { + start: Math.min(span0.start, span1.start), + end: Math.max(span0.end, span1.end), + }; +} +function intersectSpans(span0, span1) { + var start = Math.max(span0.start, span1.start); + var end = Math.min(span0.end, span1.end); + if (start < end) { + return { start: start, end: end }; + } + return null; +} +// general util +// --------------------------------------------------------------------------------------------------------------------- +function insertAt(arr, index, item) { + arr.splice(index, 0, item); +} +function binarySearch(a, searchVal, getItemVal) { + var startIndex = 0; + var endIndex = a.length; // exclusive + if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item + return [0, 0]; + } + if (searchVal > getItemVal(a[endIndex - 1])) { // after last item + return [endIndex, 0]; + } + while (startIndex < endIndex) { + var middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2); + var middleVal = getItemVal(a[middleIndex]); + if (searchVal < middleVal) { + endIndex = middleIndex; + } + else if (searchVal > middleVal) { + startIndex = middleIndex + 1; + } + else { // equal! + return [middleIndex, 1]; + } + } + return [startIndex, 0]; +} + +var Interaction = /** @class */ (function () { + function Interaction(settings) { + this.component = settings.component; + this.isHitComboAllowed = settings.isHitComboAllowed || null; + } + Interaction.prototype.destroy = function () { + }; + return Interaction; +}()); +function parseInteractionSettings(component, input) { + return { + component: component, + el: input.el, + useEventCenter: input.useEventCenter != null ? input.useEventCenter : true, + isHitComboAllowed: input.isHitComboAllowed || null, + }; +} +function interactionSettingsToStore(settings) { + var _a; + return _a = {}, + _a[settings.component.uid] = settings, + _a; +} +// global state +var interactionSettingsStore = {}; + +/* +An abstraction for a dragging interaction originating on an event. +Does higher-level things than PointerDragger, such as possibly: +- a "mirror" that moves with the pointer +- a minimum number of pixels or other criteria for a true drag to begin + +subclasses must emit: +- pointerdown +- dragstart +- dragmove +- pointerup +- dragend +*/ +var ElementDragging = /** @class */ (function () { + function ElementDragging(el, selector) { + this.emitter = new Emitter(); + } + ElementDragging.prototype.destroy = function () { + }; + ElementDragging.prototype.setMirrorIsVisible = function (bool) { + // optional if subclass doesn't want to support a mirror + }; + ElementDragging.prototype.setMirrorNeedsRevert = function (bool) { + // optional if subclass doesn't want to support a mirror + }; + ElementDragging.prototype.setAutoScrollEnabled = function (bool) { + // optional + }; + return ElementDragging; +}()); + +// TODO: get rid of this in favor of options system, +// tho it's really easy to access this globally rather than pass thru options. +var config = {}; + +/* +Information about what will happen when an external element is dragged-and-dropped +onto a calendar. Contains information for creating an event. +*/ +var DRAG_META_REFINERS = { + startTime: createDuration, + duration: createDuration, + create: Boolean, + sourceId: String, +}; +function parseDragMeta(raw) { + var _a = refineProps(raw, DRAG_META_REFINERS), refined = _a.refined, extra = _a.extra; + return { + startTime: refined.startTime || null, + duration: refined.duration || null, + create: refined.create != null ? refined.create : true, + sourceId: refined.sourceId, + leftoverProps: extra, + }; +} + +var ToolbarSection = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ToolbarSection, _super); + function ToolbarSection() { + return _super !== null && _super.apply(this, arguments) || this; + } + ToolbarSection.prototype.render = function () { + var _this = this; + var children = this.props.widgetGroups.map(function (widgetGroup) { return _this.renderWidgetGroup(widgetGroup); }); + return _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)(['div', { className: 'fc-toolbar-chunk' }], children)); + }; + ToolbarSection.prototype.renderWidgetGroup = function (widgetGroup) { + var props = this.props; + var theme = this.context.theme; + var children = []; + var isOnlyButtons = true; + for (var _i = 0, widgetGroup_1 = widgetGroup; _i < widgetGroup_1.length; _i++) { + var widget = widgetGroup_1[_i]; + var buttonName = widget.buttonName, buttonClick = widget.buttonClick, buttonText = widget.buttonText, buttonIcon = widget.buttonIcon, buttonHint = widget.buttonHint; + if (buttonName === 'title') { + isOnlyButtons = false; + children.push((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("h2", { className: "fc-toolbar-title", id: props.titleId }, props.title)); + } + else { + var isPressed = buttonName === props.activeButton; + var isDisabled = (!props.isTodayEnabled && buttonName === 'today') || + (!props.isPrevEnabled && buttonName === 'prev') || + (!props.isNextEnabled && buttonName === 'next'); + var buttonClasses = ["fc-" + buttonName + "-button", theme.getClass('button')]; + if (isPressed) { + buttonClasses.push(theme.getClass('buttonActive')); + } + children.push((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("button", { type: "button", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, "aria-pressed": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("span", { className: buttonIcon }) : ''))); + } + } + if (children.length > 1) { + var groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || ''; + return _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)(['div', { className: groupClassName }], children)); + } + return children[0]; + }; + return ToolbarSection; +}(BaseComponent)); + +var Toolbar = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(Toolbar, _super); + function Toolbar() { + return _super !== null && _super.apply(this, arguments) || this; + } + Toolbar.prototype.render = function () { + var _a = this.props, model = _a.model, extraClassName = _a.extraClassName; + var forceLtr = false; + var startContent; + var endContent; + var sectionWidgets = model.sectionWidgets; + var centerContent = sectionWidgets.center; + if (sectionWidgets.left) { + forceLtr = true; + startContent = sectionWidgets.left; + } + else { + startContent = sectionWidgets.start; + } + if (sectionWidgets.right) { + forceLtr = true; + endContent = sectionWidgets.right; + } + else { + endContent = sectionWidgets.end; + } + var classNames = [ + extraClassName || '', + 'fc-toolbar', + forceLtr ? 'fc-toolbar-ltr' : '', + ]; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: classNames.join(' ') }, + this.renderSection('start', startContent || []), + this.renderSection('center', centerContent || []), + this.renderSection('end', endContent || []))); + }; + Toolbar.prototype.renderSection = function (key, widgetGroups) { + var props = this.props; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId })); + }; + return Toolbar; +}(BaseComponent)); + +// TODO: do function component? +var ViewContainer = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ViewContainer, _super); + function ViewContainer() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.state = { + availableWidth: null, + }; + _this.handleEl = function (el) { + _this.el = el; + setRef(_this.props.elRef, el); + _this.updateAvailableWidth(); + }; + _this.handleResize = function () { + _this.updateAvailableWidth(); + }; + return _this; + } + ViewContainer.prototype.render = function () { + var _a = this, props = _a.props, state = _a.state; + var aspectRatio = props.aspectRatio; + var classNames = [ + 'fc-view-harness', + (aspectRatio || props.liquid || props.height) + ? 'fc-view-harness-active' // harness controls the height + : 'fc-view-harness-passive', // let the view do the height + ]; + var height = ''; + var paddingBottom = ''; + if (aspectRatio) { + if (state.availableWidth !== null) { + height = state.availableWidth / aspectRatio; + } + else { + // while waiting to know availableWidth, we can't set height to *zero* + // because will cause lots of unnecessary scrollbars within scrollgrid. + // BETTER: don't start rendering ANYTHING yet until we know container width + // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606) + paddingBottom = (1 / aspectRatio) * 100 + "%"; + } + } + else { + height = props.height || ''; + } + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { "aria-labelledby": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom } }, props.children)); + }; + ViewContainer.prototype.componentDidMount = function () { + this.context.addResizeHandler(this.handleResize); + }; + ViewContainer.prototype.componentWillUnmount = function () { + this.context.removeResizeHandler(this.handleResize); + }; + ViewContainer.prototype.updateAvailableWidth = function () { + if (this.el && // needed. but why? + this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth + ) { + this.setState({ availableWidth: this.el.offsetWidth }); + } + }; + return ViewContainer; +}(BaseComponent)); + +/* +Detects when the user clicks on an event within a DateComponent +*/ +var EventClicking = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(EventClicking, _super); + function EventClicking(settings) { + var _this = _super.call(this, settings) || this; + _this.handleSegClick = function (ev, segEl) { + var component = _this.component; + var context = component.context; + var seg = getElSeg(segEl); + if (seg && // might be the
surrounding the more link + component.isValidSegDownEl(ev.target)) { + // our way to simulate a link click for elements that can't be tags + // grab before trigger fired in case trigger trashes DOM thru rerendering + var hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url'); + var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : ''; + context.emitter.trigger('eventClick', { + el: segEl, + event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance), + jsEvent: ev, + view: context.viewApi, + }); + if (url && !ev.defaultPrevented) { + window.location.href = url; + } + } + }; + _this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events + _this.handleSegClick); + return _this; + } + return EventClicking; +}(Interaction)); + +/* +Triggers events and adds/removes core classNames when the user's pointer +enters/leaves event-elements of a component. +*/ +var EventHovering = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(EventHovering, _super); + function EventHovering(settings) { + var _this = _super.call(this, settings) || this; + // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it + _this.handleEventElRemove = function (el) { + if (el === _this.currentSegEl) { + _this.handleSegLeave(null, _this.currentSegEl); + } + }; + _this.handleSegEnter = function (ev, segEl) { + if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper + _this.currentSegEl = segEl; + _this.triggerEvent('eventMouseEnter', ev, segEl); + } + }; + _this.handleSegLeave = function (ev, segEl) { + if (_this.currentSegEl) { + _this.currentSegEl = null; + _this.triggerEvent('eventMouseLeave', ev, segEl); + } + }; + _this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events + _this.handleSegEnter, _this.handleSegLeave); + return _this; + } + EventHovering.prototype.destroy = function () { + this.removeHoverListeners(); + }; + EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) { + var component = this.component; + var context = component.context; + var seg = getElSeg(segEl); + if (!ev || component.isValidSegDownEl(ev.target)) { + context.emitter.trigger(publicEvName, { + el: segEl, + event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance), + jsEvent: ev, + view: context.viewApi, + }); + } + }; + return EventHovering; +}(Interaction)); + +var CalendarContent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(CalendarContent, _super); + function CalendarContent() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.buildViewContext = memoize(buildViewContext); + _this.buildViewPropTransformers = memoize(buildViewPropTransformers); + _this.buildToolbarProps = memoize(buildToolbarProps); + _this.headerRef = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.footerRef = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.interactionsStore = {}; + // eslint-disable-next-line + _this.state = { + viewLabelId: getUniqueDomId(), + }; + // Component Registration + // ----------------------------------------------------------------------------------------------------------------- + _this.registerInteractiveComponent = function (component, settingsInput) { + var settings = parseInteractionSettings(component, settingsInput); + var DEFAULT_INTERACTIONS = [ + EventClicking, + EventHovering, + ]; + var interactionClasses = DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions); + var interactions = interactionClasses.map(function (TheInteractionClass) { return new TheInteractionClass(settings); }); + _this.interactionsStore[component.uid] = interactions; + interactionSettingsStore[component.uid] = settings; + }; + _this.unregisterInteractiveComponent = function (component) { + for (var _i = 0, _a = _this.interactionsStore[component.uid]; _i < _a.length; _i++) { + var listener = _a[_i]; + listener.destroy(); + } + delete _this.interactionsStore[component.uid]; + delete interactionSettingsStore[component.uid]; + }; + // Resizing + // ----------------------------------------------------------------------------------------------------------------- + _this.resizeRunner = new DelayedRunner(function () { + _this.props.emitter.trigger('_resize', true); // should window resizes be considered "forced" ? + _this.props.emitter.trigger('windowResize', { view: _this.props.viewApi }); + }); + _this.handleWindowResize = function (ev) { + var options = _this.props.options; + if (options.handleWindowResize && + ev.target === window // avoid jqui events + ) { + _this.resizeRunner.request(options.windowResizeDelay); + } + }; + return _this; + } + /* + renders INSIDE of an outer div + */ + CalendarContent.prototype.render = function () { + var props = this.props; + var toolbarConfig = props.toolbarConfig, options = props.options; + var toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer???? + props.viewTitle); + var viewVGrow = false; + var viewHeight = ''; + var viewAspectRatio; + if (props.isHeightAuto || props.forPrint) { + viewHeight = ''; + } + else if (options.height != null) { + viewVGrow = true; + } + else if (options.contentHeight != null) { + viewHeight = options.contentHeight; + } + else { + viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall + } + var viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent); + var viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle) + ? this.state.viewLabelId + : ''; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewContextType.Provider, { value: viewContext }, + toolbarConfig.header && ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(Toolbar, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId }, + this.renderView(props), + this.buildAppendContent()), + toolbarConfig.footer && ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(Toolbar, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer, titleId: "" }, toolbarProps))))); + }; + CalendarContent.prototype.componentDidMount = function () { + var props = this.props; + this.calendarInteractions = props.pluginHooks.calendarInteractions + .map(function (CalendarInteractionClass) { return new CalendarInteractionClass(props); }); + window.addEventListener('resize', this.handleWindowResize); + var propSetHandlers = props.pluginHooks.propSetHandlers; + for (var propName in propSetHandlers) { + propSetHandlers[propName](props[propName], props); + } + }; + CalendarContent.prototype.componentDidUpdate = function (prevProps) { + var props = this.props; + var propSetHandlers = props.pluginHooks.propSetHandlers; + for (var propName in propSetHandlers) { + if (props[propName] !== prevProps[propName]) { + propSetHandlers[propName](props[propName], props); + } + } + }; + CalendarContent.prototype.componentWillUnmount = function () { + window.removeEventListener('resize', this.handleWindowResize); + this.resizeRunner.clear(); + for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) { + var interaction = _a[_i]; + interaction.destroy(); + } + this.props.emitter.trigger('_unmount'); + }; + CalendarContent.prototype.buildAppendContent = function () { + var props = this.props; + var children = props.pluginHooks.viewContainerAppends.map(function (buildAppendContent) { return buildAppendContent(props); }); + return _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([_vdom_js__WEBPACK_IMPORTED_MODULE_1__.Fragment, {}], children)); + }; + CalendarContent.prototype.renderView = function (props) { + var pluginHooks = props.pluginHooks; + var viewSpec = props.viewSpec; + var viewProps = { + dateProfile: props.dateProfile, + businessHours: props.businessHours, + eventStore: props.renderableEventStore, + eventUiBases: props.eventUiBases, + dateSelection: props.dateSelection, + eventSelection: props.eventSelection, + eventDrag: props.eventDrag, + eventResize: props.eventResize, + isHeightAuto: props.isHeightAuto, + forPrint: props.forPrint, + }; + var transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers); + for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) { + var transformer = transformers_1[_i]; + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)(viewProps, transformer.transform(viewProps, props)); + } + var ViewComponent = viewSpec.component; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewComponent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, viewProps))); + }; + return CalendarContent; +}(PureComponent)); +function buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) { + // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid + var todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason + var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false); + var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false); + return { + title: title, + activeButton: viewSpec.type, + navUnit: viewSpec.singleUnit, + isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now), + isPrevEnabled: prevInfo.isValid, + isNextEnabled: nextInfo.isValid, + }; +} +// Plugin +// ----------------------------------------------------------------------------------------------------------------- +function buildViewPropTransformers(theClasses) { + return theClasses.map(function (TheClass) { return new TheClass(); }); +} + +var CalendarRoot = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(CalendarRoot, _super); + function CalendarRoot() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.state = { + forPrint: false, + }; + _this.handleBeforePrint = function () { + _this.setState({ forPrint: true }); + }; + _this.handleAfterPrint = function () { + _this.setState({ forPrint: false }); + }; + return _this; + } + CalendarRoot.prototype.render = function () { + var props = this.props; + var options = props.options; + var forPrint = this.state.forPrint; + var isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto'; + var height = (!isHeightAuto && options.height != null) ? options.height : ''; + var classNames = [ + 'fc', + forPrint ? 'fc-media-print' : 'fc-media-screen', + "fc-direction-" + options.direction, + props.theme.getClass('root'), + ]; + if (!getCanVGrowWithinCell()) { + classNames.push('fc-liquid-hack'); + } + return props.children(classNames, height, isHeightAuto, forPrint); + }; + CalendarRoot.prototype.componentDidMount = function () { + var emitter = this.props.emitter; + emitter.on('_beforeprint', this.handleBeforePrint); + emitter.on('_afterprint', this.handleAfterPrint); + }; + CalendarRoot.prototype.componentWillUnmount = function () { + var emitter = this.props.emitter; + emitter.off('_beforeprint', this.handleBeforePrint); + emitter.off('_afterprint', this.handleAfterPrint); + }; + return CalendarRoot; +}(BaseComponent)); + +// Computes a default column header formatting string if `colFormat` is not explicitly defined +function computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) { + // if more than one week row, or if there are a lot of columns with not much space, + // put just the day numbers will be in each cell + if (!datesRepDistinctDays || dayCnt > 10) { + return createFormatter({ weekday: 'short' }); // "Sat" + } + if (dayCnt > 1) { + return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // "Sat 11/12" + } + return createFormatter({ weekday: 'long' }); // "Saturday" +} + +var CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no +function renderInner$1(hookProps) { + return hookProps.text; +} + +var TableDateCell = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableDateCell, _super); + function TableDateCell() { + return _super !== null && _super.apply(this, arguments) || this; + } + TableDateCell.prototype.render = function () { + var _a = this.context, dateEnv = _a.dateEnv, options = _a.options, theme = _a.theme, viewApi = _a.viewApi; + var props = this.props; + var date = props.date, dateProfile = props.dateProfile; + var dayMeta = getDateMeta(date, props.todayRange, null, dateProfile); + var classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme)); + var text = dateEnv.format(date, props.dayHeaderFormat); + // if colCnt is 1, we are already in a day-view and don't need a navlink + var navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1) + ? buildNavLinkAttrs(this.context, date) + : {}; + var hookProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ date: dateEnv.toDate(date), view: viewApi }, props.extraHookProps), { text: text }), dayMeta); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: rootElRef, role: "columnheader", className: classNames.concat(customClassNames).join(' '), "data-date": !dayMeta.isDisabled ? formatDayString(date) : undefined, colSpan: props.colSpan }, props.extraDataAttrs), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-scrollgrid-sync-inner" }, !dayMeta.isDisabled && ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: innerElRef, className: [ + 'fc-col-header-cell-cushion', + props.isSticky ? 'fc-sticky' : '', + ].join(' ') }, navLinkAttrs), innerContent))))); })); + }; + return TableDateCell; +}(BaseComponent)); + +var WEEKDAY_FORMAT = createFormatter({ weekday: 'long' }); +var TableDowCell = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableDowCell, _super); + function TableDowCell() { + return _super !== null && _super.apply(this, arguments) || this; + } + TableDowCell.prototype.render = function () { + var props = this.props; + var _a = this.context, dateEnv = _a.dateEnv, theme = _a.theme, viewApi = _a.viewApi, options = _a.options; + var date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT + var dateMeta = { + dow: props.dow, + isDisabled: false, + isFuture: false, + isPast: false, + isToday: false, + isOther: false, + }; + var classNames = [CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames || []); + var text = dateEnv.format(date, props.dayHeaderFormat); + var hookProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ // TODO: make this public? + date: date }, dateMeta), { view: viewApi }), props.extraHookProps), { text: text }); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: rootElRef, role: "columnheader", className: classNames.concat(customClassNames).join(' '), colSpan: props.colSpan }, props.extraDataAttrs), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-scrollgrid-sync-inner" }, + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", { "aria-label": dateEnv.format(date, WEEKDAY_FORMAT), className: [ + 'fc-col-header-cell-cushion', + props.isSticky ? 'fc-sticky' : '', + ].join(' '), ref: innerElRef }, innerContent)))); })); + }; + return TableDowCell; +}(BaseComponent)); + +var NowTimer = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(NowTimer, _super); + function NowTimer(props, context) { + var _this = _super.call(this, props, context) || this; + _this.initialNowDate = getNow(context.options.now, context.dateEnv); + _this.initialNowQueriedMs = new Date().valueOf(); + _this.state = _this.computeTiming().currentState; + return _this; + } + NowTimer.prototype.render = function () { + var _a = this, props = _a.props, state = _a.state; + return props.children(state.nowDate, state.todayRange); + }; + NowTimer.prototype.componentDidMount = function () { + this.setTimeout(); + }; + NowTimer.prototype.componentDidUpdate = function (prevProps) { + if (prevProps.unit !== this.props.unit) { + this.clearTimeout(); + this.setTimeout(); + } + }; + NowTimer.prototype.componentWillUnmount = function () { + this.clearTimeout(); + }; + NowTimer.prototype.computeTiming = function () { + var _a = this, props = _a.props, context = _a.context; + var unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs); + var currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit); + var nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit)); + var waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf(); + // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342) + // ensure no longer than a day + waitMs = Math.min(1000 * 60 * 60 * 24, waitMs); + return { + currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) }, + nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) }, + waitMs: waitMs, + }; + }; + NowTimer.prototype.setTimeout = function () { + var _this = this; + var _a = this.computeTiming(), nextState = _a.nextState, waitMs = _a.waitMs; + this.timeoutId = setTimeout(function () { + _this.setState(nextState, function () { + _this.setTimeout(); + }); + }, waitMs); + }; + NowTimer.prototype.clearTimeout = function () { + if (this.timeoutId) { + clearTimeout(this.timeoutId); + } + }; + NowTimer.contextType = ViewContextType; + return NowTimer; +}(_vdom_js__WEBPACK_IMPORTED_MODULE_1__.Component)); +function buildDayRange(date) { + var start = startOfDay(date); + var end = addDays(start, 1); + return { start: start, end: end }; +} + +var DayHeader = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DayHeader, _super); + function DayHeader() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.createDayHeaderFormatter = memoize(createDayHeaderFormatter); + return _this; + } + DayHeader.prototype.render = function () { + var context = this.context; + var _a = this.props, dates = _a.dates, dateProfile = _a.dateProfile, datesRepDistinctDays = _a.datesRepDistinctDays, renderIntro = _a.renderIntro; + var dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(NowTimer, { unit: "day" }, function (nowDate, todayRange) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { role: "row" }, + renderIntro && renderIntro('day'), + dates.map(function (date) { return (datesRepDistinctDays ? ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))); }))); })); + }; + return DayHeader; +}(BaseComponent)); +function createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) { + return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt); +} + +var DaySeriesModel = /** @class */ (function () { + function DaySeriesModel(range, dateProfileGenerator) { + var date = range.start; + var end = range.end; + var indices = []; + var dates = []; + var dayIndex = -1; + while (date < end) { // loop each day from start to end + if (dateProfileGenerator.isHiddenDay(date)) { + indices.push(dayIndex + 0.5); // mark that it's between indices + } + else { + dayIndex += 1; + indices.push(dayIndex); + dates.push(date); + } + date = addDays(date, 1); + } + this.dates = dates; + this.indices = indices; + this.cnt = dates.length; + } + DaySeriesModel.prototype.sliceRange = function (range) { + var firstIndex = this.getDateDayIndex(range.start); // inclusive first index + var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index + var clippedFirstIndex = Math.max(0, firstIndex); + var clippedLastIndex = Math.min(this.cnt - 1, lastIndex); + // deal with in-between indices + clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell + clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell + if (clippedFirstIndex <= clippedLastIndex) { + return { + firstIndex: clippedFirstIndex, + lastIndex: clippedLastIndex, + isStart: firstIndex === clippedFirstIndex, + isEnd: lastIndex === clippedLastIndex, + }; + } + return null; + }; + // Given a date, returns its chronolocial cell-index from the first cell of the grid. + // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. + // If before the first offset, returns a negative number. + // If after the last offset, returns an offset past the last cell offset. + // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. + DaySeriesModel.prototype.getDateDayIndex = function (date) { + var indices = this.indices; + var dayOffset = Math.floor(diffDays(this.dates[0], date)); + if (dayOffset < 0) { + return indices[0] - 1; + } + if (dayOffset >= indices.length) { + return indices[indices.length - 1] + 1; + } + return indices[dayOffset]; + }; + return DaySeriesModel; +}()); + +var DayTableModel = /** @class */ (function () { + function DayTableModel(daySeries, breakOnWeeks) { + var dates = daySeries.dates; + var daysPerRow; + var firstDay; + var rowCnt; + if (breakOnWeeks) { + // count columns until the day-of-week repeats + firstDay = dates[0].getUTCDay(); + for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) { + if (dates[daysPerRow].getUTCDay() === firstDay) { + break; + } + } + rowCnt = Math.ceil(dates.length / daysPerRow); + } + else { + rowCnt = 1; + daysPerRow = dates.length; + } + this.rowCnt = rowCnt; + this.colCnt = daysPerRow; + this.daySeries = daySeries; + this.cells = this.buildCells(); + this.headerDates = this.buildHeaderDates(); + } + DayTableModel.prototype.buildCells = function () { + var rows = []; + for (var row = 0; row < this.rowCnt; row += 1) { + var cells = []; + for (var col = 0; col < this.colCnt; col += 1) { + cells.push(this.buildCell(row, col)); + } + rows.push(cells); + } + return rows; + }; + DayTableModel.prototype.buildCell = function (row, col) { + var date = this.daySeries.dates[row * this.colCnt + col]; + return { + key: date.toISOString(), + date: date, + }; + }; + DayTableModel.prototype.buildHeaderDates = function () { + var dates = []; + for (var col = 0; col < this.colCnt; col += 1) { + dates.push(this.cells[0][col].date); + } + return dates; + }; + DayTableModel.prototype.sliceRange = function (range) { + var colCnt = this.colCnt; + var seriesSeg = this.daySeries.sliceRange(range); + var segs = []; + if (seriesSeg) { + var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex; + var index = firstIndex; + while (index <= lastIndex) { + var row = Math.floor(index / colCnt); + var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1); + segs.push({ + row: row, + firstCol: index % colCnt, + lastCol: (nextIndex - 1) % colCnt, + isStart: seriesSeg.isStart && index === firstIndex, + isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex, + }); + index = nextIndex; + } + } + return segs; + }; + return DayTableModel; +}()); + +var Slicer = /** @class */ (function () { + function Slicer() { + this.sliceBusinessHours = memoize(this._sliceBusinessHours); + this.sliceDateSelection = memoize(this._sliceDateSpan); + this.sliceEventStore = memoize(this._sliceEventStore); + this.sliceEventDrag = memoize(this._sliceInteraction); + this.sliceEventResize = memoize(this._sliceInteraction); + this.forceDayIfListItem = false; // hack + } + Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, context) { + var extraArgs = []; + for (var _i = 4; _i < arguments.length; _i++) { + extraArgs[_i - 4] = arguments[_i]; + } + var eventUiBases = props.eventUiBases; + var eventSegs = this.sliceEventStore.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([props.eventStore, eventUiBases, dateProfile, nextDayThreshold], extraArgs)); + return { + dateSelectionSegs: this.sliceDateSelection.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([props.dateSelection, eventUiBases, context], extraArgs)), + businessHourSegs: this.sliceBusinessHours.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([props.businessHours, dateProfile, nextDayThreshold, context], extraArgs)), + fgEventSegs: eventSegs.fg, + bgEventSegs: eventSegs.bg, + eventDrag: this.sliceEventDrag.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)), + eventResize: this.sliceEventResize.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)), + eventSelection: props.eventSelection, + }; // TODO: give interactionSegs? + }; + Slicer.prototype.sliceNowDate = function (// does not memoize + date, context) { + var extraArgs = []; + for (var _i = 2; _i < arguments.length; _i++) { + extraArgs[_i - 2] = arguments[_i]; + } + return this._sliceDateSpan.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([{ range: { start: date, end: addMs(date, 1) }, allDay: false }, + {}, + context], extraArgs)); + }; + Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, context) { + var extraArgs = []; + for (var _i = 4; _i < arguments.length; _i++) { + extraArgs[_i - 4] = arguments[_i]; + } + if (!businessHours) { + return []; + } + return this._sliceEventStore.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context), + {}, + dateProfile, + nextDayThreshold], extraArgs)).bg; + }; + Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold) { + var extraArgs = []; + for (var _i = 4; _i < arguments.length; _i++) { + extraArgs[_i - 4] = arguments[_i]; + } + if (eventStore) { + var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold); + return { + bg: this.sliceEventRanges(rangeRes.bg, extraArgs), + fg: this.sliceEventRanges(rangeRes.fg, extraArgs), + }; + } + return { bg: [], fg: [] }; + }; + Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold) { + var extraArgs = []; + for (var _i = 4; _i < arguments.length; _i++) { + extraArgs[_i - 4] = arguments[_i]; + } + if (!interaction) { + return null; + } + var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold); + return { + segs: this.sliceEventRanges(rangeRes.fg, extraArgs), + affectedInstances: interaction.affectedEvents.instances, + isEvent: interaction.isEvent, + }; + }; + Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, context) { + var extraArgs = []; + for (var _i = 3; _i < arguments.length; _i++) { + extraArgs[_i - 3] = arguments[_i]; + } + if (!dateSpan) { + return []; + } + var eventRange = fabricateEventRange(dateSpan, eventUiBases, context); + var segs = this.sliceRange.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([dateSpan.range], extraArgs)); + for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) { + var seg = segs_1[_a]; + seg.eventRange = eventRange; + } + return segs; + }; + /* + "complete" seg means it has component and eventRange + */ + Slicer.prototype.sliceEventRanges = function (eventRanges, extraArgs) { + var segs = []; + for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) { + var eventRange = eventRanges_1[_i]; + segs.push.apply(segs, this.sliceEventRange(eventRange, extraArgs)); + } + return segs; + }; + /* + "complete" seg means it has component and eventRange + */ + Slicer.prototype.sliceEventRange = function (eventRange, extraArgs) { + var dateRange = eventRange.range; + // hack to make multi-day events that are being force-displayed as list-items to take up only one day + if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') { + dateRange = { + start: dateRange.start, + end: addDays(dateRange.start, 1), + }; + } + var segs = this.sliceRange.apply(this, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([dateRange], extraArgs)); + for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { + var seg = segs_2[_i]; + seg.eventRange = eventRange; + seg.isStart = eventRange.isStart && seg.isStart; + seg.isEnd = eventRange.isEnd && seg.isEnd; + } + return segs; + }; + return Slicer; +}()); +/* +for incorporating slotMinTime/slotMaxTime if appropriate +TODO: should be part of DateProfile! +TimelineDateProfile already does this btw +*/ +function computeActiveRange(dateProfile, isComponentAllDay) { + var range = dateProfile.activeRange; + if (isComponentAllDay) { + return range; + } + return { + start: addMs(range.start, dateProfile.slotMinTime.milliseconds), + end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day + }; +} + +// high-level segmenting-aware tester functions +// ------------------------------------------------------------------------------------------------------------------------ +function isInteractionValid(interaction, dateProfile, context) { + var instances = interaction.mutatedEvents.instances; + for (var instanceId in instances) { + if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) { + return false; + } + } + return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions +} +function isDateSelectionValid(dateSelection, dateProfile, context) { + if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) { + return false; + } + return isNewPropsValid({ dateSelection: dateSelection }, context); +} +function isNewPropsValid(newProps, context) { + var calendarState = context.getCurrentData(); + var props = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps); + return (context.pluginHooks.isPropsValid || isPropsValid)(props, context); +} +function isPropsValid(state, context, dateSpanMeta, filterConfig) { + if (dateSpanMeta === void 0) { dateSpanMeta = {}; } + if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) { + return false; + } + if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) { + return false; + } + return true; +} +// Moving Event Validation +// ------------------------------------------------------------------------------------------------------------------------ +function isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) { + var currentState = context.getCurrentData(); + var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions + var subjectEventStore = interaction.mutatedEvents; + var subjectDefs = subjectEventStore.defs; + var subjectInstances = subjectEventStore.instances; + var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ? + state.eventUiBases : + { '': currentState.selectionConfig }); + if (filterConfig) { + subjectConfigs = mapHash(subjectConfigs, filterConfig); + } + // exclude the subject events. TODO: exclude defs too? + var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances); + var otherDefs = otherEventStore.defs; + var otherInstances = otherEventStore.instances; + var otherConfigs = compileEventUis(otherDefs, state.eventUiBases); + for (var subjectInstanceId in subjectInstances) { + var subjectInstance = subjectInstances[subjectInstanceId]; + var subjectRange = subjectInstance.range; + var subjectConfig = subjectConfigs[subjectInstance.defId]; + var subjectDef = subjectDefs[subjectInstance.defId]; + // constraint + if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) { + return false; + } + // overlap + var eventOverlap = context.options.eventOverlap; + var eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null; + for (var otherInstanceId in otherInstances) { + var otherInstance = otherInstances[otherInstanceId]; + // intersect! evaluate + if (rangesIntersect(subjectRange, otherInstance.range)) { + var otherOverlap = otherConfigs[otherInstance.defId].overlap; + // consider the other event's overlap. only do this if the subject event is a "real" event + if (otherOverlap === false && interaction.isEvent) { + return false; + } + if (subjectConfig.overlap === false) { + return false; + } + if (eventOverlapFunc && !eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event + new EventApi(context, subjectDef, subjectInstance))) { + return false; + } + } + } + // allow (a function) + var calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state + for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) { + var subjectAllow = _a[_i]; + var subjectDateSpan = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay }); + var origDef = calendarEventStore.defs[subjectDef.defId]; + var origInstance = calendarEventStore.instances[subjectInstanceId]; + var eventApi = void 0; + if (origDef) { // was previously in the calendar + eventApi = new EventApi(context, origDef, origInstance); + } + else { // was an external event + eventApi = new EventApi(context, subjectDef); // no instance, because had no dates + } + if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) { + return false; + } + } + } + return true; +} +// Date Selection Validation +// ------------------------------------------------------------------------------------------------------------------------ +function isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) { + var relevantEventStore = state.eventStore; + var relevantDefs = relevantEventStore.defs; + var relevantInstances = relevantEventStore.instances; + var selection = state.dateSelection; + var selectionRange = selection.range; + var selectionConfig = context.getCurrentData().selectionConfig; + if (filterConfig) { + selectionConfig = filterConfig(selectionConfig); + } + // constraint + if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) { + return false; + } + // overlap + var selectOverlap = context.options.selectOverlap; + var selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null; + for (var relevantInstanceId in relevantInstances) { + var relevantInstance = relevantInstances[relevantInstanceId]; + // intersect! evaluate + if (rangesIntersect(selectionRange, relevantInstance.range)) { + if (selectionConfig.overlap === false) { + return false; + } + if (selectOverlapFunc && !selectOverlapFunc(new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) { + return false; + } + } + } + // allow (a function) + for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) { + var selectionAllow = _a[_i]; + var fullDateSpan = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, dateSpanMeta), selection); + if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) { + return false; + } + } + return true; +} +// Constraint Utils +// ------------------------------------------------------------------------------------------------------------------------ +function allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) { + for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) { + var constraint = constraints_1[_i]; + if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) { + return false; + } + } + return true; +} +function constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours +otherEventStore, // for if constraint is an even group ID +businessHoursUnexpanded, // for if constraint is 'businessHours' +context) { + if (constraint === 'businessHours') { + return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context)); + } + if (typeof constraint === 'string') { // an group ID + return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { return eventDef.groupId === constraint; })); + } + if (typeof constraint === 'object' && constraint) { // non-null object + return eventStoreToRanges(expandRecurring(constraint, subjectRange, context)); + } + return []; // if it's false +} +// TODO: move to event-store file? +function eventStoreToRanges(eventStore) { + var instances = eventStore.instances; + var ranges = []; + for (var instanceId in instances) { + ranges.push(instances[instanceId].range); + } + return ranges; +} +// TODO: move to geom file? +function anyRangesContainRange(outerRanges, innerRange) { + for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) { + var outerRange = outerRanges_1[_i]; + if (rangeContainsRange(outerRange, innerRange)) { + return true; + } + } + return false; +} + +var VISIBLE_HIDDEN_RE = /^(visible|hidden)$/; +var Scroller = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(Scroller, _super); + function Scroller() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.handleEl = function (el) { + _this.el = el; + setRef(_this.props.elRef, el); + }; + return _this; + } + Scroller.prototype.render = function () { + var props = this.props; + var liquid = props.liquid, liquidIsAbsolute = props.liquidIsAbsolute; + var isAbsolute = liquid && liquidIsAbsolute; + var className = ['fc-scroller']; + if (liquid) { + if (liquidIsAbsolute) { + className.push('fc-scroller-liquid-absolute'); + } + else { + className.push('fc-scroller-liquid'); + } + } + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: this.handleEl, className: className.join(' '), style: { + overflowX: props.overflowX, + overflowY: props.overflowY, + left: (isAbsolute && -(props.overcomeLeft || 0)) || '', + right: (isAbsolute && -(props.overcomeRight || 0)) || '', + bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '', + marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '', + marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '', + marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '', + maxHeight: props.maxHeight || '', + } }, props.children)); + }; + Scroller.prototype.needsXScrolling = function () { + if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) { + return false; + } + // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers. + // much more reliable to see if children are taller than the scroller, even tho doesn't account for + // inner-child margins and absolute positioning + var el = this.el; + var realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth(); + var children = el.children; + for (var i = 0; i < children.length; i += 1) { + var childEl = children[i]; + if (childEl.getBoundingClientRect().width > realClientWidth) { + return true; + } + } + return false; + }; + Scroller.prototype.needsYScrolling = function () { + if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) { + return false; + } + // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers. + // much more reliable to see if children are taller than the scroller, even tho doesn't account for + // inner-child margins and absolute positioning + var el = this.el; + var realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth(); + var children = el.children; + for (var i = 0; i < children.length; i += 1) { + var childEl = children[i]; + if (childEl.getBoundingClientRect().height > realClientHeight) { + return true; + } + } + return false; + }; + Scroller.prototype.getXScrollbarWidth = function () { + if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) { + return 0; + } + return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important? + }; + Scroller.prototype.getYScrollbarWidth = function () { + if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) { + return 0; + } + return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important? + }; + return Scroller; +}(BaseComponent)); + +/* +TODO: somehow infer OtherArgs from masterCallback? +TODO: infer RefType from masterCallback if provided +*/ +var RefMap = /** @class */ (function () { + function RefMap(masterCallback) { + var _this = this; + this.masterCallback = masterCallback; + this.currentMap = {}; + this.depths = {}; + this.callbackMap = {}; + this.handleValue = function (val, key) { + var _a = _this, depths = _a.depths, currentMap = _a.currentMap; + var removed = false; + var added = false; + if (val !== null) { + // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore + removed = (key in currentMap); + currentMap[key] = val; + depths[key] = (depths[key] || 0) + 1; + added = true; + } + else { + depths[key] -= 1; + if (!depths[key]) { + delete currentMap[key]; + delete _this.callbackMap[key]; + removed = true; + } + } + if (_this.masterCallback) { + if (removed) { + _this.masterCallback(null, String(key)); + } + if (added) { + _this.masterCallback(val, String(key)); + } + } + }; + } + RefMap.prototype.createRef = function (key) { + var _this = this; + var refCallback = this.callbackMap[key]; + if (!refCallback) { + refCallback = this.callbackMap[key] = function (val) { + _this.handleValue(val, String(key)); + }; + } + return refCallback; + }; + // TODO: check callers that don't care about order. should use getAll instead + // NOTE: this method has become less valuable now that we are encouraged to map order by some other index + // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and "collect" + RefMap.prototype.collect = function (startIndex, endIndex, step) { + return collectFromHash(this.currentMap, startIndex, endIndex, step); + }; + RefMap.prototype.getAll = function () { + return hashValuesToArray(this.currentMap); + }; + return RefMap; +}()); + +function computeShrinkWidth(chunkEls) { + var shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink'); + var largestWidth = 0; + for (var _i = 0, shrinkCells_1 = shrinkCells; _i < shrinkCells_1.length; _i++) { + var shrinkCell = shrinkCells_1[_i]; + largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell)); + } + return Math.ceil(largestWidth); // elements work best with integers. round up to ensure contents fits +} +function getSectionHasLiquidHeight(props, sectionConfig) { + return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well) +} +function getAllowYScrolling(props, sectionConfig) { + return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars + getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars +} +// TODO: ONLY use `arg`. force out internal function to use same API +function renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) { + var expandRows = arg.expandRows; + var content = typeof chunkConfig.content === 'function' ? + chunkConfig.content(arg) : + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('table', { + role: 'presentation', + className: [ + chunkConfig.tableClassName, + sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '', + ].join(' '), + style: { + minWidth: arg.tableMinWidth, + width: arg.clientWidth, + height: expandRows ? arg.clientHeight : '', // css `height` on a
serves as a min-height + }, + }, arg.tableColGroupNode, (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(isHeader ? 'thead' : 'tbody', { + role: 'presentation', + }, typeof chunkConfig.rowContent === 'function' + ? chunkConfig.rowContent(arg) + : chunkConfig.rowContent)); + return content; +} +function isColPropsEqual(cols0, cols1) { + return isArraysEqual(cols0, cols1, isPropsEqual); +} +function renderMicroColGroup(cols, shrinkWidth) { + var colNodes = []; + /* + for ColProps with spans, it would have been great to make a single + HOWEVER, Chrome was getting messing up distributing the width to elements makes Chrome behave. + */ + for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) { + var colProps = cols_1[_i]; + var span = colProps.span || 1; + for (var i = 0; i < span; i += 1) { + colNodes.push((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("col", { style: { + width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''), + minWidth: colProps.minWidth || '', + } })); + } + } + return _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)(['colgroup', {}], colNodes)); +} +function sanitizeShrinkWidth(shrinkWidth) { + /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth + 4 accounts for 2 2-pixel borders. TODO: better solution? */ + return shrinkWidth == null ? 4 : shrinkWidth; +} +function hasShrinkWidth(cols) { + for (var _i = 0, cols_2 = cols; _i < cols_2.length; _i++) { + var col = cols_2[_i]; + if (col.width === 'shrink') { + return true; + } + } + return false; +} +function getScrollGridClassNames(liquid, context) { + var classNames = [ + 'fc-scrollgrid', + context.theme.getClass('table'), + ]; + if (liquid) { + classNames.push('fc-scrollgrid-liquid'); + } + return classNames; +} +function getSectionClassNames(sectionConfig, wholeTableVGrow) { + var classNames = [ + 'fc-scrollgrid-section', + "fc-scrollgrid-section-" + sectionConfig.type, + sectionConfig.className, // used? + ]; + if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) { + classNames.push('fc-scrollgrid-section-liquid'); + } + if (sectionConfig.isSticky) { + classNames.push('fc-scrollgrid-section-sticky'); + } + return classNames; +} +function renderScrollShim(arg) { + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-scrollgrid-sticky-shim", style: { + width: arg.clientWidth, + minWidth: arg.tableMinWidth, + } })); +} +function getStickyHeaderDates(options) { + var stickyHeaderDates = options.stickyHeaderDates; + if (stickyHeaderDates == null || stickyHeaderDates === 'auto') { + stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto'; + } + return stickyHeaderDates; +} +function getStickyFooterScrollbar(options) { + var stickyFooterScrollbar = options.stickyFooterScrollbar; + if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') { + stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto'; + } + return stickyFooterScrollbar; +} + +var SimpleScrollGrid = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(SimpleScrollGrid, _super); + function SimpleScrollGrid() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.processCols = memoize(function (a) { return a; }, isColPropsEqual); // so we get same `cols` props every time + // yucky to memoize VNodes, but much more efficient for consumers + _this.renderMicroColGroup = memoize(renderMicroColGroup); + _this.scrollerRefs = new RefMap(); + _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this)); + _this.state = { + shrinkWidth: null, + forceYScrollbars: false, + scrollerClientWidths: {}, + scrollerClientHeights: {}, + }; + // TODO: can do a really simple print-view. dont need to join rows + _this.handleSizing = function () { + _this.setState((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ shrinkWidth: _this.computeShrinkWidth() }, _this.computeScrollerDims())); + }; + return _this; + } + SimpleScrollGrid.prototype.render = function () { + var _a = this, props = _a.props, state = _a.state, context = _a.context; + var sectionConfigs = props.sections || []; + var cols = this.processCols(props.cols); + var microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth); + var classNames = getScrollGridClassNames(props.liquid, context); + if (props.collapsibleWidth) { + classNames.push('fc-scrollgrid-collapsible'); + } + // TODO: make DRY + var configCnt = sectionConfigs.length; + var configI = 0; + var currentConfig; + var headSectionNodes = []; + var bodySectionNodes = []; + var footSectionNodes = []; + while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') { + headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true)); + configI += 1; + } + while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') { + bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false)); + configI += 1; + } + while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') { + footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true)); + configI += 1; + } + // firefox bug: when setting height on table and there is a thead or tfoot, + // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524) + // use getCanVGrowWithinCell as a way to detect table-stupid firefox. + // if so, use a simpler dom structure, jam everything into a lone tbody. + var isBuggy = !getCanVGrowWithinCell(); + var roleAttrs = { role: 'rowgroup' }; + return (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('table', { + role: 'grid', + className: classNames.join(' '), + style: { height: props.height }, + }, Boolean(!isBuggy && headSectionNodes.length) && _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)(['tfoot', roleAttrs], footSectionNodes)), isBuggy && _vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes))); + }; + SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode, isHeader) { + if ('outerContent' in sectionConfig) { + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(_vdom_js__WEBPACK_IMPORTED_MODULE_1__.Fragment, { key: sectionConfig.key }, sectionConfig.outerContent)); + } + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { key: sectionConfig.key, role: "presentation", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader))); + }; + SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig, isHeader) { + if ('outerContent' in chunkConfig) { + return chunkConfig.outerContent; + } + var props = this.props; + var _a = this.state, forceYScrollbars = _a.forceYScrollbars, scrollerClientWidths = _a.scrollerClientWidths, scrollerClientHeights = _a.scrollerClientHeights; + var needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config? + var isLiquid = getSectionHasLiquidHeight(props, sectionConfig); + // for `!props.liquid` - is WHOLE scrollgrid natural height? + // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars + var overflowY = !props.liquid ? 'visible' : + forceYScrollbars ? 'scroll' : + !needsYScrolling ? 'hidden' : + 'auto'; + var sectionKey = sectionConfig.key; + var content = renderChunkContent(sectionConfig, chunkConfig, { + tableColGroupNode: microColGroupNode, + tableMinWidth: '', + clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null, + clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null, + expandRows: sectionConfig.expandRows, + syncRowHeights: false, + rowSyncHeights: [], + reportRowHeightChange: function () { }, + }, isHeader); + return (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(isHeader ? 'th' : 'td', { + ref: chunkConfig.elRef, + role: 'presentation', + }, (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-scroller-harness" + (isLiquid ? ' fc-scroller-harness-liquid' : '') }, + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness + : true }, content))); + }; + SimpleScrollGrid.prototype._handleScrollerEl = function (scrollerEl, key) { + var section = getSectionByKey(this.props.sections, key); + if (section) { + setRef(section.chunk.scrollerElRef, scrollerEl); + } + }; + SimpleScrollGrid.prototype.componentDidMount = function () { + this.handleSizing(); + this.context.addResizeHandler(this.handleSizing); + }; + SimpleScrollGrid.prototype.componentDidUpdate = function () { + // TODO: need better solution when state contains non-sizing things + this.handleSizing(); + }; + SimpleScrollGrid.prototype.componentWillUnmount = function () { + this.context.removeResizeHandler(this.handleSizing); + }; + SimpleScrollGrid.prototype.computeShrinkWidth = function () { + return hasShrinkWidth(this.props.cols) + ? computeShrinkWidth(this.scrollerElRefs.getAll()) + : 0; + }; + SimpleScrollGrid.prototype.computeScrollerDims = function () { + var scrollbarWidth = getScrollbarWidths(); + var _a = this, scrollerRefs = _a.scrollerRefs, scrollerElRefs = _a.scrollerElRefs; + var forceYScrollbars = false; + var scrollerClientWidths = {}; + var scrollerClientHeights = {}; + for (var sectionKey in scrollerRefs.currentMap) { + var scroller = scrollerRefs.currentMap[sectionKey]; + if (scroller && scroller.needsYScrolling()) { + forceYScrollbars = true; + break; + } + } + for (var _i = 0, _b = this.props.sections; _i < _b.length; _i++) { + var section = _b[_i]; + var sectionKey = section.key; + var scrollerEl = scrollerElRefs.currentMap[sectionKey]; + if (scrollerEl) { + var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders + scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars + ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future + : 0)); + scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height); + } + } + return { forceYScrollbars: forceYScrollbars, scrollerClientWidths: scrollerClientWidths, scrollerClientHeights: scrollerClientHeights }; + }; + return SimpleScrollGrid; +}(BaseComponent)); +SimpleScrollGrid.addStateEquality({ + scrollerClientWidths: isPropsEqual, + scrollerClientHeights: isPropsEqual, +}); +function getSectionByKey(sections, key) { + for (var _i = 0, sections_1 = sections; _i < sections_1.length; _i++) { + var section = sections_1[_i]; + if (section.key === key) { + return section; + } + } + return null; +} + +var EventRoot = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(EventRoot, _super); + function EventRoot() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.elRef = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + return _this; + } + EventRoot.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var options = context.options; + var seg = props.seg; + var eventRange = seg.eventRange; + var ui = eventRange.ui; + var hookProps = { + event: new EventApi(context, eventRange.def, eventRange.instance), + view: context.viewApi, + timeText: props.timeText, + textColor: ui.textColor, + backgroundColor: ui.backgroundColor, + borderColor: ui.borderColor, + isDraggable: !props.disableDragging && computeSegDraggable(seg, context), + isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context), + isEndResizable: !props.disableResizing && computeSegEndResizable(seg), + isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting), + isStart: Boolean(seg.isStart), + isEnd: Boolean(seg.isEnd), + isPast: Boolean(props.isPast), + isFuture: Boolean(props.isFuture), + isToday: Boolean(props.isToday), + isSelected: Boolean(props.isSelected), + isDragging: Boolean(props.isDragging), + isResizing: Boolean(props.isResizing), + }; + var standardClassNames = getEventClassNames(hookProps).concat(ui.classNames); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(RenderHook, { hookProps: hookProps, classNames: options.eventClassNames, content: options.eventContent, defaultContent: props.defaultContent, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount, elRef: this.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps); })); + }; + EventRoot.prototype.componentDidMount = function () { + setElSeg(this.elRef.current, this.props.seg); + }; + /* + need to re-assign seg to the element if seg changes, even if the element is the same + */ + EventRoot.prototype.componentDidUpdate = function (prevProps) { + var seg = this.props.seg; + if (seg !== prevProps.seg) { + setElSeg(this.elRef.current, seg); + } + }; + return EventRoot; +}(BaseComponent)); + +// should not be a purecomponent +var StandardEvent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(StandardEvent, _super); + function StandardEvent() { + return _super !== null && _super.apply(this, arguments) || this; + } + StandardEvent.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var seg = props.seg; + var timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat; + var timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(EventRoot, { seg: seg, timeText: timeText, disableDragging: props.disableDragging, disableResizing: props.disableResizing, defaultContent: props.defaultContent || renderInnerContent$1, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ className: props.extraClassNames.concat(classNames).join(' '), style: { + borderColor: hookProps.borderColor, + backgroundColor: hookProps.backgroundColor, + }, ref: rootElRef }, getSegAnchorAttrs(seg, context)), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-main", ref: innerElRef, style: { color: hookProps.textColor } }, innerContent), + hookProps.isStartResizable && + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-resizer fc-event-resizer-start" }), + hookProps.isEndResizable && + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-resizer fc-event-resizer-end" }))); })); + }; + return StandardEvent; +}(BaseComponent)); +function renderInnerContent$1(innerProps) { + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-main-frame" }, + innerProps.timeText && ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-time" }, innerProps.timeText)), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-title-container" }, + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-title fc-sticky" }, innerProps.event.title || (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(_vdom_js__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, "\u00A0"))))); +} + +var NowIndicatorRoot = function (props) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewContextType.Consumer, null, function (context) { + var options = context.options; + var hookProps = { + isAxis: props.isAxis, + date: context.dateEnv.toDate(props.date), + view: context.viewApi, + }; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(RenderHook, { hookProps: hookProps, classNames: options.nowIndicatorClassNames, content: options.nowIndicatorContent, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children)); +})); }; + +var DAY_NUM_FORMAT = createFormatter({ day: 'numeric' }); +var DayCellContent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DayCellContent, _super); + function DayCellContent() { + return _super !== null && _super.apply(this, arguments) || this; + } + DayCellContent.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var options = context.options; + var hookProps = refineDayCellHookProps({ + date: props.date, + dateProfile: props.dateProfile, + todayRange: props.todayRange, + showDayNumber: props.showDayNumber, + extraProps: props.extraHookProps, + viewApi: context.viewApi, + dateEnv: context.dateEnv, + }); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children)); + }; + return DayCellContent; +}(BaseComponent)); +function refineDayCellHookProps(raw) { + var date = raw.date, dateEnv = raw.dateEnv; + var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile); + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '' }), raw.extraProps); +} + +var DayCellRoot = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DayCellRoot, _super); + function DayCellRoot() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.refineHookProps = memoizeObjArg(refineDayCellHookProps); + _this.normalizeClassNames = buildClassNameNormalizer(); + return _this; + } + DayCellRoot.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var options = context.options; + var hookProps = this.refineHookProps({ + date: props.date, + dateProfile: props.dateProfile, + todayRange: props.todayRange, + showDayNumber: props.showDayNumber, + extraProps: props.extraHookProps, + viewApi: context.viewApi, + dateEnv: context.dateEnv, + }); + var classNames = getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled + ? [] // don't use custom classNames if disabled + : this.normalizeClassNames(options.dayCellClassNames, hookProps)); + var dataAttrs = hookProps.isDisabled ? {} : { + 'data-date': formatDayString(props.date), + }; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(MountHook, { hookProps: hookProps, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled); })); + }; + return DayCellRoot; +}(BaseComponent)); + +function renderFill(fillType) { + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-" + fillType })); +} +var BgEvent = function (props) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(EventRoot, { defaultContent: renderInnerContent, seg: props.seg /* uselesss i think */, timeText: "", disableDragging: true, disableResizing: true, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: rootElRef, className: ['fc-bg-event'].concat(classNames).join(' '), style: { + backgroundColor: hookProps.backgroundColor, + } }, innerContent)); })); }; +function renderInnerContent(props) { + var title = props.event.title; + return title && ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-title" }, props.event.title)); +} + +var WeekNumberRoot = function (props) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewContextType.Consumer, null, function (context) { + var dateEnv = context.dateEnv, options = context.options; + var date = props.date; + var format = options.weekNumberFormat || props.defaultFormat; + var num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well? + var text = dateEnv.format(date, format); + var hookProps = { num: num, text: text, date: date }; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(RenderHook, { hookProps: hookProps, classNames: options.weekNumberClassNames, content: options.weekNumberContent, defaultContent: renderInner, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children)); +})); }; +function renderInner(innerProps) { + return innerProps.text; +} + +var PADDING_FROM_VIEWPORT = 10; +var Popover = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(Popover, _super); + function Popover() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.state = { + titleId: getUniqueDomId(), + }; + _this.handleRootEl = function (el) { + _this.rootEl = el; + if (_this.props.elRef) { + setRef(_this.props.elRef, el); + } + }; + // Triggered when the user clicks *anywhere* in the document, for the autoHide feature + _this.handleDocumentMouseDown = function (ev) { + // only hide the popover if the click happened outside the popover + var target = getEventTargetViaRoot(ev); + if (!_this.rootEl.contains(target)) { + _this.handleCloseClick(); + } + }; + _this.handleDocumentKeyDown = function (ev) { + if (ev.key === 'Escape') { + _this.handleCloseClick(); + } + }; + _this.handleCloseClick = function () { + var onClose = _this.props.onClose; + if (onClose) { + onClose(); + } + }; + return _this; + } + Popover.prototype.render = function () { + var _a = this.context, theme = _a.theme, options = _a.options; + var _b = this, props = _b.props, state = _b.state; + var classNames = [ + 'fc-popover', + theme.getClass('popover'), + ].concat(props.extraClassNames || []); + return (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createPortal)((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ id: props.id, className: classNames.join(' '), "aria-labelledby": state.titleId }, props.extraAttrs, { ref: this.handleRootEl }), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') }, + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("span", { className: "fc-popover-title", id: state.titleId }, props.title), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("span", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })), + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl); + }; + Popover.prototype.componentDidMount = function () { + document.addEventListener('mousedown', this.handleDocumentMouseDown); + document.addEventListener('keydown', this.handleDocumentKeyDown); + this.updateSize(); + }; + Popover.prototype.componentWillUnmount = function () { + document.removeEventListener('mousedown', this.handleDocumentMouseDown); + document.removeEventListener('keydown', this.handleDocumentKeyDown); + }; + Popover.prototype.updateSize = function () { + var isRtl = this.context.isRtl; + var _a = this.props, alignmentEl = _a.alignmentEl, alignGridTop = _a.alignGridTop; + var rootEl = this.rootEl; + var alignmentRect = computeClippedClientRect(alignmentEl); + if (alignmentRect) { + var popoverDims = rootEl.getBoundingClientRect(); + // position relative to viewport + var popoverTop = alignGridTop + ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top + : alignmentRect.top; + var popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left; + // constrain + popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT); + popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width); + popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT); + var origin_1 = rootEl.offsetParent.getBoundingClientRect(); + applyStyle(rootEl, { + top: popoverTop - origin_1.top, + left: popoverLeft - origin_1.left, + }); + } + }; + return Popover; +}(BaseComponent)); + +var MorePopover = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(MorePopover, _super); + function MorePopover() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.handleRootEl = function (rootEl) { + _this.rootEl = rootEl; + if (rootEl) { + _this.context.registerInteractiveComponent(_this, { + el: rootEl, + useEventCenter: false, + }); + } + else { + _this.context.unregisterInteractiveComponent(_this); + } + }; + return _this; + } + MorePopover.prototype.render = function () { + var _a = this.context, options = _a.options, dateEnv = _a.dateEnv; + var props = this.props; + var startDate = props.startDate, todayRange = props.todayRange, dateProfile = props.dateProfile; + var title = dateEnv.format(startDate, options.dayPopoverFormat); + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(DayCellRoot, { date: startDate, dateProfile: dateProfile, todayRange: todayRange, elRef: this.handleRootEl }, function (rootElRef, dayClassNames, dataAttrs) { return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(Popover, { elRef: rootElRef, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose }, + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(DayCellContent, { date: startDate, dateProfile: dateProfile, todayRange: todayRange }, function (innerElRef, innerContent) { return (innerContent && + (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-more-popover-misc", ref: innerElRef }, innerContent)); }), + props.children)); })); + }; + MorePopover.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) { + var _a = this, rootEl = _a.rootEl, props = _a.props; + if (positionLeft >= 0 && positionLeft < elWidth && + positionTop >= 0 && positionTop < elHeight) { + return { + dateProfile: props.dateProfile, + dateSpan: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ allDay: true, range: { + start: props.startDate, + end: props.endDate, + } }, props.extraDateSpan), + dayEl: rootEl, + rect: { + left: 0, + top: 0, + right: elWidth, + bottom: elHeight, + }, + layer: 1, // important when comparing with hits from other components + }; + } + return null; + }; + return MorePopover; +}(DateComponent)); + +var MoreLinkRoot = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(MoreLinkRoot, _super); + function MoreLinkRoot() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.linkElRef = (0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.state = { + isPopoverOpen: false, + popoverId: getUniqueDomId(), + }; + _this.handleClick = function (ev) { + var _a = _this, props = _a.props, context = _a.context; + var moreLinkClick = context.options.moreLinkClick; + var date = computeRange(props).start; + function buildPublicSeg(seg) { + var _a = seg.eventRange, def = _a.def, instance = _a.instance, range = _a.range; + return { + event: new EventApi(context, def, instance), + start: context.dateEnv.toDate(range.start), + end: context.dateEnv.toDate(range.end), + isStart: seg.isStart, + isEnd: seg.isEnd, + }; + } + if (typeof moreLinkClick === 'function') { + moreLinkClick = moreLinkClick({ + date: date, + allDay: Boolean(props.allDayDate), + allSegs: props.allSegs.map(buildPublicSeg), + hiddenSegs: props.hiddenSegs.map(buildPublicSeg), + jsEvent: ev, + view: context.viewApi, + }); + } + if (!moreLinkClick || moreLinkClick === 'popover') { + _this.setState({ isPopoverOpen: true }); + } + else if (typeof moreLinkClick === 'string') { // a view name + context.calendarApi.zoomTo(date, moreLinkClick); + } + }; + _this.handlePopoverClose = function () { + _this.setState({ isPopoverOpen: false }); + }; + return _this; + } + MoreLinkRoot.prototype.render = function () { + var _this = this; + var _a = this, props = _a.props, state = _a.state; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(ViewContextType.Consumer, null, function (context) { + var viewApi = context.viewApi, options = context.options, calendarApi = context.calendarApi; + var moreLinkText = options.moreLinkText; + var moreCnt = props.moreCnt; + var range = computeRange(props); + var text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals + ? moreLinkText.call(calendarApi, moreCnt) + : "+" + moreCnt + " " + moreLinkText; + var title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text); + var hookProps = { + num: moreCnt, + shortText: "+" + moreCnt, + text: text, + view: viewApi, + }; + return ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(_vdom_js__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, + Boolean(props.moreCnt) && ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(RenderHook, { elRef: _this.linkElRef, hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: props.defaultContent || renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, ['fc-more-link'].concat(customClassNames), innerElRef, innerContent, _this.handleClick, title, state.isPopoverOpen, state.isPopoverOpen ? state.popoverId : ''); })), + state.isPopoverOpen && ((0,_vdom_js__WEBPACK_IMPORTED_MODULE_1__.createElement)(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: _this.parentEl, alignmentEl: props.alignmentElRef.current, alignGridTop: props.alignGridTop, onClose: _this.handlePopoverClose }, props.popoverContent())))); + })); + }; + MoreLinkRoot.prototype.componentDidMount = function () { + this.updateParentEl(); + }; + MoreLinkRoot.prototype.componentDidUpdate = function () { + this.updateParentEl(); + }; + MoreLinkRoot.prototype.updateParentEl = function () { + if (this.linkElRef.current) { + this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness'); + } + }; + return MoreLinkRoot; +}(BaseComponent)); +function renderMoreLinkInner(props) { + return props.text; +} +function computeRange(props) { + if (props.allDayDate) { + return { + start: props.allDayDate, + end: addDays(props.allDayDate, 1), + }; + } + var hiddenSegs = props.hiddenSegs; + return { + start: computeEarliestSegStart(hiddenSegs), + end: computeLatestSegEnd(hiddenSegs), + }; +} +function computeEarliestSegStart(segs) { + return segs.reduce(pickEarliestStart).eventRange.range.start; +} +function pickEarliestStart(seg0, seg1) { + return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1; +} +function computeLatestSegEnd(segs) { + return segs.reduce(pickLatestEnd).eventRange.range.end; +} +function pickLatestEnd(seg0, seg1) { + return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1; +} + +// exports +// -------------------------------------------------------------------------------------------------- +var version = '5.10.1'; // important to type it, so .d.ts has generic string + + +//# sourceMappingURL=main.js.map + + +/***/ }), + +/***/ "./node_modules/@fullcalendar/common/vdom.js": +/*!***************************************************!*\ + !*** ./node_modules/@fullcalendar/common/vdom.js ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Component": () => (/* binding */ Component), +/* harmony export */ "Fragment": () => (/* binding */ Fragment), +/* harmony export */ "createContext": () => (/* binding */ createContext), +/* harmony export */ "createElement": () => (/* binding */ createElement), +/* harmony export */ "createPortal": () => (/* binding */ createPortal), +/* harmony export */ "createRef": () => (/* binding */ createRef), +/* harmony export */ "flushToDom": () => (/* binding */ flushToDom), +/* harmony export */ "render": () => (/* binding */ render), +/* harmony export */ "unmountComponentAtNode": () => (/* binding */ unmountComponentAtNode) +/* harmony export */ }); +/// +if (typeof FullCalendarVDom === 'undefined') { + throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.'); +} +var Component = FullCalendarVDom.Component; +var createElement = FullCalendarVDom.createElement; +var render = FullCalendarVDom.render; +var createRef = FullCalendarVDom.createRef; +var Fragment = FullCalendarVDom.Fragment; +var createContext = FullCalendarVDom.createContext; +var createPortal = FullCalendarVDom.createPortal; +var flushToDom = FullCalendarVDom.flushToDom; +var unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode; +/* eslint-enable */ + + + + +/***/ }), + +/***/ "./node_modules/@fullcalendar/core/main.js": +/*!*************************************************!*\ + !*** ./node_modules/@fullcalendar/core/main.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BASE_OPTION_DEFAULTS": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BASE_OPTION_DEFAULTS), +/* harmony export */ "BASE_OPTION_REFINERS": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BASE_OPTION_REFINERS), +/* harmony export */ "BaseComponent": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent), +/* harmony export */ "BgEvent": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BgEvent), +/* harmony export */ "CalendarApi": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarApi), +/* harmony export */ "CalendarContent": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarContent), +/* harmony export */ "CalendarDataManager": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarDataManager), +/* harmony export */ "CalendarDataProvider": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarDataProvider), +/* harmony export */ "CalendarRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarRoot), +/* harmony export */ "Component": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Component), +/* harmony export */ "ContentHook": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ContentHook), +/* harmony export */ "CustomContentRenderContext": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CustomContentRenderContext), +/* harmony export */ "DateComponent": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent), +/* harmony export */ "DateEnv": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateEnv), +/* harmony export */ "DateProfileGenerator": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateProfileGenerator), +/* harmony export */ "DayCellContent": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayCellContent), +/* harmony export */ "DayCellRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayCellRoot), +/* harmony export */ "DayHeader": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayHeader), +/* harmony export */ "DaySeriesModel": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DaySeriesModel), +/* harmony export */ "DayTableModel": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayTableModel), +/* harmony export */ "DelayedRunner": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DelayedRunner), +/* harmony export */ "ElementDragging": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ElementDragging), +/* harmony export */ "ElementScrollController": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ElementScrollController), +/* harmony export */ "Emitter": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Emitter), +/* harmony export */ "EventApi": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.EventApi), +/* harmony export */ "EventRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.EventRoot), +/* harmony export */ "EventSourceApi": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.EventSourceApi), +/* harmony export */ "Fragment": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment), +/* harmony export */ "Interaction": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Interaction), +/* harmony export */ "MoreLinkRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.MoreLinkRoot), +/* harmony export */ "MountHook": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.MountHook), +/* harmony export */ "NamedTimeZoneImpl": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NamedTimeZoneImpl), +/* harmony export */ "NowIndicatorRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowIndicatorRoot), +/* harmony export */ "NowTimer": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowTimer), +/* harmony export */ "PositionCache": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.PositionCache), +/* harmony export */ "RefMap": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap), +/* harmony export */ "RenderHook": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RenderHook), +/* harmony export */ "ScrollController": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ScrollController), +/* harmony export */ "ScrollResponder": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ScrollResponder), +/* harmony export */ "Scroller": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Scroller), +/* harmony export */ "SegHierarchy": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.SegHierarchy), +/* harmony export */ "SimpleScrollGrid": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.SimpleScrollGrid), +/* harmony export */ "Slicer": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Slicer), +/* harmony export */ "Splitter": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Splitter), +/* harmony export */ "StandardEvent": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.StandardEvent), +/* harmony export */ "TableDateCell": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.TableDateCell), +/* harmony export */ "TableDowCell": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.TableDowCell), +/* harmony export */ "Theme": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Theme), +/* harmony export */ "ViewApi": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewApi), +/* harmony export */ "ViewContextType": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewContextType), +/* harmony export */ "ViewRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewRoot), +/* harmony export */ "WeekNumberRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.WeekNumberRoot), +/* harmony export */ "WindowScrollController": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.WindowScrollController), +/* harmony export */ "addDays": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDays), +/* harmony export */ "addDurations": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDurations), +/* harmony export */ "addMs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addMs), +/* harmony export */ "addWeeks": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addWeeks), +/* harmony export */ "allowContextMenu": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.allowContextMenu), +/* harmony export */ "allowSelection": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.allowSelection), +/* harmony export */ "applyMutationToEventStore": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.applyMutationToEventStore), +/* harmony export */ "applyStyle": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.applyStyle), +/* harmony export */ "applyStyleProp": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.applyStyleProp), +/* harmony export */ "asCleanDays": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asCleanDays), +/* harmony export */ "asRoughMinutes": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMinutes), +/* harmony export */ "asRoughMs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMs), +/* harmony export */ "asRoughSeconds": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughSeconds), +/* harmony export */ "binarySearch": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.binarySearch), +/* harmony export */ "buildClassNameNormalizer": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildClassNameNormalizer), +/* harmony export */ "buildEntryKey": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEntryKey), +/* harmony export */ "buildEventApis": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEventApis), +/* harmony export */ "buildEventRangeKey": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEventRangeKey), +/* harmony export */ "buildHashFromArray": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildHashFromArray), +/* harmony export */ "buildIsoString": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildIsoString), +/* harmony export */ "buildNavLinkAttrs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildNavLinkAttrs), +/* harmony export */ "buildSegCompareObj": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildSegCompareObj), +/* harmony export */ "buildSegTimeText": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildSegTimeText), +/* harmony export */ "collectFromHash": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.collectFromHash), +/* harmony export */ "combineEventUis": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.combineEventUis), +/* harmony export */ "compareByFieldSpec": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.compareByFieldSpec), +/* harmony export */ "compareByFieldSpecs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.compareByFieldSpecs), +/* harmony export */ "compareNumbers": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.compareNumbers), +/* harmony export */ "compareObjs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.compareObjs), +/* harmony export */ "computeEarliestSegStart": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeEarliestSegStart), +/* harmony export */ "computeEdges": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeEdges), +/* harmony export */ "computeFallbackHeaderFormat": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeFallbackHeaderFormat), +/* harmony export */ "computeHeightAndMargins": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeHeightAndMargins), +/* harmony export */ "computeInnerRect": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeInnerRect), +/* harmony export */ "computeRect": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeRect), +/* harmony export */ "computeSegDraggable": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeSegDraggable), +/* harmony export */ "computeSegEndResizable": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeSegEndResizable), +/* harmony export */ "computeSegStartResizable": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeSegStartResizable), +/* harmony export */ "computeShrinkWidth": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeShrinkWidth), +/* harmony export */ "computeSmallestCellWidth": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeSmallestCellWidth), +/* harmony export */ "computeVisibleDayRange": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeVisibleDayRange), +/* harmony export */ "config": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.config), +/* harmony export */ "constrainPoint": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.constrainPoint), +/* harmony export */ "createAriaClickAttrs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createAriaClickAttrs), +/* harmony export */ "createContext": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createContext), +/* harmony export */ "createDuration": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createDuration), +/* harmony export */ "createElement": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement), +/* harmony export */ "createEmptyEventStore": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createEmptyEventStore), +/* harmony export */ "createEventInstance": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createEventInstance), +/* harmony export */ "createEventUi": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createEventUi), +/* harmony export */ "createFormatter": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter), +/* harmony export */ "createPlugin": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createPlugin), +/* harmony export */ "createPortal": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createPortal), +/* harmony export */ "createRef": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef), +/* harmony export */ "diffDates": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffDates), +/* harmony export */ "diffDayAndTime": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffDayAndTime), +/* harmony export */ "diffDays": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffDays), +/* harmony export */ "diffPoints": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffPoints), +/* harmony export */ "diffWeeks": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffWeeks), +/* harmony export */ "diffWholeDays": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffWholeDays), +/* harmony export */ "diffWholeWeeks": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffWholeWeeks), +/* harmony export */ "disableCursor": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.disableCursor), +/* harmony export */ "elementClosest": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.elementClosest), +/* harmony export */ "elementMatches": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.elementMatches), +/* harmony export */ "enableCursor": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.enableCursor), +/* harmony export */ "eventTupleToStore": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.eventTupleToStore), +/* harmony export */ "filterEventStoreDefs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.filterEventStoreDefs), +/* harmony export */ "filterHash": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.filterHash), +/* harmony export */ "findDirectChildren": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.findDirectChildren), +/* harmony export */ "findElements": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.findElements), +/* harmony export */ "flexibleCompare": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.flexibleCompare), +/* harmony export */ "flushToDom": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.flushToDom), +/* harmony export */ "formatDate": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.formatDate), +/* harmony export */ "formatDayString": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.formatDayString), +/* harmony export */ "formatIsoTimeString": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.formatIsoTimeString), +/* harmony export */ "formatRange": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.formatRange), +/* harmony export */ "getAllowYScrolling": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getAllowYScrolling), +/* harmony export */ "getCanVGrowWithinCell": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getCanVGrowWithinCell), +/* harmony export */ "getClippingParents": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getClippingParents), +/* harmony export */ "getDateMeta": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getDateMeta), +/* harmony export */ "getDayClassNames": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getDayClassNames), +/* harmony export */ "getDefaultEventEnd": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getDefaultEventEnd), +/* harmony export */ "getElRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getElRoot), +/* harmony export */ "getElSeg": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getElSeg), +/* harmony export */ "getEntrySpanEnd": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getEntrySpanEnd), +/* harmony export */ "getEventClassNames": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getEventClassNames), +/* harmony export */ "getEventTargetViaRoot": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getEventTargetViaRoot), +/* harmony export */ "getIsRtlScrollbarOnLeft": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getIsRtlScrollbarOnLeft), +/* harmony export */ "getRectCenter": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getRectCenter), +/* harmony export */ "getRelevantEvents": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getRelevantEvents), +/* harmony export */ "getScrollGridClassNames": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getScrollGridClassNames), +/* harmony export */ "getScrollbarWidths": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getScrollbarWidths), +/* harmony export */ "getSectionClassNames": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSectionClassNames), +/* harmony export */ "getSectionHasLiquidHeight": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSectionHasLiquidHeight), +/* harmony export */ "getSegAnchorAttrs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegAnchorAttrs), +/* harmony export */ "getSegMeta": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta), +/* harmony export */ "getSlotClassNames": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSlotClassNames), +/* harmony export */ "getStickyFooterScrollbar": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyFooterScrollbar), +/* harmony export */ "getStickyHeaderDates": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyHeaderDates), +/* harmony export */ "getUnequalProps": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getUnequalProps), +/* harmony export */ "getUniqueDomId": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getUniqueDomId), +/* harmony export */ "globalLocales": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.globalLocales), +/* harmony export */ "globalPlugins": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.globalPlugins), +/* harmony export */ "greatestDurationDenominator": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.greatestDurationDenominator), +/* harmony export */ "groupIntersectingEntries": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.groupIntersectingEntries), +/* harmony export */ "guid": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.guid), +/* harmony export */ "hasBgRendering": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.hasBgRendering), +/* harmony export */ "hasShrinkWidth": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.hasShrinkWidth), +/* harmony export */ "identity": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.identity), +/* harmony export */ "interactionSettingsStore": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.interactionSettingsStore), +/* harmony export */ "interactionSettingsToStore": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.interactionSettingsToStore), +/* harmony export */ "intersectRanges": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.intersectRanges), +/* harmony export */ "intersectRects": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.intersectRects), +/* harmony export */ "intersectSpans": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.intersectSpans), +/* harmony export */ "isArraysEqual": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isArraysEqual), +/* harmony export */ "isColPropsEqual": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isColPropsEqual), +/* harmony export */ "isDateSelectionValid": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isDateSelectionValid), +/* harmony export */ "isDateSpansEqual": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isDateSpansEqual), +/* harmony export */ "isInt": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isInt), +/* harmony export */ "isInteractionValid": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isInteractionValid), +/* harmony export */ "isMultiDayRange": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isMultiDayRange), +/* harmony export */ "isPropsEqual": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isPropsEqual), +/* harmony export */ "isPropsValid": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isPropsValid), +/* harmony export */ "isValidDate": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isValidDate), +/* harmony export */ "joinSpans": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.joinSpans), +/* harmony export */ "listenBySelector": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.listenBySelector), +/* harmony export */ "mapHash": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.mapHash), +/* harmony export */ "memoize": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize), +/* harmony export */ "memoizeArraylike": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoizeArraylike), +/* harmony export */ "memoizeHashlike": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoizeHashlike), +/* harmony export */ "memoizeObjArg": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoizeObjArg), +/* harmony export */ "mergeEventStores": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.mergeEventStores), +/* harmony export */ "multiplyDuration": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.multiplyDuration), +/* harmony export */ "padStart": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.padStart), +/* harmony export */ "parseBusinessHours": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.parseBusinessHours), +/* harmony export */ "parseClassNames": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.parseClassNames), +/* harmony export */ "parseDragMeta": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.parseDragMeta), +/* harmony export */ "parseEventDef": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.parseEventDef), +/* harmony export */ "parseFieldSpecs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.parseFieldSpecs), +/* harmony export */ "parseMarker": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.parseMarker), +/* harmony export */ "pointInsideRect": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.pointInsideRect), +/* harmony export */ "preventContextMenu": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.preventContextMenu), +/* harmony export */ "preventDefault": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.preventDefault), +/* harmony export */ "preventSelection": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.preventSelection), +/* harmony export */ "rangeContainsMarker": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.rangeContainsMarker), +/* harmony export */ "rangeContainsRange": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.rangeContainsRange), +/* harmony export */ "rangesEqual": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.rangesEqual), +/* harmony export */ "rangesIntersect": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.rangesIntersect), +/* harmony export */ "refineEventDef": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.refineEventDef), +/* harmony export */ "refineProps": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.refineProps), +/* harmony export */ "removeElement": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.removeElement), +/* harmony export */ "removeExact": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.removeExact), +/* harmony export */ "render": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.render), +/* harmony export */ "renderChunkContent": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderChunkContent), +/* harmony export */ "renderFill": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderFill), +/* harmony export */ "renderMicroColGroup": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderMicroColGroup), +/* harmony export */ "renderScrollShim": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderScrollShim), +/* harmony export */ "requestJson": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.requestJson), +/* harmony export */ "sanitizeShrinkWidth": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sanitizeShrinkWidth), +/* harmony export */ "setElSeg": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.setElSeg), +/* harmony export */ "setRef": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.setRef), +/* harmony export */ "sliceEventStore": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sliceEventStore), +/* harmony export */ "sliceEvents": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sliceEvents), +/* harmony export */ "sortEventSegs": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sortEventSegs), +/* harmony export */ "startOfDay": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.startOfDay), +/* harmony export */ "translateRect": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.translateRect), +/* harmony export */ "triggerDateSelect": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.triggerDateSelect), +/* harmony export */ "unmountComponentAtNode": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.unmountComponentAtNode), +/* harmony export */ "unpromisify": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.unpromisify), +/* harmony export */ "version": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.version), +/* harmony export */ "whenTransitionDone": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.whenTransitionDone), +/* harmony export */ "wholeDivideDurations": () => (/* reexport safe */ _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.wholeDivideDurations), +/* harmony export */ "Calendar": () => (/* binding */ Calendar) +/* harmony export */ }); +/* harmony import */ var _vdom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vdom.js */ "./node_modules/@fullcalendar/core/vdom.js"); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fullcalendar/common */ "./node_modules/@fullcalendar/common/main.js"); +/*! +FullCalendar v5.10.1 +Docs & License: https://fullcalendar.io/ +(c) 2021 Adam Shaw +*/ + + + + + +var Calendar = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(Calendar, _super); + function Calendar(el, optionOverrides) { + if (optionOverrides === void 0) { optionOverrides = {}; } + var _this = _super.call(this) || this; + _this.isRendering = false; + _this.isRendered = false; + _this.currentClassNames = []; + _this.customContentRenderId = 0; // will affect custom generated classNames? + _this.handleAction = function (action) { + // actions we know we want to render immediately + switch (action.type) { + case 'SET_EVENT_DRAG': + case 'SET_EVENT_RESIZE': + _this.renderRunner.tryDrain(); + } + }; + _this.handleData = function (data) { + _this.currentData = data; + _this.renderRunner.request(data.calendarOptions.rerenderDelay); + }; + _this.handleRenderRequest = function () { + if (_this.isRendering) { + _this.isRendered = true; + var currentData_1 = _this.currentData; + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.render)((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarRoot, { options: currentData_1.calendarOptions, theme: currentData_1.theme, emitter: currentData_1.emitter }, function (classNames, height, isHeightAuto, forPrint) { + _this.setClassNames(classNames); + _this.setHeight(height); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CustomContentRenderContext.Provider, { value: _this.customContentRenderId }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarContent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData_1)))); + }), _this.el); + } + else if (_this.isRendered) { + _this.isRendered = false; + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.unmountComponentAtNode)(_this.el); + _this.setClassNames([]); + _this.setHeight(''); + } + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.flushToDom)(); + }; + _this.el = el; + _this.renderRunner = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DelayedRunner(_this.handleRenderRequest); + new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarDataManager({ + optionOverrides: optionOverrides, + calendarApi: _this, + onAction: _this.handleAction, + onData: _this.handleData, + }); + return _this; + } + Object.defineProperty(Calendar.prototype, "view", { + get: function () { return this.currentData.viewApi; } // for public API + , + enumerable: false, + configurable: true + }); + Calendar.prototype.render = function () { + var wasRendering = this.isRendering; + if (!wasRendering) { + this.isRendering = true; + } + else { + this.customContentRenderId += 1; + } + this.renderRunner.request(); + if (wasRendering) { + this.updateSize(); + } + }; + Calendar.prototype.destroy = function () { + if (this.isRendering) { + this.isRendering = false; + this.renderRunner.request(); + } + }; + Calendar.prototype.updateSize = function () { + _super.prototype.updateSize.call(this); + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.flushToDom)(); + }; + Calendar.prototype.batchRendering = function (func) { + this.renderRunner.pause('batchRendering'); + func(); + this.renderRunner.resume('batchRendering'); + }; + Calendar.prototype.pauseRendering = function () { + this.renderRunner.pause('pauseRendering'); + }; + Calendar.prototype.resumeRendering = function () { + this.renderRunner.resume('pauseRendering', true); + }; + Calendar.prototype.resetOptions = function (optionOverrides, append) { + this.currentDataManager.resetOptions(optionOverrides, append); + }; + Calendar.prototype.setClassNames = function (classNames) { + if (!(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isArraysEqual)(classNames, this.currentClassNames)) { + var classList = this.el.classList; + for (var _i = 0, _a = this.currentClassNames; _i < _a.length; _i++) { + var className = _a[_i]; + classList.remove(className); + } + for (var _b = 0, classNames_1 = classNames; _b < classNames_1.length; _b++) { + var className = classNames_1[_b]; + classList.add(className); + } + this.currentClassNames = classNames; + } + }; + Calendar.prototype.setHeight = function (height) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.applyStyleProp)(this.el, 'height', height); + }; + return Calendar; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.CalendarApi)); + + +//# sourceMappingURL=main.js.map + + +/***/ }), + +/***/ "./node_modules/@fullcalendar/core/vdom.js": +/*!*************************************************!*\ + !*** ./node_modules/@fullcalendar/core/vdom.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.module.js"); +/* harmony import */ var preact_compat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! preact/compat */ "./node_modules/preact/compat/dist/compat.module.js"); + + + + +var globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support +if (globalObj.FullCalendarVDom) { + console.warn('FullCalendar VDOM already loaded'); +} +else { + globalObj.FullCalendarVDom = { + Component: preact__WEBPACK_IMPORTED_MODULE_0__.Component, + createElement: preact__WEBPACK_IMPORTED_MODULE_0__.createElement, + render: preact__WEBPACK_IMPORTED_MODULE_0__.render, + createRef: preact__WEBPACK_IMPORTED_MODULE_0__.createRef, + Fragment: preact__WEBPACK_IMPORTED_MODULE_0__.Fragment, + createContext: createContext, + createPortal: preact_compat__WEBPACK_IMPORTED_MODULE_1__.createPortal, + flushToDom: flushToDom, + unmountComponentAtNode: unmountComponentAtNode, + }; +} +// HACKS... +// TODO: lock version +// TODO: link gh issues +function flushToDom() { + var oldDebounceRendering = preact__WEBPACK_IMPORTED_MODULE_0__.options.debounceRendering; // orig + var callbackQ = []; + function execCallbackSync(callback) { + callbackQ.push(callback); + } + preact__WEBPACK_IMPORTED_MODULE_0__.options.debounceRendering = execCallbackSync; + preact__WEBPACK_IMPORTED_MODULE_0__.render(preact__WEBPACK_IMPORTED_MODULE_0__.createElement(FakeComponent, {}), document.createElement('div')); + while (callbackQ.length) { + callbackQ.shift()(); + } + preact__WEBPACK_IMPORTED_MODULE_0__.options.debounceRendering = oldDebounceRendering; +} +var FakeComponent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(FakeComponent, _super); + function FakeComponent() { + return _super !== null && _super.apply(this, arguments) || this; + } + FakeComponent.prototype.render = function () { return preact__WEBPACK_IMPORTED_MODULE_0__.createElement('div', {}); }; + FakeComponent.prototype.componentDidMount = function () { this.setState({}); }; + return FakeComponent; +}(preact__WEBPACK_IMPORTED_MODULE_0__.Component)); +function createContext(defaultValue) { + var ContextType = preact__WEBPACK_IMPORTED_MODULE_0__.createContext(defaultValue); + var origProvider = ContextType.Provider; + ContextType.Provider = function () { + var _this = this; + var isNew = !this.getChildContext; + var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params + if (isNew) { + var subs_1 = []; + this.shouldComponentUpdate = function (_props) { + if (_this.props.value !== _props.value) { + subs_1.forEach(function (c) { + c.context = _props.value; + c.forceUpdate(); + }); + } + }; + this.sub = function (c) { + subs_1.push(c); + var old = c.componentWillUnmount; + c.componentWillUnmount = function () { + subs_1.splice(subs_1.indexOf(c), 1); + old && old.call(c); + }; + }; + } + return children; + }; + return ContextType; +} +function unmountComponentAtNode(node) { + preact__WEBPACK_IMPORTED_MODULE_0__.render(null, node); +} + + +/***/ }), + +/***/ "./node_modules/@fullcalendar/daygrid/main.js": +/*!****************************************************!*\ + !*** ./node_modules/@fullcalendar/daygrid/main.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ "DayGridView": () => (/* binding */ DayTableView), +/* harmony export */ "DayTable": () => (/* binding */ DayTable), +/* harmony export */ "DayTableSlicer": () => (/* binding */ DayTableSlicer), +/* harmony export */ "Table": () => (/* binding */ Table), +/* harmony export */ "TableView": () => (/* binding */ TableView), +/* harmony export */ "buildDayTableModel": () => (/* binding */ buildDayTableModel) +/* harmony export */ }); +/* harmony import */ var _main_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./main.css */ "./node_modules/@fullcalendar/daygrid/main.css"); +/* harmony import */ var _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fullcalendar/common */ "./node_modules/@fullcalendar/common/main.js"); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/*! +FullCalendar v5.10.1 +Docs & License: https://fullcalendar.io/ +(c) 2021 Adam Shaw +*/ + + + + + +/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells. +----------------------------------------------------------------------------------------------------------------------*/ +// It is a manager for a Table subcomponent, which does most of the heavy lifting. +// It is responsible for managing width/height. +var TableView = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableView, _super); + function TableView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.headerElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + return _this; + } + TableView.prototype.renderSimpleLayout = function (headerRowContent, bodyContent) { + var _a = this, props = _a.props, context = _a.context; + var sections = []; + var stickyHeaderDates = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyHeaderDates)(context.options); + if (headerRowContent) { + sections.push({ + type: 'header', + key: 'header', + isSticky: stickyHeaderDates, + chunk: { + elRef: this.headerElRef, + tableClassName: 'fc-col-header', + rowContent: headerRowContent, + }, + }); + } + sections.push({ + type: 'body', + key: 'body', + liquid: true, + chunk: { content: bodyContent }, + }); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))); })); + }; + TableView.prototype.renderHScrollLayout = function (headerRowContent, bodyContent, colCnt, dayMinWidth) { + var ScrollGrid = this.context.pluginHooks.scrollGridImpl; + if (!ScrollGrid) { + throw new Error('No ScrollGrid implementation'); + } + var _a = this, props = _a.props, context = _a.context; + var stickyHeaderDates = !props.forPrint && (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyHeaderDates)(context.options); + var stickyFooterScrollbar = !props.forPrint && (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyFooterScrollbar)(context.options); + var sections = []; + if (headerRowContent) { + sections.push({ + type: 'header', + key: 'header', + isSticky: stickyHeaderDates, + chunks: [{ + key: 'main', + elRef: this.headerElRef, + tableClassName: 'fc-col-header', + rowContent: headerRowContent, + }], + }); + } + sections.push({ + type: 'body', + key: 'body', + liquid: true, + chunks: [{ + key: 'main', + content: bodyContent, + }], + }); + if (stickyFooterScrollbar) { + sections.push({ + type: 'footer', + key: 'footer', + isSticky: true, + chunks: [{ + key: 'main', + content: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderScrollShim, + }], + }); + } + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))); })); + }; + return TableView; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); + +function splitSegsByRow(segs, rowCnt) { + var byRow = []; + for (var i = 0; i < rowCnt; i += 1) { + byRow[i] = []; + } + for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { + var seg = segs_1[_i]; + byRow[seg.row].push(seg); + } + return byRow; +} +function splitSegsByFirstCol(segs, colCnt) { + var byCol = []; + for (var i = 0; i < colCnt; i += 1) { + byCol[i] = []; + } + for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { + var seg = segs_2[_i]; + byCol[seg.firstCol].push(seg); + } + return byCol; +} +function splitInteractionByRow(ui, rowCnt) { + var byRow = []; + if (!ui) { + for (var i = 0; i < rowCnt; i += 1) { + byRow[i] = null; + } + } + else { + for (var i = 0; i < rowCnt; i += 1) { + byRow[i] = { + affectedInstances: ui.affectedInstances, + isEvent: ui.isEvent, + segs: [], + }; + } + for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) { + var seg = _a[_i]; + byRow[seg.row].segs.push(seg); + } + } + return byRow; +} + +var TableCellTop = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableCellTop, _super); + function TableCellTop() { + return _super !== null && _super.apply(this, arguments) || this; + } + TableCellTop.prototype.render = function () { + var props = this.props; + var navLinkAttrs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildNavLinkAttrs)(this.context, props.date); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, function (innerElRef, innerContent) { return ((innerContent || props.forceDayTop) && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-daygrid-day-top", ref: innerElRef }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ id: props.dayNumberId, className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, "\u00A0"))))); })); + }; + return TableCellTop; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function renderTopInner(props) { + return props.dayNumberText; +} + +var DEFAULT_TABLE_EVENT_TIME_FORMAT = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)({ + hour: 'numeric', + minute: '2-digit', + omitZeroMinute: true, + meridiem: 'narrow', +}); +function hasListItemDisplay(seg) { + var display = seg.eventRange.ui.display; + return display === 'list-item' || (display === 'auto' && + !seg.eventRange.def.allDay && + seg.firstCol === seg.lastCol && // can't be multi-day + seg.isStart && // " + seg.isEnd // " + ); +} + +var TableBlockEvent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableBlockEvent, _super); + function TableBlockEvent() { + return _super !== null && _super.apply(this, arguments) || this; + } + TableBlockEvent.prototype.render = function () { + var props = this.props; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.StandardEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }))); + }; + return TableBlockEvent; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); + +var TableListItemEvent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableListItemEvent, _super); + function TableListItemEvent() { + return _super !== null && _super.apply(this, arguments) || this; + } + TableListItemEvent.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT; + var timeText = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildSegTimeText)(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent) { return ( // we don't use styles! + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegAnchorAttrs)(props.seg, context)), innerContent)); })); + }; + return TableListItemEvent; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function renderInnerContent(innerProps) { + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-daygrid-event-dot", style: { borderColor: innerProps.borderColor || innerProps.backgroundColor } }), + innerProps.timeText && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-time" }, innerProps.timeText)), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-event-title" }, innerProps.event.title || (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, "\u00A0")))); +} + +var TableCellMoreLink = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableCellMoreLink, _super); + function TableCellMoreLink() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.compileSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(compileSegs); + return _this; + } + TableCellMoreLink.prototype.render = function () { + var props = this.props; + var _a = this.compileSegs(props.singlePlacements), allSegs = _a.allSegs, invisibleSegs = _a.invisibleSegs; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: function () { + var isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || + (props.eventResize ? props.eventResize.affectedInstances : null) || + {}; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, allSegs.map(function (seg) { + var instanceId = seg.eventRange.instance.instanceId; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-daygrid-event-harness", key: instanceId, style: { + visibility: isForcedInvisible[instanceId] ? 'hidden' : '', + } }, hasListItemDisplay(seg) ? ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableListItemEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, props.todayRange)))) : ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableBlockEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, props.todayRange)))))); + }))); + } }, function (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createAriaClickAttrs)(handleClick)), innerContent)); })); + }; + return TableCellMoreLink; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function compileSegs(singlePlacements) { + var allSegs = []; + var invisibleSegs = []; + for (var _i = 0, singlePlacements_1 = singlePlacements; _i < singlePlacements_1.length; _i++) { + var placement = singlePlacements_1[_i]; + allSegs.push(placement.seg); + if (!placement.isVisible) { + invisibleSegs.push(placement.seg); + } + } + return { allSegs: allSegs, invisibleSegs: invisibleSegs }; +} + +var DEFAULT_WEEK_NUM_FORMAT = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)({ week: 'narrow' }); +var TableCell = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableCell, _super); + function TableCell() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.rootElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.state = { + dayNumberId: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getUniqueDomId)(), + }; + _this.handleRootEl = function (el) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.setRef)(_this.rootElRef, el); + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.setRef)(_this.props.elRef, el); + }; + return _this; + } + TableCell.prototype.render = function () { + var _a = this, context = _a.context, props = _a.props, state = _a.state, rootElRef = _a.rootElRef; + var date = props.date, dateProfile = props.dateProfile; + var navLinkAttrs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildNavLinkAttrs)(context, date, 'week'); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (dayElRef, dayClassNames, rootDataAttrs, isDisabled) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: dayElRef, role: "gridcell", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", ref: props.innerElRef /* different from hook system! RENAME */ }, + props.showWeekNumber && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (weekElRef, weekClassNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)); })), + !isDisabled && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, dayNumberId: state.dayNumberId, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps })), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-daygrid-day-events", ref: props.fgContentElRef }, + props.fgContent, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-daygrid-day-bottom", style: { marginTop: props.moreMarginTop } }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))); })); + }; + return TableCell; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); + +function computeFgSegPlacement(segs, // assumed already sorted +dayMaxEvents, dayMaxEventRows, strictOrder, eventInstanceHeights, maxContentHeight, cells) { + var hierarchy = new DayGridSegHierarchy(); + hierarchy.allowReslicing = true; + hierarchy.strictOrder = strictOrder; + if (dayMaxEvents === true || dayMaxEventRows === true) { + hierarchy.maxCoord = maxContentHeight; + hierarchy.hiddenConsumes = true; + } + else if (typeof dayMaxEvents === 'number') { + hierarchy.maxStackCnt = dayMaxEvents; + } + else if (typeof dayMaxEventRows === 'number') { + hierarchy.maxStackCnt = dayMaxEventRows; + hierarchy.hiddenConsumes = true; + } + // create segInputs only for segs with known heights + var segInputs = []; + var unknownHeightSegs = []; + for (var i = 0; i < segs.length; i += 1) { + var seg = segs[i]; + var instanceId = seg.eventRange.instance.instanceId; + var eventHeight = eventInstanceHeights[instanceId]; + if (eventHeight != null) { + segInputs.push({ + index: i, + thickness: eventHeight, + span: { + start: seg.firstCol, + end: seg.lastCol + 1, + }, + }); + } + else { + unknownHeightSegs.push(seg); + } + } + var hiddenEntries = hierarchy.addSegs(segInputs); + var segRects = hierarchy.toRects(); + var _a = placeRects(segRects, segs, cells), singleColPlacements = _a.singleColPlacements, multiColPlacements = _a.multiColPlacements, leftoverMargins = _a.leftoverMargins; + var moreCnts = []; + var moreMarginTops = []; + // add segs with unknown heights + for (var _i = 0, unknownHeightSegs_1 = unknownHeightSegs; _i < unknownHeightSegs_1.length; _i++) { + var seg = unknownHeightSegs_1[_i]; + multiColPlacements[seg.firstCol].push({ + seg: seg, + isVisible: false, + isAbsolute: true, + absoluteTop: 0, + marginTop: 0, + }); + for (var col = seg.firstCol; col <= seg.lastCol; col += 1) { + singleColPlacements[col].push({ + seg: resliceSeg(seg, col, col + 1, cells), + isVisible: false, + isAbsolute: false, + absoluteTop: 0, + marginTop: 0, + }); + } + } + // add the hidden entries + for (var col = 0; col < cells.length; col += 1) { + moreCnts.push(0); + } + for (var _b = 0, hiddenEntries_1 = hiddenEntries; _b < hiddenEntries_1.length; _b++) { + var hiddenEntry = hiddenEntries_1[_b]; + var seg = segs[hiddenEntry.index]; + var hiddenSpan = hiddenEntry.span; + multiColPlacements[hiddenSpan.start].push({ + seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells), + isVisible: false, + isAbsolute: true, + absoluteTop: 0, + marginTop: 0, + }); + for (var col = hiddenSpan.start; col < hiddenSpan.end; col += 1) { + moreCnts[col] += 1; + singleColPlacements[col].push({ + seg: resliceSeg(seg, col, col + 1, cells), + isVisible: false, + isAbsolute: false, + absoluteTop: 0, + marginTop: 0, + }); + } + } + // deal with leftover margins + for (var col = 0; col < cells.length; col += 1) { + moreMarginTops.push(leftoverMargins[col]); + } + return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, moreCnts: moreCnts, moreMarginTops: moreMarginTops }; +} +// rects ordered by top coord, then left +function placeRects(allRects, segs, cells) { + var rectsByEachCol = groupRectsByEachCol(allRects, cells.length); + var singleColPlacements = []; + var multiColPlacements = []; + var leftoverMargins = []; + for (var col = 0; col < cells.length; col += 1) { + var rects = rectsByEachCol[col]; + // compute all static segs in singlePlacements + var singlePlacements = []; + var currentHeight = 0; + var currentMarginTop = 0; + for (var _i = 0, rects_1 = rects; _i < rects_1.length; _i++) { + var rect = rects_1[_i]; + var seg = segs[rect.index]; + singlePlacements.push({ + seg: resliceSeg(seg, col, col + 1, cells), + isVisible: true, + isAbsolute: false, + absoluteTop: rect.levelCoord, + marginTop: rect.levelCoord - currentHeight, + }); + currentHeight = rect.levelCoord + rect.thickness; + } + // compute mixed static/absolute segs in multiPlacements + var multiPlacements = []; + currentHeight = 0; + currentMarginTop = 0; + for (var _a = 0, rects_2 = rects; _a < rects_2.length; _a++) { + var rect = rects_2[_a]; + var seg = segs[rect.index]; + var isAbsolute = rect.span.end - rect.span.start > 1; // multi-column? + var isFirstCol = rect.span.start === col; + currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg + currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg + if (isAbsolute) { + currentMarginTop += rect.thickness; + if (isFirstCol) { + multiPlacements.push({ + seg: resliceSeg(seg, rect.span.start, rect.span.end, cells), + isVisible: true, + isAbsolute: true, + absoluteTop: rect.levelCoord, + marginTop: 0, + }); + } + } + else if (isFirstCol) { + multiPlacements.push({ + seg: resliceSeg(seg, rect.span.start, rect.span.end, cells), + isVisible: true, + isAbsolute: false, + absoluteTop: rect.levelCoord, + marginTop: currentMarginTop, // claim the margin + }); + currentMarginTop = 0; + } + } + singleColPlacements.push(singlePlacements); + multiColPlacements.push(multiPlacements); + leftoverMargins.push(currentMarginTop); + } + return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, leftoverMargins: leftoverMargins }; +} +function groupRectsByEachCol(rects, colCnt) { + var rectsByEachCol = []; + for (var col = 0; col < colCnt; col += 1) { + rectsByEachCol.push([]); + } + for (var _i = 0, rects_3 = rects; _i < rects_3.length; _i++) { + var rect = rects_3[_i]; + for (var col = rect.span.start; col < rect.span.end; col += 1) { + rectsByEachCol[col].push(rect); + } + } + return rectsByEachCol; +} +function resliceSeg(seg, spanStart, spanEnd, cells) { + if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) { + return seg; + } + var eventRange = seg.eventRange; + var origRange = eventRange.range; + var slicedRange = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.intersectRanges)(origRange, { + start: cells[spanStart].date, + end: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDays)(cells[spanEnd - 1].date, 1), + }); + return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: { + def: eventRange.def, + ui: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, eventRange.ui), { durationEditable: false }), + instance: eventRange.instance, + range: slicedRange, + }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() }); +} +var DayGridSegHierarchy = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DayGridSegHierarchy, _super); + function DayGridSegHierarchy() { + var _this = _super !== null && _super.apply(this, arguments) || this; + // config + _this.hiddenConsumes = false; + // allows us to keep hidden entries in the hierarchy so they take up space + _this.forceHidden = {}; + return _this; + } + DayGridSegHierarchy.prototype.addSegs = function (segInputs) { + var _this = this; + var hiddenSegs = _super.prototype.addSegs.call(this, segInputs); + var entriesByLevel = this.entriesByLevel; + var excludeHidden = function (entry) { return !_this.forceHidden[(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEntryKey)(entry)]; }; + // remove the forced-hidden segs + for (var level = 0; level < entriesByLevel.length; level += 1) { + entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden); + } + return hiddenSegs; + }; + DayGridSegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) { + var _a = this, entriesByLevel = _a.entriesByLevel, forceHidden = _a.forceHidden; + var touchingEntry = insertion.touchingEntry, touchingLevel = insertion.touchingLevel, touchingLateral = insertion.touchingLateral; + if (this.hiddenConsumes && touchingEntry) { + var touchingEntryId = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEntryKey)(touchingEntry); + // if not already hidden + if (!forceHidden[touchingEntryId]) { + if (this.allowReslicing) { + var placeholderEntry = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, touchingEntry), { span: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.intersectSpans)(touchingEntry.span, entry.span) }); + var placeholderEntryId = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEntryKey)(placeholderEntry); + forceHidden[placeholderEntryId] = true; + entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry; // replace touchingEntry with our placeholder + this.splitEntry(touchingEntry, entry, hiddenEntries); // split up the touchingEntry, reinsert it + } + else { + forceHidden[touchingEntryId] = true; + hiddenEntries.push(touchingEntry); + } + } + } + return _super.prototype.handleInvalidInsertion.call(this, insertion, entry, hiddenEntries); + }; + return DayGridSegHierarchy; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.SegHierarchy)); + +var TableRow = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableRow, _super); + function TableRow() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.cellElRefs = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap(); // the ? + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { role: "presentation", className: "fc-scrollgrid-section" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))), + }); + } + sections.push({ + type: 'body', + key: 'body', + liquid: true, + expandRows: Boolean(context.options.expandRows), + chunk: { + scrollerElRef: this.scrollerElRef, + content: timeContent, + }, + }); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [{ width: 'shrink' }], sections: sections }))); })); + }; + TimeColsView.prototype.renderHScrollLayout = function (headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords) { + var _this = this; + var ScrollGrid = this.context.pluginHooks.scrollGridImpl; + if (!ScrollGrid) { + throw new Error('No ScrollGrid implementation'); + } + var _a = this, context = _a.context, props = _a.props; + var stickyHeaderDates = !props.forPrint && (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyHeaderDates)(context.options); + var stickyFooterScrollbar = !props.forPrint && (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyFooterScrollbar)(context.options); + var sections = []; + if (headerRowContent) { + sections.push({ + type: 'header', + key: 'header', + isSticky: stickyHeaderDates, + syncRowHeights: true, + chunks: [ + { + key: 'axis', + rowContent: function (arg) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { role: "presentation" }, _this.renderHeadAxis('day', arg.rowSyncHeights[0]))); }, + }, + { + key: 'cols', + elRef: this.headerElRef, + tableClassName: 'fc-col-header', + rowContent: headerRowContent, + }, + ], + }); + } + if (allDayContent) { + sections.push({ + type: 'body', + key: 'all-day', + syncRowHeights: true, + chunks: [ + { + key: 'axis', + rowContent: function (contentArg) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { role: "presentation" }, _this.renderTableRowAxis(contentArg.rowSyncHeights[0]))); }, + }, + { + key: 'cols', + content: allDayContent, + }, + ], + }); + sections.push({ + key: 'all-day-divider', + type: 'body', + outerContent: ( // TODO: rename to cellContent so don't need to define ? + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { role: "presentation", className: "fc-scrollgrid-section" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))), + }); + } + var isNowIndicator = context.options.nowIndicator; + sections.push({ + type: 'body', + key: 'body', + liquid: true, + expandRows: Boolean(context.options.expandRows), + chunks: [ + { + key: 'axis', + content: function (arg) { return ( + // TODO: make this now-indicator arrow more DRY with TimeColsContent + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-axis-chunk" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("table", { "aria-hidden": true, style: { height: arg.expandRows ? arg.clientHeight : '' } }, + arg.tableColGroupNode, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tbody", null, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeBodyAxis, { slatMetas: slatMetas }))), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-now-indicator-container" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowTimer, { unit: isNowIndicator ? 'minute' : 'day' /* hacky */ }, function (nowDate) { + var nowIndicatorTop = isNowIndicator && + slatCoords && + slatCoords.safeComputeTop(nowDate); // might return void + if (typeof nowIndicatorTop === 'number') { + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowIndicatorRoot, { isAxis: true, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: rootElRef, className: ['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' '), style: { top: nowIndicatorTop } }, innerContent)); })); + } + return null; + })))); }, + }, + { + key: 'cols', + scrollerElRef: this.scrollerElRef, + content: timeContent, + }, + ], + }); + if (stickyFooterScrollbar) { + sections.push({ + key: 'footer', + type: 'footer', + isSticky: true, + chunks: [ + { + key: 'axis', + content: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderScrollShim, + }, + { + key: 'cols', + content: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderScrollShim, + }, + ], + }); + } + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: false, colGroups: [ + { width: 'shrink', cols: [{ width: 'shrink' }] }, + { cols: [{ span: colCnt, minWidth: dayMinWidth }] }, + ], sections: sections }))); })); + }; + /* Dimensions + ------------------------------------------------------------------------------------------------------------------*/ + TimeColsView.prototype.getAllDayMaxEventProps = function () { + var _a = this.context.options, dayMaxEvents = _a.dayMaxEvents, dayMaxEventRows = _a.dayMaxEventRows; + if (dayMaxEvents === true || dayMaxEventRows === true) { // is auto? + dayMaxEvents = undefined; + dayMaxEventRows = AUTO_ALL_DAY_MAX_EVENT_ROWS; // make sure "auto" goes to a real number + } + return { dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows }; + }; + return TimeColsView; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); +function renderAllDayInner(hookProps) { + return hookProps.text; +} + +var TimeColsSlatsCoords = /** @class */ (function () { + function TimeColsSlatsCoords(positions, dateProfile, slotDuration) { + this.positions = positions; + this.dateProfile = dateProfile; + this.slotDuration = slotDuration; + } + TimeColsSlatsCoords.prototype.safeComputeTop = function (date) { + var dateProfile = this.dateProfile; + if ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.rangeContainsMarker)(dateProfile.currentRange, date)) { + var startOfDayDate = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.startOfDay)(date); + var timeMs = date.valueOf() - startOfDayDate.valueOf(); + if (timeMs >= (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMs)(dateProfile.slotMinTime) && + timeMs < (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMs)(dateProfile.slotMaxTime)) { + return this.computeTimeTop((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createDuration)(timeMs)); + } + } + return null; + }; + // Computes the top coordinate, relative to the bounds of the grid, of the given date. + // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight. + TimeColsSlatsCoords.prototype.computeDateTop = function (when, startOfDayDate) { + if (!startOfDayDate) { + startOfDayDate = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.startOfDay)(when); + } + return this.computeTimeTop((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createDuration)(when.valueOf() - startOfDayDate.valueOf())); + }; + // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration). + // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform. + // Eventually allow computation with arbirary slat dates. + TimeColsSlatsCoords.prototype.computeTimeTop = function (duration) { + var _a = this, positions = _a.positions, dateProfile = _a.dateProfile; + var len = positions.els.length; + // floating-point value of # of slots covered + var slatCoverage = (duration.milliseconds - (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMs)(dateProfile.slotMinTime)) / (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMs)(this.slotDuration); + var slatIndex; + var slatRemainder; + // compute a floating-point number for how many slats should be progressed through. + // from 0 to number of slats (inclusive) + // constrained because slotMinTime/slotMaxTime might be customized. + slatCoverage = Math.max(0, slatCoverage); + slatCoverage = Math.min(len, slatCoverage); + // an integer index of the furthest whole slat + // from 0 to number slats (*exclusive*, so len-1) + slatIndex = Math.floor(slatCoverage); + slatIndex = Math.min(slatIndex, len - 1); + // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition. + // could be 1.0 if slatCoverage is covering *all* the slots + slatRemainder = slatCoverage - slatIndex; + return positions.tops[slatIndex] + + positions.getHeight(slatIndex) * slatRemainder; + }; + return TimeColsSlatsCoords; +}()); + +var TimeColsSlatsBody = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeColsSlatsBody, _super); + function TimeColsSlatsBody() { + return _super !== null && _super.apply(this, arguments) || this; + } + TimeColsSlatsBody.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var options = context.options; + var slatElRefs = props.slatElRefs; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tbody", null, props.slatMetas.map(function (slatMeta, i) { + var hookProps = { + time: slatMeta.time, + date: context.dateEnv.toDate(slatMeta.date), + view: context.viewApi, + }; + var classNames = [ + 'fc-timegrid-slot', + 'fc-timegrid-slot-lane', + slatMeta.isLabeled ? '' : 'fc-timegrid-slot-minor', + ]; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) }, + props.axis && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColsAxisCell, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, slatMeta))), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RenderHook, { hookProps: hookProps, classNames: options.slotLaneClassNames, content: options.slotLaneContent, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-time": slatMeta.isoTimeStr }, innerContent)); }))); + }))); + }; + return TimeColsSlatsBody; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); + +/* +for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL. +*/ +var TimeColsSlats = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeColsSlats, _super); + function TimeColsSlats() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.rootElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.slatElRefs = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap(); + return _this; + } + TimeColsSlats.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: this.rootElRef, className: "fc-timegrid-slots" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("table", { "aria-hidden": true, className: context.theme.getClass('table'), style: { + minWidth: props.tableMinWidth, + width: props.clientWidth, + height: props.minHeight, + } }, + props.tableColGroupNode /* relies on there only being a single for the axis */, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas })))); + }; + TimeColsSlats.prototype.componentDidMount = function () { + this.updateSizing(); + }; + TimeColsSlats.prototype.componentDidUpdate = function () { + this.updateSizing(); + }; + TimeColsSlats.prototype.componentWillUnmount = function () { + if (this.props.onCoords) { + this.props.onCoords(null); + } + }; + TimeColsSlats.prototype.updateSizing = function () { + var _a = this, context = _a.context, props = _a.props; + if (props.onCoords && + props.clientWidth !== null // means sizing has stabilized + ) { + var rootEl = this.rootElRef.current; + if (rootEl.offsetHeight) { // not hidden by css + props.onCoords(new TimeColsSlatsCoords(new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true), this.props.dateProfile, context.options.slotDuration)); + } + } + }; + return TimeColsSlats; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function collectSlatEls(elMap, slatMetas) { + return slatMetas.map(function (slatMeta) { return elMap[slatMeta.key]; }); +} + +function splitSegsByCol(segs, colCnt) { + var segsByCol = []; + var i; + for (i = 0; i < colCnt; i += 1) { + segsByCol.push([]); + } + if (segs) { + for (i = 0; i < segs.length; i += 1) { + segsByCol[segs[i].col].push(segs[i]); + } + } + return segsByCol; +} +function splitInteractionByCol(ui, colCnt) { + var byRow = []; + if (!ui) { + for (var i = 0; i < colCnt; i += 1) { + byRow[i] = null; + } + } + else { + for (var i = 0; i < colCnt; i += 1) { + byRow[i] = { + affectedInstances: ui.affectedInstances, + isEvent: ui.isEvent, + segs: [], + }; + } + for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) { + var seg = _a[_i]; + byRow[seg.col].segs.push(seg); + } + } + return byRow; +} + +var TimeColMoreLink = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeColMoreLink, _super); + function TimeColMoreLink() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.rootElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + return _this; + } + TimeColMoreLink.prototype.render = function () { + var _this = this; + var props = this.props; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.MoreLinkRoot, { allDayDate: null, moreCnt: props.hiddenSegs.length, allSegs: props.hiddenSegs, hiddenSegs: props.hiddenSegs, alignmentElRef: this.rootElRef, defaultContent: renderMoreLinkInner, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, todayRange: props.todayRange, popoverContent: function () { return renderPlainFgSegs(props.hiddenSegs, props); } }, function (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", { ref: function (el) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.setRef)(rootElRef, el); + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.setRef)(_this.rootElRef, el); + }, className: ['fc-timegrid-more-link'].concat(classNames).join(' '), style: { top: props.top, bottom: props.bottom }, onClick: handleClick, title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: innerElRef, className: "fc-timegrid-more-link-inner fc-sticky" }, innerContent))); })); + }; + return TimeColMoreLink; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function renderMoreLinkInner(props) { + return props.shortText; +} + +// segInputs assumed sorted +function buildPositioning(segInputs, strictOrder, maxStackCnt) { + var hierarchy = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.SegHierarchy(); + if (strictOrder != null) { + hierarchy.strictOrder = strictOrder; + } + if (maxStackCnt != null) { + hierarchy.maxStackCnt = maxStackCnt; + } + var hiddenEntries = hierarchy.addSegs(segInputs); + var hiddenGroups = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.groupIntersectingEntries)(hiddenEntries); + var web = buildWeb(hierarchy); + web = stretchWeb(web, 1); // all levelCoords/thickness will have 0.0-1.0 + var segRects = webToRects(web); + return { segRects: segRects, hiddenGroups: hiddenGroups }; +} +function buildWeb(hierarchy) { + var entriesByLevel = hierarchy.entriesByLevel; + var buildNode = cacheable(function (level, lateral) { return level + ':' + lateral; }, function (level, lateral) { + var siblingRange = findNextLevelSegs(hierarchy, level, lateral); + var nextLevelRes = buildNodes(siblingRange, buildNode); + var entry = entriesByLevel[level][lateral]; + return [ + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, entry), { nextLevelNodes: nextLevelRes[0] }), + entry.thickness + nextLevelRes[1], // the pressure builds + ]; + }); + return buildNodes(entriesByLevel.length + ? { level: 0, lateralStart: 0, lateralEnd: entriesByLevel[0].length } + : null, buildNode)[0]; +} +function buildNodes(siblingRange, buildNode) { + if (!siblingRange) { + return [[], 0]; + } + var level = siblingRange.level, lateralStart = siblingRange.lateralStart, lateralEnd = siblingRange.lateralEnd; + var lateral = lateralStart; + var pairs = []; + while (lateral < lateralEnd) { + pairs.push(buildNode(level, lateral)); + lateral += 1; + } + pairs.sort(cmpDescPressures); + return [ + pairs.map(extractNode), + pairs[0][1], // first item's pressure + ]; +} +function cmpDescPressures(a, b) { + return b[1] - a[1]; +} +function extractNode(a) { + return a[0]; +} +function findNextLevelSegs(hierarchy, subjectLevel, subjectLateral) { + var levelCoords = hierarchy.levelCoords, entriesByLevel = hierarchy.entriesByLevel; + var subjectEntry = entriesByLevel[subjectLevel][subjectLateral]; + var afterSubject = levelCoords[subjectLevel] + subjectEntry.thickness; + var levelCnt = levelCoords.length; + var level = subjectLevel; + // skip past levels that are too high up + for (; level < levelCnt && levelCoords[level] < afterSubject; level += 1) + ; // do nothing + for (; level < levelCnt; level += 1) { + var entries = entriesByLevel[level]; + var entry = void 0; + var searchIndex = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.binarySearch)(entries, subjectEntry.span.start, _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getEntrySpanEnd); + var lateralStart = searchIndex[0] + searchIndex[1]; // if exact match (which doesn't collide), go to next one + var lateralEnd = lateralStart; + while ( // loop through entries that horizontally intersect + (entry = entries[lateralEnd]) && // but not past the whole seg list + entry.span.start < subjectEntry.span.end) { + lateralEnd += 1; + } + if (lateralStart < lateralEnd) { + return { level: level, lateralStart: lateralStart, lateralEnd: lateralEnd }; + } + } + return null; +} +function stretchWeb(topLevelNodes, totalThickness) { + var stretchNode = cacheable(function (node, startCoord, prevThickness) { return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEntryKey)(node); }, function (node, startCoord, prevThickness) { + var nextLevelNodes = node.nextLevelNodes, thickness = node.thickness; + var allThickness = thickness + prevThickness; + var thicknessFraction = thickness / allThickness; + var endCoord; + var newChildren = []; + if (!nextLevelNodes.length) { + endCoord = totalThickness; + } + else { + for (var _i = 0, nextLevelNodes_1 = nextLevelNodes; _i < nextLevelNodes_1.length; _i++) { + var childNode = nextLevelNodes_1[_i]; + if (endCoord === undefined) { + var res = stretchNode(childNode, startCoord, allThickness); + endCoord = res[0]; + newChildren.push(res[1]); + } + else { + var res = stretchNode(childNode, endCoord, 0); + newChildren.push(res[1]); + } + } + } + var newThickness = (endCoord - startCoord) * thicknessFraction; + return [endCoord - newThickness, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, node), { thickness: newThickness, nextLevelNodes: newChildren })]; + }); + return topLevelNodes.map(function (node) { return stretchNode(node, 0, 0)[1]; }); +} +// not sorted in any particular order +function webToRects(topLevelNodes) { + var rects = []; + var processNode = cacheable(function (node, levelCoord, stackDepth) { return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEntryKey)(node); }, function (node, levelCoord, stackDepth) { + var rect = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, node), { levelCoord: levelCoord, + stackDepth: stackDepth, stackForward: 0 }); + rects.push(rect); + return (rect.stackForward = processNodes(node.nextLevelNodes, levelCoord + node.thickness, stackDepth + 1) + 1); + }); + function processNodes(nodes, levelCoord, stackDepth) { + var stackForward = 0; + for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) { + var node = nodes_1[_i]; + stackForward = Math.max(processNode(node, levelCoord, stackDepth), stackForward); + } + return stackForward; + } + processNodes(topLevelNodes, 0, 0); + return rects; // TODO: sort rects by levelCoord to be consistent with toRects? +} +// TODO: move to general util +function cacheable(keyFunc, workFunc) { + var cache = {}; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var key = keyFunc.apply(void 0, args); + return (key in cache) + ? cache[key] + : (cache[key] = workFunc.apply(void 0, args)); + }; +} + +function computeSegVCoords(segs, colDate, slatCoords, eventMinHeight) { + if (slatCoords === void 0) { slatCoords = null; } + if (eventMinHeight === void 0) { eventMinHeight = 0; } + var vcoords = []; + if (slatCoords) { + for (var i = 0; i < segs.length; i += 1) { + var seg = segs[i]; + var spanStart = slatCoords.computeDateTop(seg.start, colDate); + var spanEnd = Math.max(spanStart + (eventMinHeight || 0), // :( + slatCoords.computeDateTop(seg.end, colDate)); + vcoords.push({ + start: Math.round(spanStart), + end: Math.round(spanEnd), // + }); + } + } + return vcoords; +} +function computeFgSegPlacements(segs, segVCoords, // might not have for every seg +eventOrderStrict, eventMaxStack) { + var segInputs = []; + var dumbSegs = []; // segs without coords + for (var i = 0; i < segs.length; i += 1) { + var vcoords = segVCoords[i]; + if (vcoords) { + segInputs.push({ + index: i, + thickness: 1, + span: vcoords, + }); + } + else { + dumbSegs.push(segs[i]); + } + } + var _a = buildPositioning(segInputs, eventOrderStrict, eventMaxStack), segRects = _a.segRects, hiddenGroups = _a.hiddenGroups; + var segPlacements = []; + for (var _i = 0, segRects_1 = segRects; _i < segRects_1.length; _i++) { + var segRect = segRects_1[_i]; + segPlacements.push({ + seg: segs[segRect.index], + rect: segRect, + }); + } + for (var _b = 0, dumbSegs_1 = dumbSegs; _b < dumbSegs_1.length; _b++) { + var dumbSeg = dumbSegs_1[_b]; + segPlacements.push({ seg: dumbSeg, rect: null }); + } + return { segPlacements: segPlacements, hiddenGroups: hiddenGroups }; +} + +var DEFAULT_TIME_FORMAT = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)({ + hour: 'numeric', + minute: '2-digit', + meridiem: false, +}); +var TimeColEvent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeColEvent, _super); + function TimeColEvent() { + return _super !== null && _super.apply(this, arguments) || this; + } + TimeColEvent.prototype.render = function () { + var classNames = [ + 'fc-timegrid-event', + 'fc-v-event', + ]; + if (this.props.isShort) { + classNames.push('fc-timegrid-event-short'); + } + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.StandardEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, this.props, { defaultTimeFormat: DEFAULT_TIME_FORMAT, extraClassNames: classNames }))); + }; + return TimeColEvent; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); + +var TimeColMisc = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeColMisc, _super); + function TimeColMisc() { + return _super !== null && _super.apply(this, arguments) || this; + } + TimeColMisc.prototype.render = function () { + var props = this.props; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (innerElRef, innerContent) { return (innerContent && + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-col-misc", ref: innerElRef }, innerContent)); })); + }; + return TimeColMisc; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); + +var TimeCol = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeCol, _super); + function TimeCol() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.sortEventSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sortEventSegs); + return _this; + } + // TODO: memoize event-placement? + TimeCol.prototype.render = function () { + var _this = this; + var _a = this, props = _a.props, context = _a.context; + var isSelectMirror = context.options.selectMirror; + var mirrorSegs = (props.eventDrag && props.eventDrag.segs) || + (props.eventResize && props.eventResize.segs) || + (isSelectMirror && props.dateSelectionSegs) || + []; + var interactionAffectedInstances = // TODO: messy way to compute this + (props.eventDrag && props.eventDrag.affectedInstances) || + (props.eventResize && props.eventResize.affectedInstances) || + {}; + var sortedFgSegs = this.sortEventSegs(props.fgEventSegs, context.options.eventOrder); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayCellRoot, { elRef: props.elRef, date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (rootElRef, classNames, dataAttrs) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ ref: rootElRef, role: "gridcell", className: ['fc-timegrid-col'].concat(classNames, props.extraClassNames || []).join(' ') }, dataAttrs, props.extraDataAttrs), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-col-frame" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-col-bg" }, + _this.renderFillSegs(props.businessHourSegs, 'non-business'), + _this.renderFillSegs(props.bgEventSegs, 'bg-event'), + _this.renderFillSegs(props.dateSelectionSegs, 'highlight')), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-col-events" }, _this.renderFgSegs(sortedFgSegs, interactionAffectedInstances, false, false, false)), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-col-events" }, _this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror))), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-now-indicator-container" }, _this.renderNowIndicator(props.nowIndicatorSegs)), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColMisc, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps })))); })); + }; + TimeCol.prototype.renderFgSegs = function (sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting) { + var props = this.props; + if (props.forPrint) { + return renderPlainFgSegs(sortedFgSegs, props); + } + return this.renderPositionedFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting); + }; + TimeCol.prototype.renderPositionedFgSegs = function (segs, // if not mirror, needs to be sorted + segIsInvisible, isDragging, isResizing, isDateSelecting) { + var _this = this; + var _a = this.context.options, eventMaxStack = _a.eventMaxStack, eventShortHeight = _a.eventShortHeight, eventOrderStrict = _a.eventOrderStrict, eventMinHeight = _a.eventMinHeight; + var _b = this.props, date = _b.date, slatCoords = _b.slatCoords, eventSelection = _b.eventSelection, todayRange = _b.todayRange, nowDate = _b.nowDate; + var isMirror = isDragging || isResizing || isDateSelecting; + var segVCoords = computeSegVCoords(segs, date, slatCoords, eventMinHeight); + var _c = computeFgSegPlacements(segs, segVCoords, eventOrderStrict, eventMaxStack), segPlacements = _c.segPlacements, hiddenGroups = _c.hiddenGroups; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, + this.renderHiddenGroups(hiddenGroups, segs), + segPlacements.map(function (segPlacement) { + var seg = segPlacement.seg, rect = segPlacement.rect; + var instanceId = seg.eventRange.instance.instanceId; + var isVisible = isMirror || Boolean(!segIsInvisible[instanceId] && rect); + var vStyle = computeSegVStyle(rect && rect.span); + var hStyle = (!isMirror && rect) ? _this.computeSegHStyle(rect) : { left: 0, right: 0 }; + var isInset = Boolean(rect) && rect.stackForward > 0; + var isShort = Boolean(rect) && (rect.span.end - rect.span.start) < eventShortHeight; // look at other places for this problem + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: 'fc-timegrid-event-harness' + + (isInset ? ' fc-timegrid-event-harness-inset' : ''), key: instanceId, style: (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ visibility: isVisible ? '' : 'hidden' }, vStyle), hStyle) }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, isShort: isShort }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, todayRange, nowDate))))); + }))); + }; + // will already have eventMinHeight applied because segInputs already had it + TimeCol.prototype.renderHiddenGroups = function (hiddenGroups, segs) { + var _a = this.props, extraDateSpan = _a.extraDateSpan, dateProfile = _a.dateProfile, todayRange = _a.todayRange, nowDate = _a.nowDate, eventSelection = _a.eventSelection, eventDrag = _a.eventDrag, eventResize = _a.eventResize; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, hiddenGroups.map(function (hiddenGroup) { + var positionCss = computeSegVStyle(hiddenGroup.span); + var hiddenSegs = compileSegsFromEntries(hiddenGroup.entries, segs); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColMoreLink, { key: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildIsoString)((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.computeEarliestSegStart)(hiddenSegs)), hiddenSegs: hiddenSegs, top: positionCss.top, bottom: positionCss.bottom, extraDateSpan: extraDateSpan, dateProfile: dateProfile, todayRange: todayRange, nowDate: nowDate, eventSelection: eventSelection, eventDrag: eventDrag, eventResize: eventResize })); + }))); + }; + TimeCol.prototype.renderFillSegs = function (segs, fillType) { + var _a = this, props = _a.props, context = _a.context; + var segVCoords = computeSegVCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight); // don't assume all populated + var children = segVCoords.map(function (vcoords, i) { + var seg = segs[i]; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { key: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEventRangeKey)(seg.eventRange), className: "fc-timegrid-bg-harness", style: computeSegVStyle(vcoords) }, fillType === 'bg-event' ? + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BgEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ seg: seg }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, props.todayRange, props.nowDate))) : + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderFill)(fillType))); + }); + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, children); + }; + TimeCol.prototype.renderNowIndicator = function (segs) { + var _a = this.props, slatCoords = _a.slatCoords, date = _a.date; + if (!slatCoords) { + return null; + } + return segs.map(function (seg, i) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowIndicatorRoot, { isAxis: false, date: date, + // key doesn't matter. will only ever be one + key: i }, function (rootElRef, classNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: rootElRef, className: ['fc-timegrid-now-indicator-line'].concat(classNames).join(' '), style: { top: slatCoords.computeDateTop(seg.start, date) } }, innerContent)); })); }); + }; + TimeCol.prototype.computeSegHStyle = function (segHCoords) { + var _a = this.context, isRtl = _a.isRtl, options = _a.options; + var shouldOverlap = options.slotEventOverlap; + var nearCoord = segHCoords.levelCoord; // the left side if LTR. the right side if RTL. floating-point + var farCoord = segHCoords.levelCoord + segHCoords.thickness; // the right side if LTR. the left side if RTL. floating-point + var left; // amount of space from left edge, a fraction of the total width + var right; // amount of space from right edge, a fraction of the total width + if (shouldOverlap) { + // double the width, but don't go beyond the maximum forward coordinate (1.0) + farCoord = Math.min(1, nearCoord + (farCoord - nearCoord) * 2); + } + if (isRtl) { + left = 1 - farCoord; + right = nearCoord; + } + else { + left = nearCoord; + right = 1 - farCoord; + } + var props = { + zIndex: segHCoords.stackDepth + 1, + left: left * 100 + '%', + right: right * 100 + '%', + }; + if (shouldOverlap && !segHCoords.stackForward) { + // add padding to the edge so that forward stacked events don't cover the resizer's icon + props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width + } + return props; + }; + return TimeCol; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function renderPlainFgSegs(sortedFgSegs, _a) { + var todayRange = _a.todayRange, nowDate = _a.nowDate, eventSelection = _a.eventSelection, eventDrag = _a.eventDrag, eventResize = _a.eventResize; + var hiddenInstances = (eventDrag ? eventDrag.affectedInstances : null) || + (eventResize ? eventResize.affectedInstances : null) || + {}; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, sortedFgSegs.map(function (seg) { + var instanceId = seg.eventRange.instance.instanceId; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { key: instanceId, style: { visibility: hiddenInstances[instanceId] ? 'hidden' : '' } }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === eventSelection, isShort: false }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, todayRange, nowDate))))); + }))); +} +function computeSegVStyle(segVCoords) { + if (!segVCoords) { + return { top: '', bottom: '' }; + } + return { + top: segVCoords.start, + bottom: -segVCoords.end, + }; +} +function compileSegsFromEntries(segEntries, allSegs) { + return segEntries.map(function (segEntry) { return allSegs[segEntry.index]; }); +} + +var TimeColsContent = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeColsContent, _super); + function TimeColsContent() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.splitFgEventSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByCol); + _this.splitBgEventSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByCol); + _this.splitBusinessHourSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByCol); + _this.splitNowIndicatorSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByCol); + _this.splitDateSelectionSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByCol); + _this.splitEventDrag = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitInteractionByCol); + _this.splitEventResize = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitInteractionByCol); + _this.rootElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.cellElRefs = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap(); + return _this; + } + TimeColsContent.prototype.render = function () { + var _this = this; + var _a = this, props = _a.props, context = _a.context; + var nowIndicatorTop = context.options.nowIndicator && + props.slatCoords && + props.slatCoords.safeComputeTop(props.nowDate); // might return void + var colCnt = props.cells.length; + var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, colCnt); + var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, colCnt); + var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, colCnt); + var nowIndicatorSegsByRow = this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt); + var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt); + var eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt); + var eventResizeByRow = this.splitEventResize(props.eventResize, colCnt); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-cols", ref: this.rootElRef }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("table", { role: "presentation", style: { + minWidth: props.tableMinWidth, + width: props.clientWidth, + } }, + props.tableColGroupNode, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tbody", { role: "presentation" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { role: "row" }, + props.axis && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { "aria-hidden": true, className: "fc-timegrid-col fc-timegrid-axis" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-col-frame" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-now-indicator-container" }, typeof nowIndicatorTop === 'number' && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowIndicatorRoot, { isAxis: true, date: props.nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: rootElRef, className: ['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' '), style: { top: nowIndicatorTop } }, innerContent)); })))))), + props.cells.map(function (cell, i) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeCol, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), dateProfile: props.dateProfile, date: cell.date, nowDate: props.nowDate, todayRange: props.todayRange, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, fgEventSegs: fgEventSegsByRow[i], bgEventSegs: bgEventSegsByRow[i], businessHourSegs: businessHourSegsByRow[i], nowIndicatorSegs: nowIndicatorSegsByRow[i], dateSelectionSegs: dateSelectionSegsByRow[i], eventDrag: eventDragByRow[i], eventResize: eventResizeByRow[i], slatCoords: props.slatCoords, eventSelection: props.eventSelection, forPrint: props.forPrint })); })))))); + }; + TimeColsContent.prototype.componentDidMount = function () { + this.updateCoords(); + }; + TimeColsContent.prototype.componentDidUpdate = function () { + this.updateCoords(); + }; + TimeColsContent.prototype.updateCoords = function () { + var props = this.props; + if (props.onColCoords && + props.clientWidth !== null // means sizing has stabilized + ) { + props.onColCoords(new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.PositionCache(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.cells), true, // horizontal + false)); + } + }; + return TimeColsContent; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function collectCellEls(elMap, cells) { + return cells.map(function (cell) { return elMap[cell.key]; }); +} + +/* A component that renders one or more columns of vertical time slots +----------------------------------------------------------------------------------------------------------------------*/ +var TimeCols = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeCols, _super); + function TimeCols() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.processSlotOptions = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(processSlotOptions); + _this.state = { + slatCoords: null, + }; + _this.handleRootEl = function (el) { + if (el) { + _this.context.registerInteractiveComponent(_this, { + el: el, + isHitComboAllowed: _this.props.isHitComboAllowed, + }); + } + else { + _this.context.unregisterInteractiveComponent(_this); + } + }; + _this.handleScrollRequest = function (request) { + var onScrollTopRequest = _this.props.onScrollTopRequest; + var slatCoords = _this.state.slatCoords; + if (onScrollTopRequest && slatCoords) { + if (request.time) { + var top_1 = slatCoords.computeTimeTop(request.time); + top_1 = Math.ceil(top_1); // zoom can give weird floating-point values. rather scroll a little bit further + if (top_1) { + top_1 += 1; // to overcome top border that slots beyond the first have. looks better + } + onScrollTopRequest(top_1); + } + return true; + } + return false; + }; + _this.handleColCoords = function (colCoords) { + _this.colCoords = colCoords; + }; + _this.handleSlatCoords = function (slatCoords) { + _this.setState({ slatCoords: slatCoords }); + if (_this.props.onSlatCoords) { + _this.props.onSlatCoords(slatCoords); + } + }; + return _this; + } + TimeCols.prototype.render = function () { + var _a = this, props = _a.props, state = _a.state; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-body", ref: this.handleRootEl, style: { + // these props are important to give this wrapper correct dimensions for interactions + // TODO: if we set it here, can we avoid giving to inner tables? + width: props.clientWidth, + minWidth: props.tableMinWidth, + } }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColsSlats, { axis: props.axis, dateProfile: props.dateProfile, slatMetas: props.slatMetas, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, tableColGroupNode: props.axis ? props.tableColGroupNode : null /* axis depends on the colgroup's shrinking */, onCoords: this.handleSlatCoords }), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColsContent, { cells: props.cells, axis: props.axis, dateProfile: props.dateProfile, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange, nowDate: props.nowDate, nowIndicatorSegs: props.nowIndicatorSegs, clientWidth: props.clientWidth, tableMinWidth: props.tableMinWidth, tableColGroupNode: props.tableColGroupNode, slatCoords: state.slatCoords, onColCoords: this.handleColCoords, forPrint: props.forPrint }))); + }; + TimeCols.prototype.componentDidMount = function () { + this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest); + }; + TimeCols.prototype.componentDidUpdate = function (prevProps) { + this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile); + }; + TimeCols.prototype.componentWillUnmount = function () { + this.scrollResponder.detach(); + }; + TimeCols.prototype.queryHit = function (positionLeft, positionTop) { + var _a = this.context, dateEnv = _a.dateEnv, options = _a.options; + var colCoords = this.colCoords; + var dateProfile = this.props.dateProfile; + var slatCoords = this.state.slatCoords; + var _b = this.processSlotOptions(this.props.slotDuration, options.snapDuration), snapDuration = _b.snapDuration, snapsPerSlot = _b.snapsPerSlot; + var colIndex = colCoords.leftToIndex(positionLeft); + var slatIndex = slatCoords.positions.topToIndex(positionTop); + if (colIndex != null && slatIndex != null) { + var cell = this.props.cells[colIndex]; + var slatTop = slatCoords.positions.tops[slatIndex]; + var slatHeight = slatCoords.positions.getHeight(slatIndex); + var partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1 + var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat + var snapIndex = slatIndex * snapsPerSlot + localSnapIndex; + var dayDate = this.props.cells[colIndex].date; + var time = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDurations)(dateProfile.slotMinTime, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.multiplyDuration)(snapDuration, snapIndex)); + var start = dateEnv.add(dayDate, time); + var end = dateEnv.add(start, snapDuration); + return { + dateProfile: dateProfile, + dateSpan: (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ range: { start: start, end: end }, allDay: false }, cell.extraDateSpan), + dayEl: colCoords.els[colIndex], + rect: { + left: colCoords.lefts[colIndex], + right: colCoords.rights[colIndex], + top: slatTop, + bottom: slatTop + slatHeight, + }, + layer: 0, + }; + } + return null; + }; + return TimeCols; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); +function processSlotOptions(slotDuration, snapDurationOverride) { + var snapDuration = snapDurationOverride || slotDuration; + var snapsPerSlot = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.wholeDivideDurations)(slotDuration, snapDuration); + if (snapsPerSlot === null) { + snapDuration = slotDuration; + snapsPerSlot = 1; + // TODO: say warning? + } + return { snapDuration: snapDuration, snapsPerSlot: snapsPerSlot }; +} + +var DayTimeColsSlicer = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(DayTimeColsSlicer, _super); + function DayTimeColsSlicer() { + return _super !== null && _super.apply(this, arguments) || this; + } + DayTimeColsSlicer.prototype.sliceRange = function (range, dayRanges) { + var segs = []; + for (var col = 0; col < dayRanges.length; col += 1) { + var segRange = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.intersectRanges)(range, dayRanges[col]); + if (segRange) { + segs.push({ + start: segRange.start, + end: segRange.end, + isStart: segRange.start.valueOf() === range.start.valueOf(), + isEnd: segRange.end.valueOf() === range.end.valueOf(), + col: col, + }); + } + } + return segs; + }; + return DayTimeColsSlicer; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Slicer)); + +var DayTimeCols = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(DayTimeCols, _super); + function DayTimeCols() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.buildDayRanges = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(buildDayRanges); + _this.slicer = new DayTimeColsSlicer(); + _this.timeColsRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + return _this; + } + DayTimeCols.prototype.render = function () { + var _this = this; + var _a = this, props = _a.props, context = _a.context; + var dateProfile = props.dateProfile, dayTableModel = props.dayTableModel; + var isNowIndicator = context.options.nowIndicator; + var dayRanges = this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv); + // give it the first row of cells + // TODO: would move this further down hierarchy, but sliceNowDate needs it + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowTimer, { unit: isNowIndicator ? 'minute' : 'day' }, function (nowDate, todayRange) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeCols, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ ref: _this.timeColsRef }, _this.slicer.sliceProps(props, dateProfile, null, context, dayRanges), { forPrint: props.forPrint, axis: props.axis, dateProfile: dateProfile, slatMetas: props.slatMetas, slotDuration: props.slotDuration, cells: dayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: isNowIndicator && _this.slicer.sliceNowDate(nowDate, context, dayRanges), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, onSlatCoords: props.onSlatCoords }))); })); + }; + return DayTimeCols; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); +function buildDayRanges(dayTableModel, dateProfile, dateEnv) { + var ranges = []; + for (var _i = 0, _a = dayTableModel.headerDates; _i < _a.length; _i++) { + var date = _a[_i]; + ranges.push({ + start: dateEnv.add(date, dateProfile.slotMinTime), + end: dateEnv.add(date, dateProfile.slotMaxTime), + }); + } + return ranges; +} + +// potential nice values for the slot-duration and interval-duration +// from largest to smallest +var STOCK_SUB_DURATIONS = [ + { hours: 1 }, + { minutes: 30 }, + { minutes: 15 }, + { seconds: 30 }, + { seconds: 15 }, +]; +function buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) { + var dayStart = new Date(0); + var slatTime = slotMinTime; + var slatIterator = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createDuration)(0); + var labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration); + var metas = []; + while ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMs)(slatTime) < (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.asRoughMs)(slotMaxTime)) { + var date = dateEnv.add(dayStart, slatTime); + var isLabeled = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.wholeDivideDurations)(slatIterator, labelInterval) !== null; + metas.push({ + date: date, + time: slatTime, + key: date.toISOString(), + isoTimeStr: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.formatIsoTimeString)(date), + isLabeled: isLabeled, + }); + slatTime = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDurations)(slatTime, slotDuration); + slatIterator = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDurations)(slatIterator, slotDuration); + } + return metas; +} +// Computes an automatic value for slotLabelInterval +function computeLabelInterval(slotDuration) { + var i; + var labelInterval; + var slotsPerLabel; + // find the smallest stock label interval that results in more than one slots-per-label + for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) { + labelInterval = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createDuration)(STOCK_SUB_DURATIONS[i]); + slotsPerLabel = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.wholeDivideDurations)(labelInterval, slotDuration); + if (slotsPerLabel !== null && slotsPerLabel > 1) { + return labelInterval; + } + } + return slotDuration; // fall back +} + +var DayTimeColsView = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(DayTimeColsView, _super); + function DayTimeColsView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.buildTimeColsModel = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(buildTimeColsModel); + _this.buildSlatMetas = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(buildSlatMetas); + return _this; + } + DayTimeColsView.prototype.render = function () { + var _this = this; + var _a = this.context, options = _a.options, dateEnv = _a.dateEnv, dateProfileGenerator = _a.dateProfileGenerator; + var props = this.props; + var dateProfile = props.dateProfile; + var dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator); + var splitProps = this.allDaySplitter.splitProps(props); + var slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv); + var dayMinWidth = options.dayMinWidth; + var hasAttachedAxis = !dayMinWidth; + var hasDetachedAxis = dayMinWidth; + var headerContent = options.dayHeaders && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null })); + var allDayContent = (options.allDaySlot !== false) && (function (contentArg) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_daygrid__WEBPACK_IMPORTED_MODULE_2__.DayTable, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, splitProps.allDay, { dateProfile: dateProfile, dayTableModel: dayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? _this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, _this.getAllDayMaxEventProps()))); }); + var timeGridContent = function (contentArg) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(DayTimeCols, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, splitProps.timed, { dayTableModel: dayTableModel, dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, forPrint: props.forPrint, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: _this.handleSlatCoords, expandRows: contentArg.expandRows, onScrollTopRequest: _this.handleScrollTopRequest }))); }; + return hasDetachedAxis + ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords) + : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent); + }; + return DayTimeColsView; +}(TimeColsView)); +function buildTimeColsModel(dateProfile, dateProfileGenerator) { + var daySeries = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); + return new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayTableModel(daySeries, false); +} + +var OPTION_REFINERS = { + allDaySlot: Boolean, +}; + +var main = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createPlugin)({ + initialView: 'timeGridWeek', + optionRefiners: OPTION_REFINERS, + views: { + timeGrid: { + component: DayTimeColsView, + usesMinMaxTime: true, + allDaySlot: true, + slotDuration: '00:30:00', + slotEventOverlap: true, // a bad name. confused with overlap/constraint system + }, + timeGridDay: { + type: 'timeGrid', + duration: { days: 1 }, + }, + timeGridWeek: { + type: 'timeGrid', + duration: { weeks: 1 }, + }, + }, +}); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (main); + +//# sourceMappingURL=main.js.map + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "DOMRectReadOnly": () => (/* binding */ DOMRectReadOnly) +/* harmony export */ }); +/* harmony import */ var _utils_freeze__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/freeze */ "./node_modules/@juggle/resize-observer/lib/utils/freeze.js"); + +var DOMRectReadOnly = (function () { + function DOMRectReadOnly(x, y, width, height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.top = this.y; + this.left = this.x; + this.bottom = this.top + this.height; + this.right = this.left + this.width; + return (0,_utils_freeze__WEBPACK_IMPORTED_MODULE_0__.freeze)(this); + } + DOMRectReadOnly.prototype.toJSON = function () { + var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height; + return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height }; + }; + DOMRectReadOnly.fromRect = function (rectangle) { + return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height); + }; + return DOMRectReadOnly; +}()); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/ResizeObservation.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/ResizeObservation.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObservation": () => (/* binding */ ResizeObservation) +/* harmony export */ }); +/* harmony import */ var _ResizeObserverBoxOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResizeObserverBoxOptions */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js"); +/* harmony import */ var _algorithms_calculateBoxSize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./algorithms/calculateBoxSize */ "./node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js"); +/* harmony import */ var _utils_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/element */ "./node_modules/@juggle/resize-observer/lib/utils/element.js"); + + + +var skipNotifyOnElement = function (target) { + return !(0,_utils_element__WEBPACK_IMPORTED_MODULE_2__.isSVG)(target) + && !(0,_utils_element__WEBPACK_IMPORTED_MODULE_2__.isReplacedElement)(target) + && getComputedStyle(target).display === 'inline'; +}; +var ResizeObservation = (function () { + function ResizeObservation(target, observedBox) { + this.target = target; + this.observedBox = observedBox || _ResizeObserverBoxOptions__WEBPACK_IMPORTED_MODULE_0__.ResizeObserverBoxOptions.CONTENT_BOX; + this.lastReportedSize = { + inlineSize: 0, + blockSize: 0 + }; + } + ResizeObservation.prototype.isActive = function () { + var size = (0,_algorithms_calculateBoxSize__WEBPACK_IMPORTED_MODULE_1__.calculateBoxSize)(this.target, this.observedBox, true); + if (skipNotifyOnElement(this.target)) { + this.lastReportedSize = size; + } + if (this.lastReportedSize.inlineSize !== size.inlineSize + || this.lastReportedSize.blockSize !== size.blockSize) { + return true; + } + return false; + }; + return ResizeObservation; +}()); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/ResizeObserver.js": +/*!********************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/ResizeObserver.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObserver": () => (/* binding */ ResizeObserver) +/* harmony export */ }); +/* harmony import */ var _ResizeObserverController__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResizeObserverController */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverController.js"); +/* harmony import */ var _utils_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/element */ "./node_modules/@juggle/resize-observer/lib/utils/element.js"); + + +var ResizeObserver = (function () { + function ResizeObserver(callback) { + if (arguments.length === 0) { + throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present."); + } + if (typeof callback !== 'function') { + throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function."); + } + _ResizeObserverController__WEBPACK_IMPORTED_MODULE_0__.ResizeObserverController.connect(this, callback); + } + ResizeObserver.prototype.observe = function (target, options) { + if (arguments.length === 0) { + throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present."); + } + if (!(0,_utils_element__WEBPACK_IMPORTED_MODULE_1__.isElement)(target)) { + throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element"); + } + _ResizeObserverController__WEBPACK_IMPORTED_MODULE_0__.ResizeObserverController.observe(this, target, options); + }; + ResizeObserver.prototype.unobserve = function (target) { + if (arguments.length === 0) { + throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present."); + } + if (!(0,_utils_element__WEBPACK_IMPORTED_MODULE_1__.isElement)(target)) { + throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element"); + } + _ResizeObserverController__WEBPACK_IMPORTED_MODULE_0__.ResizeObserverController.unobserve(this, target); + }; + ResizeObserver.prototype.disconnect = function () { + _ResizeObserverController__WEBPACK_IMPORTED_MODULE_0__.ResizeObserverController.disconnect(this); + }; + ResizeObserver.toString = function () { + return 'function ResizeObserver () { [polyfill code] }'; + }; + return ResizeObserver; +}()); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObserverBoxOptions": () => (/* binding */ ResizeObserverBoxOptions) +/* harmony export */ }); +var ResizeObserverBoxOptions; +(function (ResizeObserverBoxOptions) { + ResizeObserverBoxOptions["BORDER_BOX"] = "border-box"; + ResizeObserverBoxOptions["CONTENT_BOX"] = "content-box"; + ResizeObserverBoxOptions["DEVICE_PIXEL_CONTENT_BOX"] = "device-pixel-content-box"; +})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {})); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/ResizeObserverController.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/ResizeObserverController.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObserverController": () => (/* binding */ ResizeObserverController) +/* harmony export */ }); +/* harmony import */ var _utils_scheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/scheduler */ "./node_modules/@juggle/resize-observer/lib/utils/scheduler.js"); +/* harmony import */ var _ResizeObservation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ResizeObservation */ "./node_modules/@juggle/resize-observer/lib/ResizeObservation.js"); +/* harmony import */ var _ResizeObserverDetail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ResizeObserverDetail */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js"); +/* harmony import */ var _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/resizeObservers */ "./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js"); + + + + +var observerMap = new WeakMap(); +var getObservationIndex = function (observationTargets, target) { + for (var i = 0; i < observationTargets.length; i += 1) { + if (observationTargets[i].target === target) { + return i; + } + } + return -1; +}; +var ResizeObserverController = (function () { + function ResizeObserverController() { + } + ResizeObserverController.connect = function (resizeObserver, callback) { + var detail = new _ResizeObserverDetail__WEBPACK_IMPORTED_MODULE_2__.ResizeObserverDetail(resizeObserver, callback); + observerMap.set(resizeObserver, detail); + }; + ResizeObserverController.observe = function (resizeObserver, target, options) { + var detail = observerMap.get(resizeObserver); + var firstObservation = detail.observationTargets.length === 0; + if (getObservationIndex(detail.observationTargets, target) < 0) { + firstObservation && _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_3__.resizeObservers.push(detail); + detail.observationTargets.push(new _ResizeObservation__WEBPACK_IMPORTED_MODULE_1__.ResizeObservation(target, options && options.box)); + (0,_utils_scheduler__WEBPACK_IMPORTED_MODULE_0__.updateCount)(1); + _utils_scheduler__WEBPACK_IMPORTED_MODULE_0__.scheduler.schedule(); + } + }; + ResizeObserverController.unobserve = function (resizeObserver, target) { + var detail = observerMap.get(resizeObserver); + var index = getObservationIndex(detail.observationTargets, target); + var lastObservation = detail.observationTargets.length === 1; + if (index >= 0) { + lastObservation && _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_3__.resizeObservers.splice(_utils_resizeObservers__WEBPACK_IMPORTED_MODULE_3__.resizeObservers.indexOf(detail), 1); + detail.observationTargets.splice(index, 1); + (0,_utils_scheduler__WEBPACK_IMPORTED_MODULE_0__.updateCount)(-1); + } + }; + ResizeObserverController.disconnect = function (resizeObserver) { + var _this = this; + var detail = observerMap.get(resizeObserver); + detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); }); + detail.activeTargets.splice(0, detail.activeTargets.length); + }; + return ResizeObserverController; +}()); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObserverDetail": () => (/* binding */ ResizeObserverDetail) +/* harmony export */ }); +var ResizeObserverDetail = (function () { + function ResizeObserverDetail(resizeObserver, callback) { + this.activeTargets = []; + this.skippedTargets = []; + this.observationTargets = []; + this.observer = resizeObserver; + this.callback = callback; + } + return ResizeObserverDetail; +}()); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObserverEntry": () => (/* binding */ ResizeObserverEntry) +/* harmony export */ }); +/* harmony import */ var _algorithms_calculateBoxSize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./algorithms/calculateBoxSize */ "./node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js"); +/* harmony import */ var _utils_freeze__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/freeze */ "./node_modules/@juggle/resize-observer/lib/utils/freeze.js"); + + +var ResizeObserverEntry = (function () { + function ResizeObserverEntry(target) { + var boxes = (0,_algorithms_calculateBoxSize__WEBPACK_IMPORTED_MODULE_0__.calculateBoxSizes)(target); + this.target = target; + this.contentRect = boxes.contentRect; + this.borderBoxSize = (0,_utils_freeze__WEBPACK_IMPORTED_MODULE_1__.freeze)([boxes.borderBoxSize]); + this.contentBoxSize = (0,_utils_freeze__WEBPACK_IMPORTED_MODULE_1__.freeze)([boxes.contentBoxSize]); + this.devicePixelContentBoxSize = (0,_utils_freeze__WEBPACK_IMPORTED_MODULE_1__.freeze)([boxes.devicePixelContentBoxSize]); + } + return ResizeObserverEntry; +}()); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js": +/*!************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObserverSize": () => (/* binding */ ResizeObserverSize) +/* harmony export */ }); +/* harmony import */ var _utils_freeze__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/freeze */ "./node_modules/@juggle/resize-observer/lib/utils/freeze.js"); + +var ResizeObserverSize = (function () { + function ResizeObserverSize(inlineSize, blockSize) { + this.inlineSize = inlineSize; + this.blockSize = blockSize; + (0,_utils_freeze__WEBPACK_IMPORTED_MODULE_0__.freeze)(this); + } + return ResizeObserverSize; +}()); + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "broadcastActiveObservations": () => (/* binding */ broadcastActiveObservations) +/* harmony export */ }); +/* harmony import */ var _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/resizeObservers */ "./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js"); +/* harmony import */ var _ResizeObserverEntry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ResizeObserverEntry */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js"); +/* harmony import */ var _calculateDepthForNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./calculateDepthForNode */ "./node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js"); +/* harmony import */ var _calculateBoxSize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./calculateBoxSize */ "./node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js"); + + + + +var broadcastActiveObservations = function () { + var shallowestDepth = Infinity; + var callbacks = []; + _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__.resizeObservers.forEach(function processObserver(ro) { + if (ro.activeTargets.length === 0) { + return; + } + var entries = []; + ro.activeTargets.forEach(function processTarget(ot) { + var entry = new _ResizeObserverEntry__WEBPACK_IMPORTED_MODULE_1__.ResizeObserverEntry(ot.target); + var targetDepth = (0,_calculateDepthForNode__WEBPACK_IMPORTED_MODULE_2__.calculateDepthForNode)(ot.target); + entries.push(entry); + ot.lastReportedSize = (0,_calculateBoxSize__WEBPACK_IMPORTED_MODULE_3__.calculateBoxSize)(ot.target, ot.observedBox); + if (targetDepth < shallowestDepth) { + shallowestDepth = targetDepth; + } + }); + callbacks.push(function resizeObserverCallback() { + ro.callback.call(ro.observer, entries, ro.observer); + }); + ro.activeTargets.splice(0, ro.activeTargets.length); + }); + for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) { + var callback = callbacks_1[_i]; + callback(); + } + return shallowestDepth; +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "calculateBoxSize": () => (/* binding */ calculateBoxSize), +/* harmony export */ "calculateBoxSizes": () => (/* binding */ calculateBoxSizes) +/* harmony export */ }); +/* harmony import */ var _ResizeObserverBoxOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ResizeObserverBoxOptions */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js"); +/* harmony import */ var _ResizeObserverSize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ResizeObserverSize */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js"); +/* harmony import */ var _DOMRectReadOnly__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../DOMRectReadOnly */ "./node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js"); +/* harmony import */ var _utils_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/element */ "./node_modules/@juggle/resize-observer/lib/utils/element.js"); +/* harmony import */ var _utils_freeze__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/freeze */ "./node_modules/@juggle/resize-observer/lib/utils/freeze.js"); +/* harmony import */ var _utils_global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/global */ "./node_modules/@juggle/resize-observer/lib/utils/global.js"); + + + + + + +var cache = new WeakMap(); +var scrollRegexp = /auto|scroll/; +var verticalRegexp = /^tb|vertical/; +var IE = (/msie|trident/i).test(_utils_global__WEBPACK_IMPORTED_MODULE_5__.global.navigator && _utils_global__WEBPACK_IMPORTED_MODULE_5__.global.navigator.userAgent); +var parseDimension = function (pixel) { return parseFloat(pixel || '0'); }; +var size = function (inlineSize, blockSize, switchSizes) { + if (inlineSize === void 0) { inlineSize = 0; } + if (blockSize === void 0) { blockSize = 0; } + if (switchSizes === void 0) { switchSizes = false; } + return new _ResizeObserverSize__WEBPACK_IMPORTED_MODULE_1__.ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0); +}; +var zeroBoxes = (0,_utils_freeze__WEBPACK_IMPORTED_MODULE_4__.freeze)({ + devicePixelContentBoxSize: size(), + borderBoxSize: size(), + contentBoxSize: size(), + contentRect: new _DOMRectReadOnly__WEBPACK_IMPORTED_MODULE_2__.DOMRectReadOnly(0, 0, 0, 0) +}); +var calculateBoxSizes = function (target, forceRecalculation) { + if (forceRecalculation === void 0) { forceRecalculation = false; } + if (cache.has(target) && !forceRecalculation) { + return cache.get(target); + } + if ((0,_utils_element__WEBPACK_IMPORTED_MODULE_3__.isHidden)(target)) { + cache.set(target, zeroBoxes); + return zeroBoxes; + } + var cs = getComputedStyle(target); + var svg = (0,_utils_element__WEBPACK_IMPORTED_MODULE_3__.isSVG)(target) && target.ownerSVGElement && target.getBBox(); + var removePadding = !IE && cs.boxSizing === 'border-box'; + var switchSizes = verticalRegexp.test(cs.writingMode || ''); + var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || ''); + var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || ''); + var paddingTop = svg ? 0 : parseDimension(cs.paddingTop); + var paddingRight = svg ? 0 : parseDimension(cs.paddingRight); + var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom); + var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft); + var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth); + var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth); + var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth); + var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth); + var horizontalPadding = paddingLeft + paddingRight; + var verticalPadding = paddingTop + paddingBottom; + var horizontalBorderArea = borderLeft + borderRight; + var verticalBorderArea = borderTop + borderBottom; + var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight; + var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth; + var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0; + var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0; + var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness; + var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness; + var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea; + var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea; + var boxes = (0,_utils_freeze__WEBPACK_IMPORTED_MODULE_4__.freeze)({ + devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes), + borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes), + contentBoxSize: size(contentWidth, contentHeight, switchSizes), + contentRect: new _DOMRectReadOnly__WEBPACK_IMPORTED_MODULE_2__.DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight) + }); + cache.set(target, boxes); + return boxes; +}; +var calculateBoxSize = function (target, observedBox, forceRecalculation) { + var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize; + switch (observedBox) { + case _ResizeObserverBoxOptions__WEBPACK_IMPORTED_MODULE_0__.ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX: + return devicePixelContentBoxSize; + case _ResizeObserverBoxOptions__WEBPACK_IMPORTED_MODULE_0__.ResizeObserverBoxOptions.BORDER_BOX: + return borderBoxSize; + default: + return contentBoxSize; + } +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "calculateDepthForNode": () => (/* binding */ calculateDepthForNode) +/* harmony export */ }); +/* harmony import */ var _utils_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/element */ "./node_modules/@juggle/resize-observer/lib/utils/element.js"); + +var calculateDepthForNode = function (node) { + if ((0,_utils_element__WEBPACK_IMPORTED_MODULE_0__.isHidden)(node)) { + return Infinity; + } + var depth = 0; + var parent = node.parentNode; + while (parent) { + depth += 1; + parent = parent.parentNode; + } + return depth; +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "deliverResizeLoopError": () => (/* binding */ deliverResizeLoopError) +/* harmony export */ }); +var msg = 'ResizeObserver loop completed with undelivered notifications.'; +var deliverResizeLoopError = function () { + var event; + if (typeof ErrorEvent === 'function') { + event = new ErrorEvent('error', { + message: msg + }); + } + else { + event = document.createEvent('Event'); + event.initEvent('error', false, false); + event.message = msg; + } + window.dispatchEvent(event); +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "gatherActiveObservationsAtDepth": () => (/* binding */ gatherActiveObservationsAtDepth) +/* harmony export */ }); +/* harmony import */ var _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/resizeObservers */ "./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js"); +/* harmony import */ var _calculateDepthForNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./calculateDepthForNode */ "./node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js"); + + +var gatherActiveObservationsAtDepth = function (depth) { + _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__.resizeObservers.forEach(function processObserver(ro) { + ro.activeTargets.splice(0, ro.activeTargets.length); + ro.skippedTargets.splice(0, ro.skippedTargets.length); + ro.observationTargets.forEach(function processTarget(ot) { + if (ot.isActive()) { + if ((0,_calculateDepthForNode__WEBPACK_IMPORTED_MODULE_1__.calculateDepthForNode)(ot.target) > depth) { + ro.activeTargets.push(ot); + } + else { + ro.skippedTargets.push(ot); + } + } + }); + }); +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "hasActiveObservations": () => (/* binding */ hasActiveObservations) +/* harmony export */ }); +/* harmony import */ var _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/resizeObservers */ "./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js"); + +var hasActiveObservations = function () { + return _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__.resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; }); +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "hasSkippedObservations": () => (/* binding */ hasSkippedObservations) +/* harmony export */ }); +/* harmony import */ var _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/resizeObservers */ "./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js"); + +var hasSkippedObservations = function () { + return _utils_resizeObservers__WEBPACK_IMPORTED_MODULE_0__.resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; }); +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/exports/resize-observer.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/exports/resize-observer.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ResizeObserver": () => (/* reexport safe */ _ResizeObserver__WEBPACK_IMPORTED_MODULE_0__.ResizeObserver), +/* harmony export */ "ResizeObserverEntry": () => (/* reexport safe */ _ResizeObserverEntry__WEBPACK_IMPORTED_MODULE_1__.ResizeObserverEntry), +/* harmony export */ "ResizeObserverSize": () => (/* reexport safe */ _ResizeObserverSize__WEBPACK_IMPORTED_MODULE_2__.ResizeObserverSize) +/* harmony export */ }); +/* harmony import */ var _ResizeObserver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ResizeObserver */ "./node_modules/@juggle/resize-observer/lib/ResizeObserver.js"); +/* harmony import */ var _ResizeObserverEntry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ResizeObserverEntry */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js"); +/* harmony import */ var _ResizeObserverSize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ResizeObserverSize */ "./node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js"); + + + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/element.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/element.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "isSVG": () => (/* binding */ isSVG), +/* harmony export */ "isHidden": () => (/* binding */ isHidden), +/* harmony export */ "isElement": () => (/* binding */ isElement), +/* harmony export */ "isReplacedElement": () => (/* binding */ isReplacedElement) +/* harmony export */ }); +var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; }; +var isHidden = function (target) { + if (isSVG(target)) { + var _a = target.getBBox(), width = _a.width, height = _a.height; + return !width && !height; + } + var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight; + return !(offsetWidth || offsetHeight || target.getClientRects().length); +}; +var isElement = function (obj) { + var _a, _b; + if (obj instanceof Element) { + return true; + } + var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView; + return !!(scope && obj instanceof scope.Element); +}; +var isReplacedElement = function (target) { + switch (target.tagName) { + case 'INPUT': + if (target.type !== 'image') { + break; + } + case 'VIDEO': + case 'AUDIO': + case 'EMBED': + case 'OBJECT': + case 'CANVAS': + case 'IFRAME': + case 'IMG': + return true; + } + return false; +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/freeze.js": +/*!******************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/freeze.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "freeze": () => (/* binding */ freeze) +/* harmony export */ }); +var freeze = function (obj) { return Object.freeze(obj); }; + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/global.js": +/*!******************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/global.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "global": () => (/* binding */ global) +/* harmony export */ }); +var global = typeof window !== 'undefined' ? window : {}; + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/process.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/process.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "process": () => (/* binding */ process) +/* harmony export */ }); +/* harmony import */ var _algorithms_hasActiveObservations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../algorithms/hasActiveObservations */ "./node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js"); +/* harmony import */ var _algorithms_hasSkippedObservations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../algorithms/hasSkippedObservations */ "./node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js"); +/* harmony import */ var _algorithms_deliverResizeLoopError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../algorithms/deliverResizeLoopError */ "./node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js"); +/* harmony import */ var _algorithms_broadcastActiveObservations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../algorithms/broadcastActiveObservations */ "./node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js"); +/* harmony import */ var _algorithms_gatherActiveObservationsAtDepth__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../algorithms/gatherActiveObservationsAtDepth */ "./node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js"); + + + + + +var process = function () { + var depth = 0; + (0,_algorithms_gatherActiveObservationsAtDepth__WEBPACK_IMPORTED_MODULE_4__.gatherActiveObservationsAtDepth)(depth); + while ((0,_algorithms_hasActiveObservations__WEBPACK_IMPORTED_MODULE_0__.hasActiveObservations)()) { + depth = (0,_algorithms_broadcastActiveObservations__WEBPACK_IMPORTED_MODULE_3__.broadcastActiveObservations)(); + (0,_algorithms_gatherActiveObservationsAtDepth__WEBPACK_IMPORTED_MODULE_4__.gatherActiveObservationsAtDepth)(depth); + } + if ((0,_algorithms_hasSkippedObservations__WEBPACK_IMPORTED_MODULE_1__.hasSkippedObservations)()) { + (0,_algorithms_deliverResizeLoopError__WEBPACK_IMPORTED_MODULE_2__.deliverResizeLoopError)(); + } + return depth > 0; +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "queueMicroTask": () => (/* binding */ queueMicroTask) +/* harmony export */ }); +var trigger; +var callbacks = []; +var notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); }; +var queueMicroTask = function (callback) { + if (!trigger) { + var toggle_1 = 0; + var el_1 = document.createTextNode(''); + var config = { characterData: true }; + new MutationObserver(function () { return notify(); }).observe(el_1, config); + trigger = function () { el_1.textContent = "" + (toggle_1 ? toggle_1-- : toggle_1++); }; + } + callbacks.push(callback); + trigger(); +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "queueResizeObserver": () => (/* binding */ queueResizeObserver) +/* harmony export */ }); +/* harmony import */ var _queueMicroTask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./queueMicroTask */ "./node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js"); + +var queueResizeObserver = function (cb) { + (0,_queueMicroTask__WEBPACK_IMPORTED_MODULE_0__.queueMicroTask)(function ResizeObserver() { + requestAnimationFrame(cb); + }); +}; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "resizeObservers": () => (/* binding */ resizeObservers) +/* harmony export */ }); +var resizeObservers = []; + + + +/***/ }), + +/***/ "./node_modules/@juggle/resize-observer/lib/utils/scheduler.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@juggle/resize-observer/lib/utils/scheduler.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "scheduler": () => (/* binding */ scheduler), +/* harmony export */ "updateCount": () => (/* binding */ updateCount) +/* harmony export */ }); +/* harmony import */ var _process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./process */ "./node_modules/@juggle/resize-observer/lib/utils/process.js"); +/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./global */ "./node_modules/@juggle/resize-observer/lib/utils/global.js"); +/* harmony import */ var _queueResizeObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./queueResizeObserver */ "./node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js"); + + + +var watching = 0; +var isWatching = function () { return !!watching; }; +var CATCH_PERIOD = 250; +var observerConfig = { attributes: true, characterData: true, childList: true, subtree: true }; +var events = [ + 'resize', + 'load', + 'transitionend', + 'animationend', + 'animationstart', + 'animationiteration', + 'keyup', + 'keydown', + 'mouseup', + 'mousedown', + 'mouseover', + 'mouseout', + 'blur', + 'focus' +]; +var time = function (timeout) { + if (timeout === void 0) { timeout = 0; } + return Date.now() + timeout; +}; +var scheduled = false; +var Scheduler = (function () { + function Scheduler() { + var _this = this; + this.stopped = true; + this.listener = function () { return _this.schedule(); }; + } + Scheduler.prototype.run = function (timeout) { + var _this = this; + if (timeout === void 0) { timeout = CATCH_PERIOD; } + if (scheduled) { + return; + } + scheduled = true; + var until = time(timeout); + (0,_queueResizeObserver__WEBPACK_IMPORTED_MODULE_2__.queueResizeObserver)(function () { + var elementsHaveResized = false; + try { + elementsHaveResized = (0,_process__WEBPACK_IMPORTED_MODULE_0__.process)(); + } + finally { + scheduled = false; + timeout = until - time(); + if (!isWatching()) { + return; + } + if (elementsHaveResized) { + _this.run(1000); + } + else if (timeout > 0) { + _this.run(timeout); + } + else { + _this.start(); + } + } + }); + }; + Scheduler.prototype.schedule = function () { + this.stop(); + this.run(); + }; + Scheduler.prototype.observe = function () { + var _this = this; + var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); }; + document.body ? cb() : _global__WEBPACK_IMPORTED_MODULE_1__.global.addEventListener('DOMContentLoaded', cb); + }; + Scheduler.prototype.start = function () { + var _this = this; + if (this.stopped) { + this.stopped = false; + this.observer = new MutationObserver(this.listener); + this.observe(); + events.forEach(function (name) { return _global__WEBPACK_IMPORTED_MODULE_1__.global.addEventListener(name, _this.listener, true); }); + } + }; + Scheduler.prototype.stop = function () { + var _this = this; + if (!this.stopped) { + this.observer && this.observer.disconnect(); + events.forEach(function (name) { return _global__WEBPACK_IMPORTED_MODULE_1__.global.removeEventListener(name, _this.listener, true); }); + this.stopped = true; + } + }; + return Scheduler; +}()); +var scheduler = new Scheduler(); +var updateCount = function (n) { + !watching && n > 0 && scheduler.start(); + watching += n; + !watching && scheduler.stop(); +}; + + + +/***/ }), + +/***/ "./node_modules/@left4code/tw-starter/dist/js/accordion.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@left4code/tw-starter/dist/js/accordion.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ "./node_modules/@left4code/tw-starter/dist/js/dom.js"); + + +(function (dom) { + "use strict"; + + // Toggle accordion content + dom("body").on("click", "[data-tw-toggle='collapse']", function () { + toggle(this); + }); + + function toggle(el, event = "toggle") { + dom(el) + .closest(".accordion") + .find("[data-tw-toggle='collapse']") + .each(function () { + // Trigger "hide.tw.accordion" callback function + if ( + !dom(this).hasClass("collapsed") && + this !== el && + (event == "toggle" || event == "hide") + ) { + const event = new Event("hide.tw.accordion"); + dom(this).closest(".accordion-header")[0].dispatchEvent(event); + } + + // Trigger "show.tw.accordion" callback function + if ( + dom(this).hasClass("collapsed") && + this === el && + (event == "toggle" || event == "show") + ) { + const event = new Event("show.tw.accordion"); + dom(this).closest(".accordion-header")[0].dispatchEvent(event); + } + }); + + const collapsed = dom(el).hasClass("collapsed"); + + // Close active accordion + dom(el) + .closest(".accordion") + .find(".accordion-collapse") + .slideUp(300, (el) => { + dom(el).removeClass("show"); + dom(el) + .closest(".accordion-item") + .find("[data-tw-toggle='collapse']") + .addClass("collapsed") + .attr("aria-expanded", false); + }); + + // Set active accordion + setTimeout(() => { + const accordionCollapse = dom(el) + .closest(".accordion-item") + .find(".accordion-collapse"); + + const hide = () => { + dom(accordionCollapse).removeClass("show"); + dom(el).addClass("collapsed").attr("aria-expanded", false); + dom(el) + .closest(".accordion-item") + .find(".accordion-collapse") + .slideUp(); + }; + + const show = () => { + dom(accordionCollapse).addClass("show"); + dom(el).removeClass("collapsed").attr("aria-expanded", true); + dom(el) + .closest(".accordion-item") + .find(".accordion-collapse") + .slideDown(); + }; + + if (event === "toggle") { + !collapsed ? hide() : show(); + } else if (event === "show") { + show(); + } else { + hide(); + } + }, 300); + } + + // Create instance + function createInstance(el) { + return { + show() { + toggle(el, "show"); + }, + hide() { + toggle(el, "hide"); + }, + toggle() { + toggle(el); + }, + }; + } + + // Register instance + (function init() { + dom("[data-tw-toggle='collapse']").each(function () { + dom(this).closest(".accordion-header")[0]["__accordion"] = + createInstance(this); + }); + + if (window.tailwind === undefined) window.tailwind = {}; + window.tailwind.Accordion = { + getInstance(el) { + return el.__accordion; + }, + getOrCreateInstance(el) { + return el.__accordion === undefined + ? createInstance(el) + : el.__accordion; + }, + }; + })(); +})(_dom__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./node_modules/@left4code/tw-starter/dist/js/alert.js": +/*!*************************************************************!*\ + !*** ./node_modules/@left4code/tw-starter/dist/js/alert.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ "./node_modules/@left4code/tw-starter/dist/js/dom.js"); + + +(function (dom) { + "use strict"; + + // Close active alert + dom("body").on("click", "[data-tw-dismiss='alert']", function () { + hide(dom(this).closest(".alert")); + }); + + function show(el) { + dom(el).fadeIn(300, function () { + dom(this).addClass("show"); + + // Trigger "shown.tw.alert" callback function + const event = new Event("shown.tw.alert"); + dom(el)[0].dispatchEvent(event); + }); + + // Trigger "show.tw.alert" callback function + const event = new Event("show.tw.alert"); + dom(el)[0].dispatchEvent(event); + } + + function hide(el) { + dom(el).fadeOut(300, function () { + dom(this).removeClass("show"); + + // Trigger "hidden.tw.alert" callback function + const event = new Event("hidden.tw.alert"); + dom(el)[0].dispatchEvent(event); + }); + + // Trigger "hide.tw.alert" callback function + const event = new Event("hide.tw.alert"); + dom(el)[0].dispatchEvent(event); + } + + function toggle(el) { + dom(el).hasClass("show") ? hide(el) : show(el); + } + + // Create instance + function createInstance(el) { + return { + show() { + show(el); + }, + hide() { + hide(el); + }, + toggle() { + toggle(el); + }, + }; + } + + // Register instance + (function init() { + dom(".alert").each(function () { + this["__alert"] = createInstance(this); + }); + + if (window.tailwind === undefined) window.tailwind = {}; + window.tailwind.Alert = { + getInstance(el) { + return el.__alert; + }, + getOrCreateInstance(el) { + return el.__alert === undefined ? createInstance(el) : el.__alert; + }, + }; + })(); +})(_dom__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./node_modules/@left4code/tw-starter/dist/js/dom.js": +/*!***********************************************************!*\ + !*** ./node_modules/@left4code/tw-starter/dist/js/dom.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (dom = (() => { + const getNodeList = (arg) => { + if (typeof arg === "string" && arg.trim().slice(0, 1) !== "<") { + return document.querySelectorAll(arg); + } else if (typeof arg === "string" && arg.trim().slice(0, 1) === "<") { + const dom = domParser(arg); + return [dom]; + } else if (typeof arg === "object" && arg instanceof NodeList) { + return arg; + } else if (typeof arg === "object" && arg instanceof HTMLElement) { + return [arg]; + } else if (typeof arg === "object" && arg instanceof SVGElement) { + return [arg]; + } else { + return arg; + } + }; + + const domParser = (arg) => { + const parser = new DOMParser(), + content = "text/html", + DOM = parser.parseFromString(arg, content); + return DOM.body.childNodes[0]; + }; + + const addEvent = (nodeList, event, callback) => { + nodeList[event] = callback; + }; + + const uuidv4 = () => { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => { + let r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + }; + + const eventPath = (evt) => { + let path = (evt.composedPath && evt.composedPath()) || evt.path, + target = evt.target; + + if (path != null) { + // Safari doesn't include Window, but it should. + return path.indexOf(window) < 0 ? path.concat(window) : path; + } + + if (target === window) { + return [window]; + } + + function getParents(node, memo) { + memo = memo || []; + let parentNode = node.parentNode; + + if (!parentNode) { + return memo; + } else { + return getParents(parentNode, memo.concat(parentNode)); + } + } + + return [target].concat(getParents(target), window); + }; + + const addEvents = (nodeList) => { + // .on() + addEvent(nodeList, "on", (arg1, arg2, arg3) => { + nodeList.forEach((node) => { + node.addEventListener( + arg1, + (e) => { + const uuid = uuidv4(); + if (typeof arg2 === "string") { + eventPath(e).every((parentNode) => { + if (parentNode.matches && parentNode.matches(arg2)) { + parentNode[uuid] = arg3; + parentNode[uuid](parentNode); + delete parentNode[uuid]; + return false; + } else { + return true; + } + }); + } else { + node[uuid] = arg2; + node[uuid](e); + delete node[uuid]; + } + }, + false + ); + }); + + return nodeList; + }); + + // .css() + addEvent(nodeList, "css", (arg1, arg2) => { + // Get values + if (arg2 === undefined && typeof arg1 !== "object") { + return getComputedStyle(nodeList[0])[arg1]; + } + + // Set values + nodeList.forEach((node) => { + if (typeof arg1 === "object") { + for (const [key, val] of Object.entries(arg1)) { + node.style[key] = val; + } + } else { + node.style[arg1] = arg2; + } + }); + + addEvents(nodeList); + return nodeList; + }); + + // .slideUp() + addEvent(nodeList, "slideUp", (arg1 = 300, arg2 = () => {}) => { + nodeList.forEach((node) => { + node.style.transitionProperty = "height, margin, padding"; + node.style.transitionDuration = arg1 + "ms"; + node.style.height = node.offsetHeight + "px"; + node.offsetHeight; + node.style.overflow = "hidden"; + node.style.height = 0; + node.style.paddingTop = 0; + node.style.paddingBottom = 0; + node.style.marginTop = 0; + node.style.marginBottom = 0; + window.setTimeout(() => { + node.style.display = "none"; + node.style.removeProperty("height"); + node.style.removeProperty("padding-top"); + node.style.removeProperty("padding-bottom"); + node.style.removeProperty("margin-top"); + node.style.removeProperty("margin-bottom"); + node.style.removeProperty("overflow"); + node.style.removeProperty("transition-duration"); + node.style.removeProperty("transition-property"); + + const uuid = uuidv4(); + node[uuid] = arg2; + node[uuid](node); + delete node[uuid]; + }, arg1); + }); + + addEvents(nodeList); + return nodeList; + }); + + // .slideDown() + addEvent(nodeList, "slideDown", (arg1 = 300, arg2 = () => {}) => { + nodeList.forEach((node) => { + node.style.removeProperty("display"); + let display = window.getComputedStyle(node).display; + if (display === "none") display = "block"; + node.style.display = display; + let height = node.offsetHeight; + node.style.overflow = "hidden"; + node.style.height = 0; + node.style.paddingTop = 0; + node.style.paddingBottom = 0; + node.style.marginTop = 0; + node.style.marginBottom = 0; + node.offsetHeight; + node.style.transitionProperty = "height, margin, padding"; + node.style.transitionDuration = arg1 + "ms"; + node.style.height = height + "px"; + node.style.removeProperty("padding-top"); + node.style.removeProperty("padding-bottom"); + node.style.removeProperty("margin-top"); + node.style.removeProperty("margin-bottom"); + window.setTimeout(() => { + node.style.removeProperty("height"); + node.style.removeProperty("overflow"); + node.style.removeProperty("transition-duration"); + node.style.removeProperty("transition-property"); + + const uuid = uuidv4(); + node[uuid] = arg2; + node[uuid](node); + delete node[uuid]; + }, arg1); + }); + + addEvents(nodeList); + return nodeList; + }); + + // .fadeOut() + addEvent(nodeList, "fadeOut", (arg1 = 300, arg2 = () => {}) => { + nodeList.forEach((node) => { + node.style.opacity = 1; + node.style.transitionProperty = "opacity"; + node.style.transitionDuration = arg1 + "ms"; + node.style.opacity = 0; + window.setTimeout(() => { + node.style.display = "none"; + node.style.removeProperty("transition-property"); + node.style.removeProperty("transition-duration"); + node.style.removeProperty("opacity"); + + const uuid = uuidv4(); + node[uuid] = arg2; + node[uuid](node); + delete node[uuid]; + }, arg1); + }); + + addEvents(nodeList); + return nodeList; + }); + + // .fadeIn() + addEvent(nodeList, "fadeIn", (arg1 = 300, arg2 = () => {}) => { + nodeList.forEach((node) => { + let display = window.getComputedStyle(node).display; + if (display === "none") display = "block"; + node.style.display = display; + node.style.opacity = 0; + node.style.transitionProperty = "opacity"; + node.style.transitionDuration = arg1 + "ms"; + window.setTimeout(() => { + node.style.opacity = 1; + window.setTimeout(() => { + node.style.removeProperty("transition-property"); + node.style.removeProperty("transition-duration"); + node.style.removeProperty("opacity"); + }, arg1); + + const uuid = uuidv4(); + node[uuid] = arg2; + node[uuid](node); + delete node[uuid]; + }, arg1); + }); + + addEvents(nodeList); + return nodeList; + }); + + // .hide() + addEvent(nodeList, "hide", () => { + nodeList.forEach((node) => { + node.style.display = "none"; + }); + + addEvents(nodeList); + return nodeList; + }); + + // .show() + addEvent(nodeList, "show", () => { + nodeList.forEach((node) => { + if (node.style.display === "none") { + node.style.display = "block"; + } + }); + + addEvents(nodeList); + return nodeList; + }); + + // .clone() + addEvent(nodeList, "clone", () => { + let clonedNodes = []; + nodeList.forEach((node) => { + clonedNodes.push(node.cloneNode(true)); + }); + + addEvents(clonedNodes); + return clonedNodes; + }); + + // .each() + addEvent(nodeList, "each", (arg1) => { + nodeList.forEach((node, index) => { + const uuid = uuidv4(); + node[uuid] = arg1; + node[uuid](index, node); + delete node[uuid]; + }); + + addEvents(nodeList); + return nodeList; + }); + + // .find() + addEvent(nodeList, "find", (arg1) => { + let results = []; + nodeList.forEach((node) => { + const matchedNodes = node.querySelectorAll(arg1); + if (matchedNodes.length) { + matchedNodes.forEach((matchedNode) => { + results.push(matchedNode); + }); + } + }); + + addEvents(results); + return results; + }); + + // .hasClass() + addEvent(nodeList, "hasClass", (arg1) => { + let found = false; + nodeList.forEach((node) => { + if (node.classList.contains(arg1)) found = true; + }); + return found; + }); + + // .removeClass() + addEvent(nodeList, "removeClass", (arg1) => { + if (arg1.length) { + arg1.split(" ").forEach((classname) => { + nodeList.forEach((node) => { + node.classList.remove(classname); + }); + }); + } + + addEvents(nodeList); + return nodeList; + }); + + // .addClass() + addEvent(nodeList, "addClass", (arg1) => { + if (arg1.length) { + arg1.split(" ").forEach((classname) => { + nodeList.forEach((node) => { + node.classList.add(classname); + }); + }); + } + + addEvents(nodeList); + return nodeList; + }); + + // .is() + addEvent(nodeList, "is", (arg1) => { + if (typeof arg1 === "string") { + return ( + nodeList[0].matches || + nodeList[0].matchesSelector || + nodeList[0].msMatchesSelector || + nodeList[0].mozMatchesSelector || + nodeList[0].webkitMatchesSelector || + nodeList[0].oMatchesSelector + ).call(nodeList[0], arg1); + } else { + return nodeList[0] === arg1; + } + }); + + // .attr() + addEvent(nodeList, "attr", (arg1, arg2) => { + if (arg2 === undefined && typeof arg1 !== "object") { + if (nodeList[0] !== undefined) { + const attr = nodeList[0].getAttribute(arg1); + return attr === null ? undefined : attr; + } else { + return undefined; + } + } + + nodeList.forEach((node) => { + if (typeof arg1 === "object") { + for (const [key, val] of Object.entries(arg1)) { + node.setAttribute(key, val); + } + } else { + node.setAttribute(arg1, arg2); + } + }); + + addEvents(nodeList); + return nodeList; + }); + + // .removeAttr() + addEvent(nodeList, "removeAttr", (arg1) => { + nodeList.forEach((node) => { + node.removeAttribute(arg1); + }); + + addEvents(nodeList); + return nodeList; + }); + + // .data() + addEvent(nodeList, "data", (arg1, arg2) => { + if (arg2 === undefined) { + const attr = nodeList[0].getAttribute(`data-${arg1}`); + return attr === null ? undefined : attr; + } + + nodeList.forEach((node) => { + node.setAttribute(`data-${arg1}`, arg2); + }); + + addEvents(nodeList); + return nodeList; + }); + + // .width() + addEvent(nodeList, "width", (arg1) => { + if (arg1 === undefined) { + if (nodeList === window) { + return parseInt(window.innerWidth); + } else { + return typeof nodeList[0] !== "undefined" + ? parseInt(getComputedStyle(nodeList[0])["width"]) + : null; + } + } + + if (nodeList === window) { + window.resizeTo(arg1, window.innerHeight); + } else { + nodeList.forEach((node) => { + node.style["width"] = arg1; + }); + } + + addEvents(nodeList); + return nodeList; + }); + + // .height() + addEvent(nodeList, "height", (arg1) => { + if (arg1 === undefined) { + if (nodeList === window) { + return parseInt(window.innerHeight); + } else { + return typeof nodeList[0] !== "undefined" + ? parseInt(getComputedStyle(nodeList[0])["height"]) + : null; + } + } + + if (nodeList === window) { + window.resizeTo(window.innerWidth, arg1); + } else { + nodeList.forEach((node) => { + node.style["height"] = arg1; + }); + } + + addEvents(nodeList); + return nodeList; + }); + + // .css() + addEvent(nodeList, "css", (arg1, arg2) => { + if (arg2 === undefined && typeof arg1 !== "object") { + return getComputedStyle(nodeList[0])[arg1]; + } + + nodeList.forEach((node) => { + if (typeof arg1 === "object") { + for (const [key, val] of Object.entries(arg1)) { + node.style[key] = val; + } + } else { + node.style[arg1] = arg2; + } + }); + + addEvents(nodeList); + return nodeList; + }); + + // .replaceWith() + addEvent(nodeList, "replaceWith", (arg1) => { + const replacerNodes = []; + const argumentTypes = getNodeList(arg1); + + nodeList.forEach((node, key) => { + argumentTypes.forEach((replacerNode) => { + let dom = replacerNode; + if (key > 0) { + dom = replacerNode.cloneNode(true); + } + + node.parentNode.insertBefore(dom, node.nextSibling); + replacerNodes.push(dom); + }); + node.remove(); + }); + + addEvents(replacerNodes); + return replacerNodes; + }); + + // .insertAfter() + addEvent(nodeList, "insertAfter", (arg1) => { + const insertedNodes = []; + const argumentTypes = getNodeList(arg1); + + nodeList.forEach((node) => { + argumentTypes.forEach((targetNode, key) => { + let dom = node; + if (key > 0) { + dom = node.cloneNode(true); + } + + targetNode.parentNode.insertBefore(dom, targetNode.nextSibling); + insertedNodes.push(dom); + }); + }); + + addEvents(insertedNodes); + return insertedNodes; + }); + + // .appendTo() + addEvent(nodeList, "appendTo", (arg1) => { + const appendedNodes = []; + const argumentTypes = getNodeList(arg1); + + nodeList.forEach((node) => { + argumentTypes.forEach((targetNode, key) => { + let dom = node; + if (key > 0) { + dom = node.cloneNode(true); + } + + targetNode.appendChild(dom); + appendedNodes.push(dom); + }); + }); + + addEvents(appendedNodes); + return appendedNodes; + }); + + // .append() + addEvent(nodeList, "append", (arg1) => { + const argumentTypes = getNodeList(arg1); + + nodeList.forEach((node, key) => { + argumentTypes.forEach((appendNode) => { + let dom = appendNode; + if (key > 0) { + dom = appendNode.cloneNode(true); + } + + node.appendChild(dom); + }); + }); + + addEvents(nodeList); + return nodeList; + }); + + // .remove() + addEvent(nodeList, "remove", () => { + nodeList.forEach((node) => { + if (node.parentNode !== null) { + node.parentNode.removeChild(node); + } + }); + + addEvents(nodeList); + return nodeList; + }); + + // .first() + addEvent(nodeList, "first", () => { + const firstNode = nodeList[0] !== undefined ? [nodeList[0]] : []; + addEvents(firstNode); + return firstNode; + }); + + // .last() + addEvent(nodeList, "last", () => { + const lastNodeList = + nodeList[nodeList.length - 1] !== undefined + ? [nodeList[nodeList.length - 1]] + : []; + + addEvents(lastNodeList); + return lastNodeList; + }); + + // .val() + addEvent(nodeList, "val", (arg1) => { + if (arg1 === undefined) { + if (nodeList[0] instanceof HTMLSelectElement && nodeList[0].multiple) { + const selectedOptions = []; + for (const selectedOption of nodeList[0].selectedOptions) { + selectedOptions.push(selectedOption.value); + } + return selectedOptions; + } else { + return nodeList[0].value; + } + } + + nodeList.forEach((node) => { + if (node instanceof HTMLSelectElement) { + node.value = ""; + + if (typeof arg1 !== "object") { + arg1 = [arg1]; + } + + for (const value of arg1) { + const selectedOption = Array.from(node).find( + (option) => option.value == value + ); + + if (selectedOption !== undefined) { + selectedOption.selected = true; + } + } + } else { + node.value = arg1; + } + }); + + addEvents(nodeList); + return nodeList; + }); + + // .html() + addEvent(nodeList, "html", (arg1) => { + if (arg1 === undefined) { + return nodeList[0].innerHTML; + } + + nodeList.forEach((node) => { + node.innerHTML = arg1; + }); + + addEvents(nodeList); + return nodeList; + }); + + // .text() + addEvent(nodeList, "text", (arg1) => { + if (arg1 === undefined) { + return nodeList[0].textContent; + } + + nodeList.forEach((node) => { + node.textContent = arg1; + }); + + addEvents(nodeList); + return nodeList; + }); + + // .filter() + addEvent(nodeList, "filter", (arg1) => { + let results = []; + nodeList.forEach((node, index) => { + const uuid = uuidv4(); + node[uuid] = arg1; + const filter = node[uuid](index, node); + delete node[uuid]; + + if (filter) { + results.push(node); + } + }); + + addEvents(results); + return results; + }); + + // .closest() + addEvent(nodeList, "closest", (arg1) => { + let results = []; + nodeList.forEach((node) => { + const matchedNode = node.closest(arg1); + if ( + matchedNode !== null && + !results.filter((resNode) => resNode === matchedNode).length + ) + results.push(matchedNode); + }); + + addEvents(results); + return results; + }); + + // .children() + addEvent(nodeList, "children", (arg1) => { + let results = []; + + nodeList.forEach((node) => { + for (const matchedNode of node.children) { + if (arg1 === undefined) { + results.push(matchedNode); + } else { + for (const childNode of node.querySelectorAll(arg1)) { + if (childNode === matchedNode) results.push(childNode); + } + } + } + }); + + addEvents(results); + return results; + }); + + // .parent() + addEvent(nodeList, "parent", () => { + let results = []; + nodeList.forEach((node) => { + const matchedNode = node.parentNode; + if ( + matchedNode !== null && + !results.filter((resNode) => resNode === matchedNode).length + ) + results.push(matchedNode); + }); + + addEvents(results); + return results; + }); + + // .prev() + addEvent(nodeList, "prev", () => { + let results = []; + nodeList.forEach((node) => { + if (node.previousElementSibling !== null) { + results.push(node.previousElementSibling); + } + }); + + addEvents(results); + return results; + }); + + // .next() + addEvent(nodeList, "next", () => { + let results = []; + nodeList.forEach((node) => { + if (node.nextElementSibling !== null) { + results.push(node.nextElementSibling); + } + }); + + addEvents(results); + return results; + }); + }; + + return (window.dom = (arg) => { + const nodeList = getNodeList(arg); + addEvents(nodeList); + return nodeList; + }); +})()); + + +/***/ }), + +/***/ "./node_modules/@left4code/tw-starter/dist/js/dropdown.js": +/*!****************************************************************!*\ + !*** ./node_modules/@left4code/tw-starter/dist/js/dropdown.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/popper.js"); +/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ "./node_modules/@left4code/tw-starter/dist/js/dom.js"); + + + +(function (dom) { + "use strict"; + + // Hide dropdown + function hide() { + dom(".dropdown-menu").each(async function () { + if ( + dom(this).attr("id") !== undefined && + dom('[data-dropdown-replacer="' + dom(this).attr("id") + '"]').length && + dom(this).data("dropdown-programmatically") === undefined + ) { + let randId = dom(this).attr("id"); + let dropdownToggle = dom('[data-dropdown-replacer="' + randId + '"]') + .parent() + .find("[data-tw-toggle='dropdown']"); + + // Animate dropdown + dom(this).removeClass("show"); + + // Trigger "hide.tw.dropdown" callback function + const event = new Event("hide.tw.dropdown"); + dom(dropdownToggle).parent()[0].dispatchEvent(event); + + await setTimeout(() => { + // Move dropdown element to body + dom('[data-dropdown-replacer="' + randId + '"]').replaceWith(this); + + // Reset attribute + dom(this).removeAttr("style"); + dom(this).removeAttr("data-popper-placement"); + + // Set aria-expanded to false + dom(dropdownToggle).attr("aria-expanded", false); + + // Trigger "hidden.tw.dropdown" callback function + const event = new Event("hidden.tw.dropdown"); + dom(dropdownToggle).parent()[0].dispatchEvent(event); + }, 200); + } else if ( + dom(this).attr("id") !== undefined && + !dom('[data-dropdown-replacer="' + dom(this).attr("id") + '"]') + .length && + dom(this).hasClass("show") && + dom(this).data("dropdown-programmatically") === undefined + ) { + dom(this).remove(); + } else if (dom(this).data("dropdown-programmatically") == "initiate") { + // Set programmatically attribute state + dom(this).attr("data-dropdown-programmatically", "showed"); + } else if (dom(this).data("dropdown-programmatically") == "showed") { + // Remove programmatically attribute state + dom(this).removeAttr("data-dropdown-programmatically"); + + // Hide dropdown + hide(); + } + }); + } + + // Find visible dropdown toggle + function findVisibleDropdownToggle(dropdownToggle) { + return dropdownToggle.filter((key, dropdownToggle) => { + return dropdownToggle.offsetParent !== null; + }); + } + + // Show dropdown + async function show(dropdown) { + let dropdownBox = dom(dropdown).find(".dropdown-menu").first(); + let dropdownToggle = findVisibleDropdownToggle( + dom(dropdown).find("[data-tw-toggle='dropdown']") + ); + let placement = dom(dropdown).data("tw-placement") + ? dom(dropdown).data("tw-placement") + : "bottom-end"; + let randId = "_" + Math.random().toString(36).substr(2, 9); + + // Hide dropdown + hide(); + + if (dom(dropdownBox).length) { + // Set aria-expanded to true + dom(dropdownToggle).attr("aria-expanded", true); + + // Set dropdown width + dom(dropdown).css("position") == "static" + ? dom(dropdown).css("position", "relative") + : ""; + dom(dropdownBox).css("width", dom(dropdownBox).css("width")); + + // Move dropdown element to body + dom('
').insertAfter( + dropdownBox + ); + dom(dropdownBox).attr("id", randId).appendTo("body"); + + // Check if dropdown is used inside modal + dom(".modal.show").each(function () { + if (dom(this).find('[data-dropdown-replacer="' + randId + '"]')) { + dom(dropdownBox).css("z-index", dom(this).css("z-index")); + } + }); + + // Init popper + _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(dropdownToggle[0], dropdownBox[0], { + placement: placement, + }); + + // Show dropdown + dom(dropdownBox).addClass("show"); + + // Trigger "show.tw.dropdown" callback function + const event = new Event("show.tw.dropdown"); + dom(dropdown)[0].dispatchEvent(event); + + await setTimeout(() => { + // Trigger "shown.tw.dropdown" callback function + const event = new Event("shown.tw.dropdown"); + dom(dropdown)[0].dispatchEvent(event); + }, 200); + } + } + + // Toggle dropdown programmatically + function toggleProgrammatically(dropdown) { + let dropdownBox = dom(dropdown).find(".dropdown-menu").first(); + if (dom(dropdownBox).length) { + showProgrammatically(dropdown); + } else { + hide(); + } + } + + // Show dropdown programmatically + function showProgrammatically(dropdown) { + if (dom(dropdown).find(".dropdown-menu").length) { + dom(dropdown) + .find(".dropdown-menu") + .attr("data-dropdown-programmatically", "initiate"); + } else { + let randId = dom("[data-dropdown-replacer]").data("dropdown-replacer"); + dom("#" + randId).attr("data-dropdown-programmatically", "initiate"); + } + + show(dropdown); + } + + // Create instance + function createInstance(dropdownToggle) { + const dropdown = dom(dropdownToggle).closest(".dropdown"); + return { + show() { + showProgrammatically(dropdown); + }, + hide() { + hide(); + }, + toggle() { + toggleProgrammatically(dropdown); + }, + }; + } + + // Dropdown event listener + dom("body").on("click", function (event) { + let dropdown = dom(event.target).closest(".dropdown"); + let dropdownToggle = dom(dropdown).find("[data-tw-toggle='dropdown']"); + let dropdownBox = dom(dropdown).find(".dropdown-menu").first(); + let activeDropdownBox = dom(event.target).closest(".dropdown-menu").first(); + let dismissButton = dom(event.target).data("tw-dismiss"); + + if ( + (!dom(dropdown).length && !dom(activeDropdownBox).length) || + (dom(dropdownToggle).length && !dom(dropdownBox).length) || + dismissButton == "dropdown" + ) { + // Hide dropdown + hide(); + } else if (!dom(activeDropdownBox).length) { + // Show dropdown + show(dropdown); + } + }); + + // Keyboard event + document.addEventListener("keydown", function (event) { + if (event.code == "Escape") { + hide(); + } + }); + + // Register instance + (function init() { + dom("[data-tw-toggle='dropdown']").each(function () { + this["__dropdown"] = createInstance(this); + }); + + if (window.tailwind === undefined) window.tailwind = {}; + window.tailwind.Dropdown = { + getInstance(el) { + return el.__dropdown; + }, + getOrCreateInstance(el) { + return el.__dropdown === undefined ? createInstance(el) : el.__dropdown; + }, + }; + })(); +})(_dom__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./node_modules/@left4code/tw-starter/dist/js/modal.js": +/*!*************************************************************!*\ + !*** ./node_modules/@left4code/tw-starter/dist/js/modal.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ "./node_modules/@left4code/tw-starter/dist/js/dom.js"); + + +(function (dom) { + // Get highest z-index + function getHighestZindex() { + let zIndex = 9999; + dom(".modal").each(function () { + if ( + dom(this).css("z-index") !== "auto" && + dom(this).css("z-index") > zIndex + ) { + zIndex = parseInt(dom(this).css("z-index")); + } + }); + + return zIndex; + } + + // Get scrollbar width + function getScrollbarWidth(el) { + return window.innerWidth - dom(el)[0].clientWidth; + } + + // Show modal with z-index + function show(el) { + if (!dom("[data-modal-replacer='" + dom(el).attr("id") + "']").length) { + // Move modal element to body + dom( + '
' + ).insertAfter(el); + dom(el).css({ + "margin-top": 0, + "margin-left": 0, + }); + dom(el).attr("aria-hidden", false).appendTo("body"); + + // Show modal by highest z-index + setTimeout(() => { + dom(el) + .addClass("show") + .css("z-index", getHighestZindex() + 1); + + // Trigger "shown.tw.modal" callback function + const event = new Event("shown.tw.modal"); + dom(el)[0].dispatchEvent(event); + }, 200); + + // Setting up modal scroll + dom("body") + .css( + "padding-right", + parseInt(dom("body").css("padding-right")) + + getScrollbarWidth("html") + + "px" + ) + .addClass("overflow-y-hidden"); + dom(".modal").removeClass("overflow-y-auto").css("padding-left", "0px"); + dom(el) + .addClass("overflow-y-auto") + .css("padding-left", getScrollbarWidth(el) + "px") + .addClass(dom(".modal.show").length ? "modal-overlap" : ""); + + // Trigger "show.tw.modal" callback function + const event = new Event("show.tw.modal"); + dom(el)[0].dispatchEvent(event); + } + } + + // Hide modal & remove modal scroll + function hide(el) { + if (dom(el).hasClass("modal") && dom(el).hasClass("show")) { + let transitionDuration = + parseFloat(dom(el).css("transition-duration").split(",")[1]) * 1000; + dom(el).attr("aria-hidden", true).removeClass("show"); + + setTimeout(() => { + dom(el) + .removeAttr("style") + .removeClass("modal-overlap") + .removeClass("overflow-y-auto"); + + // Add scroll to highest z-index modal if exist + dom(".modal").each(function () { + if (parseInt(dom(this).css("z-index")) === getHighestZindex()) { + dom(this) + .addClass("overflow-y-auto") + .css("padding-left", getScrollbarWidth(this) + "px"); + } + }); + + // Return back scroll to body if no more modal showed up + if (getHighestZindex() == 9999) { + dom("body").removeClass("overflow-y-hidden").css("padding-right", ""); + } + + // Return back modal element to it's first place + dom('[data-modal-replacer="' + dom(el).attr("id") + '"]').replaceWith( + el + ); + + // Trigger "hidden.tw.modal" callback function + const event = new Event("hidden.tw.modal"); + dom(el)[0].dispatchEvent(event); + }, transitionDuration); + + // Trigger "hide.tw.modal" callback function + const event = new Event("hide.tw.modal"); + dom(el)[0].dispatchEvent(event); + } + } + + // Toggle modal + function toggle(el) { + if (dom(el).hasClass("modal") && dom(el).hasClass("show")) { + hide(el); + } else { + show(el); + } + } + + // Create instance + function createInstance(el) { + return { + show() { + show(el); + }, + hide() { + hide(el); + }, + toggle() { + toggle(el); + }, + }; + } + + // Show modal + dom("body").on("click", '[data-tw-toggle="modal"]', function () { + show(dom(this).attr("data-tw-target")); + }); + + // Hide modal + dom("body").on("click", (event) => { + if ( + dom(event.target).hasClass("modal") && + dom(event.target).hasClass("show") + ) { + // Check if modal backdrop is not static + if (dom(event.target).data("tw-backdrop") !== "static") { + hide(event.target); + } else { + dom(event.target).addClass("modal-static"); + setTimeout(() => { + dom(event.target).removeClass("modal-static"); + }, 600); + } + } + }); + + // Dismiss modal by link + dom("body").on("click", '[data-tw-dismiss="modal"]', function () { + let modal = dom(this).closest(".modal")[0]; + hide(modal); + }); + + // Keyboard event + document.addEventListener("keydown", (event) => { + if (event.code == "Escape") { + let el = dom(".modal.show").last(); + if ( + dom(el).hasClass("modal") && + dom(el).hasClass("show") && + (dom(el).data("tw-keyboard") === undefined || + dom(el).data("tw-keyboard") !== "false") + ) { + // Check if modal backdrop is not static + if (dom(el).data("tw-backdrop") !== "static") { + hide(el); + } else { + dom(el).addClass("modal-static"); + setTimeout(() => { + dom(el).removeClass("modal-static"); + }, 600); + } + } + } + }); + + // Register instance + (function init() { + dom(".modal").each(function () { + this["__modal"] = createInstance(this); + }); + + if (window.tailwind === undefined) window.tailwind = {}; + window.tailwind.Modal = { + getInstance(el) { + return el.__modal; + }, + getOrCreateInstance(el) { + return el.__modal === undefined ? createInstance(el) : el.__modal; + }, + }; + })(); +})(_dom__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./node_modules/@left4code/tw-starter/dist/js/svg-loader.js": +/*!******************************************************************!*\ + !*** ./node_modules/@left4code/tw-starter/dist/js/svg-loader.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ "./node_modules/@left4code/tw-starter/dist/js/dom.js"); + + +(function (dom) { + "use strict"; + + let initSvgLoader = (function svgLoader(init) { + dom(`[data-loading-icon]`).each(function () { + let color = + dom(this).data("color") !== undefined + ? dom(this).data("color") + : dom("body").css("color"); + let classAttr = + dom(this).attr("class") !== undefined ? dom(this).attr("class") : ""; + let icons = [ + { + name: "audio", + svg: ` + + + + + + + + + + + + + + + + + `, + }, + { + name: "ball-triangle", + svg: ` + + + + + + + + + + + + + + + + + + + `, + }, + { + name: "bars", + svg: ` + + + + + + + + + + + + + + + + + + + + + + + `, + }, + { + name: "circles", + svg: ` + + + + + + + + + `, + }, + { + name: "grid", + svg: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `, + }, + { + name: "hearts", + svg: ` + + + + + + + + + + `, + }, + { + name: "oval", + svg: ` + + + + + + + + + + + `, + }, + { + name: "puff", + svg: ` + + + + + + + + + + + + + `, + }, + { + name: "rings", + svg: ` + + + + + + + + + + + + + + + + + + `, + }, + { + name: "spinning-circles", + svg: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `, + }, + { + name: "tail-spin", + svg: ` + + + + + + + + + + + + + + + + + + + + `, + }, + { + name: "three-dots", + svg: ` + + + + + + + + + + + + + + + `, + }, + ]; + + let self = this; + icons.forEach(function (icon) { + if (dom(self).data("loading-icon") == icon.name) { + dom(self).replaceWith(icon.svg); + } + }); + }); + + return svgLoader; + })(); + + // Register instance + (function init() { + if (window.tailwind === undefined) window.tailwind = {}; + window.tailwind.svgLoader = function () { + initSvgLoader(); + }; + })(); +})(_dom__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./node_modules/@left4code/tw-starter/dist/js/tab.js": +/*!***********************************************************!*\ + !*** ./node_modules/@left4code/tw-starter/dist/js/tab.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ "./node_modules/@left4code/tw-starter/dist/js/dom.js"); + + +(function (dom) { + "use strict"; + + // Show tab content + dom("body").on("click", "[role='tab']", function () { + show(this); + }); + + function show(el) { + dom(el) + .closest("[role='tablist']") + .find("[role='tab']") + .each(function () { + // Trigger "hide.tw.tab" callback function + if (dom(this).hasClass("active") && this !== el) { + const event = new Event("hide.tw.tab"); + dom(this)[0].dispatchEvent(event); + } + + // Trigger "show.tw.tab" callback function + if (!dom(this).hasClass("active") && this === el) { + const event = new Event("show.tw.tab"); + dom(this)[0].dispatchEvent(event); + } + }); + + // Set active tab nav + dom(el) + .closest("[role='tablist']") + .find("[role='tab']") + .removeClass("active") + .attr("aria-selected", false); + dom(el).addClass("active").attr("aria-selected", true); + + // Set active tab content + let elementId = dom(el).attr("data-tw-target"); + let tabContentWidth = dom(elementId).closest(".tab-content").width(); + dom(elementId) + .closest(".tab-content") + .children(".tab-pane") + .removeAttr("style") + .removeClass("active"); + dom(elementId) + .css("width", tabContentWidth + "px") + .addClass("active"); + } + + // Create instance + function createInstance(el) { + return { + show() { + show(el); + }, + }; + } + + // Register instance + (function init() { + dom("[role='tab']").each(function () { + this["__tab"] = createInstance(this); + }); + + if (window.tailwind === undefined) window.tailwind = {}; + window.tailwind.Tab = { + getInstance(el) { + return el.__tab; + }, + getOrCreateInstance(el) { + return el.__tab === undefined ? createInstance(el) : el.__tab; + }, + }; + })(); +})(_dom__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/createPopper.js": +/*!*********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/createPopper.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "popperGenerator": () => (/* binding */ popperGenerator), +/* harmony export */ "createPopper": () => (/* binding */ createPopper), +/* harmony export */ "detectOverflow": () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__["default"]) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js"); +/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); +/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js"); +/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js"); +/* harmony import */ var _utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/validateModifiers.js */ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js"); +/* harmony import */ var _utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/uniqueBy.js */ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js"); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); + + + + + + + + + + + + + + +var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; +var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; +var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' +}; + +function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); +} + +function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference.contextElement) : [], + popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); // Validate the provided modifiers so that the consumer will get warned + // if one of the modifiers is invalid for any reason + + if (true) { + var modifiers = (0,_utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__["default"])([].concat(orderedModifiers, state.options.modifiers), function (_ref) { + var name = _ref.name; + return name; + }); + (0,_utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__["default"])(modifiers); + + if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.options.placement) === _enums_js__WEBPACK_IMPORTED_MODULE_7__.auto) { + var flipModifier = state.orderedModifiers.find(function (_ref2) { + var name = _ref2.name; + return name === 'flip'; + }); + + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); + } + } + + var _getComputedStyle = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"])(popper), + marginTop = _getComputedStyle.marginTop, + marginRight = _getComputedStyle.marginRight, + marginBottom = _getComputedStyle.marginBottom, + marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can + // cause bugs with positioning, so we'll warn the consumer + + + if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); + } + } + + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(popper), state.options.strategy === 'fixed'), + popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__["default"])(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (true) { + __debug_loops__ += 1; + + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__["default"])(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + + return instance; + } + + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() {}; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + + return instance; + }; +} +var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules + + + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js": +/*!***************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ contains) +/* harmony export */ }); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + +function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getBoundingClientRect) +/* harmony export */ }); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); + + +function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + + if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale + // Fallback to 1 in case both values are `0` + + if (offsetWidth > 0) { + scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(rect.width) / offsetWidth || 1; + } + + if (offsetHeight > 0) { + scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(rect.height) / offsetHeight || 1; + } + } + + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getClippingRect) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js"); +/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js"); +/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); +/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); +/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + + + + + + + + +function getInnerBoundingClientRect(element) { + var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; +} + +function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element))); +} // A "clipping parent" is an overflowable container with the characteristic of +// clipping (or hiding) overflowing elements with a position different from +// `initial` + + +function getClippingParents(element) { + var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element).position) >= 0; + var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(element) : element; + + if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 + + + return clippingParents.filter(function (clippingParent) { + return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__["default"])(clippingParent) !== 'body'; + }); +} // Gets the maximum area that the element is visible in due to any number of +// clipping parents + + +function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top); + accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right); + accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom); + accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getCompositeRect) +/* harmony export */ }); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + + +function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1; + var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; +} // Returns the composite rect of an element relative to its offsetParent. +// Composite means it takes into account transforms as well as layout. + + +function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent); + var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent); + var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent); + var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(documentElement)) { + scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent); + } + + if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) { + offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__["default"])(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getComputedStyle) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + +function getComputedStyle(element) { + return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getDocumentElement) +/* harmony export */ }); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + +function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getDocumentRect) +/* harmony export */ }); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); +/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); + + + + + // Gets the entire size of the scrollable document area, even extending outside +// of the `` and `` rect bounds if horizontally scrollable + +function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); + var y = -winScroll.scrollTop; + + if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(body || html).direction === 'rtl') { + x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width; + } + + return { + width: width, + height: height, + x: x, + y: y + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getHTMLElementScroll) +/* harmony export */ }); +function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js": +/*!********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getLayoutRect) +/* harmony export */ }); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); + // Returns the layout rect of an element relative to its offsetParent. Layout +// means it doesn't take into account transforms. + +function getLayoutRect(element) { + var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js": +/*!******************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getNodeName) +/* harmony export */ }); +function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js": +/*!********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getNodeScroll) +/* harmony export */ }); +/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js"); + + + + +function getNodeScroll(node) { + if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) { + return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node); + } else { + return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node); + } +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getOffsetParent) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js"); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); + + + + + + + +function getTrueOffsetParent(element) { + if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837 + (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element).position === 'fixed') { + return null; + } + + return element.offsetParent; +} // `.offsetParent` reports `null` for fixed elements, while absolute elements +// return the containing block + + +function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; + var isIE = navigator.userAgent.indexOf('Trident') !== -1; + + if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); + + if (elementCss.position === 'fixed') { + return null; + } + } + + var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element); + + while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_3__["default"])(currentNode)) < 0) { + var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + + return null; +} // Gets the closest ancestor positioned element. Handles some edge cases, +// such as table ancestors and cross browser bugs. + + +function getOffsetParent(element) { + var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js": +/*!********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getParentNode) +/* harmony export */ }); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + + +function getParentNode(element) { + if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) // fallback + + ); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getScrollParent) +/* harmony export */ }); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); +/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + + + +function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) { + return node; + } + + return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node)); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getViewportRect) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); + + + +function getViewportRect(element) { + var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper + // can be obscured underneath it. + // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even + // if it isn't open, so if this isn't available, the popper will be detected + // to overflow the bottom of the screen too early. + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) + // In Chrome, it returns a value very close to 0 (+/-) but contains rounding + // errors due to floating point numbers, so we need to check precision. + // Safari returns a number <= 0, usually < -1 when pinch-zoomed + // Feature detection fails in mobile emulation mode in Chrome. + // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < + // 0.001 + // Fallback here: "Not Safari" userAgent + + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + + return { + width: width, + height: height, + x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element), + y: y + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js": +/*!****************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getWindow) +/* harmony export */ }); +function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getWindowScroll) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + +function getWindowScroll(node) { + var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getWindowScrollBarX) +/* harmony export */ }); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); + + + +function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "isElement": () => (/* binding */ isElement), +/* harmony export */ "isHTMLElement": () => (/* binding */ isHTMLElement), +/* harmony export */ "isShadowRoot": () => (/* binding */ isShadowRoot) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + + +function isElement(node) { + var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element; + return node instanceof OwnElement || node instanceof Element; +} + +function isHTMLElement(node) { + var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; +} + +function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; +} + + + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ isScrollParent) +/* harmony export */ }); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); + +function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ isTableElement) +/* harmony export */ }); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); + +function isTableElement(element) { + return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js": +/*!************************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ listScrollParents) +/* harmony export */ }); +/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js"); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); + + + + +/* +given a DOM element, return the list of all scroll parents, up the list of ancesors +until we get to the top window object. This list is what we attach scroll listeners +to, because if any of these parent elements scroll, we'll need to re-calculate the +reference element's position. +*/ + +function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target))); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/enums.js": +/*!**************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/enums.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "top": () => (/* binding */ top), +/* harmony export */ "bottom": () => (/* binding */ bottom), +/* harmony export */ "right": () => (/* binding */ right), +/* harmony export */ "left": () => (/* binding */ left), +/* harmony export */ "auto": () => (/* binding */ auto), +/* harmony export */ "basePlacements": () => (/* binding */ basePlacements), +/* harmony export */ "start": () => (/* binding */ start), +/* harmony export */ "end": () => (/* binding */ end), +/* harmony export */ "clippingParents": () => (/* binding */ clippingParents), +/* harmony export */ "viewport": () => (/* binding */ viewport), +/* harmony export */ "popper": () => (/* binding */ popper), +/* harmony export */ "reference": () => (/* binding */ reference), +/* harmony export */ "variationPlacements": () => (/* binding */ variationPlacements), +/* harmony export */ "placements": () => (/* binding */ placements), +/* harmony export */ "beforeRead": () => (/* binding */ beforeRead), +/* harmony export */ "read": () => (/* binding */ read), +/* harmony export */ "afterRead": () => (/* binding */ afterRead), +/* harmony export */ "beforeMain": () => (/* binding */ beforeMain), +/* harmony export */ "main": () => (/* binding */ main), +/* harmony export */ "afterMain": () => (/* binding */ afterMain), +/* harmony export */ "beforeWrite": () => (/* binding */ beforeWrite), +/* harmony export */ "write": () => (/* binding */ write), +/* harmony export */ "afterWrite": () => (/* binding */ afterWrite), +/* harmony export */ "modifierPhases": () => (/* binding */ modifierPhases) +/* harmony export */ }); +var top = 'top'; +var bottom = 'bottom'; +var right = 'right'; +var left = 'left'; +var auto = 'auto'; +var basePlacements = [top, bottom, right, left]; +var start = 'start'; +var end = 'end'; +var clippingParents = 'clippingParents'; +var viewport = 'viewport'; +var popper = 'popper'; +var reference = 'reference'; +var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); +}, []); +var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); +}, []); // modifiers that need to read the DOM + +var beforeRead = 'beforeRead'; +var read = 'read'; +var afterRead = 'afterRead'; // pure-logic modifiers + +var beforeMain = 'beforeMain'; +var main = 'main'; +var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + +var beforeWrite = 'beforeWrite'; +var write = 'write'; +var afterWrite = 'afterWrite'; +var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/index.js": +/*!**************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/index.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "afterMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain), +/* harmony export */ "afterRead": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead), +/* harmony export */ "afterWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite), +/* harmony export */ "auto": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto), +/* harmony export */ "basePlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements), +/* harmony export */ "beforeMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain), +/* harmony export */ "beforeRead": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead), +/* harmony export */ "beforeWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite), +/* harmony export */ "bottom": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom), +/* harmony export */ "clippingParents": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents), +/* harmony export */ "end": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end), +/* harmony export */ "left": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left), +/* harmony export */ "main": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main), +/* harmony export */ "modifierPhases": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases), +/* harmony export */ "placements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements), +/* harmony export */ "popper": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper), +/* harmony export */ "read": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read), +/* harmony export */ "reference": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference), +/* harmony export */ "right": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right), +/* harmony export */ "start": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start), +/* harmony export */ "top": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top), +/* harmony export */ "variationPlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements), +/* harmony export */ "viewport": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport), +/* harmony export */ "write": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write), +/* harmony export */ "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles), +/* harmony export */ "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow), +/* harmony export */ "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles), +/* harmony export */ "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners), +/* harmony export */ "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip), +/* harmony export */ "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide), +/* harmony export */ "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset), +/* harmony export */ "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets), +/* harmony export */ "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow), +/* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator), +/* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]), +/* harmony export */ "createPopperBase": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper), +/* harmony export */ "createPopper": () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper), +/* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js"); +/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); + + // eslint-disable-next-line import/no-unused-modules + + // eslint-disable-next-line import/no-unused-modules + + // eslint-disable-next-line import/no-unused-modules + + + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js": +/*!******************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + // This modifier takes the styles prepared by the `computeStyles` modifier +// and applies them to the HTMLElements such as popper and arrow + +function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); +} + +function effect(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect, + requires: ['computeStyles'] +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js": +/*!************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); +/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); +/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); +/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); +/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + + + + + + + + + // eslint-disable-next-line import/no-unused-modules + +var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements)); +}; + +function arrow(_ref) { + var _state$modifiersData$; + + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state.placement); + var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement); + var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + + if (!arrowElement || !popperOffsets) { + return; + } + + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement); + var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left; + var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); +} + +function effect(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + if (true) { + if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__.isHTMLElement)(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); + } + } + + if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.popper, arrowElement)) { + if (true) { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); + } + + return; + } + + state.elements.arrow = arrowElement; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js": +/*!********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "mapToStyles": () => (/* binding */ mapToStyles), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + // eslint-disable-next-line import/no-unused-modules + +var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' +}; // Round the offsets to the nearest suitable subpixel based on the DPR. +// Zooming can change the DPR, but it seems to report a value that will +// cleanly divide the values into the appropriate subpixels. + +function roundOffsetsByDPR(_ref) { + var x = _ref.x, + y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0, + y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0 + }; +} + +function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left; + var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; + var win = window; + + if (adaptive) { + var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) { + offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(popper); + + if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { + sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { + sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref4.x; + y = _ref4.y; + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); +} + +function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + + if (true) { + var transitionProperty = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper).transitionProperty || ''; + + if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); + } + } + + var commonStyles = { + placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement), + variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; + + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + // eslint-disable-next-line import/no-unused-modules + +var passive = { + passive: true +}; + +function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js": +/*!***********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js"); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); + + + + + + + // eslint-disable-next-line import/no-unused-modules + +function getExpandedFallbackPlacements(placement) { + if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) { + return []; + } + + var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement); + return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(oppositePlacement)]; +} + +function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + + if (state.modifiersData[name]._skip) { + return; + } + + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); + + var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start; + var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); + } + + var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); + } + + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } + } + + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js": +/*!***********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); + + + +function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; +} + +function isAnySideFullyClipped(overflow) { + return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) { + return overflow[side] >= 0; + }); +} + +function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { + elementContext: 'reference' + }); + var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js": +/*!************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "applyStyles": () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]), +/* harmony export */ "arrow": () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]), +/* harmony export */ "computeStyles": () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]), +/* harmony export */ "eventListeners": () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]), +/* harmony export */ "flip": () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]), +/* harmony export */ "hide": () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]), +/* harmony export */ "offset": () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]), +/* harmony export */ "popperOffsets": () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]), +/* harmony export */ "preventOverflow": () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]) +/* harmony export */ }); +/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); +/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); +/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); +/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); +/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); +/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); +/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); +/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); +/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); + + + + + + + + + + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js": +/*!*************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "distanceAndSkiddingToXY": () => (/* binding */ distanceAndSkiddingToXY), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); + + // eslint-disable-next-line import/no-unused-modules + +function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); + var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; +} + +function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js": +/*!********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); + + +function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); +/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js"); +/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); +/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + + + + + +function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement); + var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.placement); + var isBasePlacement = !variation; + var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement); + var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__["default"])(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; + } + + if (checkMainAxis) { + var _offsetModifierState$; + + var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; + var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min = offset + overflow[mainSide]; + var max = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _offsetModifierState$2; + + var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; + + var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; + + var _offset = popperOffsets[altAxis]; + + var _len = altAxis === 'y' ? 'height' : 'width'; + + var _min = _offset + overflow[_mainSide]; + + var _max = _offset - overflow[_altSide]; + + var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1; + + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + + var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] +}); + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/popper-lite.js": +/*!********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "createPopper": () => (/* binding */ createPopper), +/* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator), +/* harmony export */ "defaultModifiers": () => (/* binding */ defaultModifiers), +/* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]) +/* harmony export */ }); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); +/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); +/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); +/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); + + + + + +var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"]]; +var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({ + defaultModifiers: defaultModifiers +}); // eslint-disable-next-line import/no-unused-modules + + + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/popper.js": +/*!***************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/popper.js ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "createPopper": () => (/* binding */ createPopper), +/* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator), +/* harmony export */ "defaultModifiers": () => (/* binding */ defaultModifiers), +/* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]), +/* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper), +/* harmony export */ "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles), +/* harmony export */ "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow), +/* harmony export */ "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles), +/* harmony export */ "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners), +/* harmony export */ "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip), +/* harmony export */ "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide), +/* harmony export */ "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset), +/* harmony export */ "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets), +/* harmony export */ "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow) +/* harmony export */ }); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); +/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); +/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); +/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); +/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); +/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); +/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); +/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); +/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); +/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); +/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); + + + + + + + + + + +var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__["default"]]; +var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({ + defaultModifiers: defaultModifiers +}); // eslint-disable-next-line import/no-unused-modules + + // eslint-disable-next-line import/no-unused-modules + + // eslint-disable-next-line import/no-unused-modules + + + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ computeAutoPlacement) +/* harmony export */ }); +/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); + + + + +function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP; + var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement); + var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) { + return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === variation; + }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements; + var allowedPlacements = placements.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements; + + if (true) { + console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); + } + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ computeOffsets) +/* harmony export */ }); +/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); + + + + +function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null; + var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + + default: + } + } + + return offsets; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js": +/*!***********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ debounce) +/* harmony export */ }); +function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ detectOverflow) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js"); +/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); +/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); +/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); + + + + + + + + + // eslint-disable-next-line import/no-unused-modules + +function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements)); + var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference); + var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + + return overflowOffsets; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js": +/*!******************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ expandToHashMap) +/* harmony export */ }); +function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/format.js": +/*!*********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/format.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ format) +/* harmony export */ }); +function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return [].concat(args).reduce(function (p, c) { + return p.replace(/%s/, c); + }, str); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js": +/*!*************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getAltAxis) +/* harmony export */ }); +function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getBasePlacement) +/* harmony export */ }); + +function getBasePlacement(placement) { + return placement.split('-')[0]; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getFreshSideObject) +/* harmony export */ }); +function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getMainAxisFromPlacement) +/* harmony export */ }); +function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getOppositePlacement) +/* harmony export */ }); +var hash = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' +}; +function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash[matched]; + }); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getOppositeVariationPlacement) +/* harmony export */ }); +var hash = { + start: 'end', + end: 'start' +}; +function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js": +/*!***************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getVariation) +/* harmony export */ }); +function getVariation(placement) { + return placement.split('-')[1]; +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/math.js": +/*!*******************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/math.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "max": () => (/* binding */ max), +/* harmony export */ "min": () => (/* binding */ min), +/* harmony export */ "round": () => (/* binding */ round) +/* harmony export */ }); +var max = Math.max; +var min = Math.min; +var round = Math.round; + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js": +/*!**************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ mergeByName) +/* harmony export */ }); +function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ mergePaddingObject) +/* harmony export */ }); +/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); + +function mergePaddingObject(paddingObject) { + return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ orderModifiers) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); + // source: https://stackoverflow.com/questions/49875255 + +function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; +} + +function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase + + return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ rectToClientRect) +/* harmony export */ }); +function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js": +/*!***********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/uniqueBy.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ uniqueBy) +/* harmony export */ }); +function uniqueBy(arr, fn) { + var identifiers = new Set(); + return arr.filter(function (item) { + var identifier = fn(item); + + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js": +/*!********************************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/validateModifiers.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ validateModifiers) +/* harmony export */ }); +/* harmony import */ var _format_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./format.js */ "./node_modules/@popperjs/core/lib/utils/format.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); + + +var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; +var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; +var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; +function validateModifiers(modifiers) { + modifiers.forEach(function (modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` + .filter(function (value, index, self) { + return self.indexOf(value) === index; + }).forEach(function (key) { + switch (key) { + case 'name': + if (typeof modifier.name !== 'string') { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); + } + + break; + + case 'enabled': + if (typeof modifier.enabled !== 'boolean') { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); + } + + break; + + case 'phase': + if (_enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.indexOf(modifier.phase) < 0) { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + _enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); + } + + break; + + case 'fn': + if (typeof modifier.fn !== 'function') { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'effect': + if (modifier.effect != null && typeof modifier.effect !== 'function') { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'requires': + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); + } + + break; + + case 'requiresIfExists': + if (!Array.isArray(modifier.requiresIfExists)) { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); + } + + break; + + case 'options': + case 'data': + break; + + default: + console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { + return "\"" + s + "\""; + }).join(', ') + "; but \"" + key + "\" was provided."); + } + + modifier.requires && modifier.requires.forEach(function (requirement) { + if (modifiers.find(function (mod) { + return mod.name === requirement; + }) == null) { + console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); +} + +/***/ }), + +/***/ "./node_modules/@popperjs/core/lib/utils/within.js": +/*!*********************************************************!*\ + !*** ./node_modules/@popperjs/core/lib/utils/within.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "within": () => (/* binding */ within), +/* harmony export */ "withinMaxClamp": () => (/* binding */ withinMaxClamp) +/* harmony export */ }); +/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); + +function within(min, value, max) { + return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max)); +} +function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; +} + +/***/ }), + +/***/ "./node_modules/axios/index.js": +/*!*************************************!*\ + !*** ./node_modules/axios/index.js ***! + \*************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js"); + +/***/ }), + +/***/ "./node_modules/axios/lib/adapters/xhr.js": +/*!************************************************!*\ + !*** ./node_modules/axios/lib/adapters/xhr.js ***! + \************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js"); +var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js"); +var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); +var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); +var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js"); +var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js"); +var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js"); +var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js"); +var Cancel = __webpack_require__(/*! ../cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + var responseType = config.responseType; + var onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(createError('Request aborted', config, 'ECONNABORTED', request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + var transitional = config.transitional || defaults.transitional; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(createError( + timeoutErrorMessage, + config, + transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = function(cancel) { + if (!request) { + return; + } + reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel); + request.abort(); + request = null; + }; + + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + + if (!requestData) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/axios.js": +/*!*****************************************!*\ + !*** ./node_modules/axios/lib/axios.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); +var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); +var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js"); +var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); +var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js"); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Expose Cancel & CancelToken +axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); +axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js"); +axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); +axios.VERSION = (__webpack_require__(/*! ./env/data */ "./node_modules/axios/lib/env/data.js").version); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js"); + +// Expose isAxiosError +axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js"); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports["default"] = axios; + + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/Cancel.js": +/*!*************************************************!*\ + !*** ./node_modules/axios/lib/cancel/Cancel.js ***! + \*************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/CancelToken.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + + // eslint-disable-next-line func-names + this.promise.then(function(cancel) { + if (!token._listeners) return; + + var i; + var l = token._listeners.length; + + for (i = 0; i < l; i++) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = function(onfulfilled) { + var _resolve; + // eslint-disable-next-line func-names + var promise = new Promise(function(resolve) { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Subscribe to the cancel signal + */ + +CancelToken.prototype.subscribe = function subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } +}; + +/** + * Unsubscribe from the cancel signal + */ + +CancelToken.prototype.unsubscribe = function unsubscribe(listener) { + if (!this._listeners) { + return; + } + var index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/isCancel.js": +/*!***************************************************!*\ + !*** ./node_modules/axios/lib/cancel/isCancel.js ***! + \***************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/Axios.js": +/*!**********************************************!*\ + !*** ./node_modules/axios/lib/core/Axios.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); +var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js"); +var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js"); +var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); +var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js"); + +var validators = validator.validators; +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + var transitional = config.transitional; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + + // filter out skipped interceptors + var requestInterceptorChain = []; + var synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + var responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + var promise; + + if (!synchronousRequestInterceptors) { + var chain = [dispatchRequest, undefined]; + + Array.prototype.unshift.apply(chain, requestInterceptorChain); + chain = chain.concat(responseInterceptorChain); + + promise = Promise.resolve(config); + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; + } + + + var newConfig = config; + while (requestInterceptorChain.length) { + var onFulfilled = requestInterceptorChain.shift(); + var onRejected = requestInterceptorChain.shift(); + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected(error); + break; + } + } + + try { + promise = dispatchRequest(newConfig); + } catch (error) { + return Promise.reject(error); + } + + while (responseInterceptorChain.length) { + promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: (config || {}).data + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/InterceptorManager.js": +/*!***********************************************************!*\ + !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/buildFullPath.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/core/buildFullPath.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js"); +var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js"); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/createError.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/core/createError.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/axios/lib/core/enhanceError.js"); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/dispatchRequest.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js"); +var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); +var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js"); +var Cancel = __webpack_require__(/*! ../cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new Cancel('canceled'); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData.call( + config, + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/enhanceError.js": +/*!*****************************************************!*\ + !*** ./node_modules/axios/lib/core/enhanceError.js ***! + \*****************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + + error.request = request; + error.response = response; + error.isAxiosError = true; + + error.toJSON = function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + }; + return error; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/mergeConfig.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/core/mergeConfig.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + function getMergedValue(target, source) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge(target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + return getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + return getMergedValue(undefined, config1[prop]); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + return getMergedValue(undefined, config2[prop]); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + return getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + return getMergedValue(undefined, config1[prop]); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(prop) { + if (prop in config2) { + return getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + return getMergedValue(undefined, config1[prop]); + } + } + + var mergeMap = { + 'url': valueFromConfig2, + 'method': valueFromConfig2, + 'data': valueFromConfig2, + 'baseURL': defaultToConfig2, + 'transformRequest': defaultToConfig2, + 'transformResponse': defaultToConfig2, + 'paramsSerializer': defaultToConfig2, + 'timeout': defaultToConfig2, + 'timeoutMessage': defaultToConfig2, + 'withCredentials': defaultToConfig2, + 'adapter': defaultToConfig2, + 'responseType': defaultToConfig2, + 'xsrfCookieName': defaultToConfig2, + 'xsrfHeaderName': defaultToConfig2, + 'onUploadProgress': defaultToConfig2, + 'onDownloadProgress': defaultToConfig2, + 'decompress': defaultToConfig2, + 'maxContentLength': defaultToConfig2, + 'maxBodyLength': defaultToConfig2, + 'transport': defaultToConfig2, + 'httpAgent': defaultToConfig2, + 'httpsAgent': defaultToConfig2, + 'cancelToken': defaultToConfig2, + 'socketPath': defaultToConfig2, + 'responseEncoding': defaultToConfig2, + 'validateStatus': mergeDirectKeys + }; + + utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) { + var merge = mergeMap[prop] || mergeDeepProperties; + var configValue = merge(prop); + (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/settle.js": +/*!***********************************************!*\ + !*** ./node_modules/axios/lib/core/settle.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var createError = __webpack_require__(/*! ./createError */ "./node_modules/axios/lib/core/createError.js"); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/transformData.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/core/transformData.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var defaults = __webpack_require__(/*! ./../defaults */ "./node_modules/axios/lib/defaults.js"); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + var context = this || defaults; + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn.call(context, data, headers); + }); + + return data; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/defaults.js": +/*!********************************************!*\ + !*** ./node_modules/axios/lib/defaults.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js"); + + +var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); +var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js"); +var enhanceError = __webpack_require__(/*! ./core/enhanceError */ "./node_modules/axios/lib/core/enhanceError.js"); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js"); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js"); + } + return adapter; +} + +function stringifySafely(rawValue, parser, encoder) { + if (utils.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +var defaults = { + + transitional: { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false + }, + + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); + + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) { + setContentTypeIfUnset(headers, 'application/json'); + return stringifySafely(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + var transitional = this.transitional || defaults.transitional; + var silentJSONParsing = transitional && transitional.silentJSONParsing; + var forcedJSONParsing = transitional && transitional.forcedJSONParsing; + var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'; + + if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) { + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw enhanceError(e, this, 'E_JSON_PARSE'); + } + throw e; + } + } + } + + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*' + } + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + + +/***/ }), + +/***/ "./node_modules/axios/lib/env/data.js": +/*!********************************************!*\ + !*** ./node_modules/axios/lib/env/data.js ***! + \********************************************/ +/***/ ((module) => { + +module.exports = { + "version": "0.24.0" +}; + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/bind.js": +/*!************************************************!*\ + !*** ./node_modules/axios/lib/helpers/bind.js ***! + \************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/buildURL.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/helpers/buildURL.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/combineURLs.js": +/*!*******************************************************!*\ + !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! + \*******************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/cookies.js": +/*!***************************************************!*\ + !*** ./node_modules/axios/lib/helpers/cookies.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": +/*!*********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isAxiosError.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***! + \********************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +module.exports = function isAxiosError(payload) { + return (typeof payload === 'object') && (payload.isAxiosError === true); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": +/*!***********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js": +/*!***************************************************************!*\ + !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/parseHeaders.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + }); + + return parsed; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/spread.js": +/*!**************************************************!*\ + !*** ./node_modules/axios/lib/helpers/spread.js ***! + \**************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/validator.js": +/*!*****************************************************!*\ + !*** ./node_modules/axios/lib/helpers/validator.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var VERSION = (__webpack_require__(/*! ../env/data */ "./node_modules/axios/lib/env/data.js").version); + +var validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) { + validators[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +var deprecatedWarnings = {}; + +/** + * Transitional option validator + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * @returns {function} + */ +validators.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return function(value, opt, opts) { + if (validator === false) { + throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : ''))); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +/** + * Assert object's properties type + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new TypeError('options must be an object'); + } + var keys = Object.keys(options); + var i = keys.length; + while (i-- > 0) { + var opt = keys[i]; + var validator = schema[opt]; + if (validator) { + var value = options[opt]; + var result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new TypeError('option ' + opt + ' must be ' + result); + } + continue; + } + if (allowUnknown !== true) { + throw Error('Unknown option ' + opt); + } + } +} + +module.exports = { + assertOptions: assertOptions, + validators: validators +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/utils.js": +/*!*****************************************!*\ + !*** ./node_modules/axios/lib/utils.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a plain Object + * + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false + */ +function isPlainObject(val) { + if (toString.call(val) !== '[object Object]') { + return false; + } + + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); + } else if (isPlainObject(val)) { + result[key] = merge({}, val); + } else if (isArray(val)) { + result[key] = val.slice(); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * @return {string} content value without BOM + */ +function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM +}; + + +/***/ }), + +/***/ "./resources/js/app.js": +/*!*****************************!*\ + !*** ./resources/js/app.js ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bootstrap */ "./resources/js/bootstrap.js"); +/* harmony import */ var _left4code_tw_starter_dist_js_svg_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @left4code/tw-starter/dist/js/svg-loader */ "./node_modules/@left4code/tw-starter/dist/js/svg-loader.js"); +/* harmony import */ var _left4code_tw_starter_dist_js_accordion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @left4code/tw-starter/dist/js/accordion */ "./node_modules/@left4code/tw-starter/dist/js/accordion.js"); +/* harmony import */ var _left4code_tw_starter_dist_js_alert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @left4code/tw-starter/dist/js/alert */ "./node_modules/@left4code/tw-starter/dist/js/alert.js"); +/* harmony import */ var _left4code_tw_starter_dist_js_dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @left4code/tw-starter/dist/js/dropdown */ "./node_modules/@left4code/tw-starter/dist/js/dropdown.js"); +/* harmony import */ var _left4code_tw_starter_dist_js_modal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @left4code/tw-starter/dist/js/modal */ "./node_modules/@left4code/tw-starter/dist/js/modal.js"); +/* harmony import */ var _left4code_tw_starter_dist_js_tab__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @left4code/tw-starter/dist/js/tab */ "./node_modules/@left4code/tw-starter/dist/js/tab.js"); +/* harmony import */ var _chart__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./chart */ "./resources/js/chart.js"); +/* harmony import */ var _highlight__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./highlight */ "./resources/js/highlight.js"); +/* harmony import */ var _lucide__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lucide */ "./resources/js/lucide.js"); +/* harmony import */ var _tiny_slider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./tiny-slider */ "./resources/js/tiny-slider.js"); +/* harmony import */ var _tippy__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./tippy */ "./resources/js/tippy.js"); +/* harmony import */ var _datepicker__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./datepicker */ "./resources/js/datepicker.js"); +/* harmony import */ var _tom_select__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./tom-select */ "./resources/js/tom-select.js"); +/* harmony import */ var _dropzone__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./dropzone */ "./resources/js/dropzone.js"); +/* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./validation */ "./resources/js/validation.js"); +/* harmony import */ var _zoom__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./zoom */ "./resources/js/zoom.js"); +/* harmony import */ var _notification__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./notification */ "./resources/js/notification.js"); +/* harmony import */ var _tabulator__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./tabulator */ "./resources/js/tabulator.js"); +/* harmony import */ var _calendar__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./calendar */ "./resources/js/calendar.js"); +/* harmony import */ var _maps__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./maps */ "./resources/js/maps.js"); +/* harmony import */ var _chat__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./chat */ "./resources/js/chat.js"); +/* harmony import */ var _chat__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_chat__WEBPACK_IMPORTED_MODULE_21__); +/* harmony import */ var _show_modal__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./show-modal */ "./resources/js/show-modal.js"); +/* harmony import */ var _show_modal__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_show_modal__WEBPACK_IMPORTED_MODULE_22__); +/* harmony import */ var _show_slide_over__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./show-slide-over */ "./resources/js/show-slide-over.js"); +/* harmony import */ var _show_slide_over__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_show_slide_over__WEBPACK_IMPORTED_MODULE_23__); +/* harmony import */ var _show_dropdown__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./show-dropdown */ "./resources/js/show-dropdown.js"); +/* harmony import */ var _show_dropdown__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_show_dropdown__WEBPACK_IMPORTED_MODULE_24__); +/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./search */ "./resources/js/search.js"); +/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_search__WEBPACK_IMPORTED_MODULE_25__); +/* harmony import */ var _copy_code__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./copy-code */ "./resources/js/copy-code.js"); +/* harmony import */ var _show_code__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./show-code */ "./resources/js/show-code.js"); +/* harmony import */ var _show_code__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_show_code__WEBPACK_IMPORTED_MODULE_27__); +/* harmony import */ var _side_menu__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./side-menu */ "./resources/js/side-menu.js"); +/* harmony import */ var _side_menu__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_side_menu__WEBPACK_IMPORTED_MODULE_28__); +/* harmony import */ var _mobile_menu__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./mobile-menu */ "./resources/js/mobile-menu.js"); +/* harmony import */ var _side_menu_tooltip__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./side-menu-tooltip */ "./resources/js/side-menu-tooltip.js"); +/* harmony import */ var _dark_mode_switcher__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./dark-mode-switcher */ "./resources/js/dark-mode-switcher.js"); +/* harmony import */ var _dark_mode_switcher__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(_dark_mode_switcher__WEBPACK_IMPORTED_MODULE_31__); +/* + |-------------------------------------------------------------------------- + | Midone Built-in Components + |-------------------------------------------------------------------------- + | + | Import Midone built-in components. + | + */ + + + + + + + +/* + |-------------------------------------------------------------------------- + | 3rd Party Libraries + |-------------------------------------------------------------------------- + | + | Import 3rd party library JS files. + | + */ + + + + + + + + + + + + + + +/* + |-------------------------------------------------------------------------- + | Custom Components + |-------------------------------------------------------------------------- + | + | Import JS custom components. + | + */ + + + + + + + + + + + + + + +/***/ }), + +/***/ "./resources/js/bootstrap.js": +/*!***********************************!*\ + !*** ./resources/js/bootstrap.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helper */ "./resources/js/helper.js"); +/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js"); +/* harmony import */ var _left4code_tw_starter_dist_js_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @left4code/tw-starter/dist/js/dom */ "./node_modules/@left4code/tw-starter/dist/js/dom.js"); +// Load plugins + + + // Set plugins globally + +window.helper = _helper__WEBPACK_IMPORTED_MODULE_0__["default"]; +window.Popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_2__; +window.$ = _left4code_tw_starter_dist_js_dom__WEBPACK_IMPORTED_MODULE_1__["default"]; + +/***/ }), + +/***/ "./resources/js/calendar.js": +/*!**********************************!*\ + !*** ./resources/js/calendar.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _fullcalendar_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @fullcalendar/core */ "./node_modules/@fullcalendar/core/main.js"); +/* harmony import */ var _fullcalendar_interaction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fullcalendar/interaction */ "./node_modules/@fullcalendar/interaction/main.js"); +/* harmony import */ var _fullcalendar_daygrid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fullcalendar/daygrid */ "./node_modules/@fullcalendar/daygrid/main.js"); +/* harmony import */ var _fullcalendar_timegrid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fullcalendar/timegrid */ "./node_modules/@fullcalendar/timegrid/main.js"); +/* harmony import */ var _fullcalendar_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fullcalendar/list */ "./node_modules/@fullcalendar/list/main.js"); + + + + + + +(function () { + if ($("#calendar").length) { + if ($("#calendar-events").length) { + new _fullcalendar_interaction__WEBPACK_IMPORTED_MODULE_1__.Draggable($("#calendar-events")[0], { + itemSelector: ".event", + eventData: function eventData(eventEl) { + return { + title: $(eventEl).find(".event__title").html(), + duration: { + days: parseInt($(eventEl).find(".event__days").text()) + } + }; + } + }); + } + + var calendar = new _fullcalendar_core__WEBPACK_IMPORTED_MODULE_0__.Calendar($("#calendar")[0], { + plugins: [_fullcalendar_interaction__WEBPACK_IMPORTED_MODULE_1__["default"], _fullcalendar_daygrid__WEBPACK_IMPORTED_MODULE_2__["default"], _fullcalendar_timegrid__WEBPACK_IMPORTED_MODULE_3__["default"], _fullcalendar_list__WEBPACK_IMPORTED_MODULE_4__["default"]], + droppable: true, + headerToolbar: { + left: "prev,next today", + center: "title", + right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek" + }, + initialDate: "2021-01-12", + navLinks: true, + editable: true, + dayMaxEvents: true, + events: [{ + title: "Vue Vixens Day", + start: "2021-01-05", + end: "2021-01-08" + }, { + title: "VueConfUS", + start: "2021-01-11", + end: "2021-01-15" + }, { + title: "VueJS Amsterdam", + start: "2021-01-17", + end: "2021-01-21" + }, { + title: "Vue Fes Japan 2019", + start: "2021-01-21", + end: "2021-01-24" + }, { + title: "Laracon 2021", + start: "2021-01-24", + end: "2021-01-27" + }], + drop: function drop(info) { + if ($("#checkbox-events").length && $("#checkbox-events")[0].checked) { + $(info.draggedEl).parent().remove(); + + if ($("#calendar-events").children().length == 1) { + $("#calendar-no-events").removeClass("hidden"); + } + } + } + }); + calendar.render(); + } +})(); + +/***/ }), + +/***/ "./resources/js/chart.js": +/*!*******************************!*\ + !*** ./resources/js/chart.js ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helper */ "./resources/js/helper.js"); +/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ "./resources/js/colors.js"); +/* harmony import */ var chart_js_auto__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! chart.js/auto */ "./node_modules/chart.js/auto/auto.esm.js"); +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + + + + + +(function () { + "use strict"; // Chart + + if ($("#report-line-chart").length) { + var ctx = $("#report-line-chart")[0].getContext("2d"); + var myChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](ctx, { + type: "line", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "# of Votes", + data: [0, 200, 250, 200, 700, 550, 650, 1050, 950, 1100, 900, 1200], + borderWidth: 2, + borderColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.8), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }, { + label: "# of Votes", + data: [0, 300, 400, 560, 320, 600, 720, 850, 690, 805, 1200, 1010], + borderWidth: 2, + borderDash: [2, 2], + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[400](0.6) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[400](), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + ticks: { + font: { + size: 12 + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + font: { + size: 12 + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8), + callback: function callback(value, index, values) { + return "$" + value; + } + }, + grid: { + color: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.3) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + borderDash: [2, 2], + drawBorder: false + } + } + } + } + }); + } + + if ($("#report-pie-chart").length) { + var _ctx = $("#report-pie-chart")[0].getContext("2d"); + + var myPieChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx, { + type: "pie", + data: { + labels: ["31 - 50 Years old", ">= 50 Years old", "17 - 30 Years old"], + datasets: [{ + data: [15, 10, 65], + backgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + hoverBackgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + borderWidth: 5, + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[700]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].white + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + } + } + }); + } + + if ($("#report-donut-chart").length) { + var _ctx2 = $("#report-donut-chart")[0].getContext("2d"); + + var myDoughnutChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx2, { + type: "doughnut", + data: { + labels: ["31 - 50 Years old", ">= 50 Years old", "17 - 30 Years old"], + datasets: [{ + data: [15, 10, 65], + backgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + hoverBackgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + borderWidth: 5, + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[700]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].white + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + cutout: "80%" + } + }); + } + + if ($("#report-bar-chart").length) { + // Fake visitor data + var reportBarChartData = new Array(40).fill(0).map(function (data, key) { + if (key % 3 == 0 || key % 5 == 0) { + return Math.ceil(Math.random() * (0 - 20) + 20); + } else { + return Math.ceil(Math.random() * (0 - 7) + 7); + } + }); // Fake visitor bar color + + var reportBarChartColor = reportBarChartData.map(function (data) { + if (data >= 8 && data <= 14) { + return $("html").hasClass("dark") ? "#2E51BBA6" : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.65); + } else if (data >= 15) { + return $("html").hasClass("dark") ? "#2E51BB" : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(); + } + + return $("html").hasClass("dark") ? "#2E51BB59" : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.35); + }); + + var _ctx3 = $("#report-bar-chart")[0].getContext("2d"); + + var myBarChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx3, { + type: "bar", + data: { + labels: reportBarChartData, + datasets: [{ + label: "Html Template", + barThickness: 6, + data: reportBarChartData, + backgroundColor: reportBarChartColor + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + ticks: { + display: false + }, + grid: { + display: false + } + }, + y: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + } + } + } + }); + setInterval(function () { + // Swap visitor data + var newData = reportBarChartData[0]; + reportBarChartData.shift(); + reportBarChartData.push(newData); // Swap visitor bar color + + var newColor = reportBarChartColor[0]; + reportBarChartColor.shift(); + reportBarChartColor.push(newColor); + myBarChart.update(); + }, 1000); + } + + if ($("#report-bar-chart-1").length) { + var _ctx4 = $("#report-bar-chart-1")[0].getContext("2d"); + + var _myChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx4, { + type: "bar", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "Html Template", + barThickness: 8, + maxBarThickness: 6, + data: [60, 150, 30, 200, 180, 50, 180, 120, 230, 180, 250, 270], + backgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9) + }, { + label: "VueJs Template", + barThickness: 8, + maxBarThickness: 6, + data: [50, 135, 40, 180, 190, 60, 150, 90, 250, 170, 240, 250], + backgroundColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[400]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300]() + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + ticks: { + font: { + size: 11 + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + display: false + }, + grid: { + color: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[300](0.8) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + borderDash: [2, 2], + drawBorder: false + } + } + } + } + }); + } + + if ($("#report-donut-chart-1").length) { + var _ctx5 = $("#report-donut-chart-1")[0].getContext("2d"); + + var _myDoughnutChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx5, { + type: "doughnut", + data: { + labels: ["Yellow", "Dark"], + datasets: [{ + data: [15, 10, 65], + backgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + hoverBackgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + borderWidth: 2, + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[700]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].white + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + cutout: "83%" + } + }); + } + + if ($("#report-donut-chart-2").length) { + var _ctx6 = $("#report-donut-chart-2")[0].getContext("2d"); + + var _myDoughnutChart2 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx6, { + type: "doughnut", + data: { + labels: ["Yellow", "Dark"], + datasets: [{ + data: [15, 10, 65], + backgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + hoverBackgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + borderWidth: 2, + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[700]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].white + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + cutout: "83%" + } + }); + } + + if ($("#report-donut-chart-3").length) { + var _ctx7 = $("#report-donut-chart-3")[0].getContext("2d"); + + var _myDoughnutChart3 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx7, { + type: "doughnut", + data: { + labels: ["Yellow", "Dark"], + datasets: [{ + data: [15, 10, 65], + backgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + hoverBackgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + borderWidth: 5, + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[700]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[200]() + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + cutout: "82%" + } + }); + } + + if ($(".simple-line-chart-1").length) { + $(".simple-line-chart-1").each(function () { + var ctx = $(this)[0].getContext("2d"); + var myChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](ctx, { + type: "line", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "# of Votes", + data: $(this).data("random") !== undefined ? _helper__WEBPACK_IMPORTED_MODULE_0__["default"].randomNumbers(0, 5, 12) : [0, 200, 250, 200, 500, 450, 850, 1050, 950, 1100, 900, 1200], + borderWidth: 2, + borderColor: $(this).data("line-color") !== undefined ? $(this).data("line-color") : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.8), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + } + } + } + }); + }); + } + + if ($(".simple-line-chart-2").length) { + $(".simple-line-chart-2").each(function () { + var ctx = $(this)[0].getContext("2d"); + var myChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](ctx, { + type: "line", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "# of Votes", + data: $(this).data("random") !== undefined ? _helper__WEBPACK_IMPORTED_MODULE_0__["default"].randomNumbers(0, 5, 12) : [0, 300, 400, 560, 320, 600, 720, 850, 690, 805, 1200, 1010], + borderWidth: 2, + borderDash: [2, 2], + borderColor: $(this).data("line-color") !== undefined ? $(this).data("line-color") : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + backgroundColor: "transparent", + pointBorderColor: "transparent" + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + } + } + } + }); + }); + } + + if ($(".simple-line-chart-3").length) { + var _ctx8 = $(".simple-line-chart-3")[0].getContext("2d"); + + var _myChart2 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx8, { + type: "line", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "# of Votes", + data: [0, 200, 250, 200, 700, 550, 650, 1050, 950, 1100, 900, 1200], + borderWidth: 2, + borderColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.8), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }, { + label: "# of Votes", + data: [0, 300, 400, 560, 320, 600, 720, 850, 690, 805, 1200, 1010], + borderWidth: 2, + borderDash: [2, 2], + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[100]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[400](), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + } + } + } + }); + } + + if ($(".simple-line-chart-4").length) { + var _ctx9 = $(".simple-line-chart-4")[0].getContext("2d"); + + var _myChart3 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx9, { + type: "line", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "# of Votes", + data: [0, 200, 250, 200, 700, 550, 650, 1050, 950, 1100, 900, 1200], + borderWidth: 2, + borderColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.8), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }, { + label: "# of Votes", + data: [0, 300, 400, 560, 320, 600, 720, 850, 690, 805, 1200, 1010], + borderWidth: 2, + borderDash: [2, 2], + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[100]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[400](), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + display: false + }, + grid: { + display: false, + drawBorder: false + } + } + } + } + }); + } // Chart widget page + + + if ($("#vertical-bar-chart-widget").length) { + var _ctx10 = $("#vertical-bar-chart-widget")[0].getContext("2d"); + + var _myChart4 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx10, { + type: "bar", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug"], + datasets: [{ + label: "Html Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + data: [0, 200, 250, 200, 500, 450, 850, 1050], + backgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary() + }, { + label: "VueJs Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + data: [0, 300, 400, 560, 320, 600, 720, 850], + backgroundColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[200]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300]() + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + labels: { + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + } + } + }, + scales: { + x: { + ticks: { + font: { + size: 12 + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8), + callback: function callback(value, index, values) { + return "$" + value; + } + }, + grid: { + color: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.3) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + borderDash: [2, 2], + drawBorder: false + } + } + } + } + }); + } + + if ($("#horizontal-bar-chart-widget").length) { + var _ctx11 = $("#horizontal-bar-chart-widget")[0].getContext("2d"); + + var _myChart5 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx11, { + type: "bar", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug"], + datasets: [{ + label: "Html Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + data: [0, 200, 250, 200, 500, 450, 850, 1050], + backgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary() + }, { + label: "VueJs Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + data: [0, 300, 400, 560, 320, 600, 720, 850], + backgroundColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[200]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300]() + }] + }, + options: { + indexAxis: "y", + maintainAspectRatio: false, + plugins: { + legend: { + labels: { + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + } + } + }, + scales: { + x: { + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8), + callback: function callback(value, index, values) { + return "$" + value; + } + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + }, + grid: { + color: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.3) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + borderDash: [2, 2], + drawBorder: false + } + } + } + } + }); + } + + if ($("#stacked-bar-chart-widget").length) { + var _ctx12 = $("#stacked-bar-chart-widget")[0].getContext("2d"); + + var _myChart6 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx12, { + type: "bar", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "Html Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + backgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(), + data: _helper__WEBPACK_IMPORTED_MODULE_0__["default"].randomNumbers(-100, 100, 12) + }, { + label: "VueJs Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + backgroundColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[200]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + data: _helper__WEBPACK_IMPORTED_MODULE_0__["default"].randomNumbers(-100, 100, 12) + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + labels: { + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + } + } + }, + scales: { + x: { + stacked: true, + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + stacked: true, + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8), + callback: function callback(value, index, values) { + return "$" + value; + } + }, + grid: { + color: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.3) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + borderDash: [2, 2], + drawBorder: false + } + } + } + } + }); + } + + if ($("#stacked-bar-chart-1").length) { + var _ctx13 = $("#stacked-bar-chart-1")[0].getContext("2d"); + + var _myChart7 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx13, { + type: "bar", + data: { + labels: _toConsumableArray(Array(16).keys()), + datasets: [{ + label: "Html Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + backgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.8), + data: _helper__WEBPACK_IMPORTED_MODULE_0__["default"].randomNumbers(-100, 100, 16) + }, { + label: "VueJs Template", + barPercentage: 0.5, + barThickness: 6, + maxBarThickness: 8, + minBarLength: 2, + backgroundColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[200]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + data: _helper__WEBPACK_IMPORTED_MODULE_0__["default"].randomNumbers(-100, 100, 16) + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + display: false + } + }, + scales: { + x: { + stacked: true, + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + stacked: true, + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8), + callback: function callback(value, index, values) { + return "$" + value; + } + }, + grid: { + color: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.3) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + borderDash: [2, 2], + drawBorder: false + } + } + } + } + }); + } + + if ($("#line-chart-widget").length) { + var _ctx14 = $("#line-chart-widget")[0].getContext("2d"); + + var _myChart8 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx14, { + type: "line", + data: { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + datasets: [{ + label: "Html Template", + data: [0, 200, 250, 200, 500, 450, 850, 1050, 950, 1100, 900, 1200], + borderWidth: 2, + borderColor: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }, { + label: "VueJs Template", + data: [0, 300, 400, 560, 320, 600, 720, 850, 690, 805, 1200, 1010], + borderWidth: 2, + borderDash: [2, 2], + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[400](0.6) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[400](), + backgroundColor: "transparent", + pointBorderColor: "transparent", + tension: 0.4 + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + labels: { + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + } + } + }, + scales: { + x: { + ticks: _defineProperty({ + font: { + size: "12" + } + }, "font", _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8)), + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + font: { + size: "12" + }, + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8), + callback: function callback(value, index, values) { + return "$" + value; + } + }, + grid: { + color: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.3) : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[300](), + borderDash: [2, 2], + drawBorder: false + } + } + } + } + }); + } + + if ($("#donut-chart-widget").length) { + var _ctx15 = $("#donut-chart-widget")[0].getContext("2d"); + + var _myDoughnutChart4 = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx15, { + type: "doughnut", + data: { + labels: ["Html", "Vuejs", "Laravel"], + datasets: [{ + data: [15, 10, 65], + backgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + hoverBackgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + borderWidth: 5, + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[700]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].white + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + labels: { + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + } + } + }, + cutout: "80%" + } + }); + } + + if ($("#pie-chart-widget").length) { + var _ctx16 = $("#pie-chart-widget")[0].getContext("2d"); + + var _myPieChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_2__["default"](_ctx16, { + type: "pie", + data: { + labels: ["Html", "Vuejs", "Laravel"], + datasets: [{ + data: [15, 10, 65], + backgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + hoverBackgroundColor: [_colors__WEBPACK_IMPORTED_MODULE_1__["default"].pending(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].warning(0.9), _colors__WEBPACK_IMPORTED_MODULE_1__["default"].primary(0.9)], + borderWidth: 5, + borderColor: $("html").hasClass("dark") ? _colors__WEBPACK_IMPORTED_MODULE_1__["default"].darkmode[700]() : _colors__WEBPACK_IMPORTED_MODULE_1__["default"].white + }] + }, + options: { + maintainAspectRatio: false, + plugins: { + legend: { + labels: { + color: _colors__WEBPACK_IMPORTED_MODULE_1__["default"].slate[500](0.8) + } + } + } + } + }); + } +})(); + +/***/ }), + +/***/ "./resources/js/chat.js": +/*!******************************!*\ + !*** ./resources/js/chat.js ***! + \******************************/ +/***/ (() => { + +(function () { + "use strict"; + + $(".chat__chat-list").children().each(function () { + $(this).on("click", function () { + $(".chat__box").children("div:nth-child(2)").fadeOut(300, function () { + $(".chat__box").children("div:nth-child(1)").fadeIn(300, function (el) { + $(el).removeClass("hidden").removeAttr("style"); + }); + }); + }); + }); +})(); + +/***/ }), + +/***/ "./resources/js/colors.js": +/*!********************************!*\ + !*** ./resources/js/colors.js ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tailwindcss/colors */ "./node_modules/tailwindcss/colors.js"); +/* harmony import */ var tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helper */ "./resources/js/helper.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + + +var el = getComputedStyle(document.body); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_objectSpread(_objectSpread({}, _helper__WEBPACK_IMPORTED_MODULE_1__["default"].toRGB({ + inherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.inherit, + currentinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.currentinherit, + transparentinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.transparentinherit, + blackinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.blackinherit, + whiteinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.whiteinherit, + slateinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.slateinherit, + grayinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.grayinherit, + zincinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.zincinherit, + neutralinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.neutralinherit, + stoneinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.stoneinherit, + redinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.redinherit, + orangeinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.orangeinherit, + amberinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.amberinherit, + yellowinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.yellowinherit, + limeinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.limeinherit, + greeninherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.greeninherit, + emeraldinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.emeraldinherit, + tealinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.tealinherit, + cyaninherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.cyaninherit, + skyinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.skyinherit, + blueinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.blueinherit, + indigoinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.indigoinherit, + violetinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.violetinherit, + purpleinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.purpleinherit, + fuchsiainherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.fuchsiainherit, + pinkinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.pinkinherit, + roseinherit: tailwindcss_colors__WEBPACK_IMPORTED_MODULE_0__.roseinherit +})), {}, { + primary: function primary() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-primary"), " / ").concat(opacity, ")"); + }, + secondary: function secondary() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-secondary"), " / ").concat(opacity, ")"); + }, + success: function success() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-success"), " / ").concat(opacity, ")"); + }, + info: function info() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-info"), " / ").concat(opacity, ")"); + }, + warning: function warning() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-warning"), " / ").concat(opacity, ")"); + }, + pending: function pending() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-pending"), " / ").concat(opacity, ")"); + }, + danger: function danger() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-danger"), " / ").concat(opacity, ")"); + }, + light: function light() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-light"), " / ").concat(opacity, ")"); + }, + dark: function dark() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-dark"), " / ").concat(opacity, ")"); + }, + slate: { + 50: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-50"), " / ").concat(opacity, ")"); + }, + 100: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-100"), " / ").concat(opacity, ")"); + }, + 200: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-200"), " / ").concat(opacity, ")"); + }, + 300: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-300"), " / ").concat(opacity, ")"); + }, + 400: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-400"), " / ").concat(opacity, ")"); + }, + 500: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-500"), " / ").concat(opacity, ")"); + }, + 600: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-600"), " / ").concat(opacity, ")"); + }, + 700: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-700"), " / ").concat(opacity, ")"); + }, + 800: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-800"), " / ").concat(opacity, ")"); + }, + 900: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-slate-900"), " / ").concat(opacity, ")"); + } + }, + darkmode: { + 50: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-50"), " / ").concat(opacity, ")"); + }, + 100: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-100"), " / ").concat(opacity, ")"); + }, + 200: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-200"), " / ").concat(opacity, ")"); + }, + 300: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-300"), " / ").concat(opacity, ")"); + }, + 400: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-400"), " / ").concat(opacity, ")"); + }, + 500: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-500"), " / ").concat(opacity, ")"); + }, + 600: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-600"), " / ").concat(opacity, ")"); + }, + 700: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-700"), " / ").concat(opacity, ")"); + }, + 800: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-800"), " / ").concat(opacity, ")"); + }, + 900: function _() { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(el.getPropertyValue("--color-darkmode-900"), " / ").concat(opacity, ")"); + } + } +})); + +/***/ }), + +/***/ "./resources/js/copy-code.js": +/*!***********************************!*\ + !*** ./resources/js/copy-code.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! toastify-js */ "./node_modules/toastify-js/src/toastify.js"); +/* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(toastify_js__WEBPACK_IMPORTED_MODULE_0__); + + +(function () { + "use strict"; // Copy original code + + $("body").on("click", ".copy-code", function () { + var content = $(this).html(); + var self = this; + $(self).html(content.replace("Copy example code", "Copied!")); + setTimeout(function () { + $(self).html(content); + }, 1500); + var elementId = $(this).data("target"); + $(elementId).find("textarea")[0].select(); + $(elementId).find("textarea")[0].setSelectionRange(0, 99999); + document.execCommand("copy"); + }); +})(); + +/***/ }), + +/***/ "./resources/js/dark-mode-switcher.js": +/*!********************************************!*\ + !*** ./resources/js/dark-mode-switcher.js ***! + \********************************************/ +/***/ (() => { + +(function () { + "use strict"; // Dark mode switcher + + $(".dark-mode-switcher").on("click", function () { + var switcher = $(this).find(".dark-mode-switcher__toggle"); + + if ($(switcher).hasClass("dark-mode-switcher__toggle--active")) { + $(switcher).removeClass("dark-mode-switcher__toggle--active"); + + $("#isDark").attr("class","light"); + } else { + $(switcher).addClass("dark-mode-switcher__toggle--active"); + $("#isDark").attr("class","dark"); + } + + // var isDark = $('#isDark').attr('class'); + + + // setTimeout(function () { + // var link = $(".dark-mode-switcher").data("url"); + // window.location.href = link; + // }, 500); + }); +})(); + +/***/ }), + +/***/ "./resources/js/datepicker.js": +/*!************************************!*\ + !*** ./resources/js/datepicker.js ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dayjs */ "./node_modules/dayjs/dayjs.min.js"); +/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var litepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! litepicker */ "./node_modules/litepicker/dist/litepicker.umd.js"); +/* harmony import */ var litepicker__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(litepicker__WEBPACK_IMPORTED_MODULE_1__); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + + + +(function () { + "use strict"; // Litepicker + + $(".datepicker").each(function () { + var options = { + autoApply: false, + singleMode: false, + numberOfColumns: 2, + numberOfMonths: 2, + showWeekNumbers: true, + format: "D MMM, YYYY", + dropdowns: { + minYear: 1990, + maxYear: null, + months: true, + years: true + } + }; + + if ($(this).data("single-mode")) { + options.singleMode = true; + options.numberOfColumns = 1; + options.numberOfMonths = 1; + } + + if ($(this).data("format")) { + options.format = $(this).data("format"); + } + + if (!$(this).val()) { + var date = dayjs__WEBPACK_IMPORTED_MODULE_0___default()().format(options.format); + date += !options.singleMode ? " - " + dayjs__WEBPACK_IMPORTED_MODULE_0___default()().add(1, "month").format(options.format) : ""; + $(this).val(date); + } + + new (litepicker__WEBPACK_IMPORTED_MODULE_1___default())(_objectSpread({ + element: this + }, options)); + }); +})(); + +/***/ }), + +/***/ "./resources/js/dropzone.js": +/*!**********************************!*\ + !*** ./resources/js/dropzone.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dropzone */ "./node_modules/dropzone/dist/dropzone.js"); +/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_0__); + + +(function () { + "use strict"; // Dropzone + + (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false; + $(".dropzone").each(function () { + var _this = this; + + var options = { + accept: function accept(file, done) { + console.log("Uploaded"); + done(); + } + }; + + if ($(this).data("single")) { + options.maxFiles = 1; + } + + if ($(this).data("file-types")) { + options.accept = function (file, done) { + if ($(_this).data("file-types").split("|").indexOf(file.type) === -1) { + alert("Error! Files of this type are not accepted"); + done("Error! Files of this type are not accepted"); + } else { + console.log("Uploaded"); + done(); + } + }; + } + + var dz = new (dropzone__WEBPACK_IMPORTED_MODULE_0___default())(this, options); + dz.on("maxfilesexceeded", function (file) { + alert("No more files please!"); + }); + }); +})(); + +/***/ }), + +/***/ "./resources/js/helper.js": +/*!********************************!*\ + !*** ./resources/js/helper.js ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dayjs */ "./node_modules/dayjs/dayjs.min.js"); +/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_0__); +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + +var helpers = { + cutText: function cutText(text, length) { + if (text.split(" ").length > 1) { + var string = text.substring(0, length); + var splitText = string.split(" "); + splitText.pop(); + return splitText.join(" ") + "..."; + } else { + return text; + } + }, + formatDate: function formatDate(date, format) { + return dayjs__WEBPACK_IMPORTED_MODULE_0___default()(date).format(format); + }, + capitalizeFirstLetter: function capitalizeFirstLetter(string) { + if (string) { + return string.charAt(0).toUpperCase() + string.slice(1); + } + }, + onlyNumber: function onlyNumber(number) { + if (number) { + return number.replace(/\D/g, ""); + } else { + return ""; + } + }, + formatCurrency: function formatCurrency(number) { + if (number) { + var formattedNumber = number.toString().replace(/\D/g, ""); + var rest = formattedNumber.length % 3; + var currency = formattedNumber.substr(0, rest); + var thousand = formattedNumber.substr(rest).match(/\d{3}/g); + var separator; + + if (thousand) { + separator = rest ? "." : ""; + currency += separator + thousand.join("."); + } + + return currency; + } else { + return ""; + } + }, + timeAgo: function timeAgo(time) { + var date = new Date((time || "").replace(/-/g, "/").replace(/[TZ]/g, " ")), + diff = (new Date().getTime() - date.getTime()) / 1000, + dayDiff = Math.floor(diff / 86400); + if (isNaN(dayDiff) || dayDiff < 0 || dayDiff >= 31) return dayjs__WEBPACK_IMPORTED_MODULE_0___default()(time).format("MMMM DD, YYYY"); + return dayDiff == 0 && (diff < 60 && "just now" || diff < 120 && "1 minute ago" || diff < 3600 && Math.floor(diff / 60) + " minutes ago" || diff < 7200 && "1 hour ago" || diff < 86400 && Math.floor(diff / 3600) + " hours ago") || dayDiff == 1 && "Yesterday" || dayDiff < 7 && dayDiff + " days ago" || dayDiff < 31 && Math.ceil(dayDiff / 7) + " weeks ago"; + }, + diffTimeByNow: function diffTimeByNow(time) { + var startDate = dayjs__WEBPACK_IMPORTED_MODULE_0___default()(dayjs__WEBPACK_IMPORTED_MODULE_0___default()().format("YYYY-MM-DD HH:mm:ss").toString()); + var endDate = dayjs__WEBPACK_IMPORTED_MODULE_0___default()(dayjs__WEBPACK_IMPORTED_MODULE_0___default()(time).format("YYYY-MM-DD HH:mm:ss").toString()); + var duration = dayjs__WEBPACK_IMPORTED_MODULE_0___default().duration(endDate.diff(startDate)); + var milliseconds = Math.floor(duration.asMilliseconds()); + var days = Math.round(milliseconds / 86400000); + var hours = Math.round(milliseconds % 86400000 / 3600000); + var minutes = Math.round(milliseconds % 86400000 % 3600000 / 60000); + var seconds = Math.round(milliseconds % 86400000 % 3600000 % 60000 / 1000); + + if (seconds < 30 && seconds >= 0) { + minutes += 1; + } + + return { + days: days.toString().length < 2 ? "0" + days : days, + hours: hours.toString().length < 2 ? "0" + hours : hours, + minutes: minutes.toString().length < 2 ? "0" + minutes : minutes, + seconds: seconds.toString().length < 2 ? "0" + seconds : seconds + }; + }, + isset: function isset(obj) { + return Object.keys(obj).length; + }, + assign: function assign(obj) { + return JSON.parse(JSON.stringify(obj)); + }, + delay: function delay(time) { + return new Promise(function (resolve, reject) { + setTimeout(function () { + resolve(); + }, time); + }); + }, + randomNumbers: function randomNumbers(from, to, length) { + var numbers = [0]; + + for (var i = 1; i < length; i++) { + numbers.push(Math.ceil(Math.random() * (from - to) + to)); + } + + return numbers; + }, + replaceAll: function replaceAll(str, find, replace) { + return str.replace(new RegExp(find, "g"), replace); + }, + toRGB: function toRGB(colors) { + var tempColors = Object.assign({}, colors); + var rgbColors = Object.entries(tempColors); + + for (var _i = 0, _rgbColors = rgbColors; _i < _rgbColors.length; _i++) { + var _rgbColors$_i = _slicedToArray(_rgbColors[_i], 2), + key = _rgbColors$_i[0], + value = _rgbColors$_i[1]; + + if (typeof value === "string") { + if (value.replace("#", "").length == 6) { + (function () { + var aRgbHex = value.replace("#", "").match(/.{1,2}/g); + + tempColors[key] = function () { + var opacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + return "rgb(".concat(parseInt(aRgbHex[0], 16), " ").concat(parseInt(aRgbHex[1], 16), " ").concat(parseInt(aRgbHex[2], 16), " / ").concat(opacity, ")"); + }; + })(); + } + } else { + tempColors[key] = helpers.toRGB(value); + } + } + + return tempColors; + } +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (helpers); + +/***/ }), + +/***/ "./resources/js/highlight.js": +/*!***********************************!*\ + !*** ./resources/js/highlight.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helper */ "./resources/js/helper.js"); +/* harmony import */ var highlight_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! highlight.js */ "./node_modules/highlight.js/lib/index.js"); +/* harmony import */ var highlight_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(highlight_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var js_beautify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! js-beautify */ "./node_modules/js-beautify/js/index.js"); +/* harmony import */ var js_beautify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(js_beautify__WEBPACK_IMPORTED_MODULE_2__); + + + + +(function () { + "use strict"; // Highlight code + + $(".source-preview").each(function () { + var source = $(this).find("code").html(); // First replace + + var replace = _helper__WEBPACK_IMPORTED_MODULE_0__["default"].replaceAll(source, "HTMLOpenTag", "<"); + replace = _helper__WEBPACK_IMPORTED_MODULE_0__["default"].replaceAll(replace, "HTMLCloseTag", ">"); // Save for copy code function + + var originalSource = $('').val(replace); + $(this).append(originalSource); // Beautify code + + if ($(this).find("code").hasClass("javascript")) { + replace = js_beautify__WEBPACK_IMPORTED_MODULE_2___default()(replace); + } else { + replace = js_beautify__WEBPACK_IMPORTED_MODULE_2___default().html(replace); + } // Format for highlight.js + + + replace = _helper__WEBPACK_IMPORTED_MODULE_0__["default"].replaceAll(replace, "<", "<"); + replace = _helper__WEBPACK_IMPORTED_MODULE_0__["default"].replaceAll(replace, ">", ">"); + $(this).find("code").html(replace); + }); + highlight_js__WEBPACK_IMPORTED_MODULE_1___default().highlightAll(); +})(); + +/***/ }), + +/***/ "./resources/js/lucide.js": +/*!********************************!*\ + !*** ./resources/js/lucide.js ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var lucide__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lucide */ "./node_modules/lucide/dist/esm/lucide.js"); +/* harmony import */ var lucide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lucide */ "./node_modules/lucide/dist/esm/icons/index.js"); + + +(function () { + "use strict"; // Lucide Icons + + (0,lucide__WEBPACK_IMPORTED_MODULE_0__.createIcons)({ + icons: lucide__WEBPACK_IMPORTED_MODULE_1__, + "stroke-width": 1.5, + nameAttr: "data-lucide" + }); + window.lucide = { + createIcons: lucide__WEBPACK_IMPORTED_MODULE_0__.createIcons, + icons: lucide__WEBPACK_IMPORTED_MODULE_1__ + }; +})(); + +/***/ }), + +/***/ "./resources/js/maps.js": +/*!******************************!*\ + !*** ./resources/js/maps.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); +/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__); + + +(function () { + "use strict"; // Google Maps + + if ($(".report-maps").length) { + var initMap = function initMap(el) { + var iconBase = { + url: $("html").hasClass("dark") ? "/dist/images/map-marker-dark.svg" : "/dist/images/map-marker.svg" + }; + var lightStyle = [{ + elementType: "geometry", + stylers: [{ + color: "#f5f5f5" + }] + }, { + elementType: "labels.icon", + stylers: [{ + visibility: "off" + }] + }, { + elementType: "labels.text.fill", + stylers: [{ + color: "#616161" + }] + }, { + elementType: "labels.text.stroke", + stylers: [{ + color: "#f5f5f5" + }] + }, { + featureType: "administrative.land_parcel", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "administrative.land_parcel", + elementType: "labels.text.fill", + stylers: [{ + color: "#bdbdbd" + }] + }, { + featureType: "poi", + elementType: "geometry", + stylers: [{ + color: "#eeeeee" + }] + }, { + featureType: "poi", + elementType: "labels.text", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "poi", + elementType: "labels.text.fill", + stylers: [{ + color: "#757575" + }] + }, { + featureType: "poi.park", + elementType: "geometry", + stylers: [{ + color: "#e5e5e5" + }] + }, { + featureType: "poi.park", + elementType: "geometry.fill", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "poi.park", + elementType: "labels.text.fill", + stylers: [{ + color: "#9e9e9e" + }] + }, { + featureType: "road", + elementType: "geometry", + stylers: [{ + color: "#ffffff" + }] + }, { + featureType: "road.arterial", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "road.arterial", + elementType: "labels.text.fill", + stylers: [{ + color: "#757575" + }] + }, { + featureType: "road.highway", + elementType: "geometry", + stylers: [{ + color: "#dadada" + }] + }, { + featureType: "road.highway", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "road.highway", + elementType: "labels.text.fill", + stylers: [{ + color: "#616161" + }] + }, { + featureType: "road.local", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "road.local", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "road.local", + elementType: "labels.text.fill", + stylers: [{ + color: "#9e9e9e" + }] + }, { + featureType: "transit.line", + elementType: "geometry", + stylers: [{ + color: "#e5e5e5" + }] + }, { + featureType: "transit.line", + elementType: "geometry.fill", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "transit.station", + elementType: "geometry", + stylers: [{ + color: "#eeeeee" + }] + }, { + featureType: "transit.station", + elementType: "geometry.fill", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "water", + elementType: "geometry", + stylers: [{ + color: "#c9c9c9" + }] + }, { + featureType: "water", + elementType: "geometry.fill", + stylers: [{ + color: "#e0e3e8" + }] + }, { + featureType: "water", + elementType: "labels.text.fill", + stylers: [{ + color: "#9e9e9e" + }] + }]; + var darkStyle = [{ + elementType: "geometry", + stylers: [{ + color: "#242f3e" + }] + }, { + elementType: "labels.text.fill", + stylers: [{ + color: "#746855" + }] + }, { + elementType: "labels.text.stroke", + stylers: [{ + color: "#242f3e" + }] + }, { + featureType: "administrative.land_parcel", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "administrative.land_parcel", + elementType: "labels.text.fill", + stylers: [{ + color: "#bdbdbd" + }] + }, { + featureType: "administrative.locality", + elementType: "labels.text.fill", + stylers: [{ + color: "#d59563" + }] + }, { + featureType: "poi", + elementType: "geometry", + stylers: [{ + color: "#eeeeee" + }] + }, { + featureType: "poi", + elementType: "labels.text", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "poi", + elementType: "labels.text.fill", + stylers: [{ + color: "#d59563" + }] + }, { + featureType: "poi.park", + elementType: "geometry", + stylers: [{ + color: "#263c3f" + }] + }, { + featureType: "poi.park", + elementType: "geometry.fill", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "poi.park", + elementType: "labels.text.fill", + stylers: [{ + color: "#6b9a76" + }] + }, { + featureType: "road", + elementType: "geometry", + stylers: [{ + color: "#38414e" + }] + }, { + featureType: "road", + elementType: "geometry.stroke", + stylers: [{ + color: "#212a37" + }] + }, { + featureType: "road", + elementType: "labels.text.fill", + stylers: [{ + color: "#9ca5b3" + }] + }, { + featureType: "road.arterial", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "road.arterial", + elementType: "labels.text.fill", + stylers: [{ + color: "#757575" + }] + }, { + featureType: "road.highway", + elementType: "geometry", + stylers: [{ + color: "#746855" + }] + }, { + featureType: "road.highway", + elementType: "geometry.stroke", + stylers: [{ + color: "#1f2835" + }] + }, { + featureType: "road.highway", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "road.highway", + elementType: "labels.text.fill", + stylers: [{ + color: "#f3d19c" + }] + }, { + featureType: "road.local", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "road.local", + elementType: "labels", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "transit", + elementType: "geometry", + stylers: [{ + color: "#2f3948" + }] + }, { + featureType: "transit.line", + elementType: "geometry", + stylers: [{ + color: "#e5e5e5" + }] + }, { + featureType: "transit.line", + elementType: "geometry.fill", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "transit.station", + elementType: "geometry", + stylers: [{ + color: "#eeeeee" + }] + }, { + featureType: "transit.station", + elementType: "geometry.fill", + stylers: [{ + visibility: "off" + }] + }, { + featureType: "transit.station", + elementType: "labels.text.fill", + stylers: [{ + color: "#d59563" + }] + }, { + featureType: "water", + elementType: "geometry", + stylers: [{ + color: "#17263c" + }] + }, { + featureType: "water", + elementType: "geometry.fill", + stylers: [{ + color: "#171f29" + }] + }, { + featureType: "water", + elementType: "labels.text.fill", + stylers: [{ + color: "#515c6d" + }] + }, { + featureType: "water", + elementType: "labels.text.stroke", + stylers: [{ + color: "#17263c" + }] + }]; + var lat = $(el).data("center").split(",")[0]; + var _long = $(el).data("center").split(",")[1]; + var map = new google.maps.Map(el, { + center: new google.maps.LatLng(lat, _long), + zoom: 10, + styles: $("html").hasClass("dark") ? darkStyle : lightStyle, + zoomControl: true, + zoomControlOptions: { + position: google.maps.ControlPosition.LEFT_BOTTOM + }, + streetViewControl: false + }); + var infoWindow = new google.maps.InfoWindow({ + minWidth: 400, + maxWidth: 400 + }); + axios__WEBPACK_IMPORTED_MODULE_0___default().get($(el).data("sources")).then(function (_ref) { + var data = _ref.data; + var markersArray = data.map(function (markerElem, i) { + var point = new google.maps.LatLng(parseFloat(markerElem.latitude), parseFloat(markerElem.longitude)); + var infowincontent = '
' + markerElem.name + '
Latitude: ' + markerElem.latitude + ", Longitude: " + markerElem.longitude + "
"; + var marker = new google.maps.Marker({ + map: map, + position: point, + icon: iconBase + }); + google.maps.event.addListener(marker, "click", function (evt) { + infoWindow.setContent(infowincontent); + google.maps.event.addListener(infoWindow, "domready", function () { + $(".arrow_box").closest(".gm-style-iw-d").removeAttr("style"); + $(".arrow_box").closest(".gm-style-iw-d").attr("style", "overflow:visible"); + $(".arrow_box").closest(".gm-style-iw-d").parent().removeAttr("style"); + }); + infoWindow.open(map, marker); + }); + return marker; + }); + var mcOptions = { + styles: [{ + width: 55, + height: 46, + textColor: "white", + url: $("html").hasClass("dark") ? "/dist/images/map-marker-region-dark.svg" : "/dist/images/map-marker-region.svg", + anchor: [0, 0] + }] + }; + new MarkerClusterer(map, markersArray, mcOptions); + })["catch"](function (err) { + console.log(err); + }); + }; + + $(".report-maps").each(function (key, el) { + google.maps.event.addDomListener(window, "load", initMap(el)); + }); + } +})(); + +/***/ }), + +/***/ "./resources/js/mobile-menu.js": +/*!*************************************!*\ + !*** ./resources/js/mobile-menu.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var simplebar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! simplebar */ "./node_modules/simplebar/dist/simplebar.esm.js"); + + +(function () { + "use strict"; // Scrollbar + + if ($(".mobile-menu .scrollable").length) { + new simplebar__WEBPACK_IMPORTED_MODULE_0__["default"]($(".mobile-menu .scrollable")[0]); + } // Mobile Menu + + + $(".mobile-menu-toggler").on("click", function () { + if ($(".mobile-menu").hasClass("mobile-menu--active")) { + $(".mobile-menu").removeClass("mobile-menu--active"); + } else { + $(".mobile-menu").addClass("mobile-menu--active"); + } + }); + $(".mobile-menu").find(".menu").on("click", function () { + if ($(this).parent().find("ul").length) { + if ($(this).parent().find("ul").first()[0].offsetParent !== null) { + $(this).find(".menu__sub-icon").removeClass("transform rotate-180"); + $(this).parent().find("ul").first().slideUp(300, function () { + $(this).removeClass("menu__sub-open"); + }); + } else { + $(this).find(".menu__sub-icon").addClass("transform rotate-180"); + $(this).parent().find("ul").first().slideDown(300, function () { + $(this).addClass("menu__sub-open"); + }); + } + } + }); +})(); + +/***/ }), + +/***/ "./resources/js/notification.js": +/*!**************************************!*\ + !*** ./resources/js/notification.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! toastify-js */ "./node_modules/toastify-js/src/toastify.js"); +/* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(toastify_js__WEBPACK_IMPORTED_MODULE_0__); + + +(function () { + "use strict"; // Basic non sticky notification + + $("#basic-non-sticky-notification-toggle").on("click", function () { + toastify_js__WEBPACK_IMPORTED_MODULE_0___default()({ + node: $("#basic-non-sticky-notification-content").clone().removeClass("hidden")[0], + duration: 3000, + newWindow: true, + close: true, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); + }); // Basic sticky notification + + $("#basic-sticky-notification-toggle").on("click", function () { + toastify_js__WEBPACK_IMPORTED_MODULE_0___default()({ + node: $("#basic-non-sticky-notification-content").clone().removeClass("hidden")[0], + duration: -1, + newWindow: true, + close: true, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); + }); // Success notification + + $("#success-notification-toggle").on("click", function () { + toastify_js__WEBPACK_IMPORTED_MODULE_0___default()({ + node: $("#success-notification-content").clone().removeClass("hidden")[0], + duration: -1, + newWindow: true, + close: true, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); + }); // Notification with actions + + $("#notification-with-actions-toggle").on("click", function () { + toastify_js__WEBPACK_IMPORTED_MODULE_0___default()({ + node: $("#notification-with-actions-content").clone().removeClass("hidden")[0], + duration: -1, + newWindow: true, + close: true, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); + }); // Notification with avatar + + $("#notification-with-avatar-toggle").on("click", function () { + // Init toastify + var avatarNotification = toastify_js__WEBPACK_IMPORTED_MODULE_0___default()({ + node: $("#notification-with-avatar-content").clone().removeClass("hidden")[0], + duration: -1, + newWindow: true, + close: false, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); // Close notification event + + $(avatarNotification.toastElement).find('[data-dismiss="notification"]').on("click", function () { + avatarNotification.hideToast(); + }); + }); // Notification with split buttons + + $("#notification-with-split-buttons-toggle").on("click", function () { + // Init toastify + var splitButtonsNotification = toastify_js__WEBPACK_IMPORTED_MODULE_0___default()({ + node: $("#notification-with-split-buttons-content").clone().removeClass("hidden")[0], + duration: -1, + newWindow: true, + close: false, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); // Close notification event + + $(splitButtonsNotification.toastElement).find('[data-dismiss="notification"]').on("click", function () { + splitButtonsNotification.hideToast(); + }); + }); // Notification with buttons below + + $("#notification-with-buttons-below-toggle").on("click", function () { + // Init toastify + toastify_js__WEBPACK_IMPORTED_MODULE_0___default()({ + node: $("#notification-with-buttons-below-content").clone().removeClass("hidden")[0], + duration: -1, + newWindow: true, + close: true, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); + }); +})(); + +/***/ }), + +/***/ "./resources/js/search.js": +/*!********************************!*\ + !*** ./resources/js/search.js ***! + \********************************/ +/***/ (() => { + +(function () { + "use strict"; + + $(".top-bar, .top-bar-boxed").find(".search").find("input").each(function () { + $(this).on("focus", function () { + $(".top-bar, .top-bar-boxed").find(".search-result").addClass("show"); + }); + $(this).on("focusout", function () { + $(".top-bar, .top-bar-boxed").find(".search-result").removeClass("show"); + }); + }); +})(); + +/***/ }), + +/***/ "./resources/js/show-code.js": +/*!***********************************!*\ + !*** ./resources/js/show-code.js ***! + \***********************************/ +/***/ (() => { + +(function () { + "use strict"; // Show code or preview + + $("body").on("change", ".show-code", function () { + var elementId = $(this).data("target"); + + if ($(this).is(":checked")) { + $(elementId).find(".preview").hide(); + $(elementId).find(".source-code").fadeIn(200); + } else { + $(elementId).find(".preview").fadeIn(200); + $(elementId).find(".source-code").hide(); + } + }); +})(); + +/***/ }), + +/***/ "./resources/js/show-dropdown.js": +/*!***************************************!*\ + !*** ./resources/js/show-dropdown.js ***! + \***************************************/ +/***/ (() => { + +(function () { + "use strict"; // Show dropdown + + $("#programmatically-show-dropdown").on("click", function () { + setTimeout(function () { + var el = document.querySelector("#programmatically-dropdown"); + var dropdown = tailwind.Dropdown.getOrCreateInstance(el); + dropdown.show(); + }, 100); + }); // Hide dropdown + + $("#programmatically-hide-dropdown").on("click", function () { + setTimeout(function () { + var el = document.querySelector("#programmatically-dropdown"); + var dropdown = tailwind.Dropdown.getOrCreateInstance(el); + dropdown.hide(); + }, 100); + }); // Toggle dropdown + + $("#programmatically-toggle-dropdown").on("click", function () { + setTimeout(function () { + var el = document.querySelector("#programmatically-dropdown"); + var dropdown = tailwind.Dropdown.getOrCreateInstance(el); + dropdown.toggle(); + }, 100); + }); +})(); + +/***/ }), + +/***/ "./resources/js/show-modal.js": +/*!************************************!*\ + !*** ./resources/js/show-modal.js ***! + \************************************/ +/***/ (() => { + +(function () { + "use strict"; // Show modal + + $("#programmatically-show-modal").on("click", function () { + var el = document.querySelector("#programmatically-modal"); + var modal = tailwind.Modal.getOrCreateInstance(el); + modal.show(); + }); // Hide modal + + $("#programmatically-hide-modal").on("click", function () { + var el = document.querySelector("#programmatically-modal"); + var modal = tailwind.Modal.getOrCreateInstance(el); + modal.hide(); + }); // Toggle modal + + $("#programmatically-toggle-modal").on("click", function () { + var el = document.querySelector("#programmatically-modal"); + var modal = tailwind.Modal.getOrCreateInstance(el); + modal.toggle(); + }); +})(); + +/***/ }), + +/***/ "./resources/js/show-slide-over.js": +/*!*****************************************!*\ + !*** ./resources/js/show-slide-over.js ***! + \*****************************************/ +/***/ (() => { + +(function () { + "use strict"; // Show slide over + + $("#programmatically-show-slide-over").on("click", function () { + var el = document.querySelector("#programmatically-slide-over"); + var slideOver = tailwind.Modal.getOrCreateInstance(el); + slideOver.show(); + }); // Hide slide over + + $("#programmatically-hide-slide-over").on("click", function () { + var el = document.querySelector("#programmatically-slide-over"); + var slideOver = tailwind.Modal.getOrCreateInstance(el); + slideOver.hide(); + }); // Toggle slide over + + $("#programmatically-toggle-slide-over").on("click", function () { + var el = document.querySelector("#programmatically-slide-over"); + var slideOver = tailwind.Modal.getOrCreateInstance(el); + slideOver.toggle(); + }); +})(); + +/***/ }), + +/***/ "./resources/js/side-menu-tooltip.js": +/*!*******************************************!*\ + !*** ./resources/js/side-menu-tooltip.js ***! + \*******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var tippy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tippy.js */ "./node_modules/tippy.js/dist/tippy.esm.js"); + + +(function () { + "use strict"; // Side menu tooltips + + var initTooltips = function tooltips() { + $(".side-menu").each(function () { + if (this._tippy == undefined) { + var content = $(this).find(".side-menu__title").html().replace(/<[^>]*>?/gm, "").trim(); + (0,tippy_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this, { + content: content, + arrow: tippy_js__WEBPACK_IMPORTED_MODULE_0__.roundArrow, + animation: "shift-away", + placement: "right" + }); + } + + if ($(window).width() <= 1260 || $(this).closest(".side-nav").hasClass("side-nav--simple")) { + this._tippy.enable(); + } else { + this._tippy.disable(); + } + }); + return tooltips; + }(); + + window.addEventListener("resize", function () { + initTooltips(); + }); +})(); + +/***/ }), + +/***/ "./resources/js/side-menu.js": +/*!***********************************!*\ + !*** ./resources/js/side-menu.js ***! + \***********************************/ +/***/ (() => { + +(function () { + "use strict"; // Side Menu + + $(".side-menu").on("click", function () { + if ($(this).parent().find("ul").length) { + if ($(this).parent().find("ul").first()[0].offsetParent !== null) { + $(this).find(".side-menu__sub-icon").removeClass("transform rotate-180"); + $(this).removeClass("side-menu--open"); + $(this).parent().find("ul").first().slideUp(300, function () { + $(this).removeClass("side-menu__sub-open"); + }); + } else { + $(this).find(".side-menu__sub-icon").addClass("transform rotate-180"); + $(this).addClass("side-menu--open"); + $(this).parent().find("ul").first().slideDown(300, function () { + $(this).addClass("side-menu__sub-open"); + }); + } + } + }); +})(); + +/***/ }), + +/***/ "./resources/js/tabulator.js": +/*!***********************************!*\ + !*** ./resources/js/tabulator.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var xlsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xlsx */ "./node_modules/xlsx/xlsx.js"); +/* harmony import */ var xlsx__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(xlsx__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var lucide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lucide */ "./node_modules/lucide/dist/esm/lucide.js"); +/* harmony import */ var lucide__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lucide */ "./node_modules/lucide/dist/esm/icons/index.js"); +/* harmony import */ var tabulator_tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tabulator-tables */ "./node_modules/tabulator-tables/dist/js/tabulator.es2015.js"); + + + + +(function () { + "use strict"; // Tabulator + + if ($("#tabulator").length) { + // Filter function + var filterHTMLForm = function filterHTMLForm() { + var field = $("#tabulator-html-filter-field").val(); + var type = $("#tabulator-html-filter-type").val(); + var value = $("#tabulator-html-filter-value").val(); + table.setFilter(field, type, value); + }; // On submit filter form + + + // Setup Tabulator + var table = new tabulator_tables__WEBPACK_IMPORTED_MODULE_1__["default"]("#tabulator", { + ajaxURL: "https://dummy-data.left4code.com", + ajaxFiltering: true, + ajaxSorting: true, + printAsHtml: true, + printStyled: true, + pagination: "remote", + paginationSize: 10, + paginationSizeSelector: [10, 20, 30, 40], + layout: "fitColumns", + responsiveLayout: "collapse", + placeholder: "No matching records found", + columns: [{ + formatter: "responsiveCollapse", + width: 40, + minWidth: 30, + hozAlign: "center", + resizable: false, + headerSort: false + }, // For HTML table + { + title: "PRODUCT NAME", + minWidth: 200, + responsive: 0, + field: "name", + vertAlign: "middle", + print: false, + download: false, + formatter: function formatter(cell, formatterParams) { + return "
\n
".concat(cell.getData().name, "
\n
").concat(cell.getData().category, "
\n
"); + } + }, { + title: "IMAGES", + minWidth: 200, + field: "images", + hozAlign: "center", + vertAlign: "middle", + print: false, + download: false, + formatter: function formatter(cell, formatterParams) { + return "
\n
\n \"Midone\n
\n
\n \"Midone\n
\n
\n \"Midone\n
\n
"); + } + }, { + title: "REMAINING STOCK", + minWidth: 200, + field: "remaining_stock", + hozAlign: "center", + vertAlign: "middle", + print: false, + download: false + }, { + title: "STATUS", + minWidth: 200, + field: "status", + hozAlign: "center", + vertAlign: "middle", + print: false, + download: false, + formatter: function formatter(cell, formatterParams) { + return "
\n ").concat(cell.getData().status ? "Active" : "Inactive", "\n
"); + } + }, { + title: "ACTIONS", + minWidth: 200, + field: "actions", + responsive: 1, + hozAlign: "center", + vertAlign: "middle", + print: false, + download: false, + formatter: function formatter(cell, formatterParams) { + var a = $(""); + $(a).find(".edit").on("click", function () { + alert("EDIT"); + }); + $(a).find(".delete").on("click", function () { + alert("DELETE"); + }); + return a[0]; + } + }, // For print format + { + title: "PRODUCT NAME", + field: "name", + visible: false, + print: true, + download: true + }, { + title: "CATEGORY", + field: "category", + visible: false, + print: true, + download: true + }, { + title: "REMAINING STOCK", + field: "remaining_stock", + visible: false, + print: true, + download: true + }, { + title: "STATUS", + field: "status", + visible: false, + print: true, + download: true, + formatterPrint: function formatterPrint(cell) { + return cell.getValue() ? "Active" : "Inactive"; + } + }, { + title: "IMAGE 1", + field: "images", + visible: false, + print: true, + download: true, + formatterPrint: function formatterPrint(cell) { + return cell.getValue()[0]; + } + }, { + title: "IMAGE 2", + field: "images", + visible: false, + print: true, + download: true, + formatterPrint: function formatterPrint(cell) { + return cell.getValue()[1]; + } + }, { + title: "IMAGE 3", + field: "images", + visible: false, + print: true, + download: true, + formatterPrint: function formatterPrint(cell) { + return cell.getValue()[2]; + } + }], + renderComplete: function renderComplete() { + (0,lucide__WEBPACK_IMPORTED_MODULE_2__.createIcons)({ + icons: lucide__WEBPACK_IMPORTED_MODULE_3__, + "stroke-width": 1.5, + nameAttr: "data-lucide" + }); + } + }); // Redraw table onresize + + window.addEventListener("resize", function () { + table.redraw(); + (0,lucide__WEBPACK_IMPORTED_MODULE_2__.createIcons)({ + icons: lucide__WEBPACK_IMPORTED_MODULE_3__, + "stroke-width": 1.5, + nameAttr: "data-lucide" + }); + }); + $("#tabulator-html-filter-form")[0].addEventListener("keypress", function (event) { + var keycode = event.keyCode ? event.keyCode : event.which; + + if (keycode == "13") { + event.preventDefault(); + filterHTMLForm(); + } + }); // On click go button + + $("#tabulator-html-filter-go").on("click", function (event) { + filterHTMLForm(); + }); // On reset filter form + + $("#tabulator-html-filter-reset").on("click", function (event) { + $("#tabulator-html-filter-field").val("name"); + $("#tabulator-html-filter-type").val("like"); + $("#tabulator-html-filter-value").val(""); + filterHTMLForm(); + }); // Export + + $("#tabulator-export-csv").on("click", function (event) { + table.download("csv", "data.csv"); + }); + $("#tabulator-export-json").on("click", function (event) { + table.download("json", "data.json"); + }); + $("#tabulator-export-xlsx").on("click", function (event) { + window.XLSX = (xlsx__WEBPACK_IMPORTED_MODULE_0___default()); + table.download("xlsx", "data.xlsx", { + sheetName: "Products" + }); + }); + $("#tabulator-export-html").on("click", function (event) { + table.download("html", "data.html", { + style: true + }); + }); // Print + + $("#tabulator-print").on("click", function (event) { + table.print(); + }); + } +})(); + +/***/ }), + +/***/ "./resources/js/tiny-slider.js": +/*!*************************************!*\ + !*** ./resources/js/tiny-slider.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var tiny_slider_src_tiny_slider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tiny-slider/src/tiny-slider */ "./node_modules/tiny-slider/src/tiny-slider.js"); + + +(function () { + "use strict"; // Tiny Slider + + if ($(".tiny-slider").length) { + $(".tiny-slider").each(function () { + this.tns = (0,tiny_slider_src_tiny_slider__WEBPACK_IMPORTED_MODULE_0__.tns)({ + container: this, + slideBy: "page", + mouseDrag: true, + autoplay: true, + controls: false, + nav: false, + speed: 500 + }); + }); + } + + if ($(".tiny-slider-navigator").length) { + $(".tiny-slider-navigator").each(function () { + $(this).on("click", function () { + if ($(this).data("target") == "prev") { + $("#" + $(this).data("carousel"))[0].tns.goTo("prev"); + } else { + $("#" + $(this).data("carousel"))[0].tns.goTo("next"); + } + }); + }); + } // Slider widget page + + + if ($(".single-item").length) { + $(".single-item").each(function () { + (0,tiny_slider_src_tiny_slider__WEBPACK_IMPORTED_MODULE_0__.tns)({ + container: this, + slideBy: "page", + mouseDrag: true, + autoplay: false, + controls: true, + nav: false, + speed: 500 + }); + }); + } + + if ($(".multiple-items").length) { + $(".multiple-items").each(function () { + (0,tiny_slider_src_tiny_slider__WEBPACK_IMPORTED_MODULE_0__.tns)({ + container: this, + slideBy: "page", + mouseDrag: true, + autoplay: false, + controls: true, + items: 1, + nav: false, + speed: 500, + responsive: { + 600: { + items: 3 + }, + 480: { + items: 2 + } + } + }); + }); + } + + if ($(".responsive-mode").length) { + $(".responsive-mode").each(function () { + (0,tiny_slider_src_tiny_slider__WEBPACK_IMPORTED_MODULE_0__.tns)({ + container: this, + slideBy: "page", + mouseDrag: true, + autoplay: false, + controls: true, + items: 1, + nav: true, + speed: 500, + responsive: { + 600: { + items: 3 + }, + 480: { + items: 2 + } + } + }); + }); + } + + if ($(".center-mode").length) { + $(".center-mode").each(function () { + (0,tiny_slider_src_tiny_slider__WEBPACK_IMPORTED_MODULE_0__.tns)({ + container: this, + mouseDrag: true, + autoplay: false, + controls: true, + center: true, + items: 1, + nav: false, + speed: 500, + responsive: { + 600: { + items: 2 + } + } + }); + }); + } + + if ($(".fade-mode").length) { + $(".fade-mode").each(function () { + (0,tiny_slider_src_tiny_slider__WEBPACK_IMPORTED_MODULE_0__.tns)({ + mode: "gallery", + container: this, + slideBy: "page", + mouseDrag: true, + autoplay: true, + controls: true, + nav: true, + speed: 500 + }); + }); + } +})(); + +/***/ }), + +/***/ "./resources/js/tippy.js": +/*!*******************************!*\ + !*** ./resources/js/tippy.js ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var tippy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tippy.js */ "./node_modules/tippy.js/dist/tippy.esm.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + + +(function () { + "use strict"; // Tooltips + + $(".tooltip").each(function () { + var options = { + content: $(this).attr("title") + }; + + if ($(this).data("trigger") !== undefined) { + options.trigger = $(this).data("trigger"); + } + + if ($(this).data("placement") !== undefined) { + options.placement = $(this).data("placement"); + } + + if ($(this).data("theme") !== undefined) { + options.theme = $(this).data("theme"); + } + + if ($(this).data("tooltip-content") !== undefined) { + options.content = $($(this).data("tooltip-content"))[0]; + } + + $(this).removeAttr("title"); + (0,tippy_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this, _objectSpread({ + arrow: tippy_js__WEBPACK_IMPORTED_MODULE_0__.roundArrow, + animation: "shift-away" + }, options)); + }); +})(); + +/***/ }), + +/***/ "./resources/js/tom-select.js": +/*!************************************!*\ + !*** ./resources/js/tom-select.js ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var tom_select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tom-select */ "./node_modules/tom-select/dist/js/tom-select.complete.js"); +/* harmony import */ var tom_select__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tom_select__WEBPACK_IMPORTED_MODULE_0__); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + + +(function () { + "use strict"; // Tom Select + + $(".tom-select").each(function () { + var options = { + plugins: { + dropdown_input: {} + } + }; + + if ($(this).data("placeholder")) { + options.placeholder = $(this).data("placeholder"); + } + + if ($(this).attr("multiple") !== undefined) { + options = _objectSpread(_objectSpread({}, options), {}, { + plugins: _objectSpread(_objectSpread({}, options.plugins), {}, { + remove_button: { + title: "Remove this item" + } + }), + persist: false, + create: true, + onDelete: function onDelete(values) { + return confirm(values.length > 1 ? "Are you sure you want to remove these " + values.length + " items?" : 'Are you sure you want to remove "' + values[0] + '"?'); + } + }); + } + + if ($(this).data("header")) { + options = _objectSpread(_objectSpread({}, options), {}, { + plugins: _objectSpread(_objectSpread({}, options.plugins), {}, { + dropdown_header: { + title: $(this).data("header") + } + }) + }); + } + + new (tom_select__WEBPACK_IMPORTED_MODULE_0___default())(this, options); + }); +})(); + +/***/ }), + +/***/ "./resources/js/validation.js": +/*!************************************!*\ + !*** ./resources/js/validation.js ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var pristinejs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pristinejs */ "./node_modules/pristinejs/dist/pristine.js"); +/* harmony import */ var pristinejs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pristinejs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! toastify-js */ "./node_modules/toastify-js/src/toastify.js"); +/* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(toastify_js__WEBPACK_IMPORTED_MODULE_1__); + + + +(function () { + "use strict"; + + function onSubmit(pristine) { + var valid = pristine.validate(); + + if (valid) { + toastify_js__WEBPACK_IMPORTED_MODULE_1___default()({ + node: $("#success-notification-content").clone().removeClass("hidden")[0], + duration: 3000, + newWindow: true, + close: true, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); + } else { + toastify_js__WEBPACK_IMPORTED_MODULE_1___default()({ + node: $("#failed-notification-content").clone().removeClass("hidden")[0], + duration: 3000, + newWindow: true, + close: true, + gravity: "top", + position: "right", + stopOnFocus: true + }).showToast(); + } + } + + $(".validate-form").each(function () { + var pristine = new (pristinejs__WEBPACK_IMPORTED_MODULE_0___default())(this, { + classTo: "input-form", + errorClass: "has-error", + errorTextParent: "input-form", + errorTextClass: "text-danger mt-2" + }); + pristine.addValidator($(this).find('input[type="url"]')[0], function (value) { + var expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; + var regex = new RegExp(expression); + + if (!value.length || value.length && value.match(regex)) { + return true; + } + + return false; + }, "This field is URL format only", 2, false); + $(this).on("submit", function (e) { + e.preventDefault(); + onSubmit(pristine); + }); + }); +})(); + +/***/ }), + +/***/ "./resources/js/zoom.js": +/*!******************************!*\ + !*** ./resources/js/zoom.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var zoom_vanilla_js_dist_zoom_vanilla_min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zoom-vanilla.js/dist/zoom-vanilla.min.js */ "./node_modules/zoom-vanilla.js/dist/zoom-vanilla.min.js"); +/* harmony import */ var zoom_vanilla_js_dist_zoom_vanilla_min_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(zoom_vanilla_js_dist_zoom_vanilla_min_js__WEBPACK_IMPORTED_MODULE_0__); + + +/***/ }), + +/***/ "./node_modules/can-use-dom/index.js": +/*!*******************************************!*\ + !*** ./node_modules/can-use-dom/index.js ***! + \*******************************************/ +/***/ ((module) => { + +var canUseDOM = !!( + typeof window !== 'undefined' && + window.document && + window.document.createElement +); + +module.exports = canUseDOM; + +/***/ }), + +/***/ "./node_modules/chart.js/auto/auto.esm.js": +/*!************************************************!*\ + !*** ./node_modules/chart.js/auto/auto.esm.js ***! + \************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _dist_chart_esm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dist/chart.esm */ "./node_modules/chart.js/dist/chart.esm.js"); + + +_dist_chart_esm__WEBPACK_IMPORTED_MODULE_0__.Chart.register(..._dist_chart_esm__WEBPACK_IMPORTED_MODULE_0__.registerables); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_dist_chart_esm__WEBPACK_IMPORTED_MODULE_0__.Chart); + + +/***/ }), + +/***/ "./node_modules/chart.js/dist/chart.esm.js": +/*!*************************************************!*\ + !*** ./node_modules/chart.js/dist/chart.esm.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "defaults": () => (/* reexport safe */ _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d), +/* harmony export */ "Animation": () => (/* binding */ Animation), +/* harmony export */ "Animations": () => (/* binding */ Animations), +/* harmony export */ "ArcElement": () => (/* binding */ ArcElement), +/* harmony export */ "BarController": () => (/* binding */ BarController), +/* harmony export */ "BarElement": () => (/* binding */ BarElement), +/* harmony export */ "BasePlatform": () => (/* binding */ BasePlatform), +/* harmony export */ "BasicPlatform": () => (/* binding */ BasicPlatform), +/* harmony export */ "BubbleController": () => (/* binding */ BubbleController), +/* harmony export */ "CategoryScale": () => (/* binding */ CategoryScale), +/* harmony export */ "Chart": () => (/* binding */ Chart), +/* harmony export */ "DatasetController": () => (/* binding */ DatasetController), +/* harmony export */ "Decimation": () => (/* binding */ plugin_decimation), +/* harmony export */ "DomPlatform": () => (/* binding */ DomPlatform), +/* harmony export */ "DoughnutController": () => (/* binding */ DoughnutController), +/* harmony export */ "Element": () => (/* binding */ Element), +/* harmony export */ "Filler": () => (/* binding */ plugin_filler), +/* harmony export */ "Interaction": () => (/* binding */ Interaction), +/* harmony export */ "Legend": () => (/* binding */ plugin_legend), +/* harmony export */ "LineController": () => (/* binding */ LineController), +/* harmony export */ "LineElement": () => (/* binding */ LineElement), +/* harmony export */ "LinearScale": () => (/* binding */ LinearScale), +/* harmony export */ "LogarithmicScale": () => (/* binding */ LogarithmicScale), +/* harmony export */ "PieController": () => (/* binding */ PieController), +/* harmony export */ "PointElement": () => (/* binding */ PointElement), +/* harmony export */ "PolarAreaController": () => (/* binding */ PolarAreaController), +/* harmony export */ "RadarController": () => (/* binding */ RadarController), +/* harmony export */ "RadialLinearScale": () => (/* binding */ RadialLinearScale), +/* harmony export */ "Scale": () => (/* binding */ Scale), +/* harmony export */ "ScatterController": () => (/* binding */ ScatterController), +/* harmony export */ "SubTitle": () => (/* binding */ plugin_subtitle), +/* harmony export */ "Ticks": () => (/* binding */ Ticks), +/* harmony export */ "TimeScale": () => (/* binding */ TimeScale), +/* harmony export */ "TimeSeriesScale": () => (/* binding */ TimeSeriesScale), +/* harmony export */ "Title": () => (/* binding */ plugin_title), +/* harmony export */ "Tooltip": () => (/* binding */ plugin_tooltip), +/* harmony export */ "_adapters": () => (/* binding */ adapters), +/* harmony export */ "_detectPlatform": () => (/* binding */ _detectPlatform), +/* harmony export */ "animator": () => (/* binding */ animator), +/* harmony export */ "controllers": () => (/* binding */ controllers), +/* harmony export */ "elements": () => (/* binding */ elements), +/* harmony export */ "layouts": () => (/* binding */ layouts), +/* harmony export */ "plugins": () => (/* binding */ plugins), +/* harmony export */ "registerables": () => (/* binding */ registerables), +/* harmony export */ "registry": () => (/* binding */ registry), +/* harmony export */ "scales": () => (/* binding */ scales) +/* harmony export */ }); +/* harmony import */ var _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunks/helpers.segment.js */ "./node_modules/chart.js/dist/chunks/helpers.segment.js"); +/*! + * Chart.js v3.7.1 + * https://www.chartjs.org + * (c) 2022 Chart.js Contributors + * Released under the MIT License + */ + + + +class Animator { + constructor() { + this._request = null; + this._charts = new Map(); + this._running = false; + this._lastDate = undefined; + } + _notify(chart, anims, date, type) { + const callbacks = anims.listeners[type]; + const numSteps = anims.duration; + callbacks.forEach(fn => fn({ + chart, + initial: anims.initial, + numSteps, + currentStep: Math.min(date - anims.start, numSteps) + })); + } + _refresh() { + if (this._request) { + return; + } + this._running = true; + this._request = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.r.call(window, () => { + this._update(); + this._request = null; + if (this._running) { + this._refresh(); + } + }); + } + _update(date = Date.now()) { + let remaining = 0; + this._charts.forEach((anims, chart) => { + if (!anims.running || !anims.items.length) { + return; + } + const items = anims.items; + let i = items.length - 1; + let draw = false; + let item; + for (; i >= 0; --i) { + item = items[i]; + if (item._active) { + if (item._total > anims.duration) { + anims.duration = item._total; + } + item.tick(date); + draw = true; + } else { + items[i] = items[items.length - 1]; + items.pop(); + } + } + if (draw) { + chart.draw(); + this._notify(chart, anims, date, 'progress'); + } + if (!items.length) { + anims.running = false; + this._notify(chart, anims, date, 'complete'); + anims.initial = false; + } + remaining += items.length; + }); + this._lastDate = date; + if (remaining === 0) { + this._running = false; + } + } + _getAnims(chart) { + const charts = this._charts; + let anims = charts.get(chart); + if (!anims) { + anims = { + running: false, + initial: true, + items: [], + listeners: { + complete: [], + progress: [] + } + }; + charts.set(chart, anims); + } + return anims; + } + listen(chart, event, cb) { + this._getAnims(chart).listeners[event].push(cb); + } + add(chart, items) { + if (!items || !items.length) { + return; + } + this._getAnims(chart).items.push(...items); + } + has(chart) { + return this._getAnims(chart).items.length > 0; + } + start(chart) { + const anims = this._charts.get(chart); + if (!anims) { + return; + } + anims.running = true; + anims.start = Date.now(); + anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0); + this._refresh(); + } + running(chart) { + if (!this._running) { + return false; + } + const anims = this._charts.get(chart); + if (!anims || !anims.running || !anims.items.length) { + return false; + } + return true; + } + stop(chart) { + const anims = this._charts.get(chart); + if (!anims || !anims.items.length) { + return; + } + const items = anims.items; + let i = items.length - 1; + for (; i >= 0; --i) { + items[i].cancel(); + } + anims.items = []; + this._notify(chart, anims, Date.now(), 'complete'); + } + remove(chart) { + return this._charts.delete(chart); + } +} +var animator = new Animator(); + +const transparent = 'transparent'; +const interpolators = { + boolean(from, to, factor) { + return factor > 0.5 ? to : from; + }, + color(from, to, factor) { + const c0 = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.c)(from || transparent); + const c1 = c0.valid && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.c)(to || transparent); + return c1 && c1.valid + ? c1.mix(c0, factor).hexString() + : to; + }, + number(from, to, factor) { + return from + (to - from) * factor; + } +}; +class Animation { + constructor(cfg, target, prop, to) { + const currentValue = target[prop]; + to = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.to, to, currentValue, cfg.from]); + const from = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.from, currentValue, to]); + this._active = true; + this._fn = cfg.fn || interpolators[cfg.type || typeof from]; + this._easing = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.e[cfg.easing] || _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.e.linear; + this._start = Math.floor(Date.now() + (cfg.delay || 0)); + this._duration = this._total = Math.floor(cfg.duration); + this._loop = !!cfg.loop; + this._target = target; + this._prop = prop; + this._from = from; + this._to = to; + this._promises = undefined; + } + active() { + return this._active; + } + update(cfg, to, date) { + if (this._active) { + this._notify(false); + const currentValue = this._target[this._prop]; + const elapsed = date - this._start; + const remain = this._duration - elapsed; + this._start = date; + this._duration = Math.floor(Math.max(remain, cfg.duration)); + this._total += elapsed; + this._loop = !!cfg.loop; + this._to = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.to, to, currentValue, cfg.from]); + this._from = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.from, currentValue, to]); + } + } + cancel() { + if (this._active) { + this.tick(Date.now()); + this._active = false; + this._notify(false); + } + } + tick(date) { + const elapsed = date - this._start; + const duration = this._duration; + const prop = this._prop; + const from = this._from; + const loop = this._loop; + const to = this._to; + let factor; + this._active = from !== to && (loop || (elapsed < duration)); + if (!this._active) { + this._target[prop] = to; + this._notify(true); + return; + } + if (elapsed < 0) { + this._target[prop] = from; + return; + } + factor = (elapsed / duration) % 2; + factor = loop && factor > 1 ? 2 - factor : factor; + factor = this._easing(Math.min(1, Math.max(0, factor))); + this._target[prop] = this._fn(from, to, factor); + } + wait() { + const promises = this._promises || (this._promises = []); + return new Promise((res, rej) => { + promises.push({res, rej}); + }); + } + _notify(resolved) { + const method = resolved ? 'res' : 'rej'; + const promises = this._promises || []; + for (let i = 0; i < promises.length; i++) { + promises[i][method](); + } + } +} + +const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension']; +const colors = ['color', 'borderColor', 'backgroundColor']; +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.set('animation', { + delay: undefined, + duration: 1000, + easing: 'easeOutQuart', + fn: undefined, + from: undefined, + loop: undefined, + to: undefined, + type: undefined, +}); +const animationOptions = Object.keys(_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.animation); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.describe('animation', { + _fallback: false, + _indexable: false, + _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn', +}); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.set('animations', { + colors: { + type: 'color', + properties: colors + }, + numbers: { + type: 'number', + properties: numbers + }, +}); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.describe('animations', { + _fallback: 'animation', +}); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.set('transitions', { + active: { + animation: { + duration: 400 + } + }, + resize: { + animation: { + duration: 0 + } + }, + show: { + animations: { + colors: { + from: 'transparent' + }, + visible: { + type: 'boolean', + duration: 0 + }, + } + }, + hide: { + animations: { + colors: { + to: 'transparent' + }, + visible: { + type: 'boolean', + easing: 'linear', + fn: v => v | 0 + }, + } + } +}); +class Animations { + constructor(chart, config) { + this._chart = chart; + this._properties = new Map(); + this.configure(config); + } + configure(config) { + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(config)) { + return; + } + const animatedProps = this._properties; + Object.getOwnPropertyNames(config).forEach(key => { + const cfg = config[key]; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(cfg)) { + return; + } + const resolved = {}; + for (const option of animationOptions) { + resolved[option] = cfg[option]; + } + ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(cfg.properties) && cfg.properties || [key]).forEach((prop) => { + if (prop === key || !animatedProps.has(prop)) { + animatedProps.set(prop, resolved); + } + }); + }); + } + _animateOptions(target, values) { + const newOptions = values.options; + const options = resolveTargetOptions(target, newOptions); + if (!options) { + return []; + } + const animations = this._createAnimations(options, newOptions); + if (newOptions.$shared) { + awaitAll(target.options.$animations, newOptions).then(() => { + target.options = newOptions; + }, () => { + }); + } + return animations; + } + _createAnimations(target, values) { + const animatedProps = this._properties; + const animations = []; + const running = target.$animations || (target.$animations = {}); + const props = Object.keys(values); + const date = Date.now(); + let i; + for (i = props.length - 1; i >= 0; --i) { + const prop = props[i]; + if (prop.charAt(0) === '$') { + continue; + } + if (prop === 'options') { + animations.push(...this._animateOptions(target, values)); + continue; + } + const value = values[prop]; + let animation = running[prop]; + const cfg = animatedProps.get(prop); + if (animation) { + if (cfg && animation.active()) { + animation.update(cfg, value, date); + continue; + } else { + animation.cancel(); + } + } + if (!cfg || !cfg.duration) { + target[prop] = value; + continue; + } + running[prop] = animation = new Animation(cfg, target, prop, value); + animations.push(animation); + } + return animations; + } + update(target, values) { + if (this._properties.size === 0) { + Object.assign(target, values); + return; + } + const animations = this._createAnimations(target, values); + if (animations.length) { + animator.add(this._chart, animations); + return true; + } + } +} +function awaitAll(animations, properties) { + const running = []; + const keys = Object.keys(properties); + for (let i = 0; i < keys.length; i++) { + const anim = animations[keys[i]]; + if (anim && anim.active()) { + running.push(anim.wait()); + } + } + return Promise.all(running); +} +function resolveTargetOptions(target, newOptions) { + if (!newOptions) { + return; + } + let options = target.options; + if (!options) { + target.options = newOptions; + return; + } + if (options.$shared) { + target.options = options = Object.assign({}, options, {$shared: false, $animations: {}}); + } + return options; +} + +function scaleClip(scale, allowedOverflow) { + const opts = scale && scale.options || {}; + const reverse = opts.reverse; + const min = opts.min === undefined ? allowedOverflow : 0; + const max = opts.max === undefined ? allowedOverflow : 0; + return { + start: reverse ? max : min, + end: reverse ? min : max + }; +} +function defaultClip(xScale, yScale, allowedOverflow) { + if (allowedOverflow === false) { + return false; + } + const x = scaleClip(xScale, allowedOverflow); + const y = scaleClip(yScale, allowedOverflow); + return { + top: y.end, + right: x.end, + bottom: y.start, + left: x.start + }; +} +function toClip(value) { + let t, r, b, l; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(value)) { + t = value.top; + r = value.right; + b = value.bottom; + l = value.left; + } else { + t = r = b = l = value; + } + return { + top: t, + right: r, + bottom: b, + left: l, + disabled: value === false + }; +} +function getSortedDatasetIndices(chart, filterVisible) { + const keys = []; + const metasets = chart._getSortedDatasetMetas(filterVisible); + let i, ilen; + for (i = 0, ilen = metasets.length; i < ilen; ++i) { + keys.push(metasets[i].index); + } + return keys; +} +function applyStack(stack, value, dsIndex, options = {}) { + const keys = stack.keys; + const singleMode = options.mode === 'single'; + let i, ilen, datasetIndex, otherValue; + if (value === null) { + return; + } + for (i = 0, ilen = keys.length; i < ilen; ++i) { + datasetIndex = +keys[i]; + if (datasetIndex === dsIndex) { + if (options.all) { + continue; + } + break; + } + otherValue = stack.values[datasetIndex]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(otherValue) && (singleMode || (value === 0 || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(value) === (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(otherValue)))) { + value += otherValue; + } + } + return value; +} +function convertObjectDataToArray(data) { + const keys = Object.keys(data); + const adata = new Array(keys.length); + let i, ilen, key; + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + adata[i] = { + x: key, + y: data[key] + }; + } + return adata; +} +function isStacked(scale, meta) { + const stacked = scale && scale.options.stacked; + return stacked || (stacked === undefined && meta.stack !== undefined); +} +function getStackKey(indexScale, valueScale, meta) { + return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`; +} +function getUserBounds(scale) { + const {min, max, minDefined, maxDefined} = scale.getUserBounds(); + return { + min: minDefined ? min : Number.NEGATIVE_INFINITY, + max: maxDefined ? max : Number.POSITIVE_INFINITY + }; +} +function getOrCreateStack(stacks, stackKey, indexValue) { + const subStack = stacks[stackKey] || (stacks[stackKey] = {}); + return subStack[indexValue] || (subStack[indexValue] = {}); +} +function getLastIndexInStack(stack, vScale, positive, type) { + for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) { + const value = stack[meta.index]; + if ((positive && value > 0) || (!positive && value < 0)) { + return meta.index; + } + } + return null; +} +function updateStacks(controller, parsed) { + const {chart, _cachedMeta: meta} = controller; + const stacks = chart._stacks || (chart._stacks = {}); + const {iScale, vScale, index: datasetIndex} = meta; + const iAxis = iScale.axis; + const vAxis = vScale.axis; + const key = getStackKey(iScale, vScale, meta); + const ilen = parsed.length; + let stack; + for (let i = 0; i < ilen; ++i) { + const item = parsed[i]; + const {[iAxis]: index, [vAxis]: value} = item; + const itemStacks = item._stacks || (item._stacks = {}); + stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index); + stack[datasetIndex] = value; + stack._top = getLastIndexInStack(stack, vScale, true, meta.type); + stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type); + } +} +function getFirstScaleId(chart, axis) { + const scales = chart.scales; + return Object.keys(scales).filter(key => scales[key].axis === axis).shift(); +} +function createDatasetContext(parent, index) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.h)(parent, + { + active: false, + dataset: undefined, + datasetIndex: index, + index, + mode: 'default', + type: 'dataset' + } + ); +} +function createDataContext(parent, index, element) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { + active: false, + dataIndex: index, + parsed: undefined, + raw: undefined, + element, + index, + mode: 'default', + type: 'data' + }); +} +function clearStacks(meta, items) { + const datasetIndex = meta.controller.index; + const axis = meta.vScale && meta.vScale.axis; + if (!axis) { + return; + } + items = items || meta._parsed; + for (const parsed of items) { + const stacks = parsed._stacks; + if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) { + return; + } + delete stacks[axis][datasetIndex]; + } +} +const isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none'; +const cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached); +const createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked + && {keys: getSortedDatasetIndices(chart, true), values: null}; +class DatasetController { + constructor(chart, datasetIndex) { + this.chart = chart; + this._ctx = chart.ctx; + this.index = datasetIndex; + this._cachedDataOpts = {}; + this._cachedMeta = this.getMeta(); + this._type = this._cachedMeta.type; + this.options = undefined; + this._parsing = false; + this._data = undefined; + this._objectData = undefined; + this._sharedOptions = undefined; + this._drawStart = undefined; + this._drawCount = undefined; + this.enableOptionSharing = false; + this.$context = undefined; + this._syncList = []; + this.initialize(); + } + initialize() { + const meta = this._cachedMeta; + this.configure(); + this.linkScales(); + meta._stacked = isStacked(meta.vScale, meta); + this.addElements(); + } + updateIndex(datasetIndex) { + if (this.index !== datasetIndex) { + clearStacks(this._cachedMeta); + } + this.index = datasetIndex; + } + linkScales() { + const chart = this.chart; + const meta = this._cachedMeta; + const dataset = this.getDataset(); + const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y; + const xid = meta.xAxisID = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(dataset.xAxisID, getFirstScaleId(chart, 'x')); + const yid = meta.yAxisID = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(dataset.yAxisID, getFirstScaleId(chart, 'y')); + const rid = meta.rAxisID = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(dataset.rAxisID, getFirstScaleId(chart, 'r')); + const indexAxis = meta.indexAxis; + const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid); + const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid); + meta.xScale = this.getScaleForId(xid); + meta.yScale = this.getScaleForId(yid); + meta.rScale = this.getScaleForId(rid); + meta.iScale = this.getScaleForId(iid); + meta.vScale = this.getScaleForId(vid); + } + getDataset() { + return this.chart.data.datasets[this.index]; + } + getMeta() { + return this.chart.getDatasetMeta(this.index); + } + getScaleForId(scaleID) { + return this.chart.scales[scaleID]; + } + _getOtherScale(scale) { + const meta = this._cachedMeta; + return scale === meta.iScale + ? meta.vScale + : meta.iScale; + } + reset() { + this._update('reset'); + } + _destroy() { + const meta = this._cachedMeta; + if (this._data) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.u)(this._data, this); + } + if (meta._stacked) { + clearStacks(meta); + } + } + _dataCheck() { + const dataset = this.getDataset(); + const data = dataset.data || (dataset.data = []); + const _data = this._data; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(data)) { + this._data = convertObjectDataToArray(data); + } else if (_data !== data) { + if (_data) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.u)(_data, this); + const meta = this._cachedMeta; + clearStacks(meta); + meta._parsed = []; + } + if (data && Object.isExtensible(data)) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.l)(data, this); + } + this._syncList = []; + this._data = data; + } + } + addElements() { + const meta = this._cachedMeta; + this._dataCheck(); + if (this.datasetElementType) { + meta.dataset = new this.datasetElementType(); + } + } + buildOrUpdateElements(resetNewElements) { + const meta = this._cachedMeta; + const dataset = this.getDataset(); + let stackChanged = false; + this._dataCheck(); + const oldStacked = meta._stacked; + meta._stacked = isStacked(meta.vScale, meta); + if (meta.stack !== dataset.stack) { + stackChanged = true; + clearStacks(meta); + meta.stack = dataset.stack; + } + this._resyncElements(resetNewElements); + if (stackChanged || oldStacked !== meta._stacked) { + updateStacks(this, meta._parsed); + } + } + configure() { + const config = this.chart.config; + const scopeKeys = config.datasetScopeKeys(this._type); + const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true); + this.options = config.createResolver(scopes, this.getContext()); + this._parsing = this.options.parsing; + this._cachedDataOpts = {}; + } + parse(start, count) { + const {_cachedMeta: meta, _data: data} = this; + const {iScale, _stacked} = meta; + const iAxis = iScale.axis; + let sorted = start === 0 && count === data.length ? true : meta._sorted; + let prev = start > 0 && meta._parsed[start - 1]; + let i, cur, parsed; + if (this._parsing === false) { + meta._parsed = data; + meta._sorted = true; + parsed = data; + } else { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(data[start])) { + parsed = this.parseArrayData(meta, data, start, count); + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(data[start])) { + parsed = this.parseObjectData(meta, data, start, count); + } else { + parsed = this.parsePrimitiveData(meta, data, start, count); + } + const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]); + for (i = 0; i < count; ++i) { + meta._parsed[i + start] = cur = parsed[i]; + if (sorted) { + if (isNotInOrderComparedToPrev()) { + sorted = false; + } + prev = cur; + } + } + meta._sorted = sorted; + } + if (_stacked) { + updateStacks(this, parsed); + } + } + parsePrimitiveData(meta, data, start, count) { + const {iScale, vScale} = meta; + const iAxis = iScale.axis; + const vAxis = vScale.axis; + const labels = iScale.getLabels(); + const singleScale = iScale === vScale; + const parsed = new Array(count); + let i, ilen, index; + for (i = 0, ilen = count; i < ilen; ++i) { + index = i + start; + parsed[i] = { + [iAxis]: singleScale || iScale.parse(labels[index], index), + [vAxis]: vScale.parse(data[index], index) + }; + } + return parsed; + } + parseArrayData(meta, data, start, count) { + const {xScale, yScale} = meta; + const parsed = new Array(count); + let i, ilen, index, item; + for (i = 0, ilen = count; i < ilen; ++i) { + index = i + start; + item = data[index]; + parsed[i] = { + x: xScale.parse(item[0], index), + y: yScale.parse(item[1], index) + }; + } + return parsed; + } + parseObjectData(meta, data, start, count) { + const {xScale, yScale} = meta; + const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing; + const parsed = new Array(count); + let i, ilen, index, item; + for (i = 0, ilen = count; i < ilen; ++i) { + index = i + start; + item = data[index]; + parsed[i] = { + x: xScale.parse((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.f)(item, xAxisKey), index), + y: yScale.parse((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.f)(item, yAxisKey), index) + }; + } + return parsed; + } + getParsed(index) { + return this._cachedMeta._parsed[index]; + } + getDataElement(index) { + return this._cachedMeta.data[index]; + } + applyStack(scale, parsed, mode) { + const chart = this.chart; + const meta = this._cachedMeta; + const value = parsed[scale.axis]; + const stack = { + keys: getSortedDatasetIndices(chart, true), + values: parsed._stacks[scale.axis] + }; + return applyStack(stack, value, meta.index, {mode}); + } + updateRangeFromParsed(range, scale, parsed, stack) { + const parsedValue = parsed[scale.axis]; + let value = parsedValue === null ? NaN : parsedValue; + const values = stack && parsed._stacks[scale.axis]; + if (stack && values) { + stack.values = values; + value = applyStack(stack, parsedValue, this._cachedMeta.index); + } + range.min = Math.min(range.min, value); + range.max = Math.max(range.max, value); + } + getMinMax(scale, canStack) { + const meta = this._cachedMeta; + const _parsed = meta._parsed; + const sorted = meta._sorted && scale === meta.iScale; + const ilen = _parsed.length; + const otherScale = this._getOtherScale(scale); + const stack = createStack(canStack, meta, this.chart); + const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY}; + const {min: otherMin, max: otherMax} = getUserBounds(otherScale); + let i, parsed; + function _skip() { + parsed = _parsed[i]; + const otherValue = parsed[otherScale.axis]; + return !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue; + } + for (i = 0; i < ilen; ++i) { + if (_skip()) { + continue; + } + this.updateRangeFromParsed(range, scale, parsed, stack); + if (sorted) { + break; + } + } + if (sorted) { + for (i = ilen - 1; i >= 0; --i) { + if (_skip()) { + continue; + } + this.updateRangeFromParsed(range, scale, parsed, stack); + break; + } + } + return range; + } + getAllParsedValues(scale) { + const parsed = this._cachedMeta._parsed; + const values = []; + let i, ilen, value; + for (i = 0, ilen = parsed.length; i < ilen; ++i) { + value = parsed[i][scale.axis]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(value)) { + values.push(value); + } + } + return values; + } + getMaxOverflow() { + return false; + } + getLabelAndValue(index) { + const meta = this._cachedMeta; + const iScale = meta.iScale; + const vScale = meta.vScale; + const parsed = this.getParsed(index); + return { + label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '', + value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : '' + }; + } + _update(mode) { + const meta = this._cachedMeta; + this.update(mode || 'default'); + meta._clip = toClip((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow()))); + } + update(mode) {} + draw() { + const ctx = this._ctx; + const chart = this.chart; + const meta = this._cachedMeta; + const elements = meta.data || []; + const area = chart.chartArea; + const active = []; + const start = this._drawStart || 0; + const count = this._drawCount || (elements.length - start); + const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop; + let i; + if (meta.dataset) { + meta.dataset.draw(ctx, area, start, count); + } + for (i = start; i < start + count; ++i) { + const element = elements[i]; + if (element.hidden) { + continue; + } + if (element.active && drawActiveElementsOnTop) { + active.push(element); + } else { + element.draw(ctx, area); + } + } + for (i = 0; i < active.length; ++i) { + active[i].draw(ctx, area); + } + } + getStyle(index, active) { + const mode = active ? 'active' : 'default'; + return index === undefined && this._cachedMeta.dataset + ? this.resolveDatasetElementOptions(mode) + : this.resolveDataElementOptions(index || 0, mode); + } + getContext(index, active, mode) { + const dataset = this.getDataset(); + let context; + if (index >= 0 && index < this._cachedMeta.data.length) { + const element = this._cachedMeta.data[index]; + context = element.$context || + (element.$context = createDataContext(this.getContext(), index, element)); + context.parsed = this.getParsed(index); + context.raw = dataset.data[index]; + context.index = context.dataIndex = index; + } else { + context = this.$context || + (this.$context = createDatasetContext(this.chart.getContext(), this.index)); + context.dataset = dataset; + context.index = context.datasetIndex = this.index; + } + context.active = !!active; + context.mode = mode; + return context; + } + resolveDatasetElementOptions(mode) { + return this._resolveElementOptions(this.datasetElementType.id, mode); + } + resolveDataElementOptions(index, mode) { + return this._resolveElementOptions(this.dataElementType.id, mode, index); + } + _resolveElementOptions(elementType, mode = 'default', index) { + const active = mode === 'active'; + const cache = this._cachedDataOpts; + const cacheKey = elementType + '-' + mode; + const cached = cache[cacheKey]; + const sharing = this.enableOptionSharing && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.j)(index); + if (cached) { + return cloneIfNotShared(cached, sharing); + } + const config = this.chart.config; + const scopeKeys = config.datasetElementScopeKeys(this._type, elementType); + const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, '']; + const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); + const names = Object.keys(_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.elements[elementType]); + const context = () => this.getContext(index, active); + const values = config.resolveNamedOptions(scopes, names, context, prefixes); + if (values.$shared) { + values.$shared = sharing; + cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing)); + } + return values; + } + _resolveAnimations(index, transition, active) { + const chart = this.chart; + const cache = this._cachedDataOpts; + const cacheKey = `animation-${transition}`; + const cached = cache[cacheKey]; + if (cached) { + return cached; + } + let options; + if (chart.options.animation !== false) { + const config = this.chart.config; + const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition); + const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); + options = config.createResolver(scopes, this.getContext(index, active, transition)); + } + const animations = new Animations(chart, options && options.animations); + if (options && options._cacheable) { + cache[cacheKey] = Object.freeze(animations); + } + return animations; + } + getSharedOptions(options) { + if (!options.$shared) { + return; + } + return this._sharedOptions || (this._sharedOptions = Object.assign({}, options)); + } + includeOptions(mode, sharedOptions) { + return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled; + } + updateElement(element, index, properties, mode) { + if (isDirectUpdateMode(mode)) { + Object.assign(element, properties); + } else { + this._resolveAnimations(index, mode).update(element, properties); + } + } + updateSharedOptions(sharedOptions, mode, newOptions) { + if (sharedOptions && !isDirectUpdateMode(mode)) { + this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions); + } + } + _setStyle(element, index, mode, active) { + element.active = active; + const options = this.getStyle(index, active); + this._resolveAnimations(index, mode, active).update(element, { + options: (!active && this.getSharedOptions(options)) || options + }); + } + removeHoverStyle(element, datasetIndex, index) { + this._setStyle(element, index, 'active', false); + } + setHoverStyle(element, datasetIndex, index) { + this._setStyle(element, index, 'active', true); + } + _removeDatasetHoverStyle() { + const element = this._cachedMeta.dataset; + if (element) { + this._setStyle(element, undefined, 'active', false); + } + } + _setDatasetHoverStyle() { + const element = this._cachedMeta.dataset; + if (element) { + this._setStyle(element, undefined, 'active', true); + } + } + _resyncElements(resetNewElements) { + const data = this._data; + const elements = this._cachedMeta.data; + for (const [method, arg1, arg2] of this._syncList) { + this[method](arg1, arg2); + } + this._syncList = []; + const numMeta = elements.length; + const numData = data.length; + const count = Math.min(numData, numMeta); + if (count) { + this.parse(0, count); + } + if (numData > numMeta) { + this._insertElements(numMeta, numData - numMeta, resetNewElements); + } else if (numData < numMeta) { + this._removeElements(numData, numMeta - numData); + } + } + _insertElements(start, count, resetNewElements = true) { + const meta = this._cachedMeta; + const data = meta.data; + const end = start + count; + let i; + const move = (arr) => { + arr.length += count; + for (i = arr.length - 1; i >= end; i--) { + arr[i] = arr[i - count]; + } + }; + move(data); + for (i = start; i < end; ++i) { + data[i] = new this.dataElementType(); + } + if (this._parsing) { + move(meta._parsed); + } + this.parse(start, count); + if (resetNewElements) { + this.updateElements(data, start, count, 'reset'); + } + } + updateElements(element, start, count, mode) {} + _removeElements(start, count) { + const meta = this._cachedMeta; + if (this._parsing) { + const removed = meta._parsed.splice(start, count); + if (meta._stacked) { + clearStacks(meta, removed); + } + } + meta.data.splice(start, count); + } + _sync(args) { + if (this._parsing) { + this._syncList.push(args); + } else { + const [method, arg1, arg2] = args; + this[method](arg1, arg2); + } + this.chart._dataChanges.push([this.index, ...args]); + } + _onDataPush() { + const count = arguments.length; + this._sync(['_insertElements', this.getDataset().data.length - count, count]); + } + _onDataPop() { + this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]); + } + _onDataShift() { + this._sync(['_removeElements', 0, 1]); + } + _onDataSplice(start, count) { + if (count) { + this._sync(['_removeElements', start, count]); + } + const newCount = arguments.length - 2; + if (newCount) { + this._sync(['_insertElements', start, newCount]); + } + } + _onDataUnshift() { + this._sync(['_insertElements', 0, arguments.length]); + } +} +DatasetController.defaults = {}; +DatasetController.prototype.datasetElementType = null; +DatasetController.prototype.dataElementType = null; + +function getAllScaleValues(scale, type) { + if (!scale._cache.$bar) { + const visibleMetas = scale.getMatchingVisibleMetas(type); + let values = []; + for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) { + values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale)); + } + scale._cache.$bar = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__._)(values.sort((a, b) => a - b)); + } + return scale._cache.$bar; +} +function computeMinSampleSize(meta) { + const scale = meta.iScale; + const values = getAllScaleValues(scale, meta.type); + let min = scale._length; + let i, ilen, curr, prev; + const updateMinAndPrev = () => { + if (curr === 32767 || curr === -32768) { + return; + } + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.j)(prev)) { + min = Math.min(min, Math.abs(curr - prev) || min); + } + prev = curr; + }; + for (i = 0, ilen = values.length; i < ilen; ++i) { + curr = scale.getPixelForValue(values[i]); + updateMinAndPrev(); + } + prev = undefined; + for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) { + curr = scale.getPixelForTick(i); + updateMinAndPrev(); + } + return min; +} +function computeFitCategoryTraits(index, ruler, options, stackCount) { + const thickness = options.barThickness; + let size, ratio; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(thickness)) { + size = ruler.min * options.categoryPercentage; + ratio = options.barPercentage; + } else { + size = thickness * stackCount; + ratio = 1; + } + return { + chunk: size / stackCount, + ratio, + start: ruler.pixels[index] - (size / 2) + }; +} +function computeFlexCategoryTraits(index, ruler, options, stackCount) { + const pixels = ruler.pixels; + const curr = pixels[index]; + let prev = index > 0 ? pixels[index - 1] : null; + let next = index < pixels.length - 1 ? pixels[index + 1] : null; + const percent = options.categoryPercentage; + if (prev === null) { + prev = curr - (next === null ? ruler.end - ruler.start : next - curr); + } + if (next === null) { + next = curr + curr - prev; + } + const start = curr - (curr - Math.min(prev, next)) / 2 * percent; + const size = Math.abs(next - prev) / 2 * percent; + return { + chunk: size / stackCount, + ratio: options.barPercentage, + start + }; +} +function parseFloatBar(entry, item, vScale, i) { + const startValue = vScale.parse(entry[0], i); + const endValue = vScale.parse(entry[1], i); + const min = Math.min(startValue, endValue); + const max = Math.max(startValue, endValue); + let barStart = min; + let barEnd = max; + if (Math.abs(min) > Math.abs(max)) { + barStart = max; + barEnd = min; + } + item[vScale.axis] = barEnd; + item._custom = { + barStart, + barEnd, + start: startValue, + end: endValue, + min, + max + }; +} +function parseValue(entry, item, vScale, i) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(entry)) { + parseFloatBar(entry, item, vScale, i); + } else { + item[vScale.axis] = vScale.parse(entry, i); + } + return item; +} +function parseArrayOrPrimitive(meta, data, start, count) { + const iScale = meta.iScale; + const vScale = meta.vScale; + const labels = iScale.getLabels(); + const singleScale = iScale === vScale; + const parsed = []; + let i, ilen, item, entry; + for (i = start, ilen = start + count; i < ilen; ++i) { + entry = data[i]; + item = {}; + item[iScale.axis] = singleScale || iScale.parse(labels[i], i); + parsed.push(parseValue(entry, item, vScale, i)); + } + return parsed; +} +function isFloatBar(custom) { + return custom && custom.barStart !== undefined && custom.barEnd !== undefined; +} +function barSign(size, vScale, actualBase) { + if (size !== 0) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(size); + } + return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1); +} +function borderProps(properties) { + let reverse, start, end, top, bottom; + if (properties.horizontal) { + reverse = properties.base > properties.x; + start = 'left'; + end = 'right'; + } else { + reverse = properties.base < properties.y; + start = 'bottom'; + end = 'top'; + } + if (reverse) { + top = 'end'; + bottom = 'start'; + } else { + top = 'start'; + bottom = 'end'; + } + return {start, end, reverse, top, bottom}; +} +function setBorderSkipped(properties, options, stack, index) { + let edge = options.borderSkipped; + const res = {}; + if (!edge) { + properties.borderSkipped = res; + return; + } + const {start, end, reverse, top, bottom} = borderProps(properties); + if (edge === 'middle' && stack) { + properties.enableBorderRadius = true; + if ((stack._top || 0) === index) { + edge = top; + } else if ((stack._bottom || 0) === index) { + edge = bottom; + } else { + res[parseEdge(bottom, start, end, reverse)] = true; + edge = top; + } + } + res[parseEdge(edge, start, end, reverse)] = true; + properties.borderSkipped = res; +} +function parseEdge(edge, a, b, reverse) { + if (reverse) { + edge = swap(edge, a, b); + edge = startEnd(edge, b, a); + } else { + edge = startEnd(edge, a, b); + } + return edge; +} +function swap(orig, v1, v2) { + return orig === v1 ? v2 : orig === v2 ? v1 : orig; +} +function startEnd(v, start, end) { + return v === 'start' ? start : v === 'end' ? end : v; +} +function setInflateAmount(properties, {inflateAmount}, ratio) { + properties.inflateAmount = inflateAmount === 'auto' + ? ratio === 1 ? 0.33 : 0 + : inflateAmount; +} +class BarController extends DatasetController { + parsePrimitiveData(meta, data, start, count) { + return parseArrayOrPrimitive(meta, data, start, count); + } + parseArrayData(meta, data, start, count) { + return parseArrayOrPrimitive(meta, data, start, count); + } + parseObjectData(meta, data, start, count) { + const {iScale, vScale} = meta; + const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing; + const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey; + const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey; + const parsed = []; + let i, ilen, item, obj; + for (i = start, ilen = start + count; i < ilen; ++i) { + obj = data[i]; + item = {}; + item[iScale.axis] = iScale.parse((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.f)(obj, iAxisKey), i); + parsed.push(parseValue((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.f)(obj, vAxisKey), item, vScale, i)); + } + return parsed; + } + updateRangeFromParsed(range, scale, parsed, stack) { + super.updateRangeFromParsed(range, scale, parsed, stack); + const custom = parsed._custom; + if (custom && scale === this._cachedMeta.vScale) { + range.min = Math.min(range.min, custom.min); + range.max = Math.max(range.max, custom.max); + } + } + getMaxOverflow() { + return 0; + } + getLabelAndValue(index) { + const meta = this._cachedMeta; + const {iScale, vScale} = meta; + const parsed = this.getParsed(index); + const custom = parsed._custom; + const value = isFloatBar(custom) + ? '[' + custom.start + ', ' + custom.end + ']' + : '' + vScale.getLabelForValue(parsed[vScale.axis]); + return { + label: '' + iScale.getLabelForValue(parsed[iScale.axis]), + value + }; + } + initialize() { + this.enableOptionSharing = true; + super.initialize(); + const meta = this._cachedMeta; + meta.stack = this.getDataset().stack; + } + update(mode) { + const meta = this._cachedMeta; + this.updateElements(meta.data, 0, meta.data.length, mode); + } + updateElements(bars, start, count, mode) { + const reset = mode === 'reset'; + const {index, _cachedMeta: {vScale}} = this; + const base = vScale.getBasePixel(); + const horizontal = vScale.isHorizontal(); + const ruler = this._getRuler(); + const firstOpts = this.resolveDataElementOptions(start, mode); + const sharedOptions = this.getSharedOptions(firstOpts); + const includeOptions = this.includeOptions(mode, sharedOptions); + this.updateSharedOptions(sharedOptions, mode, firstOpts); + for (let i = start; i < start + count; i++) { + const parsed = this.getParsed(i); + const vpixels = reset || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i); + const ipixels = this._calculateBarIndexPixels(i, ruler); + const stack = (parsed._stacks || {})[vScale.axis]; + const properties = { + horizontal, + base: vpixels.base, + enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom), + x: horizontal ? vpixels.head : ipixels.center, + y: horizontal ? ipixels.center : vpixels.head, + height: horizontal ? ipixels.size : Math.abs(vpixels.size), + width: horizontal ? Math.abs(vpixels.size) : ipixels.size + }; + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode); + } + const options = properties.options || bars[i].options; + setBorderSkipped(properties, options, stack, index); + setInflateAmount(properties, options, ruler.ratio); + this.updateElement(bars[i], i, properties, mode); + } + } + _getStacks(last, dataIndex) { + const meta = this._cachedMeta; + const iScale = meta.iScale; + const metasets = iScale.getMatchingVisibleMetas(this._type); + const stacked = iScale.options.stacked; + const ilen = metasets.length; + const stacks = []; + let i, item; + for (i = 0; i < ilen; ++i) { + item = metasets[i]; + if (!item.controller.options.grouped) { + continue; + } + if (typeof dataIndex !== 'undefined') { + const val = item.controller.getParsed(dataIndex)[ + item.controller._cachedMeta.vScale.axis + ]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(val) || isNaN(val)) { + continue; + } + } + if (stacked === false || stacks.indexOf(item.stack) === -1 || + (stacked === undefined && item.stack === undefined)) { + stacks.push(item.stack); + } + if (item.index === last) { + break; + } + } + if (!stacks.length) { + stacks.push(undefined); + } + return stacks; + } + _getStackCount(index) { + return this._getStacks(undefined, index).length; + } + _getStackIndex(datasetIndex, name, dataIndex) { + const stacks = this._getStacks(datasetIndex, dataIndex); + const index = (name !== undefined) + ? stacks.indexOf(name) + : -1; + return (index === -1) + ? stacks.length - 1 + : index; + } + _getRuler() { + const opts = this.options; + const meta = this._cachedMeta; + const iScale = meta.iScale; + const pixels = []; + let i, ilen; + for (i = 0, ilen = meta.data.length; i < ilen; ++i) { + pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i)); + } + const barThickness = opts.barThickness; + const min = barThickness || computeMinSampleSize(meta); + return { + min, + pixels, + start: iScale._startPixel, + end: iScale._endPixel, + stackCount: this._getStackCount(), + scale: iScale, + grouped: opts.grouped, + ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage + }; + } + _calculateBarValuePixels(index) { + const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this; + const actualBase = baseValue || 0; + const parsed = this.getParsed(index); + const custom = parsed._custom; + const floating = isFloatBar(custom); + let value = parsed[vScale.axis]; + let start = 0; + let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value; + let head, size; + if (length !== value) { + start = length - value; + length = value; + } + if (floating) { + value = custom.barStart; + length = custom.barEnd - custom.barStart; + if (value !== 0 && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(value) !== (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(custom.barEnd)) { + start = 0; + } + start += value; + } + const startValue = !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(baseValue) && !floating ? baseValue : start; + let base = vScale.getPixelForValue(startValue); + if (this.chart.getDataVisibility(index)) { + head = vScale.getPixelForValue(start + length); + } else { + head = base; + } + size = head - base; + if (Math.abs(size) < minBarLength) { + size = barSign(size, vScale, actualBase) * minBarLength; + if (value === actualBase) { + base -= size / 2; + } + head = base + size; + } + if (base === vScale.getPixelForValue(actualBase)) { + const halfGrid = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(size) * vScale.getLineWidthForValue(actualBase) / 2; + base += halfGrid; + size -= halfGrid; + } + return { + size, + base, + head, + center: head + size / 2 + }; + } + _calculateBarIndexPixels(index, ruler) { + const scale = ruler.scale; + const options = this.options; + const skipNull = options.skipNull; + const maxBarThickness = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(options.maxBarThickness, Infinity); + let center, size; + if (ruler.grouped) { + const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount; + const range = options.barThickness === 'flex' + ? computeFlexCategoryTraits(index, ruler, options, stackCount) + : computeFitCategoryTraits(index, ruler, options, stackCount); + const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined); + center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); + size = Math.min(maxBarThickness, range.chunk * range.ratio); + } else { + center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index); + size = Math.min(maxBarThickness, ruler.min * ruler.ratio); + } + return { + base: center - size / 2, + head: center + size / 2, + center, + size + }; + } + draw() { + const meta = this._cachedMeta; + const vScale = meta.vScale; + const rects = meta.data; + const ilen = rects.length; + let i = 0; + for (; i < ilen; ++i) { + if (this.getParsed(i)[vScale.axis] !== null) { + rects[i].draw(this._ctx); + } + } + } +} +BarController.id = 'bar'; +BarController.defaults = { + datasetElementType: false, + dataElementType: 'bar', + categoryPercentage: 0.8, + barPercentage: 0.9, + grouped: true, + animations: { + numbers: { + type: 'number', + properties: ['x', 'y', 'base', 'width', 'height'] + } + } +}; +BarController.overrides = { + scales: { + _index_: { + type: 'category', + offset: true, + grid: { + offset: true + } + }, + _value_: { + type: 'linear', + beginAtZero: true, + } + } +}; + +class BubbleController extends DatasetController { + initialize() { + this.enableOptionSharing = true; + super.initialize(); + } + parsePrimitiveData(meta, data, start, count) { + const parsed = super.parsePrimitiveData(meta, data, start, count); + for (let i = 0; i < parsed.length; i++) { + parsed[i]._custom = this.resolveDataElementOptions(i + start).radius; + } + return parsed; + } + parseArrayData(meta, data, start, count) { + const parsed = super.parseArrayData(meta, data, start, count); + for (let i = 0; i < parsed.length; i++) { + const item = data[start + i]; + parsed[i]._custom = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(item[2], this.resolveDataElementOptions(i + start).radius); + } + return parsed; + } + parseObjectData(meta, data, start, count) { + const parsed = super.parseObjectData(meta, data, start, count); + for (let i = 0; i < parsed.length; i++) { + const item = data[start + i]; + parsed[i]._custom = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius); + } + return parsed; + } + getMaxOverflow() { + const data = this._cachedMeta.data; + let max = 0; + for (let i = data.length - 1; i >= 0; --i) { + max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2); + } + return max > 0 && max; + } + getLabelAndValue(index) { + const meta = this._cachedMeta; + const {xScale, yScale} = meta; + const parsed = this.getParsed(index); + const x = xScale.getLabelForValue(parsed.x); + const y = yScale.getLabelForValue(parsed.y); + const r = parsed._custom; + return { + label: meta.label, + value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')' + }; + } + update(mode) { + const points = this._cachedMeta.data; + this.updateElements(points, 0, points.length, mode); + } + updateElements(points, start, count, mode) { + const reset = mode === 'reset'; + const {iScale, vScale} = this._cachedMeta; + const firstOpts = this.resolveDataElementOptions(start, mode); + const sharedOptions = this.getSharedOptions(firstOpts); + const includeOptions = this.includeOptions(mode, sharedOptions); + const iAxis = iScale.axis; + const vAxis = vScale.axis; + for (let i = start; i < start + count; i++) { + const point = points[i]; + const parsed = !reset && this.getParsed(i); + const properties = {}; + const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]); + const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]); + properties.skip = isNaN(iPixel) || isNaN(vPixel); + if (includeOptions) { + properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode); + if (reset) { + properties.options.radius = 0; + } + } + this.updateElement(point, i, properties, mode); + } + this.updateSharedOptions(sharedOptions, mode, firstOpts); + } + resolveDataElementOptions(index, mode) { + const parsed = this.getParsed(index); + let values = super.resolveDataElementOptions(index, mode); + if (values.$shared) { + values = Object.assign({}, values, {$shared: false}); + } + const radius = values.radius; + if (mode !== 'active') { + values.radius = 0; + } + values.radius += (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(parsed && parsed._custom, radius); + return values; + } +} +BubbleController.id = 'bubble'; +BubbleController.defaults = { + datasetElementType: false, + dataElementType: 'point', + animations: { + numbers: { + type: 'number', + properties: ['x', 'y', 'borderWidth', 'radius'] + } + } +}; +BubbleController.overrides = { + scales: { + x: { + type: 'linear' + }, + y: { + type: 'linear' + } + }, + plugins: { + tooltip: { + callbacks: { + title() { + return ''; + } + } + } + } +}; + +function getRatioAndOffset(rotation, circumference, cutout) { + let ratioX = 1; + let ratioY = 1; + let offsetX = 0; + let offsetY = 0; + if (circumference < _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T) { + const startAngle = rotation; + const endAngle = startAngle + circumference; + const startX = Math.cos(startAngle); + const startY = Math.sin(startAngle); + const endX = Math.cos(endAngle); + const endY = Math.sin(endAngle); + const calcMax = (angle, a, b) => (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout); + const calcMin = (angle, a, b) => (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout); + const maxX = calcMax(0, startX, endX); + const maxY = calcMax(_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H, startY, endY); + const minX = calcMin(_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P, startX, endX); + const minY = calcMin(_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H, startY, endY); + ratioX = (maxX - minX) / 2; + ratioY = (maxY - minY) / 2; + offsetX = -(maxX + minX) / 2; + offsetY = -(maxY + minY) / 2; + } + return {ratioX, ratioY, offsetX, offsetY}; +} +class DoughnutController extends DatasetController { + constructor(chart, datasetIndex) { + super(chart, datasetIndex); + this.enableOptionSharing = true; + this.innerRadius = undefined; + this.outerRadius = undefined; + this.offsetX = undefined; + this.offsetY = undefined; + } + linkScales() {} + parse(start, count) { + const data = this.getDataset().data; + const meta = this._cachedMeta; + if (this._parsing === false) { + meta._parsed = data; + } else { + let getter = (i) => +data[i]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(data[start])) { + const {key = 'value'} = this._parsing; + getter = (i) => +(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.f)(data[i], key); + } + let i, ilen; + for (i = start, ilen = start + count; i < ilen; ++i) { + meta._parsed[i] = getter(i); + } + } + } + _getRotation() { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.options.rotation - 90); + } + _getCircumference() { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.options.circumference); + } + _getRotationExtents() { + let min = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T; + let max = -_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T; + for (let i = 0; i < this.chart.data.datasets.length; ++i) { + if (this.chart.isDatasetVisible(i)) { + const controller = this.chart.getDatasetMeta(i).controller; + const rotation = controller._getRotation(); + const circumference = controller._getCircumference(); + min = Math.min(min, rotation); + max = Math.max(max, rotation + circumference); + } + } + return { + rotation: min, + circumference: max - min, + }; + } + update(mode) { + const chart = this.chart; + const {chartArea} = chart; + const meta = this._cachedMeta; + const arcs = meta.data; + const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing; + const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0); + const cutout = Math.min((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.m)(this.options.cutout, maxSize), 1); + const chartWeight = this._getRingWeight(this.index); + const {circumference, rotation} = this._getRotationExtents(); + const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout); + const maxWidth = (chartArea.width - spacing) / ratioX; + const maxHeight = (chartArea.height - spacing) / ratioY; + const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); + const outerRadius = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.n)(this.options.radius, maxRadius); + const innerRadius = Math.max(outerRadius * cutout, 0); + const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal(); + this.offsetX = offsetX * outerRadius; + this.offsetY = offsetY * outerRadius; + meta.total = this.calculateTotal(); + this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index); + this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0); + this.updateElements(arcs, 0, arcs.length, mode); + } + _circumference(i, reset) { + const opts = this.options; + const meta = this._cachedMeta; + const circumference = this._getCircumference(); + if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) { + return 0; + } + return this.calculateCircumference(meta._parsed[i] * circumference / _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T); + } + updateElements(arcs, start, count, mode) { + const reset = mode === 'reset'; + const chart = this.chart; + const chartArea = chart.chartArea; + const opts = chart.options; + const animationOpts = opts.animation; + const centerX = (chartArea.left + chartArea.right) / 2; + const centerY = (chartArea.top + chartArea.bottom) / 2; + const animateScale = reset && animationOpts.animateScale; + const innerRadius = animateScale ? 0 : this.innerRadius; + const outerRadius = animateScale ? 0 : this.outerRadius; + const firstOpts = this.resolveDataElementOptions(start, mode); + const sharedOptions = this.getSharedOptions(firstOpts); + const includeOptions = this.includeOptions(mode, sharedOptions); + let startAngle = this._getRotation(); + let i; + for (i = 0; i < start; ++i) { + startAngle += this._circumference(i, reset); + } + for (i = start; i < start + count; ++i) { + const circumference = this._circumference(i, reset); + const arc = arcs[i]; + const properties = { + x: centerX + this.offsetX, + y: centerY + this.offsetY, + startAngle, + endAngle: startAngle + circumference, + circumference, + outerRadius, + innerRadius + }; + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode); + } + startAngle += circumference; + this.updateElement(arc, i, properties, mode); + } + this.updateSharedOptions(sharedOptions, mode, firstOpts); + } + calculateTotal() { + const meta = this._cachedMeta; + const metaData = meta.data; + let total = 0; + let i; + for (i = 0; i < metaData.length; i++) { + const value = meta._parsed[i]; + if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) { + total += Math.abs(value); + } + } + return total; + } + calculateCircumference(value) { + const total = this._cachedMeta.total; + if (total > 0 && !isNaN(value)) { + return _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T * (Math.abs(value) / total); + } + return 0; + } + getLabelAndValue(index) { + const meta = this._cachedMeta; + const chart = this.chart; + const labels = chart.data.labels || []; + const value = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.o)(meta._parsed[index], chart.options.locale); + return { + label: labels[index] || '', + value, + }; + } + getMaxBorderWidth(arcs) { + let max = 0; + const chart = this.chart; + let i, ilen, meta, controller, options; + if (!arcs) { + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + arcs = meta.data; + controller = meta.controller; + break; + } + } + } + if (!arcs) { + return 0; + } + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + options = controller.resolveDataElementOptions(i); + if (options.borderAlign !== 'inner') { + max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0); + } + } + return max; + } + getMaxOffset(arcs) { + let max = 0; + for (let i = 0, ilen = arcs.length; i < ilen; ++i) { + const options = this.resolveDataElementOptions(i); + max = Math.max(max, options.offset || 0, options.hoverOffset || 0); + } + return max; + } + _getRingWeightOffset(datasetIndex) { + let ringWeightOffset = 0; + for (let i = 0; i < datasetIndex; ++i) { + if (this.chart.isDatasetVisible(i)) { + ringWeightOffset += this._getRingWeight(i); + } + } + return ringWeightOffset; + } + _getRingWeight(datasetIndex) { + return Math.max((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(this.chart.data.datasets[datasetIndex].weight, 1), 0); + } + _getVisibleDatasetWeightTotal() { + return this._getRingWeightOffset(this.chart.data.datasets.length) || 1; + } +} +DoughnutController.id = 'doughnut'; +DoughnutController.defaults = { + datasetElementType: false, + dataElementType: 'arc', + animation: { + animateRotate: true, + animateScale: false + }, + animations: { + numbers: { + type: 'number', + properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing'] + }, + }, + cutout: '50%', + rotation: 0, + circumference: 360, + radius: '100%', + spacing: 0, + indexAxis: 'r', +}; +DoughnutController.descriptors = { + _scriptable: (name) => name !== 'spacing', + _indexable: (name) => name !== 'spacing', +}; +DoughnutController.overrides = { + aspectRatio: 1, + plugins: { + legend: { + labels: { + generateLabels(chart) { + const data = chart.data; + if (data.labels.length && data.datasets.length) { + const {labels: {pointStyle}} = chart.legend.options; + return data.labels.map((label, i) => { + const meta = chart.getDatasetMeta(0); + const style = meta.controller.getStyle(i); + return { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + lineWidth: style.borderWidth, + pointStyle: pointStyle, + hidden: !chart.getDataVisibility(i), + index: i + }; + }); + } + return []; + } + }, + onClick(e, legendItem, legend) { + legend.chart.toggleDataVisibility(legendItem.index); + legend.chart.update(); + } + }, + tooltip: { + callbacks: { + title() { + return ''; + }, + label(tooltipItem) { + let dataLabel = tooltipItem.label; + const value = ': ' + tooltipItem.formattedValue; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(dataLabel)) { + dataLabel = dataLabel.slice(); + dataLabel[0] += value; + } else { + dataLabel += value; + } + return dataLabel; + } + } + } + } +}; + +class LineController extends DatasetController { + initialize() { + this.enableOptionSharing = true; + super.initialize(); + } + update(mode) { + const meta = this._cachedMeta; + const {dataset: line, data: points = [], _dataset} = meta; + const animationsDisabled = this.chart._animationsDisabled; + let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled); + this._drawStart = start; + this._drawCount = count; + if (scaleRangesChanged(meta)) { + start = 0; + count = points.length; + } + line._chart = this.chart; + line._datasetIndex = this.index; + line._decimated = !!_dataset._decimated; + line.points = points; + const options = this.resolveDatasetElementOptions(mode); + if (!this.options.showLine) { + options.borderWidth = 0; + } + options.segment = this.options.segment; + this.updateElement(line, undefined, { + animated: !animationsDisabled, + options + }, mode); + this.updateElements(points, start, count, mode); + } + updateElements(points, start, count, mode) { + const reset = mode === 'reset'; + const {iScale, vScale, _stacked, _dataset} = this._cachedMeta; + const firstOpts = this.resolveDataElementOptions(start, mode); + const sharedOptions = this.getSharedOptions(firstOpts); + const includeOptions = this.includeOptions(mode, sharedOptions); + const iAxis = iScale.axis; + const vAxis = vScale.axis; + const {spanGaps, segment} = this.options; + const maxGapLength = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.q)(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; + const directUpdate = this.chart._animationsDisabled || reset || mode === 'none'; + let prevParsed = start > 0 && this.getParsed(start - 1); + for (let i = start; i < start + count; ++i) { + const point = points[i]; + const parsed = this.getParsed(i); + const properties = directUpdate ? point : {}; + const nullData = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(parsed[vAxis]); + const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i); + const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i); + properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData; + properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength; + if (segment) { + properties.parsed = parsed; + properties.raw = _dataset.data[i]; + } + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode); + } + if (!directUpdate) { + this.updateElement(point, i, properties, mode); + } + prevParsed = parsed; + } + this.updateSharedOptions(sharedOptions, mode, firstOpts); + } + getMaxOverflow() { + const meta = this._cachedMeta; + const dataset = meta.dataset; + const border = dataset.options && dataset.options.borderWidth || 0; + const data = meta.data || []; + if (!data.length) { + return border; + } + const firstPoint = data[0].size(this.resolveDataElementOptions(0)); + const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1)); + return Math.max(border, firstPoint, lastPoint) / 2; + } + draw() { + const meta = this._cachedMeta; + meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis); + super.draw(); + } +} +LineController.id = 'line'; +LineController.defaults = { + datasetElementType: 'line', + dataElementType: 'point', + showLine: true, + spanGaps: false, +}; +LineController.overrides = { + scales: { + _index_: { + type: 'category', + }, + _value_: { + type: 'linear', + }, + } +}; +function getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) { + const pointCount = points.length; + let start = 0; + let count = pointCount; + if (meta._sorted) { + const {iScale, _parsed} = meta; + const axis = iScale.axis; + const {min, max, minDefined, maxDefined} = iScale.getUserBounds(); + if (minDefined) { + start = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(Math.min( + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(_parsed, iScale.axis, min).lo, + animationsDisabled ? pointCount : (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(points, axis, iScale.getPixelForValue(min)).lo), + 0, pointCount - 1); + } + if (maxDefined) { + count = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(Math.max( + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(_parsed, iScale.axis, max).hi + 1, + animationsDisabled ? 0 : (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(points, axis, iScale.getPixelForValue(max)).hi + 1), + start, pointCount) - start; + } else { + count = pointCount - start; + } + } + return {start, count}; +} +function scaleRangesChanged(meta) { + const {xScale, yScale, _scaleRanges} = meta; + const newRanges = { + xmin: xScale.min, + xmax: xScale.max, + ymin: yScale.min, + ymax: yScale.max + }; + if (!_scaleRanges) { + meta._scaleRanges = newRanges; + return true; + } + const changed = _scaleRanges.xmin !== xScale.min + || _scaleRanges.xmax !== xScale.max + || _scaleRanges.ymin !== yScale.min + || _scaleRanges.ymax !== yScale.max; + Object.assign(_scaleRanges, newRanges); + return changed; +} + +class PolarAreaController extends DatasetController { + constructor(chart, datasetIndex) { + super(chart, datasetIndex); + this.innerRadius = undefined; + this.outerRadius = undefined; + } + getLabelAndValue(index) { + const meta = this._cachedMeta; + const chart = this.chart; + const labels = chart.data.labels || []; + const value = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.o)(meta._parsed[index].r, chart.options.locale); + return { + label: labels[index] || '', + value, + }; + } + update(mode) { + const arcs = this._cachedMeta.data; + this._updateRadius(); + this.updateElements(arcs, 0, arcs.length, mode); + } + _updateRadius() { + const chart = this.chart; + const chartArea = chart.chartArea; + const opts = chart.options; + const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); + const outerRadius = Math.max(minSize / 2, 0); + const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); + const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount(); + this.outerRadius = outerRadius - (radiusLength * this.index); + this.innerRadius = this.outerRadius - radiusLength; + } + updateElements(arcs, start, count, mode) { + const reset = mode === 'reset'; + const chart = this.chart; + const dataset = this.getDataset(); + const opts = chart.options; + const animationOpts = opts.animation; + const scale = this._cachedMeta.rScale; + const centerX = scale.xCenter; + const centerY = scale.yCenter; + const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P; + let angle = datasetStartAngle; + let i; + const defaultAngle = 360 / this.countVisibleElements(); + for (i = 0; i < start; ++i) { + angle += this._computeAngle(i, mode, defaultAngle); + } + for (i = start; i < start + count; i++) { + const arc = arcs[i]; + let startAngle = angle; + let endAngle = angle + this._computeAngle(i, mode, defaultAngle); + let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0; + angle = endAngle; + if (reset) { + if (animationOpts.animateScale) { + outerRadius = 0; + } + if (animationOpts.animateRotate) { + startAngle = endAngle = datasetStartAngle; + } + } + const properties = { + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius, + startAngle, + endAngle, + options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode) + }; + this.updateElement(arc, i, properties, mode); + } + } + countVisibleElements() { + const dataset = this.getDataset(); + const meta = this._cachedMeta; + let count = 0; + meta.data.forEach((element, index) => { + if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) { + count++; + } + }); + return count; + } + _computeAngle(index, mode, defaultAngle) { + return this.chart.getDataVisibility(index) + ? (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.resolveDataElementOptions(index, mode).angle || defaultAngle) + : 0; + } +} +PolarAreaController.id = 'polarArea'; +PolarAreaController.defaults = { + dataElementType: 'arc', + animation: { + animateRotate: true, + animateScale: true + }, + animations: { + numbers: { + type: 'number', + properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius'] + }, + }, + indexAxis: 'r', + startAngle: 0, +}; +PolarAreaController.overrides = { + aspectRatio: 1, + plugins: { + legend: { + labels: { + generateLabels(chart) { + const data = chart.data; + if (data.labels.length && data.datasets.length) { + const {labels: {pointStyle}} = chart.legend.options; + return data.labels.map((label, i) => { + const meta = chart.getDatasetMeta(0); + const style = meta.controller.getStyle(i); + return { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + lineWidth: style.borderWidth, + pointStyle: pointStyle, + hidden: !chart.getDataVisibility(i), + index: i + }; + }); + } + return []; + } + }, + onClick(e, legendItem, legend) { + legend.chart.toggleDataVisibility(legendItem.index); + legend.chart.update(); + } + }, + tooltip: { + callbacks: { + title() { + return ''; + }, + label(context) { + return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue; + } + } + } + }, + scales: { + r: { + type: 'radialLinear', + angleLines: { + display: false + }, + beginAtZero: true, + grid: { + circular: true + }, + pointLabels: { + display: false + }, + startAngle: 0 + } + } +}; + +class PieController extends DoughnutController { +} +PieController.id = 'pie'; +PieController.defaults = { + cutout: 0, + rotation: 0, + circumference: 360, + radius: '100%' +}; + +class RadarController extends DatasetController { + getLabelAndValue(index) { + const vScale = this._cachedMeta.vScale; + const parsed = this.getParsed(index); + return { + label: vScale.getLabels()[index], + value: '' + vScale.getLabelForValue(parsed[vScale.axis]) + }; + } + update(mode) { + const meta = this._cachedMeta; + const line = meta.dataset; + const points = meta.data || []; + const labels = meta.iScale.getLabels(); + line.points = points; + if (mode !== 'resize') { + const options = this.resolveDatasetElementOptions(mode); + if (!this.options.showLine) { + options.borderWidth = 0; + } + const properties = { + _loop: true, + _fullLoop: labels.length === points.length, + options + }; + this.updateElement(line, undefined, properties, mode); + } + this.updateElements(points, 0, points.length, mode); + } + updateElements(points, start, count, mode) { + const dataset = this.getDataset(); + const scale = this._cachedMeta.rScale; + const reset = mode === 'reset'; + for (let i = start; i < start + count; i++) { + const point = points[i]; + const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode); + const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]); + const x = reset ? scale.xCenter : pointPosition.x; + const y = reset ? scale.yCenter : pointPosition.y; + const properties = { + x, + y, + angle: pointPosition.angle, + skip: isNaN(x) || isNaN(y), + options + }; + this.updateElement(point, i, properties, mode); + } + } +} +RadarController.id = 'radar'; +RadarController.defaults = { + datasetElementType: 'line', + dataElementType: 'point', + indexAxis: 'r', + showLine: true, + elements: { + line: { + fill: 'start' + } + }, +}; +RadarController.overrides = { + aspectRatio: 1, + scales: { + r: { + type: 'radialLinear', + } + } +}; + +class ScatterController extends LineController { +} +ScatterController.id = 'scatter'; +ScatterController.defaults = { + showLine: false, + fill: false +}; +ScatterController.overrides = { + interaction: { + mode: 'point' + }, + plugins: { + tooltip: { + callbacks: { + title() { + return ''; + }, + label(item) { + return '(' + item.label + ', ' + item.formattedValue + ')'; + } + } + } + }, + scales: { + x: { + type: 'linear' + }, + y: { + type: 'linear' + } + } +}; + +var controllers = /*#__PURE__*/Object.freeze({ +__proto__: null, +BarController: BarController, +BubbleController: BubbleController, +DoughnutController: DoughnutController, +LineController: LineController, +PolarAreaController: PolarAreaController, +PieController: PieController, +RadarController: RadarController, +ScatterController: ScatterController +}); + +function abstract() { + throw new Error('This method is not implemented: Check that a complete date adapter is provided.'); +} +class DateAdapter { + constructor(options) { + this.options = options || {}; + } + formats() { + return abstract(); + } + parse(value, format) { + return abstract(); + } + format(timestamp, format) { + return abstract(); + } + add(timestamp, amount, unit) { + return abstract(); + } + diff(a, b, unit) { + return abstract(); + } + startOf(timestamp, unit, weekday) { + return abstract(); + } + endOf(timestamp, unit) { + return abstract(); + } +} +DateAdapter.override = function(members) { + Object.assign(DateAdapter.prototype, members); +}; +var adapters = { + _date: DateAdapter +}; + +function getRelativePosition(e, chart) { + if ('native' in e) { + return { + x: e.x, + y: e.y + }; + } + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.y)(e, chart); +} +function evaluateAllVisibleItems(chart, handler) { + const metasets = chart.getSortedVisibleDatasetMetas(); + let index, data, element; + for (let i = 0, ilen = metasets.length; i < ilen; ++i) { + ({index, data} = metasets[i]); + for (let j = 0, jlen = data.length; j < jlen; ++j) { + element = data[j]; + if (!element.skip) { + handler(element, index, j); + } + } + } +} +function binarySearch(metaset, axis, value, intersect) { + const {controller, data, _sorted} = metaset; + const iScale = controller._cachedMeta.iScale; + if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) { + const lookupMethod = iScale._reversePixels ? _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.A : _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x; + if (!intersect) { + return lookupMethod(data, axis, value); + } else if (controller._sharedOptions) { + const el = data[0]; + const range = typeof el.getRange === 'function' && el.getRange(axis); + if (range) { + const start = lookupMethod(data, axis, value - range); + const end = lookupMethod(data, axis, value + range); + return {lo: start.lo, hi: end.hi}; + } + } + } + return {lo: 0, hi: data.length - 1}; +} +function optimizedEvaluateItems(chart, axis, position, handler, intersect) { + const metasets = chart.getSortedVisibleDatasetMetas(); + const value = position[axis]; + for (let i = 0, ilen = metasets.length; i < ilen; ++i) { + const {index, data} = metasets[i]; + const {lo, hi} = binarySearch(metasets[i], axis, value, intersect); + for (let j = lo; j <= hi; ++j) { + const element = data[j]; + if (!element.skip) { + handler(element, index, j); + } + } + } +} +function getDistanceMetricForAxis(axis) { + const useX = axis.indexOf('x') !== -1; + const useY = axis.indexOf('y') !== -1; + return function(pt1, pt2) { + const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; +} +function getIntersectItems(chart, position, axis, useFinalPosition) { + const items = []; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.z)(position, chart.chartArea, chart._minPadding)) { + return items; + } + const evaluationFunc = function(element, datasetIndex, index) { + if (element.inRange(position.x, position.y, useFinalPosition)) { + items.push({element, datasetIndex, index}); + } + }; + optimizedEvaluateItems(chart, axis, position, evaluationFunc, true); + return items; +} +function getNearestRadialItems(chart, position, axis, useFinalPosition) { + let items = []; + function evaluationFunc(element, datasetIndex, index) { + const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition); + const {angle} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.B)(element, {x: position.x, y: position.y}); + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle)) { + items.push({element, datasetIndex, index}); + } + } + optimizedEvaluateItems(chart, axis, position, evaluationFunc); + return items; +} +function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) { + let items = []; + const distanceMetric = getDistanceMetricForAxis(axis); + let minDistance = Number.POSITIVE_INFINITY; + function evaluationFunc(element, datasetIndex, index) { + const inRange = element.inRange(position.x, position.y, useFinalPosition); + if (intersect && !inRange) { + return; + } + const center = element.getCenterPoint(useFinalPosition); + const pointInArea = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.z)(center, chart.chartArea, chart._minPadding); + if (!pointInArea && !inRange) { + return; + } + const distance = distanceMetric(position, center); + if (distance < minDistance) { + items = [{element, datasetIndex, index}]; + minDistance = distance; + } else if (distance === minDistance) { + items.push({element, datasetIndex, index}); + } + } + optimizedEvaluateItems(chart, axis, position, evaluationFunc); + return items; +} +function getNearestItems(chart, position, axis, intersect, useFinalPosition) { + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.z)(position, chart.chartArea, chart._minPadding)) { + return []; + } + return axis === 'r' && !intersect + ? getNearestRadialItems(chart, position, axis, useFinalPosition) + : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition); +} +function getAxisItems(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const items = []; + const axis = options.axis; + const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange'; + let intersectsItem = false; + evaluateAllVisibleItems(chart, (element, datasetIndex, index) => { + if (element[rangeMethod](position[axis], useFinalPosition)) { + items.push({element, datasetIndex, index}); + } + if (element.inRange(position.x, position.y, useFinalPosition)) { + intersectsItem = true; + } + }); + if (options.intersect && !intersectsItem) { + return []; + } + return items; +} +var Interaction = { + modes: { + index(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || 'x'; + const items = options.intersect + ? getIntersectItems(chart, position, axis, useFinalPosition) + : getNearestItems(chart, position, axis, false, useFinalPosition); + const elements = []; + if (!items.length) { + return []; + } + chart.getSortedVisibleDatasetMetas().forEach((meta) => { + const index = items[0].index; + const element = meta.data[index]; + if (element && !element.skip) { + elements.push({element, datasetIndex: meta.index, index}); + } + }); + return elements; + }, + dataset(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || 'xy'; + let items = options.intersect + ? getIntersectItems(chart, position, axis, useFinalPosition) : + getNearestItems(chart, position, axis, false, useFinalPosition); + if (items.length > 0) { + const datasetIndex = items[0].datasetIndex; + const data = chart.getDatasetMeta(datasetIndex).data; + items = []; + for (let i = 0; i < data.length; ++i) { + items.push({element: data[i], datasetIndex, index: i}); + } + } + return items; + }, + point(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || 'xy'; + return getIntersectItems(chart, position, axis, useFinalPosition); + }, + nearest(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || 'xy'; + return getNearestItems(chart, position, axis, options.intersect, useFinalPosition); + }, + x(chart, e, options, useFinalPosition) { + return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition); + }, + y(chart, e, options, useFinalPosition) { + return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition); + } + } +}; + +const STATIC_POSITIONS = ['left', 'top', 'right', 'bottom']; +function filterByPosition(array, position) { + return array.filter(v => v.pos === position); +} +function filterDynamicPositionByAxis(array, axis) { + return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis); +} +function sortByWeight(array, reverse) { + return array.sort((a, b) => { + const v0 = reverse ? b : a; + const v1 = reverse ? a : b; + return v0.weight === v1.weight ? + v0.index - v1.index : + v0.weight - v1.weight; + }); +} +function wrapBoxes(boxes) { + const layoutBoxes = []; + let i, ilen, box, pos, stack, stackWeight; + for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) { + box = boxes[i]; + ({position: pos, options: {stack, stackWeight = 1}} = box); + layoutBoxes.push({ + index: i, + box, + pos, + horizontal: box.isHorizontal(), + weight: box.weight, + stack: stack && (pos + stack), + stackWeight + }); + } + return layoutBoxes; +} +function buildStacks(layouts) { + const stacks = {}; + for (const wrap of layouts) { + const {stack, pos, stackWeight} = wrap; + if (!stack || !STATIC_POSITIONS.includes(pos)) { + continue; + } + const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0}); + _stack.count++; + _stack.weight += stackWeight; + } + return stacks; +} +function setLayoutDims(layouts, params) { + const stacks = buildStacks(layouts); + const {vBoxMaxWidth, hBoxMaxHeight} = params; + let i, ilen, layout; + for (i = 0, ilen = layouts.length; i < ilen; ++i) { + layout = layouts[i]; + const {fullSize} = layout.box; + const stack = stacks[layout.stack]; + const factor = stack && layout.stackWeight / stack.weight; + if (layout.horizontal) { + layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth; + layout.height = hBoxMaxHeight; + } else { + layout.width = vBoxMaxWidth; + layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight; + } + } + return stacks; +} +function buildLayoutBoxes(boxes) { + const layoutBoxes = wrapBoxes(boxes); + const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true); + const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true); + const right = sortByWeight(filterByPosition(layoutBoxes, 'right')); + const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true); + const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom')); + const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x'); + const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y'); + return { + fullSize, + leftAndTop: left.concat(top), + rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal), + chartArea: filterByPosition(layoutBoxes, 'chartArea'), + vertical: left.concat(right).concat(centerVertical), + horizontal: top.concat(bottom).concat(centerHorizontal) + }; +} +function getCombinedMax(maxPadding, chartArea, a, b) { + return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]); +} +function updateMaxPadding(maxPadding, boxPadding) { + maxPadding.top = Math.max(maxPadding.top, boxPadding.top); + maxPadding.left = Math.max(maxPadding.left, boxPadding.left); + maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom); + maxPadding.right = Math.max(maxPadding.right, boxPadding.right); +} +function updateDims(chartArea, params, layout, stacks) { + const {pos, box} = layout; + const maxPadding = chartArea.maxPadding; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(pos)) { + if (layout.size) { + chartArea[pos] -= layout.size; + } + const stack = stacks[layout.stack] || {size: 0, count: 1}; + stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width); + layout.size = stack.size / stack.count; + chartArea[pos] += layout.size; + } + if (box.getPadding) { + updateMaxPadding(maxPadding, box.getPadding()); + } + const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right')); + const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom')); + const widthChanged = newWidth !== chartArea.w; + const heightChanged = newHeight !== chartArea.h; + chartArea.w = newWidth; + chartArea.h = newHeight; + return layout.horizontal + ? {same: widthChanged, other: heightChanged} + : {same: heightChanged, other: widthChanged}; +} +function handleMaxPadding(chartArea) { + const maxPadding = chartArea.maxPadding; + function updatePos(pos) { + const change = Math.max(maxPadding[pos] - chartArea[pos], 0); + chartArea[pos] += change; + return change; + } + chartArea.y += updatePos('top'); + chartArea.x += updatePos('left'); + updatePos('right'); + updatePos('bottom'); +} +function getMargins(horizontal, chartArea) { + const maxPadding = chartArea.maxPadding; + function marginForPositions(positions) { + const margin = {left: 0, top: 0, right: 0, bottom: 0}; + positions.forEach((pos) => { + margin[pos] = Math.max(chartArea[pos], maxPadding[pos]); + }); + return margin; + } + return horizontal + ? marginForPositions(['left', 'right']) + : marginForPositions(['top', 'bottom']); +} +function fitBoxes(boxes, chartArea, params, stacks) { + const refitBoxes = []; + let i, ilen, layout, box, refit, changed; + for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) { + layout = boxes[i]; + box = layout.box; + box.update( + layout.width || chartArea.w, + layout.height || chartArea.h, + getMargins(layout.horizontal, chartArea) + ); + const {same, other} = updateDims(chartArea, params, layout, stacks); + refit |= same && refitBoxes.length; + changed = changed || other; + if (!box.fullSize) { + refitBoxes.push(layout); + } + } + return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed; +} +function setBoxDims(box, left, top, width, height) { + box.top = top; + box.left = left; + box.right = left + width; + box.bottom = top + height; + box.width = width; + box.height = height; +} +function placeBoxes(boxes, chartArea, params, stacks) { + const userPadding = params.padding; + let {x, y} = chartArea; + for (const layout of boxes) { + const box = layout.box; + const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1}; + const weight = (layout.stackWeight / stack.weight) || 1; + if (layout.horizontal) { + const width = chartArea.w * weight; + const height = stack.size || box.height; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.j)(stack.start)) { + y = stack.start; + } + if (box.fullSize) { + setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height); + } else { + setBoxDims(box, chartArea.left + stack.placed, y, width, height); + } + stack.start = y; + stack.placed += width; + y = box.bottom; + } else { + const height = chartArea.h * weight; + const width = stack.size || box.width; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.j)(stack.start)) { + x = stack.start; + } + if (box.fullSize) { + setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top); + } else { + setBoxDims(box, x, chartArea.top + stack.placed, width, height); + } + stack.start = x; + stack.placed += height; + x = box.right; + } + } + chartArea.x = x; + chartArea.y = y; +} +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.set('layout', { + autoPadding: true, + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } +}); +var layouts = { + addBox(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } + item.fullSize = item.fullSize || false; + item.position = item.position || 'top'; + item.weight = item.weight || 0; + item._layers = item._layers || function() { + return [{ + z: 0, + draw(chartArea) { + item.draw(chartArea); + } + }]; + }; + chart.boxes.push(item); + }, + removeBox(chart, layoutItem) { + const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; + if (index !== -1) { + chart.boxes.splice(index, 1); + } + }, + configure(chart, item, options) { + item.fullSize = options.fullSize; + item.position = options.position; + item.weight = options.weight; + }, + update(chart, width, height, minPadding) { + if (!chart) { + return; + } + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(chart.options.layout.padding); + const availableWidth = Math.max(width - padding.width, 0); + const availableHeight = Math.max(height - padding.height, 0); + const boxes = buildLayoutBoxes(chart.boxes); + const verticalBoxes = boxes.vertical; + const horizontalBoxes = boxes.horizontal; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(chart.boxes, box => { + if (typeof box.beforeLayout === 'function') { + box.beforeLayout(); + } + }); + const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => + wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1; + const params = Object.freeze({ + outerWidth: width, + outerHeight: height, + padding, + availableWidth, + availableHeight, + vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount, + hBoxMaxHeight: availableHeight / 2 + }); + const maxPadding = Object.assign({}, padding); + updateMaxPadding(maxPadding, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(minPadding)); + const chartArea = Object.assign({ + maxPadding, + w: availableWidth, + h: availableHeight, + x: padding.left, + y: padding.top + }, padding); + const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); + fitBoxes(boxes.fullSize, chartArea, params, stacks); + fitBoxes(verticalBoxes, chartArea, params, stacks); + if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) { + fitBoxes(verticalBoxes, chartArea, params, stacks); + } + handleMaxPadding(chartArea); + placeBoxes(boxes.leftAndTop, chartArea, params, stacks); + chartArea.x += chartArea.w; + chartArea.y += chartArea.h; + placeBoxes(boxes.rightAndBottom, chartArea, params, stacks); + chart.chartArea = { + left: chartArea.left, + top: chartArea.top, + right: chartArea.left + chartArea.w, + bottom: chartArea.top + chartArea.h, + height: chartArea.h, + width: chartArea.w, + }; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(boxes.chartArea, (layout) => { + const box = layout.box; + Object.assign(box, chart.chartArea); + box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0}); + }); + } +}; + +class BasePlatform { + acquireContext(canvas, aspectRatio) {} + releaseContext(context) { + return false; + } + addEventListener(chart, type, listener) {} + removeEventListener(chart, type, listener) {} + getDevicePixelRatio() { + return 1; + } + getMaximumSize(element, width, height, aspectRatio) { + width = Math.max(0, width || element.width); + height = height || element.height; + return { + width, + height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height) + }; + } + isAttached(canvas) { + return true; + } + updateConfig(config) { + } +} + +class BasicPlatform extends BasePlatform { + acquireContext(item) { + return item && item.getContext && item.getContext('2d') || null; + } + updateConfig(config) { + config.options.animation = false; + } +} + +const EXPANDO_KEY = '$chartjs'; +const EVENT_TYPES = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup', + pointerenter: 'mouseenter', + pointerdown: 'mousedown', + pointermove: 'mousemove', + pointerup: 'mouseup', + pointerleave: 'mouseout', + pointerout: 'mouseout' +}; +const isNullOrEmpty = value => value === null || value === ''; +function initCanvas(canvas, aspectRatio) { + const style = canvas.style; + const renderHeight = canvas.getAttribute('height'); + const renderWidth = canvas.getAttribute('width'); + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } + } + }; + style.display = style.display || 'block'; + style.boxSizing = style.boxSizing || 'border-box'; + if (isNullOrEmpty(renderWidth)) { + const displayWidth = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.G)(canvas, 'width'); + if (displayWidth !== undefined) { + canvas.width = displayWidth; + } + } + if (isNullOrEmpty(renderHeight)) { + if (canvas.style.height === '') { + canvas.height = canvas.width / (aspectRatio || 2); + } else { + const displayHeight = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.G)(canvas, 'height'); + if (displayHeight !== undefined) { + canvas.height = displayHeight; + } + } + } + return canvas; +} +const eventListenerOptions = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.J ? {passive: true} : false; +function addListener(node, type, listener) { + node.addEventListener(type, listener, eventListenerOptions); +} +function removeListener(chart, type, listener) { + chart.canvas.removeEventListener(type, listener, eventListenerOptions); +} +function fromNativeEvent(event, chart) { + const type = EVENT_TYPES[event.type] || event.type; + const {x, y} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.y)(event, chart); + return { + type, + chart, + native: event, + x: x !== undefined ? x : null, + y: y !== undefined ? y : null, + }; +} +function nodeListContains(nodeList, canvas) { + for (const node of nodeList) { + if (node === canvas || node.contains(canvas)) { + return true; + } + } +} +function createAttachObserver(chart, type, listener) { + const canvas = chart.canvas; + const observer = new MutationObserver(entries => { + let trigger = false; + for (const entry of entries) { + trigger = trigger || nodeListContains(entry.addedNodes, canvas); + trigger = trigger && !nodeListContains(entry.removedNodes, canvas); + } + if (trigger) { + listener(); + } + }); + observer.observe(document, {childList: true, subtree: true}); + return observer; +} +function createDetachObserver(chart, type, listener) { + const canvas = chart.canvas; + const observer = new MutationObserver(entries => { + let trigger = false; + for (const entry of entries) { + trigger = trigger || nodeListContains(entry.removedNodes, canvas); + trigger = trigger && !nodeListContains(entry.addedNodes, canvas); + } + if (trigger) { + listener(); + } + }); + observer.observe(document, {childList: true, subtree: true}); + return observer; +} +const drpListeningCharts = new Map(); +let oldDevicePixelRatio = 0; +function onWindowResize() { + const dpr = window.devicePixelRatio; + if (dpr === oldDevicePixelRatio) { + return; + } + oldDevicePixelRatio = dpr; + drpListeningCharts.forEach((resize, chart) => { + if (chart.currentDevicePixelRatio !== dpr) { + resize(); + } + }); +} +function listenDevicePixelRatioChanges(chart, resize) { + if (!drpListeningCharts.size) { + window.addEventListener('resize', onWindowResize); + } + drpListeningCharts.set(chart, resize); +} +function unlistenDevicePixelRatioChanges(chart) { + drpListeningCharts.delete(chart); + if (!drpListeningCharts.size) { + window.removeEventListener('resize', onWindowResize); + } +} +function createResizeObserver(chart, type, listener) { + const canvas = chart.canvas; + const container = canvas && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.F)(canvas); + if (!container) { + return; + } + const resize = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.I)((width, height) => { + const w = container.clientWidth; + listener(width, height); + if (w < container.clientWidth) { + listener(); + } + }, window); + const observer = new ResizeObserver(entries => { + const entry = entries[0]; + const width = entry.contentRect.width; + const height = entry.contentRect.height; + if (width === 0 && height === 0) { + return; + } + resize(width, height); + }); + observer.observe(container); + listenDevicePixelRatioChanges(chart, resize); + return observer; +} +function releaseObserver(chart, type, observer) { + if (observer) { + observer.disconnect(); + } + if (type === 'resize') { + unlistenDevicePixelRatioChanges(chart); + } +} +function createProxyAndListen(chart, type, listener) { + const canvas = chart.canvas; + const proxy = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.I)((event) => { + if (chart.ctx !== null) { + listener(fromNativeEvent(event, chart)); + } + }, chart, (args) => { + const event = args[0]; + return [event, event.offsetX, event.offsetY]; + }); + addListener(canvas, type, proxy); + return proxy; +} +class DomPlatform extends BasePlatform { + acquireContext(canvas, aspectRatio) { + const context = canvas && canvas.getContext && canvas.getContext('2d'); + if (context && context.canvas === canvas) { + initCanvas(canvas, aspectRatio); + return context; + } + return null; + } + releaseContext(context) { + const canvas = context.canvas; + if (!canvas[EXPANDO_KEY]) { + return false; + } + const initial = canvas[EXPANDO_KEY].initial; + ['height', 'width'].forEach((prop) => { + const value = initial[prop]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(value)) { + canvas.removeAttribute(prop); + } else { + canvas.setAttribute(prop, value); + } + }); + const style = initial.style || {}; + Object.keys(style).forEach((key) => { + canvas.style[key] = style[key]; + }); + canvas.width = canvas.width; + delete canvas[EXPANDO_KEY]; + return true; + } + addEventListener(chart, type, listener) { + this.removeEventListener(chart, type); + const proxies = chart.$proxies || (chart.$proxies = {}); + const handlers = { + attach: createAttachObserver, + detach: createDetachObserver, + resize: createResizeObserver + }; + const handler = handlers[type] || createProxyAndListen; + proxies[type] = handler(chart, type, listener); + } + removeEventListener(chart, type) { + const proxies = chart.$proxies || (chart.$proxies = {}); + const proxy = proxies[type]; + if (!proxy) { + return; + } + const handlers = { + attach: releaseObserver, + detach: releaseObserver, + resize: releaseObserver + }; + const handler = handlers[type] || removeListener; + handler(chart, type, proxy); + proxies[type] = undefined; + } + getDevicePixelRatio() { + return window.devicePixelRatio; + } + getMaximumSize(canvas, width, height, aspectRatio) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.E)(canvas, width, height, aspectRatio); + } + isAttached(canvas) { + const container = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.F)(canvas); + return !!(container && container.isConnected); + } +} + +function _detectPlatform(canvas) { + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.K)() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) { + return BasicPlatform; + } + return DomPlatform; +} + +class Element { + constructor() { + this.x = undefined; + this.y = undefined; + this.active = false; + this.options = undefined; + this.$animations = undefined; + } + tooltipPosition(useFinalPosition) { + const {x, y} = this.getProps(['x', 'y'], useFinalPosition); + return {x, y}; + } + hasValue() { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.q)(this.x) && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.q)(this.y); + } + getProps(props, final) { + const anims = this.$animations; + if (!final || !anims) { + return this; + } + const ret = {}; + props.forEach(prop => { + ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop]; + }); + return ret; + } +} +Element.defaults = {}; +Element.defaultRoutes = undefined; + +const formatters = { + values(value) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(value) ? value : '' + value; + }, + numeric(tickValue, index, ticks) { + if (tickValue === 0) { + return '0'; + } + const locale = this.chart.options.locale; + let notation; + let delta = tickValue; + if (ticks.length > 1) { + const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value)); + if (maxTick < 1e-4 || maxTick > 1e+15) { + notation = 'scientific'; + } + delta = calculateDelta(tickValue, ticks); + } + const logDelta = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(Math.abs(delta)); + const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0); + const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal}; + Object.assign(options, this.options.ticks.format); + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.o)(tickValue, locale, options); + }, + logarithmic(tickValue, index, ticks) { + if (tickValue === 0) { + return '0'; + } + const remain = tickValue / (Math.pow(10, Math.floor((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(tickValue)))); + if (remain === 1 || remain === 2 || remain === 5) { + return formatters.numeric.call(this, tickValue, index, ticks); + } + return ''; + } +}; +function calculateDelta(tickValue, ticks) { + let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value; + if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) { + delta = tickValue - Math.floor(tickValue); + } + return delta; +} +var Ticks = {formatters}; + +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.set('scale', { + display: true, + offset: false, + reverse: false, + beginAtZero: false, + bounds: 'ticks', + grace: 0, + grid: { + display: true, + lineWidth: 1, + drawBorder: true, + drawOnChartArea: true, + drawTicks: true, + tickLength: 8, + tickWidth: (_ctx, options) => options.lineWidth, + tickColor: (_ctx, options) => options.color, + offset: false, + borderDash: [], + borderDashOffset: 0.0, + borderWidth: 1 + }, + title: { + display: false, + text: '', + padding: { + top: 4, + bottom: 4 + } + }, + ticks: { + minRotation: 0, + maxRotation: 50, + mirror: false, + textStrokeWidth: 0, + textStrokeColor: '', + padding: 3, + display: true, + autoSkip: true, + autoSkipPadding: 3, + labelOffset: 0, + callback: Ticks.formatters.values, + minor: {}, + major: {}, + align: 'center', + crossAlign: 'near', + showLabelBackdrop: false, + backdropColor: 'rgba(255, 255, 255, 0.75)', + backdropPadding: 2, + } +}); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.ticks', 'color', '', 'color'); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.grid', 'color', '', 'borderColor'); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.grid', 'borderColor', '', 'borderColor'); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.title', 'color', '', 'color'); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.describe('scale', { + _fallback: false, + _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser', + _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash', +}); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.describe('scales', { + _fallback: 'scale', +}); +_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.describe('scale.ticks', { + _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback', + _indexable: (name) => name !== 'backdropPadding', +}); + +function autoSkip(scale, ticks) { + const tickOpts = scale.options.ticks; + const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale); + const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : []; + const numMajorIndices = majorIndices.length; + const first = majorIndices[0]; + const last = majorIndices[numMajorIndices - 1]; + const newTicks = []; + if (numMajorIndices > ticksLimit) { + skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit); + return newTicks; + } + const spacing = calculateSpacing(majorIndices, ticks, ticksLimit); + if (numMajorIndices > 0) { + let i, ilen; + const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null; + skip(ticks, newTicks, spacing, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first); + for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) { + skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]); + } + skip(ticks, newTicks, spacing, last, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing); + return newTicks; + } + skip(ticks, newTicks, spacing); + return newTicks; +} +function determineMaxTicks(scale) { + const offset = scale.options.offset; + const tickLength = scale._tickSize(); + const maxScale = scale._length / tickLength + (offset ? 0 : 1); + const maxChart = scale._maxLength / tickLength; + return Math.floor(Math.min(maxScale, maxChart)); +} +function calculateSpacing(majorIndices, ticks, ticksLimit) { + const evenMajorSpacing = getEvenSpacing(majorIndices); + const spacing = ticks.length / ticksLimit; + if (!evenMajorSpacing) { + return Math.max(spacing, 1); + } + const factors = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.M)(evenMajorSpacing); + for (let i = 0, ilen = factors.length - 1; i < ilen; i++) { + const factor = factors[i]; + if (factor > spacing) { + return factor; + } + } + return Math.max(spacing, 1); +} +function getMajorIndices(ticks) { + const result = []; + let i, ilen; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + if (ticks[i].major) { + result.push(i); + } + } + return result; +} +function skipMajors(ticks, newTicks, majorIndices, spacing) { + let count = 0; + let next = majorIndices[0]; + let i; + spacing = Math.ceil(spacing); + for (i = 0; i < ticks.length; i++) { + if (i === next) { + newTicks.push(ticks[i]); + count++; + next = majorIndices[count * spacing]; + } + } +} +function skip(ticks, newTicks, spacing, majorStart, majorEnd) { + const start = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(majorStart, 0); + const end = Math.min((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(majorEnd, ticks.length), ticks.length); + let count = 0; + let length, i, next; + spacing = Math.ceil(spacing); + if (majorEnd) { + length = majorEnd - majorStart; + spacing = length / Math.floor(length / spacing); + } + next = start; + while (next < 0) { + count++; + next = Math.round(start + count * spacing); + } + for (i = Math.max(start, 0); i < end; i++) { + if (i === next) { + newTicks.push(ticks[i]); + count++; + next = Math.round(start + count * spacing); + } + } +} +function getEvenSpacing(arr) { + const len = arr.length; + let i, diff; + if (len < 2) { + return false; + } + for (diff = arr[0], i = 1; i < len; ++i) { + if (arr[i] - arr[i - 1] !== diff) { + return false; + } + } + return diff; +} + +const reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align; +const offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset; +function sample(arr, numItems) { + const result = []; + const increment = arr.length / numItems; + const len = arr.length; + let i = 0; + for (; i < len; i += increment) { + result.push(arr[Math.floor(i)]); + } + return result; +} +function getPixelForGridLine(scale, index, offsetGridLines) { + const length = scale.ticks.length; + const validIndex = Math.min(index, length - 1); + const start = scale._startPixel; + const end = scale._endPixel; + const epsilon = 1e-6; + let lineValue = scale.getPixelForTick(validIndex); + let offset; + if (offsetGridLines) { + if (length === 1) { + offset = Math.max(lineValue - start, end - lineValue); + } else if (index === 0) { + offset = (scale.getPixelForTick(1) - lineValue) / 2; + } else { + offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2; + } + lineValue += validIndex < index ? offset : -offset; + if (lineValue < start - epsilon || lineValue > end + epsilon) { + return; + } + } + return lineValue; +} +function garbageCollect(caches, length) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(caches, (cache) => { + const gc = cache.gc; + const gcLen = gc.length / 2; + let i; + if (gcLen > length) { + for (i = 0; i < gcLen; ++i) { + delete cache.data[gc[i]]; + } + gc.splice(0, gcLen); + } + }); +} +function getTickMarkLength(options) { + return options.drawTicks ? options.tickLength : 0; +} +function getTitleHeight(options, fallback) { + if (!options.display) { + return 0; + } + const font = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.font, fallback); + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(options.padding); + const lines = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(options.text) ? options.text.length : 1; + return (lines * font.lineHeight) + padding.height; +} +function createScaleContext(parent, scale) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { + scale, + type: 'scale' + }); +} +function createTickContext(parent, index, tick) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { + tick, + index, + type: 'tick' + }); +} +function titleAlign(align, position, reverse) { + let ret = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.$)(align); + if ((reverse && position !== 'right') || (!reverse && position === 'right')) { + ret = reverseAlign(ret); + } + return ret; +} +function titleArgs(scale, offset, position, align) { + const {top, left, bottom, right, chart} = scale; + const {chartArea, scales} = chart; + let rotation = 0; + let maxWidth, titleX, titleY; + const height = bottom - top; + const width = right - left; + if (scale.isHorizontal()) { + titleX = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, left, right); + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + titleY = scales[positionAxisID].getPixelForValue(value) + height - offset; + } else if (position === 'center') { + titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset; + } else { + titleY = offsetFromEdge(scale, position, offset); + } + maxWidth = right - left; + } else { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + titleX = scales[positionAxisID].getPixelForValue(value) - width + offset; + } else if (position === 'center') { + titleX = (chartArea.left + chartArea.right) / 2 - width + offset; + } else { + titleX = offsetFromEdge(scale, position, offset); + } + titleY = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, bottom, top); + rotation = position === 'left' ? -_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H : _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H; + } + return {titleX, titleY, maxWidth, rotation}; +} +class Scale extends Element { + constructor(cfg) { + super(); + this.id = cfg.id; + this.type = cfg.type; + this.options = undefined; + this.ctx = cfg.ctx; + this.chart = cfg.chart; + this.top = undefined; + this.bottom = undefined; + this.left = undefined; + this.right = undefined; + this.width = undefined; + this.height = undefined; + this._margins = { + left: 0, + right: 0, + top: 0, + bottom: 0 + }; + this.maxWidth = undefined; + this.maxHeight = undefined; + this.paddingTop = undefined; + this.paddingBottom = undefined; + this.paddingLeft = undefined; + this.paddingRight = undefined; + this.axis = undefined; + this.labelRotation = undefined; + this.min = undefined; + this.max = undefined; + this._range = undefined; + this.ticks = []; + this._gridLineItems = null; + this._labelItems = null; + this._labelSizes = null; + this._length = 0; + this._maxLength = 0; + this._longestTextCache = {}; + this._startPixel = undefined; + this._endPixel = undefined; + this._reversePixels = false; + this._userMax = undefined; + this._userMin = undefined; + this._suggestedMax = undefined; + this._suggestedMin = undefined; + this._ticksLength = 0; + this._borderValue = 0; + this._cache = {}; + this._dataLimitsCached = false; + this.$context = undefined; + } + init(options) { + this.options = options.setContext(this.getContext()); + this.axis = options.axis; + this._userMin = this.parse(options.min); + this._userMax = this.parse(options.max); + this._suggestedMin = this.parse(options.suggestedMin); + this._suggestedMax = this.parse(options.suggestedMax); + } + parse(raw, index) { + return raw; + } + getUserBounds() { + let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this; + _userMin = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(_userMin, Number.POSITIVE_INFINITY); + _userMax = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(_userMax, Number.NEGATIVE_INFINITY); + _suggestedMin = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(_suggestedMin, Number.POSITIVE_INFINITY); + _suggestedMax = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(_suggestedMax, Number.NEGATIVE_INFINITY); + return { + min: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(_userMin, _suggestedMin), + max: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(_userMax, _suggestedMax), + minDefined: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(_userMin), + maxDefined: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(_userMax) + }; + } + getMinMax(canStack) { + let {min, max, minDefined, maxDefined} = this.getUserBounds(); + let range; + if (minDefined && maxDefined) { + return {min, max}; + } + const metas = this.getMatchingVisibleMetas(); + for (let i = 0, ilen = metas.length; i < ilen; ++i) { + range = metas[i].controller.getMinMax(this, canStack); + if (!minDefined) { + min = Math.min(min, range.min); + } + if (!maxDefined) { + max = Math.max(max, range.max); + } + } + min = maxDefined && min > max ? max : min; + max = minDefined && min > max ? min : max; + return { + min: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(min, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(max, min)), + max: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(max, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(min, max)) + }; + } + getPadding() { + return { + left: this.paddingLeft || 0, + top: this.paddingTop || 0, + right: this.paddingRight || 0, + bottom: this.paddingBottom || 0 + }; + } + getTicks() { + return this.ticks; + } + getLabels() { + const data = this.chart.data; + return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || []; + } + beforeLayout() { + this._cache = {}; + this._dataLimitsCached = false; + } + beforeUpdate() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.beforeUpdate, [this]); + } + update(maxWidth, maxHeight, margins) { + const {beginAtZero, grace, ticks: tickOpts} = this.options; + const sampleSize = tickOpts.sampleSize; + this.beforeUpdate(); + this.maxWidth = maxWidth; + this.maxHeight = maxHeight; + this._margins = margins = Object.assign({ + left: 0, + right: 0, + top: 0, + bottom: 0 + }, margins); + this.ticks = null; + this._labelSizes = null; + this._gridLineItems = null; + this._labelItems = null; + this.beforeSetDimensions(); + this.setDimensions(); + this.afterSetDimensions(); + this._maxLength = this.isHorizontal() + ? this.width + margins.left + margins.right + : this.height + margins.top + margins.bottom; + if (!this._dataLimitsCached) { + this.beforeDataLimits(); + this.determineDataLimits(); + this.afterDataLimits(); + this._range = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Q)(this, grace, beginAtZero); + this._dataLimitsCached = true; + } + this.beforeBuildTicks(); + this.ticks = this.buildTicks() || []; + this.afterBuildTicks(); + const samplingEnabled = sampleSize < this.ticks.length; + this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks); + this.configure(); + this.beforeCalculateLabelRotation(); + this.calculateLabelRotation(); + this.afterCalculateLabelRotation(); + if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) { + this.ticks = autoSkip(this, this.ticks); + this._labelSizes = null; + } + if (samplingEnabled) { + this._convertTicksToLabels(this.ticks); + } + this.beforeFit(); + this.fit(); + this.afterFit(); + this.afterUpdate(); + } + configure() { + let reversePixels = this.options.reverse; + let startPixel, endPixel; + if (this.isHorizontal()) { + startPixel = this.left; + endPixel = this.right; + } else { + startPixel = this.top; + endPixel = this.bottom; + reversePixels = !reversePixels; + } + this._startPixel = startPixel; + this._endPixel = endPixel; + this._reversePixels = reversePixels; + this._length = endPixel - startPixel; + this._alignToPixels = this.options.alignToPixels; + } + afterUpdate() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.afterUpdate, [this]); + } + beforeSetDimensions() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.beforeSetDimensions, [this]); + } + setDimensions() { + if (this.isHorizontal()) { + this.width = this.maxWidth; + this.left = 0; + this.right = this.width; + } else { + this.height = this.maxHeight; + this.top = 0; + this.bottom = this.height; + } + this.paddingLeft = 0; + this.paddingTop = 0; + this.paddingRight = 0; + this.paddingBottom = 0; + } + afterSetDimensions() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.afterSetDimensions, [this]); + } + _callHooks(name) { + this.chart.notifyPlugins(name, this.getContext()); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options[name], [this]); + } + beforeDataLimits() { + this._callHooks('beforeDataLimits'); + } + determineDataLimits() {} + afterDataLimits() { + this._callHooks('afterDataLimits'); + } + beforeBuildTicks() { + this._callHooks('beforeBuildTicks'); + } + buildTicks() { + return []; + } + afterBuildTicks() { + this._callHooks('afterBuildTicks'); + } + beforeTickToLabelConversion() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.beforeTickToLabelConversion, [this]); + } + generateTickLabels(ticks) { + const tickOpts = this.options.ticks; + let i, ilen, tick; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + tick = ticks[i]; + tick.label = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(tickOpts.callback, [tick.value, i, ticks], this); + } + } + afterTickToLabelConversion() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.afterTickToLabelConversion, [this]); + } + beforeCalculateLabelRotation() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.beforeCalculateLabelRotation, [this]); + } + calculateLabelRotation() { + const options = this.options; + const tickOpts = options.ticks; + const numTicks = this.ticks.length; + const minRotation = tickOpts.minRotation || 0; + const maxRotation = tickOpts.maxRotation; + let labelRotation = minRotation; + let tickWidth, maxHeight, maxLabelDiagonal; + if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) { + this.labelRotation = minRotation; + return; + } + const labelSizes = this._getLabelSizes(); + const maxLabelWidth = labelSizes.widest.width; + const maxLabelHeight = labelSizes.highest.height; + const maxWidth = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(this.chart.width - maxLabelWidth, 0, this.maxWidth); + tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1); + if (maxLabelWidth + 6 > tickWidth) { + tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1)); + maxHeight = this.maxHeight - getTickMarkLength(options.grid) + - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font); + maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight); + labelRotation = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.R)(Math.min( + Math.asin((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)((labelSizes.highest.height + 6) / tickWidth, -1, 1)), + Math.asin((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(maxLabelHeight / maxLabelDiagonal, -1, 1)) + )); + labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation)); + } + this.labelRotation = labelRotation; + } + afterCalculateLabelRotation() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.afterCalculateLabelRotation, [this]); + } + beforeFit() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.beforeFit, [this]); + } + fit() { + const minSize = { + width: 0, + height: 0 + }; + const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this; + const display = this._isVisible(); + const isHorizontal = this.isHorizontal(); + if (display) { + const titleHeight = getTitleHeight(titleOpts, chart.options.font); + if (isHorizontal) { + minSize.width = this.maxWidth; + minSize.height = getTickMarkLength(gridOpts) + titleHeight; + } else { + minSize.height = this.maxHeight; + minSize.width = getTickMarkLength(gridOpts) + titleHeight; + } + if (tickOpts.display && this.ticks.length) { + const {first, last, widest, highest} = this._getLabelSizes(); + const tickPadding = tickOpts.padding * 2; + const angleRadians = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); + const cos = Math.cos(angleRadians); + const sin = Math.sin(angleRadians); + if (isHorizontal) { + const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height; + minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding); + } else { + const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height; + minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding); + } + this._calculatePadding(first, last, sin, cos); + } + } + this._handleMargins(); + if (isHorizontal) { + this.width = this._length = chart.width - this._margins.left - this._margins.right; + this.height = minSize.height; + } else { + this.width = minSize.width; + this.height = this._length = chart.height - this._margins.top - this._margins.bottom; + } + } + _calculatePadding(first, last, sin, cos) { + const {ticks: {align, padding}, position} = this.options; + const isRotated = this.labelRotation !== 0; + const labelsBelowTicks = position !== 'top' && this.axis === 'x'; + if (this.isHorizontal()) { + const offsetLeft = this.getPixelForTick(0) - this.left; + const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1); + let paddingLeft = 0; + let paddingRight = 0; + if (isRotated) { + if (labelsBelowTicks) { + paddingLeft = cos * first.width; + paddingRight = sin * last.height; + } else { + paddingLeft = sin * first.height; + paddingRight = cos * last.width; + } + } else if (align === 'start') { + paddingRight = last.width; + } else if (align === 'end') { + paddingLeft = first.width; + } else { + paddingLeft = first.width / 2; + paddingRight = last.width / 2; + } + this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0); + this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0); + } else { + let paddingTop = last.height / 2; + let paddingBottom = first.height / 2; + if (align === 'start') { + paddingTop = 0; + paddingBottom = first.height; + } else if (align === 'end') { + paddingTop = last.height; + paddingBottom = 0; + } + this.paddingTop = paddingTop + padding; + this.paddingBottom = paddingBottom + padding; + } + } + _handleMargins() { + if (this._margins) { + this._margins.left = Math.max(this.paddingLeft, this._margins.left); + this._margins.top = Math.max(this.paddingTop, this._margins.top); + this._margins.right = Math.max(this.paddingRight, this._margins.right); + this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom); + } + } + afterFit() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.afterFit, [this]); + } + isHorizontal() { + const {axis, position} = this.options; + return position === 'top' || position === 'bottom' || axis === 'x'; + } + isFullSize() { + return this.options.fullSize; + } + _convertTicksToLabels(ticks) { + this.beforeTickToLabelConversion(); + this.generateTickLabels(ticks); + let i, ilen; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(ticks[i].label)) { + ticks.splice(i, 1); + ilen--; + i--; + } + } + this.afterTickToLabelConversion(); + } + _getLabelSizes() { + let labelSizes = this._labelSizes; + if (!labelSizes) { + const sampleSize = this.options.ticks.sampleSize; + let ticks = this.ticks; + if (sampleSize < ticks.length) { + ticks = sample(ticks, sampleSize); + } + this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length); + } + return labelSizes; + } + _computeLabelSizes(ticks, length) { + const {ctx, _longestTextCache: caches} = this; + const widths = []; + const heights = []; + let widestLabelSize = 0; + let highestLabelSize = 0; + let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel; + for (i = 0; i < length; ++i) { + label = ticks[i].label; + tickFont = this._resolveTickFontOptions(i); + ctx.font = fontString = tickFont.string; + cache = caches[fontString] = caches[fontString] || {data: {}, gc: []}; + lineHeight = tickFont.lineHeight; + width = height = 0; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(label) && !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(label)) { + width = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.S)(ctx, cache.data, cache.gc, width, label); + height = lineHeight; + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(label)) { + for (j = 0, jlen = label.length; j < jlen; ++j) { + nestedLabel = label[j]; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(nestedLabel) && !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(nestedLabel)) { + width = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.S)(ctx, cache.data, cache.gc, width, nestedLabel); + height += lineHeight; + } + } + } + widths.push(width); + heights.push(height); + widestLabelSize = Math.max(width, widestLabelSize); + highestLabelSize = Math.max(height, highestLabelSize); + } + garbageCollect(caches, length); + const widest = widths.indexOf(widestLabelSize); + const highest = heights.indexOf(highestLabelSize); + const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0}); + return { + first: valueAt(0), + last: valueAt(length - 1), + widest: valueAt(widest), + highest: valueAt(highest), + widths, + heights, + }; + } + getLabelForValue(value) { + return value; + } + getPixelForValue(value, index) { + return NaN; + } + getValueForPixel(pixel) {} + getPixelForTick(index) { + const ticks = this.ticks; + if (index < 0 || index > ticks.length - 1) { + return null; + } + return this.getPixelForValue(ticks[index].value); + } + getPixelForDecimal(decimal) { + if (this._reversePixels) { + decimal = 1 - decimal; + } + const pixel = this._startPixel + decimal * this._length; + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.U)(this._alignToPixels ? (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.V)(this.chart, pixel, 0) : pixel); + } + getDecimalForPixel(pixel) { + const decimal = (pixel - this._startPixel) / this._length; + return this._reversePixels ? 1 - decimal : decimal; + } + getBasePixel() { + return this.getPixelForValue(this.getBaseValue()); + } + getBaseValue() { + const {min, max} = this; + return min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0; + } + getContext(index) { + const ticks = this.ticks || []; + if (index >= 0 && index < ticks.length) { + const tick = ticks[index]; + return tick.$context || + (tick.$context = createTickContext(this.getContext(), index, tick)); + } + return this.$context || + (this.$context = createScaleContext(this.chart.getContext(), this)); + } + _tickSize() { + const optionTicks = this.options.ticks; + const rot = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); + const cos = Math.abs(Math.cos(rot)); + const sin = Math.abs(Math.sin(rot)); + const labelSizes = this._getLabelSizes(); + const padding = optionTicks.autoSkipPadding || 0; + const w = labelSizes ? labelSizes.widest.width + padding : 0; + const h = labelSizes ? labelSizes.highest.height + padding : 0; + return this.isHorizontal() + ? h * cos > w * sin ? w / cos : h / sin + : h * sin < w * cos ? h / cos : w / sin; + } + _isVisible() { + const display = this.options.display; + if (display !== 'auto') { + return !!display; + } + return this.getMatchingVisibleMetas().length > 0; + } + _computeGridLineItems(chartArea) { + const axis = this.axis; + const chart = this.chart; + const options = this.options; + const {grid, position} = options; + const offset = grid.offset; + const isHorizontal = this.isHorizontal(); + const ticks = this.ticks; + const ticksLength = ticks.length + (offset ? 1 : 0); + const tl = getTickMarkLength(grid); + const items = []; + const borderOpts = grid.setContext(this.getContext()); + const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0; + const axisHalfWidth = axisWidth / 2; + const alignBorderValue = function(pixel) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.V)(chart, pixel, axisWidth); + }; + let borderValue, i, lineValue, alignedLineValue; + let tx1, ty1, tx2, ty2, x1, y1, x2, y2; + if (position === 'top') { + borderValue = alignBorderValue(this.bottom); + ty1 = this.bottom - tl; + ty2 = borderValue - axisHalfWidth; + y1 = alignBorderValue(chartArea.top) + axisHalfWidth; + y2 = chartArea.bottom; + } else if (position === 'bottom') { + borderValue = alignBorderValue(this.top); + y1 = chartArea.top; + y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth; + ty1 = borderValue + axisHalfWidth; + ty2 = this.top + tl; + } else if (position === 'left') { + borderValue = alignBorderValue(this.right); + tx1 = this.right - tl; + tx2 = borderValue - axisHalfWidth; + x1 = alignBorderValue(chartArea.left) + axisHalfWidth; + x2 = chartArea.right; + } else if (position === 'right') { + borderValue = alignBorderValue(this.left); + x1 = chartArea.left; + x2 = alignBorderValue(chartArea.right) - axisHalfWidth; + tx1 = borderValue + axisHalfWidth; + tx2 = this.left + tl; + } else if (axis === 'x') { + if (position === 'center') { + borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5); + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); + } + y1 = chartArea.top; + y2 = chartArea.bottom; + ty1 = borderValue + axisHalfWidth; + ty2 = ty1 + tl; + } else if (axis === 'y') { + if (position === 'center') { + borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2); + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); + } + tx1 = borderValue - axisHalfWidth; + tx2 = tx1 - tl; + x1 = chartArea.left; + x2 = chartArea.right; + } + const limit = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(options.ticks.maxTicksLimit, ticksLength); + const step = Math.max(1, Math.ceil(ticksLength / limit)); + for (i = 0; i < ticksLength; i += step) { + const optsAtIndex = grid.setContext(this.getContext(i)); + const lineWidth = optsAtIndex.lineWidth; + const lineColor = optsAtIndex.color; + const borderDash = grid.borderDash || []; + const borderDashOffset = optsAtIndex.borderDashOffset; + const tickWidth = optsAtIndex.tickWidth; + const tickColor = optsAtIndex.tickColor; + const tickBorderDash = optsAtIndex.tickBorderDash || []; + const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset; + lineValue = getPixelForGridLine(this, i, offset); + if (lineValue === undefined) { + continue; + } + alignedLineValue = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.V)(chart, lineValue, lineWidth); + if (isHorizontal) { + tx1 = tx2 = x1 = x2 = alignedLineValue; + } else { + ty1 = ty2 = y1 = y2 = alignedLineValue; + } + items.push({ + tx1, + ty1, + tx2, + ty2, + x1, + y1, + x2, + y2, + width: lineWidth, + color: lineColor, + borderDash, + borderDashOffset, + tickWidth, + tickColor, + tickBorderDash, + tickBorderDashOffset, + }); + } + this._ticksLength = ticksLength; + this._borderValue = borderValue; + return items; + } + _computeLabelItems(chartArea) { + const axis = this.axis; + const options = this.options; + const {position, ticks: optionTicks} = options; + const isHorizontal = this.isHorizontal(); + const ticks = this.ticks; + const {align, crossAlign, padding, mirror} = optionTicks; + const tl = getTickMarkLength(options.grid); + const tickAndPadding = tl + padding; + const hTickAndPadding = mirror ? -padding : tickAndPadding; + const rotation = -(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); + const items = []; + let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset; + let textBaseline = 'middle'; + if (position === 'top') { + y = this.bottom - hTickAndPadding; + textAlign = this._getXAxisLabelAlignment(); + } else if (position === 'bottom') { + y = this.top + hTickAndPadding; + textAlign = this._getXAxisLabelAlignment(); + } else if (position === 'left') { + const ret = this._getYAxisLabelAlignment(tl); + textAlign = ret.textAlign; + x = ret.x; + } else if (position === 'right') { + const ret = this._getYAxisLabelAlignment(tl); + textAlign = ret.textAlign; + x = ret.x; + } else if (axis === 'x') { + if (position === 'center') { + y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding; + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding; + } + textAlign = this._getXAxisLabelAlignment(); + } else if (axis === 'y') { + if (position === 'center') { + x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding; + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + x = this.chart.scales[positionAxisID].getPixelForValue(value); + } + textAlign = this._getYAxisLabelAlignment(tl).textAlign; + } + if (axis === 'y') { + if (align === 'start') { + textBaseline = 'top'; + } else if (align === 'end') { + textBaseline = 'bottom'; + } + } + const labelSizes = this._getLabelSizes(); + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + tick = ticks[i]; + label = tick.label; + const optsAtIndex = optionTicks.setContext(this.getContext(i)); + pixel = this.getPixelForTick(i) + optionTicks.labelOffset; + font = this._resolveTickFontOptions(i); + lineHeight = font.lineHeight; + lineCount = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(label) ? label.length : 1; + const halfCount = lineCount / 2; + const color = optsAtIndex.color; + const strokeColor = optsAtIndex.textStrokeColor; + const strokeWidth = optsAtIndex.textStrokeWidth; + if (isHorizontal) { + x = pixel; + if (position === 'top') { + if (crossAlign === 'near' || rotation !== 0) { + textOffset = -lineCount * lineHeight + lineHeight / 2; + } else if (crossAlign === 'center') { + textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight; + } else { + textOffset = -labelSizes.highest.height + lineHeight / 2; + } + } else { + if (crossAlign === 'near' || rotation !== 0) { + textOffset = lineHeight / 2; + } else if (crossAlign === 'center') { + textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight; + } else { + textOffset = labelSizes.highest.height - lineCount * lineHeight; + } + } + if (mirror) { + textOffset *= -1; + } + } else { + y = pixel; + textOffset = (1 - lineCount) * lineHeight / 2; + } + let backdrop; + if (optsAtIndex.showLabelBackdrop) { + const labelPadding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(optsAtIndex.backdropPadding); + const height = labelSizes.heights[i]; + const width = labelSizes.widths[i]; + let top = y + textOffset - labelPadding.top; + let left = x - labelPadding.left; + switch (textBaseline) { + case 'middle': + top -= height / 2; + break; + case 'bottom': + top -= height; + break; + } + switch (textAlign) { + case 'center': + left -= width / 2; + break; + case 'right': + left -= width; + break; + } + backdrop = { + left, + top, + width: width + labelPadding.width, + height: height + labelPadding.height, + color: optsAtIndex.backdropColor, + }; + } + items.push({ + rotation, + label, + font, + color, + strokeColor, + strokeWidth, + textOffset, + textAlign, + textBaseline, + translation: [x, y], + backdrop, + }); + } + return items; + } + _getXAxisLabelAlignment() { + const {position, ticks} = this.options; + const rotation = -(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); + if (rotation) { + return position === 'top' ? 'left' : 'right'; + } + let align = 'center'; + if (ticks.align === 'start') { + align = 'left'; + } else if (ticks.align === 'end') { + align = 'right'; + } + return align; + } + _getYAxisLabelAlignment(tl) { + const {position, ticks: {crossAlign, mirror, padding}} = this.options; + const labelSizes = this._getLabelSizes(); + const tickAndPadding = tl + padding; + const widest = labelSizes.widest.width; + let textAlign; + let x; + if (position === 'left') { + if (mirror) { + x = this.right + padding; + if (crossAlign === 'near') { + textAlign = 'left'; + } else if (crossAlign === 'center') { + textAlign = 'center'; + x += (widest / 2); + } else { + textAlign = 'right'; + x += widest; + } + } else { + x = this.right - tickAndPadding; + if (crossAlign === 'near') { + textAlign = 'right'; + } else if (crossAlign === 'center') { + textAlign = 'center'; + x -= (widest / 2); + } else { + textAlign = 'left'; + x = this.left; + } + } + } else if (position === 'right') { + if (mirror) { + x = this.left + padding; + if (crossAlign === 'near') { + textAlign = 'right'; + } else if (crossAlign === 'center') { + textAlign = 'center'; + x -= (widest / 2); + } else { + textAlign = 'left'; + x -= widest; + } + } else { + x = this.left + tickAndPadding; + if (crossAlign === 'near') { + textAlign = 'left'; + } else if (crossAlign === 'center') { + textAlign = 'center'; + x += widest / 2; + } else { + textAlign = 'right'; + x = this.right; + } + } + } else { + textAlign = 'right'; + } + return {textAlign, x}; + } + _computeLabelArea() { + if (this.options.ticks.mirror) { + return; + } + const chart = this.chart; + const position = this.options.position; + if (position === 'left' || position === 'right') { + return {top: 0, left: this.left, bottom: chart.height, right: this.right}; + } if (position === 'top' || position === 'bottom') { + return {top: this.top, left: 0, bottom: this.bottom, right: chart.width}; + } + } + drawBackground() { + const {ctx, options: {backgroundColor}, left, top, width, height} = this; + if (backgroundColor) { + ctx.save(); + ctx.fillStyle = backgroundColor; + ctx.fillRect(left, top, width, height); + ctx.restore(); + } + } + getLineWidthForValue(value) { + const grid = this.options.grid; + if (!this._isVisible() || !grid.display) { + return 0; + } + const ticks = this.ticks; + const index = ticks.findIndex(t => t.value === value); + if (index >= 0) { + const opts = grid.setContext(this.getContext(index)); + return opts.lineWidth; + } + return 0; + } + drawGrid(chartArea) { + const grid = this.options.grid; + const ctx = this.ctx; + const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea)); + let i, ilen; + const drawLine = (p1, p2, style) => { + if (!style.width || !style.color) { + return; + } + ctx.save(); + ctx.lineWidth = style.width; + ctx.strokeStyle = style.color; + ctx.setLineDash(style.borderDash || []); + ctx.lineDashOffset = style.borderDashOffset; + ctx.beginPath(); + ctx.moveTo(p1.x, p1.y); + ctx.lineTo(p2.x, p2.y); + ctx.stroke(); + ctx.restore(); + }; + if (grid.display) { + for (i = 0, ilen = items.length; i < ilen; ++i) { + const item = items[i]; + if (grid.drawOnChartArea) { + drawLine( + {x: item.x1, y: item.y1}, + {x: item.x2, y: item.y2}, + item + ); + } + if (grid.drawTicks) { + drawLine( + {x: item.tx1, y: item.ty1}, + {x: item.tx2, y: item.ty2}, + { + color: item.tickColor, + width: item.tickWidth, + borderDash: item.tickBorderDash, + borderDashOffset: item.tickBorderDashOffset + } + ); + } + } + } + } + drawBorder() { + const {chart, ctx, options: {grid}} = this; + const borderOpts = grid.setContext(this.getContext()); + const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0; + if (!axisWidth) { + return; + } + const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth; + const borderValue = this._borderValue; + let x1, x2, y1, y2; + if (this.isHorizontal()) { + x1 = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.V)(chart, this.left, axisWidth) - axisWidth / 2; + x2 = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.V)(chart, this.right, lastLineWidth) + lastLineWidth / 2; + y1 = y2 = borderValue; + } else { + y1 = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.V)(chart, this.top, axisWidth) - axisWidth / 2; + y2 = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.V)(chart, this.bottom, lastLineWidth) + lastLineWidth / 2; + x1 = x2 = borderValue; + } + ctx.save(); + ctx.lineWidth = borderOpts.borderWidth; + ctx.strokeStyle = borderOpts.borderColor; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); + ctx.restore(); + } + drawLabels(chartArea) { + const optionTicks = this.options.ticks; + if (!optionTicks.display) { + return; + } + const ctx = this.ctx; + const area = this._computeLabelArea(); + if (area) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.W)(ctx, area); + } + const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea)); + let i, ilen; + for (i = 0, ilen = items.length; i < ilen; ++i) { + const item = items[i]; + const tickFont = item.font; + const label = item.label; + if (item.backdrop) { + ctx.fillStyle = item.backdrop.color; + ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height); + } + let y = item.textOffset; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.X)(ctx, label, 0, y, tickFont, item); + } + if (area) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Y)(ctx); + } + } + drawTitle() { + const {ctx, options: {position, title, reverse}} = this; + if (!title.display) { + return; + } + const font = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(title.font); + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(title.padding); + const align = title.align; + let offset = font.lineHeight / 2; + if (position === 'bottom' || position === 'center' || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { + offset += padding.bottom; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(title.text)) { + offset += font.lineHeight * (title.text.length - 1); + } + } else { + offset += padding.top; + } + const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.X)(ctx, title.text, 0, 0, font, { + color: title.color, + maxWidth, + rotation, + textAlign: titleAlign(align, position, reverse), + textBaseline: 'middle', + translation: [titleX, titleY], + }); + } + draw(chartArea) { + if (!this._isVisible()) { + return; + } + this.drawBackground(); + this.drawGrid(chartArea); + this.drawBorder(); + this.drawTitle(); + this.drawLabels(chartArea); + } + _layers() { + const opts = this.options; + const tz = opts.ticks && opts.ticks.z || 0; + const gz = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(opts.grid && opts.grid.z, -1); + if (!this._isVisible() || this.draw !== Scale.prototype.draw) { + return [{ + z: tz, + draw: (chartArea) => { + this.draw(chartArea); + } + }]; + } + return [{ + z: gz, + draw: (chartArea) => { + this.drawBackground(); + this.drawGrid(chartArea); + this.drawTitle(); + } + }, { + z: gz + 1, + draw: () => { + this.drawBorder(); + } + }, { + z: tz, + draw: (chartArea) => { + this.drawLabels(chartArea); + } + }]; + } + getMatchingVisibleMetas(type) { + const metas = this.chart.getSortedVisibleDatasetMetas(); + const axisID = this.axis + 'AxisID'; + const result = []; + let i, ilen; + for (i = 0, ilen = metas.length; i < ilen; ++i) { + const meta = metas[i]; + if (meta[axisID] === this.id && (!type || meta.type === type)) { + result.push(meta); + } + } + return result; + } + _resolveTickFontOptions(index) { + const opts = this.options.ticks.setContext(this.getContext(index)); + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(opts.font); + } + _maxDigits() { + const fontSize = this._resolveTickFontOptions(0).lineHeight; + return (this.isHorizontal() ? this.width : this.height) / fontSize; + } +} + +class TypedRegistry { + constructor(type, scope, override) { + this.type = type; + this.scope = scope; + this.override = override; + this.items = Object.create(null); + } + isForType(type) { + return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype); + } + register(item) { + const proto = Object.getPrototypeOf(item); + let parentScope; + if (isIChartComponent(proto)) { + parentScope = this.register(proto); + } + const items = this.items; + const id = item.id; + const scope = this.scope + '.' + id; + if (!id) { + throw new Error('class does not have id: ' + item); + } + if (id in items) { + return scope; + } + items[id] = item; + registerDefaults(item, scope, parentScope); + if (this.override) { + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.override(item.id, item.overrides); + } + return scope; + } + get(id) { + return this.items[id]; + } + unregister(item) { + const items = this.items; + const id = item.id; + const scope = this.scope; + if (id in items) { + delete items[id]; + } + if (scope && id in _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d[scope]) { + delete _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d[scope][id]; + if (this.override) { + delete _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a1[id]; + } + } + } +} +function registerDefaults(item, scope, parentScope) { + const itemDefaults = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a2)(Object.create(null), [ + parentScope ? _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.get(parentScope) : {}, + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.get(scope), + item.defaults + ]); + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.set(scope, itemDefaults); + if (item.defaultRoutes) { + routeDefaults(scope, item.defaultRoutes); + } + if (item.descriptors) { + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.describe(scope, item.descriptors); + } +} +function routeDefaults(scope, routes) { + Object.keys(routes).forEach(property => { + const propertyParts = property.split('.'); + const sourceName = propertyParts.pop(); + const sourceScope = [scope].concat(propertyParts).join('.'); + const parts = routes[property].split('.'); + const targetName = parts.pop(); + const targetScope = parts.join('.'); + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.route(sourceScope, sourceName, targetScope, targetName); + }); +} +function isIChartComponent(proto) { + return 'id' in proto && 'defaults' in proto; +} + +class Registry { + constructor() { + this.controllers = new TypedRegistry(DatasetController, 'datasets', true); + this.elements = new TypedRegistry(Element, 'elements'); + this.plugins = new TypedRegistry(Object, 'plugins'); + this.scales = new TypedRegistry(Scale, 'scales'); + this._typedRegistries = [this.controllers, this.scales, this.elements]; + } + add(...args) { + this._each('register', args); + } + remove(...args) { + this._each('unregister', args); + } + addControllers(...args) { + this._each('register', args, this.controllers); + } + addElements(...args) { + this._each('register', args, this.elements); + } + addPlugins(...args) { + this._each('register', args, this.plugins); + } + addScales(...args) { + this._each('register', args, this.scales); + } + getController(id) { + return this._get(id, this.controllers, 'controller'); + } + getElement(id) { + return this._get(id, this.elements, 'element'); + } + getPlugin(id) { + return this._get(id, this.plugins, 'plugin'); + } + getScale(id) { + return this._get(id, this.scales, 'scale'); + } + removeControllers(...args) { + this._each('unregister', args, this.controllers); + } + removeElements(...args) { + this._each('unregister', args, this.elements); + } + removePlugins(...args) { + this._each('unregister', args, this.plugins); + } + removeScales(...args) { + this._each('unregister', args, this.scales); + } + _each(method, args, typedRegistry) { + [...args].forEach(arg => { + const reg = typedRegistry || this._getRegistryForType(arg); + if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) { + this._exec(method, reg, arg); + } else { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(arg, item => { + const itemReg = typedRegistry || this._getRegistryForType(item); + this._exec(method, itemReg, item); + }); + } + }); + } + _exec(method, registry, component) { + const camelMethod = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a3)(method); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(component['before' + camelMethod], [], component); + registry[method](component); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(component['after' + camelMethod], [], component); + } + _getRegistryForType(type) { + for (let i = 0; i < this._typedRegistries.length; i++) { + const reg = this._typedRegistries[i]; + if (reg.isForType(type)) { + return reg; + } + } + return this.plugins; + } + _get(id, typedRegistry, type) { + const item = typedRegistry.get(id); + if (item === undefined) { + throw new Error('"' + id + '" is not a registered ' + type + '.'); + } + return item; + } +} +var registry = new Registry(); + +class PluginService { + constructor() { + this._init = []; + } + notify(chart, hook, args, filter) { + if (hook === 'beforeInit') { + this._init = this._createDescriptors(chart, true); + this._notify(this._init, chart, 'install'); + } + const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart); + const result = this._notify(descriptors, chart, hook, args); + if (hook === 'afterDestroy') { + this._notify(descriptors, chart, 'stop'); + this._notify(this._init, chart, 'uninstall'); + } + return result; + } + _notify(descriptors, chart, hook, args) { + args = args || {}; + for (const descriptor of descriptors) { + const plugin = descriptor.plugin; + const method = plugin[hook]; + const params = [chart, args, descriptor.options]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(method, params, plugin) === false && args.cancelable) { + return false; + } + } + return true; + } + invalidate() { + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(this._cache)) { + this._oldCache = this._cache; + this._cache = undefined; + } + } + _descriptors(chart) { + if (this._cache) { + return this._cache; + } + const descriptors = this._cache = this._createDescriptors(chart); + this._notifyStateChanges(chart); + return descriptors; + } + _createDescriptors(chart, all) { + const config = chart && chart.config; + const options = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(config.options && config.options.plugins, {}); + const plugins = allPlugins(config); + return options === false && !all ? [] : createDescriptors(chart, plugins, options, all); + } + _notifyStateChanges(chart) { + const previousDescriptors = this._oldCache || []; + const descriptors = this._cache; + const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id)); + this._notify(diff(previousDescriptors, descriptors), chart, 'stop'); + this._notify(diff(descriptors, previousDescriptors), chart, 'start'); + } +} +function allPlugins(config) { + const plugins = []; + const keys = Object.keys(registry.plugins.items); + for (let i = 0; i < keys.length; i++) { + plugins.push(registry.getPlugin(keys[i])); + } + const local = config.plugins || []; + for (let i = 0; i < local.length; i++) { + const plugin = local[i]; + if (plugins.indexOf(plugin) === -1) { + plugins.push(plugin); + } + } + return plugins; +} +function getOpts(options, all) { + if (!all && options === false) { + return null; + } + if (options === true) { + return {}; + } + return options; +} +function createDescriptors(chart, plugins, options, all) { + const result = []; + const context = chart.getContext(); + for (let i = 0; i < plugins.length; i++) { + const plugin = plugins[i]; + const id = plugin.id; + const opts = getOpts(options[id], all); + if (opts === null) { + continue; + } + result.push({ + plugin, + options: pluginOpts(chart.config, plugin, opts, context) + }); + } + return result; +} +function pluginOpts(config, plugin, opts, context) { + const keys = config.pluginScopeKeys(plugin); + const scopes = config.getOptionScopes(opts, keys); + return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true}); +} + +function getIndexAxis(type, options) { + const datasetDefaults = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.datasets[type] || {}; + const datasetOptions = (options.datasets || {})[type] || {}; + return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x'; +} +function getAxisFromDefaultScaleID(id, indexAxis) { + let axis = id; + if (id === '_index_') { + axis = indexAxis; + } else if (id === '_value_') { + axis = indexAxis === 'x' ? 'y' : 'x'; + } + return axis; +} +function getDefaultScaleIDFromAxis(axis, indexAxis) { + return axis === indexAxis ? '_index_' : '_value_'; +} +function axisFromPosition(position) { + if (position === 'top' || position === 'bottom') { + return 'x'; + } + if (position === 'left' || position === 'right') { + return 'y'; + } +} +function determineAxis(id, scaleOptions) { + if (id === 'x' || id === 'y') { + return id; + } + return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase(); +} +function mergeScaleConfig(config, options) { + const chartDefaults = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a1[config.type] || {scales: {}}; + const configScales = options.scales || {}; + const chartIndexAxis = getIndexAxis(config.type, options); + const firstIDs = Object.create(null); + const scales = Object.create(null); + Object.keys(configScales).forEach(id => { + const scaleConf = configScales[id]; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(scaleConf)) { + return console.error(`Invalid scale configuration for scale: ${id}`); + } + if (scaleConf._proxy) { + return console.warn(`Ignoring resolver passed as options for scale: ${id}`); + } + const axis = determineAxis(id, scaleConf); + const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis); + const defaultScaleOptions = chartDefaults.scales || {}; + firstIDs[axis] = firstIDs[axis] || id; + scales[id] = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a9)(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]); + }); + config.data.datasets.forEach(dataset => { + const type = dataset.type || config.type; + const indexAxis = dataset.indexAxis || getIndexAxis(type, options); + const datasetDefaults = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a1[type] || {}; + const defaultScaleOptions = datasetDefaults.scales || {}; + Object.keys(defaultScaleOptions).forEach(defaultID => { + const axis = getAxisFromDefaultScaleID(defaultID, indexAxis); + const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis; + scales[id] = scales[id] || Object.create(null); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a9)(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]); + }); + }); + Object.keys(scales).forEach(key => { + const scale = scales[key]; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a9)(scale, [_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.scales[scale.type], _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.scale]); + }); + return scales; +} +function initOptions(config) { + const options = config.options || (config.options = {}); + options.plugins = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(options.plugins, {}); + options.scales = mergeScaleConfig(config, options); +} +function initData(data) { + data = data || {}; + data.datasets = data.datasets || []; + data.labels = data.labels || []; + return data; +} +function initConfig(config) { + config = config || {}; + config.data = initData(config.data); + initOptions(config); + return config; +} +const keyCache = new Map(); +const keysCached = new Set(); +function cachedKeys(cacheKey, generate) { + let keys = keyCache.get(cacheKey); + if (!keys) { + keys = generate(); + keyCache.set(cacheKey, keys); + keysCached.add(keys); + } + return keys; +} +const addIfFound = (set, obj, key) => { + const opts = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.f)(obj, key); + if (opts !== undefined) { + set.add(opts); + } +}; +class Config { + constructor(config) { + this._config = initConfig(config); + this._scopeCache = new Map(); + this._resolverCache = new Map(); + } + get platform() { + return this._config.platform; + } + get type() { + return this._config.type; + } + set type(type) { + this._config.type = type; + } + get data() { + return this._config.data; + } + set data(data) { + this._config.data = initData(data); + } + get options() { + return this._config.options; + } + set options(options) { + this._config.options = options; + } + get plugins() { + return this._config.plugins; + } + update() { + const config = this._config; + this.clearCache(); + initOptions(config); + } + clearCache() { + this._scopeCache.clear(); + this._resolverCache.clear(); + } + datasetScopeKeys(datasetType) { + return cachedKeys(datasetType, + () => [[ + `datasets.${datasetType}`, + '' + ]]); + } + datasetAnimationScopeKeys(datasetType, transition) { + return cachedKeys(`${datasetType}.transition.${transition}`, + () => [ + [ + `datasets.${datasetType}.transitions.${transition}`, + `transitions.${transition}`, + ], + [ + `datasets.${datasetType}`, + '' + ] + ]); + } + datasetElementScopeKeys(datasetType, elementType) { + return cachedKeys(`${datasetType}-${elementType}`, + () => [[ + `datasets.${datasetType}.elements.${elementType}`, + `datasets.${datasetType}`, + `elements.${elementType}`, + '' + ]]); + } + pluginScopeKeys(plugin) { + const id = plugin.id; + const type = this.type; + return cachedKeys(`${type}-plugin-${id}`, + () => [[ + `plugins.${id}`, + ...plugin.additionalOptionScopes || [], + ]]); + } + _cachedScopes(mainScope, resetCache) { + const _scopeCache = this._scopeCache; + let cache = _scopeCache.get(mainScope); + if (!cache || resetCache) { + cache = new Map(); + _scopeCache.set(mainScope, cache); + } + return cache; + } + getOptionScopes(mainScope, keyLists, resetCache) { + const {options, type} = this; + const cache = this._cachedScopes(mainScope, resetCache); + const cached = cache.get(keyLists); + if (cached) { + return cached; + } + const scopes = new Set(); + keyLists.forEach(keys => { + if (mainScope) { + scopes.add(mainScope); + keys.forEach(key => addIfFound(scopes, mainScope, key)); + } + keys.forEach(key => addIfFound(scopes, options, key)); + keys.forEach(key => addIfFound(scopes, _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a1[type] || {}, key)); + keys.forEach(key => addIfFound(scopes, _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d, key)); + keys.forEach(key => addIfFound(scopes, _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a4, key)); + }); + const array = Array.from(scopes); + if (array.length === 0) { + array.push(Object.create(null)); + } + if (keysCached.has(keyLists)) { + cache.set(keyLists, array); + } + return array; + } + chartOptionScopes() { + const {options, type} = this; + return [ + options, + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a1[type] || {}, + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.datasets[type] || {}, + {type}, + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d, + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a4 + ]; + } + resolveNamedOptions(scopes, names, context, prefixes = ['']) { + const result = {$shared: true}; + const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes); + let options = resolver; + if (needContext(resolver, names)) { + result.$shared = false; + context = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a5)(context) ? context() : context; + const subResolver = this.createResolver(scopes, context, subPrefixes); + options = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a6)(resolver, context, subResolver); + } + for (const prop of names) { + result[prop] = options[prop]; + } + return result; + } + createResolver(scopes, context, prefixes = [''], descriptorDefaults) { + const {resolver} = getResolver(this._resolverCache, scopes, prefixes); + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(context) + ? (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a6)(resolver, context, undefined, descriptorDefaults) + : resolver; + } +} +function getResolver(resolverCache, scopes, prefixes) { + let cache = resolverCache.get(scopes); + if (!cache) { + cache = new Map(); + resolverCache.set(scopes, cache); + } + const cacheKey = prefixes.join(); + let cached = cache.get(cacheKey); + if (!cached) { + const resolver = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a7)(scopes, prefixes); + cached = { + resolver, + subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover')) + }; + cache.set(cacheKey, cached); + } + return cached; +} +const hasFunction = value => (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(value) + && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a5)(value[key]), false); +function needContext(proxy, names) { + const {isScriptable, isIndexable} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a8)(proxy); + for (const prop of names) { + const scriptable = isScriptable(prop); + const indexable = isIndexable(prop); + const value = (indexable || scriptable) && proxy[prop]; + if ((scriptable && ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a5)(value) || hasFunction(value))) + || (indexable && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(value))) { + return true; + } + } + return false; +} + +var version = "3.7.1"; + +const KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea']; +function positionIsHorizontal(position, axis) { + return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x'); +} +function compare2Level(l1, l2) { + return function(a, b) { + return a[l1] === b[l1] + ? a[l2] - b[l2] + : a[l1] - b[l1]; + }; +} +function onAnimationsComplete(context) { + const chart = context.chart; + const animationOptions = chart.options.animation; + chart.notifyPlugins('afterRender'); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(animationOptions && animationOptions.onComplete, [context], chart); +} +function onAnimationProgress(context) { + const chart = context.chart; + const animationOptions = chart.options.animation; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(animationOptions && animationOptions.onProgress, [context], chart); +} +function getCanvas(item) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.K)() && typeof item === 'string') { + item = document.getElementById(item); + } else if (item && item.length) { + item = item[0]; + } + if (item && item.canvas) { + item = item.canvas; + } + return item; +} +const instances = {}; +const getChart = (key) => { + const canvas = getCanvas(key); + return Object.values(instances).filter((c) => c.canvas === canvas).pop(); +}; +function moveNumericKeys(obj, start, move) { + const keys = Object.keys(obj); + for (const key of keys) { + const intKey = +key; + if (intKey >= start) { + const value = obj[key]; + delete obj[key]; + if (move > 0 || intKey > start) { + obj[intKey + move] = value; + } + } + } +} +function determineLastEvent(e, lastEvent, inChartArea, isClick) { + if (!inChartArea || e.type === 'mouseout') { + return null; + } + if (isClick) { + return lastEvent; + } + return e; +} +class Chart { + constructor(item, userConfig) { + const config = this.config = new Config(userConfig); + const initialCanvas = getCanvas(item); + const existingChart = getChart(initialCanvas); + if (existingChart) { + throw new Error( + 'Canvas is already in use. Chart with ID \'' + existingChart.id + '\'' + + ' must be destroyed before the canvas can be reused.' + ); + } + const options = config.createResolver(config.chartOptionScopes(), this.getContext()); + this.platform = new (config.platform || _detectPlatform(initialCanvas))(); + this.platform.updateConfig(config); + const context = this.platform.acquireContext(initialCanvas, options.aspectRatio); + const canvas = context && context.canvas; + const height = canvas && canvas.height; + const width = canvas && canvas.width; + this.id = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aa)(); + this.ctx = context; + this.canvas = canvas; + this.width = width; + this.height = height; + this._options = options; + this._aspectRatio = this.aspectRatio; + this._layers = []; + this._metasets = []; + this._stacks = undefined; + this.boxes = []; + this.currentDevicePixelRatio = undefined; + this.chartArea = undefined; + this._active = []; + this._lastEvent = undefined; + this._listeners = {}; + this._responsiveListeners = undefined; + this._sortedMetasets = []; + this.scales = {}; + this._plugins = new PluginService(); + this.$proxies = {}; + this._hiddenIndices = {}; + this.attached = false; + this._animationsDisabled = undefined; + this.$context = undefined; + this._doResize = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ab)(mode => this.update(mode), options.resizeDelay || 0); + this._dataChanges = []; + instances[this.id] = this; + if (!context || !canvas) { + console.error("Failed to create chart: can't acquire context from the given item"); + return; + } + animator.listen(this, 'complete', onAnimationsComplete); + animator.listen(this, 'progress', onAnimationProgress); + this._initialize(); + if (this.attached) { + this.update(); + } + } + get aspectRatio() { + const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(aspectRatio)) { + return aspectRatio; + } + if (maintainAspectRatio && _aspectRatio) { + return _aspectRatio; + } + return height ? width / height : null; + } + get data() { + return this.config.data; + } + set data(data) { + this.config.data = data; + } + get options() { + return this._options; + } + set options(options) { + this.config.options = options; + } + _initialize() { + this.notifyPlugins('beforeInit'); + if (this.options.responsive) { + this.resize(); + } else { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ac)(this, this.options.devicePixelRatio); + } + this.bindEvents(); + this.notifyPlugins('afterInit'); + return this; + } + clear() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ad)(this.canvas, this.ctx); + return this; + } + stop() { + animator.stop(this); + return this; + } + resize(width, height) { + if (!animator.running(this)) { + this._resize(width, height); + } else { + this._resizeBeforeDraw = {width, height}; + } + } + _resize(width, height) { + const options = this.options; + const canvas = this.canvas; + const aspectRatio = options.maintainAspectRatio && this.aspectRatio; + const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio); + const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio(); + const mode = this.width ? 'resize' : 'attach'; + this.width = newSize.width; + this.height = newSize.height; + this._aspectRatio = this.aspectRatio; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ac)(this, newRatio, true)) { + return; + } + this.notifyPlugins('resize', {size: newSize}); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(options.onResize, [this, newSize], this); + if (this.attached) { + if (this._doResize(mode)) { + this.render(); + } + } + } + ensureScalesHaveIDs() { + const options = this.options; + const scalesOptions = options.scales || {}; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(scalesOptions, (axisOptions, axisID) => { + axisOptions.id = axisID; + }); + } + buildOrUpdateScales() { + const options = this.options; + const scaleOpts = options.scales; + const scales = this.scales; + const updated = Object.keys(scales).reduce((obj, id) => { + obj[id] = false; + return obj; + }, {}); + let items = []; + if (scaleOpts) { + items = items.concat( + Object.keys(scaleOpts).map((id) => { + const scaleOptions = scaleOpts[id]; + const axis = determineAxis(id, scaleOptions); + const isRadial = axis === 'r'; + const isHorizontal = axis === 'x'; + return { + options: scaleOptions, + dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left', + dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear' + }; + }) + ); + } + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(items, (item) => { + const scaleOptions = item.options; + const id = scaleOptions.id; + const axis = determineAxis(id, scaleOptions); + const scaleType = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(scaleOptions.type, item.dtype); + if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) { + scaleOptions.position = item.dposition; + } + updated[id] = true; + let scale = null; + if (id in scales && scales[id].type === scaleType) { + scale = scales[id]; + } else { + const scaleClass = registry.getScale(scaleType); + scale = new scaleClass({ + id, + type: scaleType, + ctx: this.ctx, + chart: this + }); + scales[scale.id] = scale; + } + scale.init(scaleOptions, options); + }); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(updated, (hasUpdated, id) => { + if (!hasUpdated) { + delete scales[id]; + } + }); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(scales, (scale) => { + layouts.configure(this, scale, scale.options); + layouts.addBox(this, scale); + }); + } + _updateMetasets() { + const metasets = this._metasets; + const numData = this.data.datasets.length; + const numMeta = metasets.length; + metasets.sort((a, b) => a.index - b.index); + if (numMeta > numData) { + for (let i = numData; i < numMeta; ++i) { + this._destroyDatasetMeta(i); + } + metasets.splice(numData, numMeta - numData); + } + this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index')); + } + _removeUnreferencedMetasets() { + const {_metasets: metasets, data: {datasets}} = this; + if (metasets.length > datasets.length) { + delete this._stacks; + } + metasets.forEach((meta, index) => { + if (datasets.filter(x => x === meta._dataset).length === 0) { + this._destroyDatasetMeta(index); + } + }); + } + buildOrUpdateControllers() { + const newControllers = []; + const datasets = this.data.datasets; + let i, ilen; + this._removeUnreferencedMetasets(); + for (i = 0, ilen = datasets.length; i < ilen; i++) { + const dataset = datasets[i]; + let meta = this.getDatasetMeta(i); + const type = dataset.type || this.config.type; + if (meta.type && meta.type !== type) { + this._destroyDatasetMeta(i); + meta = this.getDatasetMeta(i); + } + meta.type = type; + meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options); + meta.order = dataset.order || 0; + meta.index = i; + meta.label = '' + dataset.label; + meta.visible = this.isDatasetVisible(i); + if (meta.controller) { + meta.controller.updateIndex(i); + meta.controller.linkScales(); + } else { + const ControllerClass = registry.getController(type); + const {datasetElementType, dataElementType} = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.datasets[type]; + Object.assign(ControllerClass.prototype, { + dataElementType: registry.getElement(dataElementType), + datasetElementType: datasetElementType && registry.getElement(datasetElementType) + }); + meta.controller = new ControllerClass(this, i); + newControllers.push(meta.controller); + } + } + this._updateMetasets(); + return newControllers; + } + _resetElements() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this.data.datasets, (dataset, datasetIndex) => { + this.getDatasetMeta(datasetIndex).controller.reset(); + }, this); + } + reset() { + this._resetElements(); + this.notifyPlugins('reset'); + } + update(mode) { + const config = this.config; + config.update(); + const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext()); + const animsDisabled = this._animationsDisabled = !options.animation; + this._updateScales(); + this._checkEventBindings(); + this._updateHiddenIndices(); + this._plugins.invalidate(); + if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) { + return; + } + const newControllers = this.buildOrUpdateControllers(); + this.notifyPlugins('beforeElementsUpdate'); + let minPadding = 0; + for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) { + const {controller} = this.getDatasetMeta(i); + const reset = !animsDisabled && newControllers.indexOf(controller) === -1; + controller.buildOrUpdateElements(reset); + minPadding = Math.max(+controller.getMaxOverflow(), minPadding); + } + minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0; + this._updateLayout(minPadding); + if (!animsDisabled) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(newControllers, (controller) => { + controller.reset(); + }); + } + this._updateDatasets(mode); + this.notifyPlugins('afterUpdate', {mode}); + this._layers.sort(compare2Level('z', '_idx')); + const {_active, _lastEvent} = this; + if (_lastEvent) { + this._eventHandler(_lastEvent, true); + } else if (_active.length) { + this._updateHoverStyles(_active, _active, true); + } + this.render(); + } + _updateScales() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this.scales, (scale) => { + layouts.removeBox(this, scale); + }); + this.ensureScalesHaveIDs(); + this.buildOrUpdateScales(); + } + _checkEventBindings() { + const options = this.options; + const existingEvents = new Set(Object.keys(this._listeners)); + const newEvents = new Set(options.events); + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ae)(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) { + this.unbindEvents(); + this.bindEvents(); + } + } + _updateHiddenIndices() { + const {_hiddenIndices} = this; + const changes = this._getUniformDataChanges() || []; + for (const {method, start, count} of changes) { + const move = method === '_removeElements' ? -count : count; + moveNumericKeys(_hiddenIndices, start, move); + } + } + _getUniformDataChanges() { + const _dataChanges = this._dataChanges; + if (!_dataChanges || !_dataChanges.length) { + return; + } + this._dataChanges = []; + const datasetCount = this.data.datasets.length; + const makeSet = (idx) => new Set( + _dataChanges + .filter(c => c[0] === idx) + .map((c, i) => i + ',' + c.splice(1).join(',')) + ); + const changeSet = makeSet(0); + for (let i = 1; i < datasetCount; i++) { + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ae)(changeSet, makeSet(i))) { + return; + } + } + return Array.from(changeSet) + .map(c => c.split(',')) + .map(a => ({method: a[1], start: +a[2], count: +a[3]})); + } + _updateLayout(minPadding) { + if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) { + return; + } + layouts.update(this, this.width, this.height, minPadding); + const area = this.chartArea; + const noArea = area.width <= 0 || area.height <= 0; + this._layers = []; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this.boxes, (box) => { + if (noArea && box.position === 'chartArea') { + return; + } + if (box.configure) { + box.configure(); + } + this._layers.push(...box._layers()); + }, this); + this._layers.forEach((item, index) => { + item._idx = index; + }); + this.notifyPlugins('afterLayout'); + } + _updateDatasets(mode) { + if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) { + return; + } + for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + this.getDatasetMeta(i).controller.configure(); + } + for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + this._updateDataset(i, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a5)(mode) ? mode({datasetIndex: i}) : mode); + } + this.notifyPlugins('afterDatasetsUpdate', {mode}); + } + _updateDataset(index, mode) { + const meta = this.getDatasetMeta(index); + const args = {meta, index, mode, cancelable: true}; + if (this.notifyPlugins('beforeDatasetUpdate', args) === false) { + return; + } + meta.controller._update(mode); + args.cancelable = false; + this.notifyPlugins('afterDatasetUpdate', args); + } + render() { + if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) { + return; + } + if (animator.has(this)) { + if (this.attached && !animator.running(this)) { + animator.start(this); + } + } else { + this.draw(); + onAnimationsComplete({chart: this}); + } + } + draw() { + let i; + if (this._resizeBeforeDraw) { + const {width, height} = this._resizeBeforeDraw; + this._resize(width, height); + this._resizeBeforeDraw = null; + } + this.clear(); + if (this.width <= 0 || this.height <= 0) { + return; + } + if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) { + return; + } + const layers = this._layers; + for (i = 0; i < layers.length && layers[i].z <= 0; ++i) { + layers[i].draw(this.chartArea); + } + this._drawDatasets(); + for (; i < layers.length; ++i) { + layers[i].draw(this.chartArea); + } + this.notifyPlugins('afterDraw'); + } + _getSortedDatasetMetas(filterVisible) { + const metasets = this._sortedMetasets; + const result = []; + let i, ilen; + for (i = 0, ilen = metasets.length; i < ilen; ++i) { + const meta = metasets[i]; + if (!filterVisible || meta.visible) { + result.push(meta); + } + } + return result; + } + getSortedVisibleDatasetMetas() { + return this._getSortedDatasetMetas(true); + } + _drawDatasets() { + if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) { + return; + } + const metasets = this.getSortedVisibleDatasetMetas(); + for (let i = metasets.length - 1; i >= 0; --i) { + this._drawDataset(metasets[i]); + } + this.notifyPlugins('afterDatasetsDraw'); + } + _drawDataset(meta) { + const ctx = this.ctx; + const clip = meta._clip; + const useClip = !clip.disabled; + const area = this.chartArea; + const args = { + meta, + index: meta.index, + cancelable: true + }; + if (this.notifyPlugins('beforeDatasetDraw', args) === false) { + return; + } + if (useClip) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.W)(ctx, { + left: clip.left === false ? 0 : area.left - clip.left, + right: clip.right === false ? this.width : area.right + clip.right, + top: clip.top === false ? 0 : area.top - clip.top, + bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom + }); + } + meta.controller.draw(); + if (useClip) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Y)(ctx); + } + args.cancelable = false; + this.notifyPlugins('afterDatasetDraw', args); + } + getElementsAtEventForMode(e, mode, options, useFinalPosition) { + const method = Interaction.modes[mode]; + if (typeof method === 'function') { + return method(this, e, options, useFinalPosition); + } + return []; + } + getDatasetMeta(datasetIndex) { + const dataset = this.data.datasets[datasetIndex]; + const metasets = this._metasets; + let meta = metasets.filter(x => x && x._dataset === dataset).pop(); + if (!meta) { + meta = { + type: null, + data: [], + dataset: null, + controller: null, + hidden: null, + xAxisID: null, + yAxisID: null, + order: dataset && dataset.order || 0, + index: datasetIndex, + _dataset: dataset, + _parsed: [], + _sorted: false + }; + metasets.push(meta); + } + return meta; + } + getContext() { + return this.$context || (this.$context = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.h)(null, {chart: this, type: 'chart'})); + } + getVisibleDatasetCount() { + return this.getSortedVisibleDatasetMetas().length; + } + isDatasetVisible(datasetIndex) { + const dataset = this.data.datasets[datasetIndex]; + if (!dataset) { + return false; + } + const meta = this.getDatasetMeta(datasetIndex); + return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden; + } + setDatasetVisibility(datasetIndex, visible) { + const meta = this.getDatasetMeta(datasetIndex); + meta.hidden = !visible; + } + toggleDataVisibility(index) { + this._hiddenIndices[index] = !this._hiddenIndices[index]; + } + getDataVisibility(index) { + return !this._hiddenIndices[index]; + } + _updateVisibility(datasetIndex, dataIndex, visible) { + const mode = visible ? 'show' : 'hide'; + const meta = this.getDatasetMeta(datasetIndex); + const anims = meta.controller._resolveAnimations(undefined, mode); + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.j)(dataIndex)) { + meta.data[dataIndex].hidden = !visible; + this.update(); + } else { + this.setDatasetVisibility(datasetIndex, visible); + anims.update(meta, {visible}); + this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined); + } + } + hide(datasetIndex, dataIndex) { + this._updateVisibility(datasetIndex, dataIndex, false); + } + show(datasetIndex, dataIndex) { + this._updateVisibility(datasetIndex, dataIndex, true); + } + _destroyDatasetMeta(datasetIndex) { + const meta = this._metasets[datasetIndex]; + if (meta && meta.controller) { + meta.controller._destroy(); + } + delete this._metasets[datasetIndex]; + } + _stop() { + let i, ilen; + this.stop(); + animator.remove(this); + for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + this._destroyDatasetMeta(i); + } + } + destroy() { + this.notifyPlugins('beforeDestroy'); + const {canvas, ctx} = this; + this._stop(); + this.config.clearCache(); + if (canvas) { + this.unbindEvents(); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ad)(canvas, ctx); + this.platform.releaseContext(ctx); + this.canvas = null; + this.ctx = null; + } + this.notifyPlugins('destroy'); + delete instances[this.id]; + this.notifyPlugins('afterDestroy'); + } + toBase64Image(...args) { + return this.canvas.toDataURL(...args); + } + bindEvents() { + this.bindUserEvents(); + if (this.options.responsive) { + this.bindResponsiveEvents(); + } else { + this.attached = true; + } + } + bindUserEvents() { + const listeners = this._listeners; + const platform = this.platform; + const _add = (type, listener) => { + platform.addEventListener(this, type, listener); + listeners[type] = listener; + }; + const listener = (e, x, y) => { + e.offsetX = x; + e.offsetY = y; + this._eventHandler(e); + }; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this.options.events, (type) => _add(type, listener)); + } + bindResponsiveEvents() { + if (!this._responsiveListeners) { + this._responsiveListeners = {}; + } + const listeners = this._responsiveListeners; + const platform = this.platform; + const _add = (type, listener) => { + platform.addEventListener(this, type, listener); + listeners[type] = listener; + }; + const _remove = (type, listener) => { + if (listeners[type]) { + platform.removeEventListener(this, type, listener); + delete listeners[type]; + } + }; + const listener = (width, height) => { + if (this.canvas) { + this.resize(width, height); + } + }; + let detached; + const attached = () => { + _remove('attach', attached); + this.attached = true; + this.resize(); + _add('resize', listener); + _add('detach', detached); + }; + detached = () => { + this.attached = false; + _remove('resize', listener); + this._stop(); + this._resize(0, 0); + _add('attach', attached); + }; + if (platform.isAttached(this.canvas)) { + attached(); + } else { + detached(); + } + } + unbindEvents() { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this._listeners, (listener, type) => { + this.platform.removeEventListener(this, type, listener); + }); + this._listeners = {}; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this._responsiveListeners, (listener, type) => { + this.platform.removeEventListener(this, type, listener); + }); + this._responsiveListeners = undefined; + } + updateHoverStyle(items, mode, enabled) { + const prefix = enabled ? 'set' : 'remove'; + let meta, item, i, ilen; + if (mode === 'dataset') { + meta = this.getDatasetMeta(items[0].datasetIndex); + meta.controller['_' + prefix + 'DatasetHoverStyle'](); + } + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + const controller = item && this.getDatasetMeta(item.datasetIndex).controller; + if (controller) { + controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index); + } + } + } + getActiveElements() { + return this._active || []; + } + setActiveElements(activeElements) { + const lastActive = this._active || []; + const active = activeElements.map(({datasetIndex, index}) => { + const meta = this.getDatasetMeta(datasetIndex); + if (!meta) { + throw new Error('No dataset found at index ' + datasetIndex); + } + return { + datasetIndex, + element: meta.data[index], + index, + }; + }); + const changed = !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.af)(active, lastActive); + if (changed) { + this._active = active; + this._lastEvent = null; + this._updateHoverStyles(active, lastActive); + } + } + notifyPlugins(hook, args, filter) { + return this._plugins.notify(this, hook, args, filter); + } + _updateHoverStyles(active, lastActive, replay) { + const hoverOptions = this.options.hover; + const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index)); + const deactivated = diff(lastActive, active); + const activated = replay ? active : diff(active, lastActive); + if (deactivated.length) { + this.updateHoverStyle(deactivated, hoverOptions.mode, false); + } + if (activated.length && hoverOptions.mode) { + this.updateHoverStyle(activated, hoverOptions.mode, true); + } + } + _eventHandler(e, replay) { + const args = { + event: e, + replay, + cancelable: true, + inChartArea: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.z)(e, this.chartArea, this._minPadding) + }; + const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type); + if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) { + return; + } + const changed = this._handleEvent(e, replay, args.inChartArea); + args.cancelable = false; + this.notifyPlugins('afterEvent', args, eventFilter); + if (changed || args.changed) { + this.render(); + } + return this; + } + _handleEvent(e, replay, inChartArea) { + const {_active: lastActive = [], options} = this; + const useFinalPosition = replay; + const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition); + const isClick = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ag)(e); + const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick); + if (inChartArea) { + this._lastEvent = null; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(options.onHover, [e, active, this], this); + if (isClick) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(options.onClick, [e, active, this], this); + } + } + const changed = !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.af)(active, lastActive); + if (changed || replay) { + this._active = active; + this._updateHoverStyles(active, lastActive, replay); + } + this._lastEvent = lastEvent; + return changed; + } + _getActiveElements(e, lastActive, inChartArea, useFinalPosition) { + if (e.type === 'mouseout') { + return []; + } + if (!inChartArea) { + return lastActive; + } + const hoverOptions = this.options.hover; + return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition); + } +} +const invalidatePlugins = () => (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(Chart.instances, (chart) => chart._plugins.invalidate()); +const enumerable = true; +Object.defineProperties(Chart, { + defaults: { + enumerable, + value: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d + }, + instances: { + enumerable, + value: instances + }, + overrides: { + enumerable, + value: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a1 + }, + registry: { + enumerable, + value: registry + }, + version: { + enumerable, + value: version + }, + getChart: { + enumerable, + value: getChart + }, + register: { + enumerable, + value: (...items) => { + registry.add(...items); + invalidatePlugins(); + } + }, + unregister: { + enumerable, + value: (...items) => { + registry.remove(...items); + invalidatePlugins(); + } + } +}); + +function clipArc(ctx, element, endAngle) { + const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element; + let angleMargin = pixelMargin / outerRadius; + ctx.beginPath(); + ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin); + if (innerRadius > pixelMargin) { + angleMargin = pixelMargin / innerRadius; + ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true); + } else { + ctx.arc(x, y, pixelMargin, endAngle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H, startAngle - _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H); + } + ctx.closePath(); + ctx.clip(); +} +function toRadiusCorners(value) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ai)(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']); +} +function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) { + const o = toRadiusCorners(arc.options.borderRadius); + const halfThickness = (outerRadius - innerRadius) / 2; + const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2); + const computeOuterLimit = (val) => { + const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2; + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(val, 0, Math.min(halfThickness, outerArcLimit)); + }; + return { + outerStart: computeOuterLimit(o.outerStart), + outerEnd: computeOuterLimit(o.outerEnd), + innerStart: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(o.innerStart, 0, innerLimit), + innerEnd: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(o.innerEnd, 0, innerLimit), + }; +} +function rThetaToXY(r, theta, x, y) { + return { + x: x + r * Math.cos(theta), + y: y + r * Math.sin(theta), + }; +} +function pathArc(ctx, element, offset, spacing, end) { + const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element; + const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0); + const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0; + let spacingOffset = 0; + const alpha = end - start; + if (spacing) { + const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0; + const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0; + const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2; + const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha; + spacingOffset = (alpha - adjustedAngle) / 2; + } + const beta = Math.max(0.001, alpha * outerRadius - offset / _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P) / outerRadius; + const angleOffset = (alpha - beta) / 2; + const startAngle = start + angleOffset + spacingOffset; + const endAngle = end - angleOffset - spacingOffset; + const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle); + const outerStartAdjustedRadius = outerRadius - outerStart; + const outerEndAdjustedRadius = outerRadius - outerEnd; + const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius; + const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius; + const innerStartAdjustedRadius = innerRadius + innerStart; + const innerEndAdjustedRadius = innerRadius + innerEnd; + const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius; + const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius; + ctx.beginPath(); + ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle); + if (outerEnd > 0) { + const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H); + } + const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y); + ctx.lineTo(p4.x, p4.y); + if (innerEnd > 0) { + const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H, innerEndAdjustedAngle + Math.PI); + } + ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true); + if (innerStart > 0) { + const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H); + } + const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y); + ctx.lineTo(p8.x, p8.y); + if (outerStart > 0) { + const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H, outerStartAdjustedAngle); + } + ctx.closePath(); +} +function drawArc(ctx, element, offset, spacing) { + const {fullCircles, startAngle, circumference} = element; + let endAngle = element.endAngle; + if (fullCircles) { + pathArc(ctx, element, offset, spacing, startAngle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T); + for (let i = 0; i < fullCircles; ++i) { + ctx.fill(); + } + if (!isNaN(circumference)) { + endAngle = startAngle + circumference % _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T; + if (circumference % _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T === 0) { + endAngle += _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T; + } + } + } + pathArc(ctx, element, offset, spacing, endAngle); + ctx.fill(); + return endAngle; +} +function drawFullCircleBorders(ctx, element, inner) { + const {x, y, startAngle, pixelMargin, fullCircles} = element; + const outerRadius = Math.max(element.outerRadius - pixelMargin, 0); + const innerRadius = element.innerRadius + pixelMargin; + let i; + if (inner) { + clipArc(ctx, element, startAngle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T); + } + ctx.beginPath(); + ctx.arc(x, y, innerRadius, startAngle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T, startAngle, true); + for (i = 0; i < fullCircles; ++i) { + ctx.stroke(); + } + ctx.beginPath(); + ctx.arc(x, y, outerRadius, startAngle, startAngle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T); + for (i = 0; i < fullCircles; ++i) { + ctx.stroke(); + } +} +function drawBorder(ctx, element, offset, spacing, endAngle) { + const {options} = element; + const {borderWidth, borderJoinStyle} = options; + const inner = options.borderAlign === 'inner'; + if (!borderWidth) { + return; + } + if (inner) { + ctx.lineWidth = borderWidth * 2; + ctx.lineJoin = borderJoinStyle || 'round'; + } else { + ctx.lineWidth = borderWidth; + ctx.lineJoin = borderJoinStyle || 'bevel'; + } + if (element.fullCircles) { + drawFullCircleBorders(ctx, element, inner); + } + if (inner) { + clipArc(ctx, element, endAngle); + } + pathArc(ctx, element, offset, spacing, endAngle); + ctx.stroke(); +} +class ArcElement extends Element { + constructor(cfg) { + super(); + this.options = undefined; + this.circumference = undefined; + this.startAngle = undefined; + this.endAngle = undefined; + this.innerRadius = undefined; + this.outerRadius = undefined; + this.pixelMargin = 0; + this.fullCircles = 0; + if (cfg) { + Object.assign(this, cfg); + } + } + inRange(chartX, chartY, useFinalPosition) { + const point = this.getProps(['x', 'y'], useFinalPosition); + const {angle, distance} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.B)(point, {x: chartX, y: chartY}); + const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([ + 'startAngle', + 'endAngle', + 'innerRadius', + 'outerRadius', + 'circumference' + ], useFinalPosition); + const rAdjust = this.options.spacing / 2; + const _circumference = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(circumference, endAngle - startAngle); + const betweenAngles = _circumference >= _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle); + const withinRadius = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(distance, innerRadius + rAdjust, outerRadius + rAdjust); + return (betweenAngles && withinRadius); + } + getCenterPoint(useFinalPosition) { + const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([ + 'x', + 'y', + 'startAngle', + 'endAngle', + 'innerRadius', + 'outerRadius', + 'circumference', + ], useFinalPosition); + const {offset, spacing} = this.options; + const halfAngle = (startAngle + endAngle) / 2; + const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2; + return { + x: x + Math.cos(halfAngle) * halfRadius, + y: y + Math.sin(halfAngle) * halfRadius + }; + } + tooltipPosition(useFinalPosition) { + return this.getCenterPoint(useFinalPosition); + } + draw(ctx) { + const {options, circumference} = this; + const offset = (options.offset || 0) / 2; + const spacing = (options.spacing || 0) / 2; + this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0; + this.fullCircles = circumference > _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T ? Math.floor(circumference / _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T) : 0; + if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) { + return; + } + ctx.save(); + let radiusOffset = 0; + if (offset) { + radiusOffset = offset / 2; + const halfAngle = (this.startAngle + this.endAngle) / 2; + ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset); + if (this.circumference >= _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P) { + radiusOffset = offset; + } + } + ctx.fillStyle = options.backgroundColor; + ctx.strokeStyle = options.borderColor; + const endAngle = drawArc(ctx, this, radiusOffset, spacing); + drawBorder(ctx, this, radiusOffset, spacing, endAngle); + ctx.restore(); + } +} +ArcElement.id = 'arc'; +ArcElement.defaults = { + borderAlign: 'center', + borderColor: '#fff', + borderJoinStyle: undefined, + borderRadius: 0, + borderWidth: 2, + offset: 0, + spacing: 0, + angle: undefined, +}; +ArcElement.defaultRoutes = { + backgroundColor: 'backgroundColor' +}; + +function setStyle(ctx, options, style = options) { + ctx.lineCap = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderCapStyle, options.borderCapStyle); + ctx.setLineDash((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderDash, options.borderDash)); + ctx.lineDashOffset = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderDashOffset, options.borderDashOffset); + ctx.lineJoin = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderJoinStyle, options.borderJoinStyle); + ctx.lineWidth = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderWidth, options.borderWidth); + ctx.strokeStyle = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderColor, options.borderColor); +} +function lineTo(ctx, previous, target) { + ctx.lineTo(target.x, target.y); +} +function getLineMethod(options) { + if (options.stepped) { + return _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ap; + } + if (options.tension || options.cubicInterpolationMode === 'monotone') { + return _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aq; + } + return lineTo; +} +function pathVars(points, segment, params = {}) { + const count = points.length; + const {start: paramsStart = 0, end: paramsEnd = count - 1} = params; + const {start: segmentStart, end: segmentEnd} = segment; + const start = Math.max(paramsStart, segmentStart); + const end = Math.min(paramsEnd, segmentEnd); + const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd; + return { + count, + start, + loop: segment.loop, + ilen: end < start && !outside ? count + end - start : end - start + }; +} +function pathSegment(ctx, line, segment, params) { + const {points, options} = line; + const {count, start, loop, ilen} = pathVars(points, segment, params); + const lineMethod = getLineMethod(options); + let {move = true, reverse} = params || {}; + let i, point, prev; + for (i = 0; i <= ilen; ++i) { + point = points[(start + (reverse ? ilen - i : i)) % count]; + if (point.skip) { + continue; + } else if (move) { + ctx.moveTo(point.x, point.y); + move = false; + } else { + lineMethod(ctx, prev, point, reverse, options.stepped); + } + prev = point; + } + if (loop) { + point = points[(start + (reverse ? ilen : 0)) % count]; + lineMethod(ctx, prev, point, reverse, options.stepped); + } + return !!loop; +} +function fastPathSegment(ctx, line, segment, params) { + const points = line.points; + const {count, start, ilen} = pathVars(points, segment, params); + const {move = true, reverse} = params || {}; + let avgX = 0; + let countX = 0; + let i, point, prevX, minY, maxY, lastY; + const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count; + const drawX = () => { + if (minY !== maxY) { + ctx.lineTo(avgX, maxY); + ctx.lineTo(avgX, minY); + ctx.lineTo(avgX, lastY); + } + }; + if (move) { + point = points[pointIndex(0)]; + ctx.moveTo(point.x, point.y); + } + for (i = 0; i <= ilen; ++i) { + point = points[pointIndex(i)]; + if (point.skip) { + continue; + } + const x = point.x; + const y = point.y; + const truncX = x | 0; + if (truncX === prevX) { + if (y < minY) { + minY = y; + } else if (y > maxY) { + maxY = y; + } + avgX = (countX * avgX + x) / ++countX; + } else { + drawX(); + ctx.lineTo(x, y); + prevX = truncX; + countX = 0; + minY = maxY = y; + } + lastY = y; + } + drawX(); +} +function _getSegmentMethod(line) { + const opts = line.options; + const borderDash = opts.borderDash && opts.borderDash.length; + const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash; + return useFastPath ? fastPathSegment : pathSegment; +} +function _getInterpolationMethod(options) { + if (options.stepped) { + return _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.am; + } + if (options.tension || options.cubicInterpolationMode === 'monotone') { + return _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.an; + } + return _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ao; +} +function strokePathWithCache(ctx, line, start, count) { + let path = line._path; + if (!path) { + path = line._path = new Path2D(); + if (line.path(path, start, count)) { + path.closePath(); + } + } + setStyle(ctx, line.options); + ctx.stroke(path); +} +function strokePathDirect(ctx, line, start, count) { + const {segments, options} = line; + const segmentMethod = _getSegmentMethod(line); + for (const segment of segments) { + setStyle(ctx, options, segment.style); + ctx.beginPath(); + if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) { + ctx.closePath(); + } + ctx.stroke(); + } +} +const usePath2D = typeof Path2D === 'function'; +function draw(ctx, line, start, count) { + if (usePath2D && !line.options.segment) { + strokePathWithCache(ctx, line, start, count); + } else { + strokePathDirect(ctx, line, start, count); + } +} +class LineElement extends Element { + constructor(cfg) { + super(); + this.animated = true; + this.options = undefined; + this._chart = undefined; + this._loop = undefined; + this._fullLoop = undefined; + this._path = undefined; + this._points = undefined; + this._segments = undefined; + this._decimated = false; + this._pointsUpdated = false; + this._datasetIndex = undefined; + if (cfg) { + Object.assign(this, cfg); + } + } + updateControlPoints(chartArea, indexAxis) { + const options = this.options; + if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) { + const loop = options.spanGaps ? this._loop : this._fullLoop; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aj)(this._points, options, chartArea, loop, indexAxis); + this._pointsUpdated = true; + } + } + set points(points) { + this._points = points; + delete this._segments; + delete this._path; + this._pointsUpdated = false; + } + get points() { + return this._points; + } + get segments() { + return this._segments || (this._segments = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ak)(this, this.options.segment)); + } + first() { + const segments = this.segments; + const points = this.points; + return segments.length && points[segments[0].start]; + } + last() { + const segments = this.segments; + const points = this.points; + const count = segments.length; + return count && points[segments[count - 1].end]; + } + interpolate(point, property) { + const options = this.options; + const value = point[property]; + const points = this.points; + const segments = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.al)(this, {property, start: value, end: value}); + if (!segments.length) { + return; + } + const result = []; + const _interpolate = _getInterpolationMethod(options); + let i, ilen; + for (i = 0, ilen = segments.length; i < ilen; ++i) { + const {start, end} = segments[i]; + const p1 = points[start]; + const p2 = points[end]; + if (p1 === p2) { + result.push(p1); + continue; + } + const t = Math.abs((value - p1[property]) / (p2[property] - p1[property])); + const interpolated = _interpolate(p1, p2, t, options.stepped); + interpolated[property] = point[property]; + result.push(interpolated); + } + return result.length === 1 ? result[0] : result; + } + pathSegment(ctx, segment, params) { + const segmentMethod = _getSegmentMethod(this); + return segmentMethod(ctx, this, segment, params); + } + path(ctx, start, count) { + const segments = this.segments; + const segmentMethod = _getSegmentMethod(this); + let loop = this._loop; + start = start || 0; + count = count || (this.points.length - start); + for (const segment of segments) { + loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1}); + } + return !!loop; + } + draw(ctx, chartArea, start, count) { + const options = this.options || {}; + const points = this.points || []; + if (points.length && options.borderWidth) { + ctx.save(); + draw(ctx, this, start, count); + ctx.restore(); + } + if (this.animated) { + this._pointsUpdated = false; + this._path = undefined; + } + } +} +LineElement.id = 'line'; +LineElement.defaults = { + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0, + borderJoinStyle: 'miter', + borderWidth: 3, + capBezierPoints: true, + cubicInterpolationMode: 'default', + fill: false, + spanGaps: false, + stepped: false, + tension: 0, +}; +LineElement.defaultRoutes = { + backgroundColor: 'backgroundColor', + borderColor: 'borderColor' +}; +LineElement.descriptors = { + _scriptable: true, + _indexable: (name) => name !== 'borderDash' && name !== 'fill', +}; + +function inRange$1(el, pos, axis, useFinalPosition) { + const options = el.options; + const {[axis]: value} = el.getProps([axis], useFinalPosition); + return (Math.abs(pos - value) < options.radius + options.hitRadius); +} +class PointElement extends Element { + constructor(cfg) { + super(); + this.options = undefined; + this.parsed = undefined; + this.skip = undefined; + this.stop = undefined; + if (cfg) { + Object.assign(this, cfg); + } + } + inRange(mouseX, mouseY, useFinalPosition) { + const options = this.options; + const {x, y} = this.getProps(['x', 'y'], useFinalPosition); + return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2)); + } + inXRange(mouseX, useFinalPosition) { + return inRange$1(this, mouseX, 'x', useFinalPosition); + } + inYRange(mouseY, useFinalPosition) { + return inRange$1(this, mouseY, 'y', useFinalPosition); + } + getCenterPoint(useFinalPosition) { + const {x, y} = this.getProps(['x', 'y'], useFinalPosition); + return {x, y}; + } + size(options) { + options = options || this.options || {}; + let radius = options.radius || 0; + radius = Math.max(radius, radius && options.hoverRadius || 0); + const borderWidth = radius && options.borderWidth || 0; + return (radius + borderWidth) * 2; + } + draw(ctx, area) { + const options = this.options; + if (this.skip || options.radius < 0.1 || !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.z)(this, area, this.size(options) / 2)) { + return; + } + ctx.strokeStyle = options.borderColor; + ctx.lineWidth = options.borderWidth; + ctx.fillStyle = options.backgroundColor; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ar)(ctx, options, this.x, this.y); + } + getRange() { + const options = this.options || {}; + return options.radius + options.hitRadius; + } +} +PointElement.id = 'point'; +PointElement.defaults = { + borderWidth: 1, + hitRadius: 1, + hoverBorderWidth: 1, + hoverRadius: 4, + pointStyle: 'circle', + radius: 3, + rotation: 0 +}; +PointElement.defaultRoutes = { + backgroundColor: 'backgroundColor', + borderColor: 'borderColor' +}; + +function getBarBounds(bar, useFinalPosition) { + const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition); + let left, right, top, bottom, half; + if (bar.horizontal) { + half = height / 2; + left = Math.min(x, base); + right = Math.max(x, base); + top = y - half; + bottom = y + half; + } else { + half = width / 2; + left = x - half; + right = x + half; + top = Math.min(y, base); + bottom = Math.max(y, base); + } + return {left, top, right, bottom}; +} +function skipOrLimit(skip, value, min, max) { + return skip ? 0 : (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(value, min, max); +} +function parseBorderWidth(bar, maxW, maxH) { + const value = bar.options.borderWidth; + const skip = bar.borderSkipped; + const o = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.at)(value); + return { + t: skipOrLimit(skip.top, o.top, 0, maxH), + r: skipOrLimit(skip.right, o.right, 0, maxW), + b: skipOrLimit(skip.bottom, o.bottom, 0, maxH), + l: skipOrLimit(skip.left, o.left, 0, maxW) + }; +} +function parseBorderRadius(bar, maxW, maxH) { + const {enableBorderRadius} = bar.getProps(['enableBorderRadius']); + const value = bar.options.borderRadius; + const o = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.au)(value); + const maxR = Math.min(maxW, maxH); + const skip = bar.borderSkipped; + const enableBorder = enableBorderRadius || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(value); + return { + topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR), + topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR), + bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR), + bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR) + }; +} +function boundingRects(bar) { + const bounds = getBarBounds(bar); + const width = bounds.right - bounds.left; + const height = bounds.bottom - bounds.top; + const border = parseBorderWidth(bar, width / 2, height / 2); + const radius = parseBorderRadius(bar, width / 2, height / 2); + return { + outer: { + x: bounds.left, + y: bounds.top, + w: width, + h: height, + radius + }, + inner: { + x: bounds.left + border.l, + y: bounds.top + border.t, + w: width - border.l - border.r, + h: height - border.t - border.b, + radius: { + topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)), + topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)), + bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)), + bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)), + } + } + }; +} +function inRange(bar, x, y, useFinalPosition) { + const skipX = x === null; + const skipY = y === null; + const skipBoth = skipX && skipY; + const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition); + return bounds + && (skipX || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(x, bounds.left, bounds.right)) + && (skipY || (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(y, bounds.top, bounds.bottom)); +} +function hasRadius(radius) { + return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight; +} +function addNormalRectPath(ctx, rect) { + ctx.rect(rect.x, rect.y, rect.w, rect.h); +} +function inflateRect(rect, amount, refRect = {}) { + const x = rect.x !== refRect.x ? -amount : 0; + const y = rect.y !== refRect.y ? -amount : 0; + const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x; + const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y; + return { + x: rect.x + x, + y: rect.y + y, + w: rect.w + w, + h: rect.h + h, + radius: rect.radius + }; +} +class BarElement extends Element { + constructor(cfg) { + super(); + this.options = undefined; + this.horizontal = undefined; + this.base = undefined; + this.width = undefined; + this.height = undefined; + this.inflateAmount = undefined; + if (cfg) { + Object.assign(this, cfg); + } + } + draw(ctx) { + const {inflateAmount, options: {borderColor, backgroundColor}} = this; + const {inner, outer} = boundingRects(this); + const addRectPath = hasRadius(outer.radius) ? _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.as : addNormalRectPath; + ctx.save(); + if (outer.w !== inner.w || outer.h !== inner.h) { + ctx.beginPath(); + addRectPath(ctx, inflateRect(outer, inflateAmount, inner)); + ctx.clip(); + addRectPath(ctx, inflateRect(inner, -inflateAmount, outer)); + ctx.fillStyle = borderColor; + ctx.fill('evenodd'); + } + ctx.beginPath(); + addRectPath(ctx, inflateRect(inner, inflateAmount)); + ctx.fillStyle = backgroundColor; + ctx.fill(); + ctx.restore(); + } + inRange(mouseX, mouseY, useFinalPosition) { + return inRange(this, mouseX, mouseY, useFinalPosition); + } + inXRange(mouseX, useFinalPosition) { + return inRange(this, mouseX, null, useFinalPosition); + } + inYRange(mouseY, useFinalPosition) { + return inRange(this, null, mouseY, useFinalPosition); + } + getCenterPoint(useFinalPosition) { + const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition); + return { + x: horizontal ? (x + base) / 2 : x, + y: horizontal ? y : (y + base) / 2 + }; + } + getRange(axis) { + return axis === 'x' ? this.width / 2 : this.height / 2; + } +} +BarElement.id = 'bar'; +BarElement.defaults = { + borderSkipped: 'start', + borderWidth: 0, + borderRadius: 0, + inflateAmount: 'auto', + pointStyle: undefined +}; +BarElement.defaultRoutes = { + backgroundColor: 'backgroundColor', + borderColor: 'borderColor' +}; + +var elements = /*#__PURE__*/Object.freeze({ +__proto__: null, +ArcElement: ArcElement, +LineElement: LineElement, +PointElement: PointElement, +BarElement: BarElement +}); + +function lttbDecimation(data, start, count, availableWidth, options) { + const samples = options.samples || availableWidth; + if (samples >= count) { + return data.slice(start, start + count); + } + const decimated = []; + const bucketWidth = (count - 2) / (samples - 2); + let sampledIndex = 0; + const endIndex = start + count - 1; + let a = start; + let i, maxAreaPoint, maxArea, area, nextA; + decimated[sampledIndex++] = data[a]; + for (i = 0; i < samples - 2; i++) { + let avgX = 0; + let avgY = 0; + let j; + const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start; + const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start; + const avgRangeLength = avgRangeEnd - avgRangeStart; + for (j = avgRangeStart; j < avgRangeEnd; j++) { + avgX += data[j].x; + avgY += data[j].y; + } + avgX /= avgRangeLength; + avgY /= avgRangeLength; + const rangeOffs = Math.floor(i * bucketWidth) + 1 + start; + const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start; + const {x: pointAx, y: pointAy} = data[a]; + maxArea = area = -1; + for (j = rangeOffs; j < rangeTo; j++) { + area = 0.5 * Math.abs( + (pointAx - avgX) * (data[j].y - pointAy) - + (pointAx - data[j].x) * (avgY - pointAy) + ); + if (area > maxArea) { + maxArea = area; + maxAreaPoint = data[j]; + nextA = j; + } + } + decimated[sampledIndex++] = maxAreaPoint; + a = nextA; + } + decimated[sampledIndex++] = data[endIndex]; + return decimated; +} +function minMaxDecimation(data, start, count, availableWidth) { + let avgX = 0; + let countX = 0; + let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY; + const decimated = []; + const endIndex = start + count - 1; + const xMin = data[start].x; + const xMax = data[endIndex].x; + const dx = xMax - xMin; + for (i = start; i < start + count; ++i) { + point = data[i]; + x = (point.x - xMin) / dx * availableWidth; + y = point.y; + const truncX = x | 0; + if (truncX === prevX) { + if (y < minY) { + minY = y; + minIndex = i; + } else if (y > maxY) { + maxY = y; + maxIndex = i; + } + avgX = (countX * avgX + point.x) / ++countX; + } else { + const lastIndex = i - 1; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(minIndex) && !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(maxIndex)) { + const intermediateIndex1 = Math.min(minIndex, maxIndex); + const intermediateIndex2 = Math.max(minIndex, maxIndex); + if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) { + decimated.push({ + ...data[intermediateIndex1], + x: avgX, + }); + } + if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) { + decimated.push({ + ...data[intermediateIndex2], + x: avgX + }); + } + } + if (i > 0 && lastIndex !== startIndex) { + decimated.push(data[lastIndex]); + } + decimated.push(point); + prevX = truncX; + countX = 0; + minY = maxY = y; + minIndex = maxIndex = startIndex = i; + } + } + return decimated; +} +function cleanDecimatedDataset(dataset) { + if (dataset._decimated) { + const data = dataset._data; + delete dataset._decimated; + delete dataset._data; + Object.defineProperty(dataset, 'data', {value: data}); + } +} +function cleanDecimatedData(chart) { + chart.data.datasets.forEach((dataset) => { + cleanDecimatedDataset(dataset); + }); +} +function getStartAndCountOfVisiblePointsSimplified(meta, points) { + const pointCount = points.length; + let start = 0; + let count; + const {iScale} = meta; + const {min, max, minDefined, maxDefined} = iScale.getUserBounds(); + if (minDefined) { + start = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(points, iScale.axis, min).lo, 0, pointCount - 1); + } + if (maxDefined) { + count = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(points, iScale.axis, max).hi + 1, start, pointCount) - start; + } else { + count = pointCount - start; + } + return {start, count}; +} +var plugin_decimation = { + id: 'decimation', + defaults: { + algorithm: 'min-max', + enabled: false, + }, + beforeElementsUpdate: (chart, args, options) => { + if (!options.enabled) { + cleanDecimatedData(chart); + return; + } + const availableWidth = chart.width; + chart.data.datasets.forEach((dataset, datasetIndex) => { + const {_data, indexAxis} = dataset; + const meta = chart.getDatasetMeta(datasetIndex); + const data = _data || dataset.data; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a)([indexAxis, chart.options.indexAxis]) === 'y') { + return; + } + if (meta.type !== 'line') { + return; + } + const xAxis = chart.scales[meta.xAxisID]; + if (xAxis.type !== 'linear' && xAxis.type !== 'time') { + return; + } + if (chart.options.parsing) { + return; + } + let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data); + const threshold = options.threshold || 4 * availableWidth; + if (count <= threshold) { + cleanDecimatedDataset(dataset); + return; + } + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(_data)) { + dataset._data = data; + delete dataset.data; + Object.defineProperty(dataset, 'data', { + configurable: true, + enumerable: true, + get: function() { + return this._decimated; + }, + set: function(d) { + this._data = d; + } + }); + } + let decimated; + switch (options.algorithm) { + case 'lttb': + decimated = lttbDecimation(data, start, count, availableWidth, options); + break; + case 'min-max': + decimated = minMaxDecimation(data, start, count, availableWidth); + break; + default: + throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`); + } + dataset._decimated = decimated; + }); + }, + destroy(chart) { + cleanDecimatedData(chart); + } +}; + +function getLineByIndex(chart, index) { + const meta = chart.getDatasetMeta(index); + const visible = meta && chart.isDatasetVisible(index); + return visible ? meta.dataset : null; +} +function parseFillOption(line) { + const options = line.options; + const fillOption = options.fill; + let fill = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(fillOption && fillOption.target, fillOption); + if (fill === undefined) { + fill = !!options.backgroundColor; + } + if (fill === false || fill === null) { + return false; + } + if (fill === true) { + return 'origin'; + } + return fill; +} +function decodeFill(line, index, count) { + const fill = parseFillOption(line); + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(fill)) { + return isNaN(fill.value) ? false : fill; + } + let target = parseFloat(fill); + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(target) && Math.floor(target) === target) { + if (fill[0] === '-' || fill[0] === '+') { + target = index + target; + } + if (target === index || target < 0 || target >= count) { + return false; + } + return target; + } + return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill; +} +function computeLinearBoundary(source) { + const {scale = {}, fill} = source; + let target = null; + let horizontal; + if (fill === 'start') { + target = scale.bottom; + } else if (fill === 'end') { + target = scale.top; + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(fill)) { + target = scale.getPixelForValue(fill.value); + } else if (scale.getBasePixel) { + target = scale.getBasePixel(); + } + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(target)) { + horizontal = scale.isHorizontal(); + return { + x: horizontal ? target : null, + y: horizontal ? null : target + }; + } + return null; +} +class simpleArc { + constructor(opts) { + this.x = opts.x; + this.y = opts.y; + this.radius = opts.radius; + } + pathSegment(ctx, bounds, opts) { + const {x, y, radius} = this; + bounds = bounds || {start: 0, end: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T}; + ctx.arc(x, y, radius, bounds.end, bounds.start, true); + return !opts.bounds; + } + interpolate(point) { + const {x, y, radius} = this; + const angle = point.angle; + return { + x: x + Math.cos(angle) * radius, + y: y + Math.sin(angle) * radius, + angle + }; + } +} +function computeCircularBoundary(source) { + const {scale, fill} = source; + const options = scale.options; + const length = scale.getLabels().length; + const target = []; + const start = options.reverse ? scale.max : scale.min; + const end = options.reverse ? scale.min : scale.max; + let i, center, value; + if (fill === 'start') { + value = start; + } else if (fill === 'end') { + value = end; + } else if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.i)(fill)) { + value = fill.value; + } else { + value = scale.getBaseValue(); + } + if (options.grid.circular) { + center = scale.getPointPositionForValue(0, start); + return new simpleArc({ + x: center.x, + y: center.y, + radius: scale.getDistanceFromCenterForValue(value) + }); + } + for (i = 0; i < length; ++i) { + target.push(scale.getPointPositionForValue(i, value)); + } + return target; +} +function computeBoundary(source) { + const scale = source.scale || {}; + if (scale.getPointPositionForValue) { + return computeCircularBoundary(source); + } + return computeLinearBoundary(source); +} +function findSegmentEnd(start, end, points) { + for (;end > start; end--) { + const point = points[end]; + if (!isNaN(point.x) && !isNaN(point.y)) { + break; + } + } + return end; +} +function pointsFromSegments(boundary, line) { + const {x = null, y = null} = boundary || {}; + const linePoints = line.points; + const points = []; + line.segments.forEach(({start, end}) => { + end = findSegmentEnd(start, end, linePoints); + const first = linePoints[start]; + const last = linePoints[end]; + if (y !== null) { + points.push({x: first.x, y}); + points.push({x: last.x, y}); + } else if (x !== null) { + points.push({x, y: first.y}); + points.push({x, y: last.y}); + } + }); + return points; +} +function buildStackLine(source) { + const {scale, index, line} = source; + const points = []; + const segments = line.segments; + const sourcePoints = line.points; + const linesBelow = getLinesBelow(scale, index); + linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line)); + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + for (let j = segment.start; j <= segment.end; j++) { + addPointsBelow(points, sourcePoints[j], linesBelow); + } + } + return new LineElement({points, options: {}}); +} +function getLinesBelow(scale, index) { + const below = []; + const metas = scale.getMatchingVisibleMetas('line'); + for (let i = 0; i < metas.length; i++) { + const meta = metas[i]; + if (meta.index === index) { + break; + } + if (!meta.hidden) { + below.unshift(meta.dataset); + } + } + return below; +} +function addPointsBelow(points, sourcePoint, linesBelow) { + const postponed = []; + for (let j = 0; j < linesBelow.length; j++) { + const line = linesBelow[j]; + const {first, last, point} = findPoint(line, sourcePoint, 'x'); + if (!point || (first && last)) { + continue; + } + if (first) { + postponed.unshift(point); + } else { + points.push(point); + if (!last) { + break; + } + } + } + points.push(...postponed); +} +function findPoint(line, sourcePoint, property) { + const point = line.interpolate(sourcePoint, property); + if (!point) { + return {}; + } + const pointValue = point[property]; + const segments = line.segments; + const linePoints = line.points; + let first = false; + let last = false; + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + const firstValue = linePoints[segment.start][property]; + const lastValue = linePoints[segment.end][property]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(pointValue, firstValue, lastValue)) { + first = pointValue === firstValue; + last = pointValue === lastValue; + break; + } + } + return {first, last, point}; +} +function getTarget(source) { + const {chart, fill, line} = source; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(fill)) { + return getLineByIndex(chart, fill); + } + if (fill === 'stack') { + return buildStackLine(source); + } + if (fill === 'shape') { + return true; + } + const boundary = computeBoundary(source); + if (boundary instanceof simpleArc) { + return boundary; + } + return createBoundaryLine(boundary, line); +} +function createBoundaryLine(boundary, line) { + let points = []; + let _loop = false; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(boundary)) { + _loop = true; + points = boundary; + } else { + points = pointsFromSegments(boundary, line); + } + return points.length ? new LineElement({ + points, + options: {tension: 0}, + _loop, + _fullLoop: _loop + }) : null; +} +function resolveTarget(sources, index, propagate) { + const source = sources[index]; + let fill = source.fill; + const visited = [index]; + let target; + if (!propagate) { + return fill; + } + while (fill !== false && visited.indexOf(fill) === -1) { + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(fill)) { + return fill; + } + target = sources[fill]; + if (!target) { + return false; + } + if (target.visible) { + return fill; + } + visited.push(fill); + fill = target.fill; + } + return false; +} +function _clip(ctx, target, clipY) { + const {segments, points} = target; + let first = true; + let lineLoop = false; + ctx.beginPath(); + for (const segment of segments) { + const {start, end} = segment; + const firstPoint = points[start]; + const lastPoint = points[findSegmentEnd(start, end, points)]; + if (first) { + ctx.moveTo(firstPoint.x, firstPoint.y); + first = false; + } else { + ctx.lineTo(firstPoint.x, clipY); + ctx.lineTo(firstPoint.x, firstPoint.y); + } + lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop}); + if (lineLoop) { + ctx.closePath(); + } else { + ctx.lineTo(lastPoint.x, clipY); + } + } + ctx.lineTo(target.first().x, clipY); + ctx.closePath(); + ctx.clip(); +} +function getBounds(property, first, last, loop) { + if (loop) { + return; + } + let start = first[property]; + let end = last[property]; + if (property === 'angle') { + start = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aw)(start); + end = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aw)(end); + } + return {property, start, end}; +} +function _getEdge(a, b, prop, fn) { + if (a && b) { + return fn(a[prop], b[prop]); + } + return a ? a[prop] : b ? b[prop] : 0; +} +function _segments(line, target, property) { + const segments = line.segments; + const points = line.points; + const tpoints = target.points; + const parts = []; + for (const segment of segments) { + let {start, end} = segment; + end = findSegmentEnd(start, end, points); + const bounds = getBounds(property, points[start], points[end], segment.loop); + if (!target.segments) { + parts.push({ + source: segment, + target: bounds, + start: points[start], + end: points[end] + }); + continue; + } + const targetSegments = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.al)(target, bounds); + for (const tgt of targetSegments) { + const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop); + const fillSources = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.av)(segment, points, subBounds); + for (const fillSource of fillSources) { + parts.push({ + source: fillSource, + target: tgt, + start: { + [property]: _getEdge(bounds, subBounds, 'start', Math.max) + }, + end: { + [property]: _getEdge(bounds, subBounds, 'end', Math.min) + } + }); + } + } + } + return parts; +} +function clipBounds(ctx, scale, bounds) { + const {top, bottom} = scale.chart.chartArea; + const {property, start, end} = bounds || {}; + if (property === 'x') { + ctx.beginPath(); + ctx.rect(start, top, end - start, bottom - top); + ctx.clip(); + } +} +function interpolatedLineTo(ctx, target, point, property) { + const interpolatedPoint = target.interpolate(point, property); + if (interpolatedPoint) { + ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y); + } +} +function _fill(ctx, cfg) { + const {line, target, property, color, scale} = cfg; + const segments = _segments(line, target, property); + for (const {source: src, target: tgt, start, end} of segments) { + const {style: {backgroundColor = color} = {}} = src; + const notShape = target !== true; + ctx.save(); + ctx.fillStyle = backgroundColor; + clipBounds(ctx, scale, notShape && getBounds(property, start, end)); + ctx.beginPath(); + const lineLoop = !!line.pathSegment(ctx, src); + let loop; + if (notShape) { + if (lineLoop) { + ctx.closePath(); + } else { + interpolatedLineTo(ctx, target, end, property); + } + const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true}); + loop = lineLoop && targetLoop; + if (!loop) { + interpolatedLineTo(ctx, target, start, property); + } + } + ctx.closePath(); + ctx.fill(loop ? 'evenodd' : 'nonzero'); + ctx.restore(); + } +} +function doFill(ctx, cfg) { + const {line, target, above, below, area, scale} = cfg; + const property = line._loop ? 'angle' : cfg.axis; + ctx.save(); + if (property === 'x' && below !== above) { + _clip(ctx, target, area.top); + _fill(ctx, {line, target, color: above, scale, property}); + ctx.restore(); + ctx.save(); + _clip(ctx, target, area.bottom); + } + _fill(ctx, {line, target, color: below, scale, property}); + ctx.restore(); +} +function drawfill(ctx, source, area) { + const target = getTarget(source); + const {line, scale, axis} = source; + const lineOpts = line.options; + const fillOption = lineOpts.fill; + const color = lineOpts.backgroundColor; + const {above = color, below = color} = fillOption || {}; + if (target && line.points.length) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.W)(ctx, area); + doFill(ctx, {line, target, above, below, area, scale, axis}); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Y)(ctx); + } +} +var plugin_filler = { + id: 'filler', + afterDatasetsUpdate(chart, _args, options) { + const count = (chart.data.datasets || []).length; + const sources = []; + let meta, i, line, source; + for (i = 0; i < count; ++i) { + meta = chart.getDatasetMeta(i); + line = meta.dataset; + source = null; + if (line && line.options && line instanceof LineElement) { + source = { + visible: chart.isDatasetVisible(i), + index: i, + fill: decodeFill(line, i, count), + chart, + axis: meta.controller.options.indexAxis, + scale: meta.vScale, + line, + }; + } + meta.$filler = source; + sources.push(source); + } + for (i = 0; i < count; ++i) { + source = sources[i]; + if (!source || source.fill === false) { + continue; + } + source.fill = resolveTarget(sources, i, options.propagate); + } + }, + beforeDraw(chart, _args, options) { + const draw = options.drawTime === 'beforeDraw'; + const metasets = chart.getSortedVisibleDatasetMetas(); + const area = chart.chartArea; + for (let i = metasets.length - 1; i >= 0; --i) { + const source = metasets[i].$filler; + if (!source) { + continue; + } + source.line.updateControlPoints(area, source.axis); + if (draw) { + drawfill(chart.ctx, source, area); + } + } + }, + beforeDatasetsDraw(chart, _args, options) { + if (options.drawTime !== 'beforeDatasetsDraw') { + return; + } + const metasets = chart.getSortedVisibleDatasetMetas(); + for (let i = metasets.length - 1; i >= 0; --i) { + const source = metasets[i].$filler; + if (source) { + drawfill(chart.ctx, source, chart.chartArea); + } + } + }, + beforeDatasetDraw(chart, args, options) { + const source = args.meta.$filler; + if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') { + return; + } + drawfill(chart.ctx, source, chart.chartArea); + }, + defaults: { + propagate: true, + drawTime: 'beforeDatasetDraw' + } +}; + +const getBoxSize = (labelOpts, fontSize) => { + let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts; + if (labelOpts.usePointStyle) { + boxHeight = Math.min(boxHeight, fontSize); + boxWidth = Math.min(boxWidth, fontSize); + } + return { + boxWidth, + boxHeight, + itemHeight: Math.max(fontSize, boxHeight) + }; +}; +const itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index; +class Legend extends Element { + constructor(config) { + super(); + this._added = false; + this.legendHitBoxes = []; + this._hoveredItem = null; + this.doughnutMode = false; + this.chart = config.chart; + this.options = config.options; + this.ctx = config.ctx; + this.legendItems = undefined; + this.columnSizes = undefined; + this.lineWidths = undefined; + this.maxHeight = undefined; + this.maxWidth = undefined; + this.top = undefined; + this.bottom = undefined; + this.left = undefined; + this.right = undefined; + this.height = undefined; + this.width = undefined; + this._margins = undefined; + this.position = undefined; + this.weight = undefined; + this.fullSize = undefined; + } + update(maxWidth, maxHeight, margins) { + this.maxWidth = maxWidth; + this.maxHeight = maxHeight; + this._margins = margins; + this.setDimensions(); + this.buildLabels(); + this.fit(); + } + setDimensions() { + if (this.isHorizontal()) { + this.width = this.maxWidth; + this.left = this._margins.left; + this.right = this.width; + } else { + this.height = this.maxHeight; + this.top = this._margins.top; + this.bottom = this.height; + } + } + buildLabels() { + const labelOpts = this.options.labels || {}; + let legendItems = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(labelOpts.generateLabels, [this.chart], this) || []; + if (labelOpts.filter) { + legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data)); + } + if (labelOpts.sort) { + legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data)); + } + if (this.options.reverse) { + legendItems.reverse(); + } + this.legendItems = legendItems; + } + fit() { + const {options, ctx} = this; + if (!options.display) { + this.width = this.height = 0; + return; + } + const labelOpts = options.labels; + const labelFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(labelOpts.font); + const fontSize = labelFont.size; + const titleHeight = this._computeTitleHeight(); + const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize); + let width, height; + ctx.font = labelFont.string; + if (this.isHorizontal()) { + width = this.maxWidth; + height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10; + } else { + height = this.maxHeight; + width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10; + } + this.width = Math.min(width, options.maxWidth || this.maxWidth); + this.height = Math.min(height, options.maxHeight || this.maxHeight); + } + _fitRows(titleHeight, fontSize, boxWidth, itemHeight) { + const {ctx, maxWidth, options: {labels: {padding}}} = this; + const hitboxes = this.legendHitBoxes = []; + const lineWidths = this.lineWidths = [0]; + const lineHeight = itemHeight + padding; + let totalHeight = titleHeight; + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + let row = -1; + let top = -lineHeight; + this.legendItems.forEach((legendItem, i) => { + const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) { + totalHeight += lineHeight; + lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0; + top += lineHeight; + row++; + } + hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight}; + lineWidths[lineWidths.length - 1] += itemWidth + padding; + }); + return totalHeight; + } + _fitCols(titleHeight, fontSize, boxWidth, itemHeight) { + const {ctx, maxHeight, options: {labels: {padding}}} = this; + const hitboxes = this.legendHitBoxes = []; + const columnSizes = this.columnSizes = []; + const heightLimit = maxHeight - titleHeight; + let totalWidth = padding; + let currentColWidth = 0; + let currentColHeight = 0; + let left = 0; + let col = 0; + this.legendItems.forEach((legendItem, i) => { + const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) { + totalWidth += currentColWidth + padding; + columnSizes.push({width: currentColWidth, height: currentColHeight}); + left += currentColWidth + padding; + col++; + currentColWidth = currentColHeight = 0; + } + hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight}; + currentColWidth = Math.max(currentColWidth, itemWidth); + currentColHeight += itemHeight + padding; + }); + totalWidth += currentColWidth; + columnSizes.push({width: currentColWidth, height: currentColHeight}); + return totalWidth; + } + adjustHitBoxes() { + if (!this.options.display) { + return; + } + const titleHeight = this._computeTitleHeight(); + const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this; + const rtlHelper = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ax)(rtl, this.left, this.width); + if (this.isHorizontal()) { + let row = 0; + let left = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.left + padding, this.right - this.lineWidths[row]); + for (const hitbox of hitboxes) { + if (row !== hitbox.row) { + row = hitbox.row; + left = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.left + padding, this.right - this.lineWidths[row]); + } + hitbox.top += this.top + titleHeight + padding; + hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width); + left += hitbox.width + padding; + } + } else { + let col = 0; + let top = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); + for (const hitbox of hitboxes) { + if (hitbox.col !== col) { + col = hitbox.col; + top = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); + } + hitbox.top = top; + hitbox.left += this.left + padding; + hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width); + top += hitbox.height + padding; + } + } + } + isHorizontal() { + return this.options.position === 'top' || this.options.position === 'bottom'; + } + draw() { + if (this.options.display) { + const ctx = this.ctx; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.W)(ctx, this); + this._draw(); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Y)(ctx); + } + } + _draw() { + const {options: opts, columnSizes, lineWidths, ctx} = this; + const {align, labels: labelOpts} = opts; + const defaultColor = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.color; + const rtlHelper = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ax)(opts.rtl, this.left, this.width); + const labelFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(labelOpts.font); + const {color: fontColor, padding} = labelOpts; + const fontSize = labelFont.size; + const halfFontSize = fontSize / 2; + let cursor; + this.drawTitle(); + ctx.textAlign = rtlHelper.textAlign('left'); + ctx.textBaseline = 'middle'; + ctx.lineWidth = 0.5; + ctx.font = labelFont.string; + const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize); + const drawLegendBox = function(x, y, legendItem) { + if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) { + return; + } + ctx.save(); + const lineWidth = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineWidth, 1); + ctx.fillStyle = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.fillStyle, defaultColor); + ctx.lineCap = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineCap, 'butt'); + ctx.lineDashOffset = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineDashOffset, 0); + ctx.lineJoin = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineJoin, 'miter'); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.strokeStyle, defaultColor); + ctx.setLineDash((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineDash, [])); + if (labelOpts.usePointStyle) { + const drawOptions = { + radius: boxWidth * Math.SQRT2 / 2, + pointStyle: legendItem.pointStyle, + rotation: legendItem.rotation, + borderWidth: lineWidth + }; + const centerX = rtlHelper.xPlus(x, boxWidth / 2); + const centerY = y + halfFontSize; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ar)(ctx, drawOptions, centerX, centerY); + } else { + const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0); + const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth); + const borderRadius = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.au)(legendItem.borderRadius); + ctx.beginPath(); + if (Object.values(borderRadius).some(v => v !== 0)) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.as)(ctx, { + x: xBoxLeft, + y: yBoxTop, + w: boxWidth, + h: boxHeight, + radius: borderRadius, + }); + } else { + ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight); + } + ctx.fill(); + if (lineWidth !== 0) { + ctx.stroke(); + } + } + ctx.restore(); + }; + const fillText = function(x, y, legendItem) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.X)(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, { + strikethrough: legendItem.hidden, + textAlign: rtlHelper.textAlign(legendItem.textAlign) + }); + }; + const isHorizontal = this.isHorizontal(); + const titleHeight = this._computeTitleHeight(); + if (isHorizontal) { + cursor = { + x: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.left + padding, this.right - lineWidths[0]), + y: this.top + padding + titleHeight, + line: 0 + }; + } else { + cursor = { + x: this.left + padding, + y: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height), + line: 0 + }; + } + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ay)(this.ctx, opts.textDirection); + const lineHeight = itemHeight + padding; + this.legendItems.forEach((legendItem, i) => { + ctx.strokeStyle = legendItem.fontColor || fontColor; + ctx.fillStyle = legendItem.fontColor || fontColor; + const textWidth = ctx.measureText(legendItem.text).width; + const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign)); + const width = boxWidth + halfFontSize + textWidth; + let x = cursor.x; + let y = cursor.y; + rtlHelper.setWidth(this.width); + if (isHorizontal) { + if (i > 0 && x + width + padding > this.right) { + y = cursor.y += lineHeight; + cursor.line++; + x = cursor.x = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.left + padding, this.right - lineWidths[cursor.line]); + } + } else if (i > 0 && y + lineHeight > this.bottom) { + x = cursor.x = x + columnSizes[cursor.line].width + padding; + cursor.line++; + y = cursor.y = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height); + } + const realX = rtlHelper.x(x); + drawLegendBox(realX, y, legendItem); + x = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.az)(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl); + fillText(rtlHelper.x(x), y, legendItem); + if (isHorizontal) { + cursor.x += width + padding; + } else { + cursor.y += lineHeight; + } + }); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aA)(this.ctx, opts.textDirection); + } + drawTitle() { + const opts = this.options; + const titleOpts = opts.title; + const titleFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(titleOpts.font); + const titlePadding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(titleOpts.padding); + if (!titleOpts.display) { + return; + } + const rtlHelper = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ax)(opts.rtl, this.left, this.width); + const ctx = this.ctx; + const position = titleOpts.position; + const halfFontSize = titleFont.size / 2; + const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize; + let y; + let left = this.left; + let maxWidth = this.width; + if (this.isHorizontal()) { + maxWidth = Math.max(...this.lineWidths); + y = this.top + topPaddingPlusHalfFontSize; + left = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(opts.align, left, this.right - maxWidth); + } else { + const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0); + y = topPaddingPlusHalfFontSize + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight()); + } + const x = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(position, left, left + maxWidth); + ctx.textAlign = rtlHelper.textAlign((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.$)(position)); + ctx.textBaseline = 'middle'; + ctx.strokeStyle = titleOpts.color; + ctx.fillStyle = titleOpts.color; + ctx.font = titleFont.string; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.X)(ctx, titleOpts.text, x, y, titleFont); + } + _computeTitleHeight() { + const titleOpts = this.options.title; + const titleFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(titleOpts.font); + const titlePadding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(titleOpts.padding); + return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0; + } + _getLegendItemAt(x, y) { + let i, hitBox, lh; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(x, this.left, this.right) + && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(y, this.top, this.bottom)) { + lh = this.legendHitBoxes; + for (i = 0; i < lh.length; ++i) { + hitBox = lh[i]; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(x, hitBox.left, hitBox.left + hitBox.width) + && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ah)(y, hitBox.top, hitBox.top + hitBox.height)) { + return this.legendItems[i]; + } + } + } + return null; + } + handleEvent(e) { + const opts = this.options; + if (!isListened(e.type, opts)) { + return; + } + const hoveredItem = this._getLegendItemAt(e.x, e.y); + if (e.type === 'mousemove') { + const previous = this._hoveredItem; + const sameItem = itemsEqual(previous, hoveredItem); + if (previous && !sameItem) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(opts.onLeave, [e, previous, this], this); + } + this._hoveredItem = hoveredItem; + if (hoveredItem && !sameItem) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(opts.onHover, [e, hoveredItem, this], this); + } + } else if (hoveredItem) { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(opts.onClick, [e, hoveredItem, this], this); + } + } +} +function isListened(type, opts) { + if (type === 'mousemove' && (opts.onHover || opts.onLeave)) { + return true; + } + if (opts.onClick && (type === 'click' || type === 'mouseup')) { + return true; + } + return false; +} +var plugin_legend = { + id: 'legend', + _element: Legend, + start(chart, _args, options) { + const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart}); + layouts.configure(chart, legend, options); + layouts.addBox(chart, legend); + }, + stop(chart) { + layouts.removeBox(chart, chart.legend); + delete chart.legend; + }, + beforeUpdate(chart, _args, options) { + const legend = chart.legend; + layouts.configure(chart, legend, options); + legend.options = options; + }, + afterUpdate(chart) { + const legend = chart.legend; + legend.buildLabels(); + legend.adjustHitBoxes(); + }, + afterEvent(chart, args) { + if (!args.replay) { + chart.legend.handleEvent(args.event); + } + }, + defaults: { + display: true, + position: 'top', + align: 'center', + fullSize: true, + reverse: false, + weight: 1000, + onClick(e, legendItem, legend) { + const index = legendItem.datasetIndex; + const ci = legend.chart; + if (ci.isDatasetVisible(index)) { + ci.hide(index); + legendItem.hidden = true; + } else { + ci.show(index); + legendItem.hidden = false; + } + }, + onHover: null, + onLeave: null, + labels: { + color: (ctx) => ctx.chart.options.color, + boxWidth: 40, + padding: 10, + generateLabels(chart) { + const datasets = chart.data.datasets; + const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options; + return chart._getSortedDatasetMetas().map((meta) => { + const style = meta.controller.getStyle(usePointStyle ? 0 : undefined); + const borderWidth = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(style.borderWidth); + return { + text: datasets[meta.index].label, + fillStyle: style.backgroundColor, + fontColor: color, + hidden: !meta.visible, + lineCap: style.borderCapStyle, + lineDash: style.borderDash, + lineDashOffset: style.borderDashOffset, + lineJoin: style.borderJoinStyle, + lineWidth: (borderWidth.width + borderWidth.height) / 4, + strokeStyle: style.borderColor, + pointStyle: pointStyle || style.pointStyle, + rotation: style.rotation, + textAlign: textAlign || style.textAlign, + borderRadius: 0, + datasetIndex: meta.index + }; + }, this); + } + }, + title: { + color: (ctx) => ctx.chart.options.color, + display: false, + position: 'center', + text: '', + } + }, + descriptors: { + _scriptable: (name) => !name.startsWith('on'), + labels: { + _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name), + } + }, +}; + +class Title extends Element { + constructor(config) { + super(); + this.chart = config.chart; + this.options = config.options; + this.ctx = config.ctx; + this._padding = undefined; + this.top = undefined; + this.bottom = undefined; + this.left = undefined; + this.right = undefined; + this.width = undefined; + this.height = undefined; + this.position = undefined; + this.weight = undefined; + this.fullSize = undefined; + } + update(maxWidth, maxHeight) { + const opts = this.options; + this.left = 0; + this.top = 0; + if (!opts.display) { + this.width = this.height = this.right = this.bottom = 0; + return; + } + this.width = this.right = maxWidth; + this.height = this.bottom = maxHeight; + const lineCount = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(opts.text) ? opts.text.length : 1; + this._padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(opts.padding); + const textSize = lineCount * (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(opts.font).lineHeight + this._padding.height; + if (this.isHorizontal()) { + this.height = textSize; + } else { + this.width = textSize; + } + } + isHorizontal() { + const pos = this.options.position; + return pos === 'top' || pos === 'bottom'; + } + _drawArgs(offset) { + const {top, left, bottom, right, options} = this; + const align = options.align; + let rotation = 0; + let maxWidth, titleX, titleY; + if (this.isHorizontal()) { + titleX = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, left, right); + titleY = top + offset; + maxWidth = right - left; + } else { + if (options.position === 'left') { + titleX = left + offset; + titleY = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, bottom, top); + rotation = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P * -0.5; + } else { + titleX = right - offset; + titleY = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a0)(align, top, bottom); + rotation = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P * 0.5; + } + maxWidth = bottom - top; + } + return {titleX, titleY, maxWidth, rotation}; + } + draw() { + const ctx = this.ctx; + const opts = this.options; + if (!opts.display) { + return; + } + const fontOpts = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(opts.font); + const lineHeight = fontOpts.lineHeight; + const offset = lineHeight / 2 + this._padding.top; + const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.X)(ctx, opts.text, 0, 0, fontOpts, { + color: opts.color, + maxWidth, + rotation, + textAlign: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.$)(opts.align), + textBaseline: 'middle', + translation: [titleX, titleY], + }); + } +} +function createTitle(chart, titleOpts) { + const title = new Title({ + ctx: chart.ctx, + options: titleOpts, + chart + }); + layouts.configure(chart, title, titleOpts); + layouts.addBox(chart, title); + chart.titleBlock = title; +} +var plugin_title = { + id: 'title', + _element: Title, + start(chart, _args, options) { + createTitle(chart, options); + }, + stop(chart) { + const titleBlock = chart.titleBlock; + layouts.removeBox(chart, titleBlock); + delete chart.titleBlock; + }, + beforeUpdate(chart, _args, options) { + const title = chart.titleBlock; + layouts.configure(chart, title, options); + title.options = options; + }, + defaults: { + align: 'center', + display: false, + font: { + weight: 'bold', + }, + fullSize: true, + padding: 10, + position: 'top', + text: '', + weight: 2000 + }, + defaultRoutes: { + color: 'color' + }, + descriptors: { + _scriptable: true, + _indexable: false, + }, +}; + +const map = new WeakMap(); +var plugin_subtitle = { + id: 'subtitle', + start(chart, _args, options) { + const title = new Title({ + ctx: chart.ctx, + options, + chart + }); + layouts.configure(chart, title, options); + layouts.addBox(chart, title); + map.set(chart, title); + }, + stop(chart) { + layouts.removeBox(chart, map.get(chart)); + map.delete(chart); + }, + beforeUpdate(chart, _args, options) { + const title = map.get(chart); + layouts.configure(chart, title, options); + title.options = options; + }, + defaults: { + align: 'center', + display: false, + font: { + weight: 'normal', + }, + fullSize: true, + padding: 0, + position: 'top', + text: '', + weight: 1500 + }, + defaultRoutes: { + color: 'color' + }, + descriptors: { + _scriptable: true, + _indexable: false, + }, +}; + +const positioners = { + average(items) { + if (!items.length) { + return false; + } + let i, len; + let x = 0; + let y = 0; + let count = 0; + for (i = 0, len = items.length; i < len; ++i) { + const el = items[i].element; + if (el && el.hasValue()) { + const pos = el.tooltipPosition(); + x += pos.x; + y += pos.y; + ++count; + } + } + return { + x: x / count, + y: y / count + }; + }, + nearest(items, eventPosition) { + if (!items.length) { + return false; + } + let x = eventPosition.x; + let y = eventPosition.y; + let minDistance = Number.POSITIVE_INFINITY; + let i, len, nearestElement; + for (i = 0, len = items.length; i < len; ++i) { + const el = items[i].element; + if (el && el.hasValue()) { + const center = el.getCenterPoint(); + const d = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aC)(eventPosition, center); + if (d < minDistance) { + minDistance = d; + nearestElement = el; + } + } + } + if (nearestElement) { + const tp = nearestElement.tooltipPosition(); + x = tp.x; + y = tp.y; + } + return { + x, + y + }; + } +}; +function pushOrConcat(base, toPush) { + if (toPush) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(toPush)) { + Array.prototype.push.apply(base, toPush); + } else { + base.push(toPush); + } + } + return base; +} +function splitNewlines(str) { + if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { + return str.split('\n'); + } + return str; +} +function createTooltipItem(chart, item) { + const {element, datasetIndex, index} = item; + const controller = chart.getDatasetMeta(datasetIndex).controller; + const {label, value} = controller.getLabelAndValue(index); + return { + chart, + label, + parsed: controller.getParsed(index), + raw: chart.data.datasets[datasetIndex].data[index], + formattedValue: value, + dataset: controller.getDataset(), + dataIndex: index, + datasetIndex, + element + }; +} +function getTooltipSize(tooltip, options) { + const ctx = tooltip.chart.ctx; + const {body, footer, title} = tooltip; + const {boxWidth, boxHeight} = options; + const bodyFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.bodyFont); + const titleFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.titleFont); + const footerFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.footerFont); + const titleLineCount = title.length; + const footerLineCount = footer.length; + const bodyLineItemCount = body.length; + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(options.padding); + let height = padding.height; + let width = 0; + let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0); + combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length; + if (titleLineCount) { + height += titleLineCount * titleFont.lineHeight + + (titleLineCount - 1) * options.titleSpacing + + options.titleMarginBottom; + } + if (combinedBodyLength) { + const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight; + height += bodyLineItemCount * bodyLineHeight + + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + + (combinedBodyLength - 1) * options.bodySpacing; + } + if (footerLineCount) { + height += options.footerMarginTop + + footerLineCount * footerFont.lineHeight + + (footerLineCount - 1) * options.footerSpacing; + } + let widthPadding = 0; + const maxLineWidth = function(line) { + width = Math.max(width, ctx.measureText(line).width + widthPadding); + }; + ctx.save(); + ctx.font = titleFont.string; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(tooltip.title, maxLineWidth); + ctx.font = bodyFont.string; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth); + widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(body, (bodyItem) => { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(bodyItem.before, maxLineWidth); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(bodyItem.lines, maxLineWidth); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(bodyItem.after, maxLineWidth); + }); + widthPadding = 0; + ctx.font = footerFont.string; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(tooltip.footer, maxLineWidth); + ctx.restore(); + width += padding.width; + return {width, height}; +} +function determineYAlign(chart, size) { + const {y, height} = size; + if (y < height / 2) { + return 'top'; + } else if (y > (chart.height - height / 2)) { + return 'bottom'; + } + return 'center'; +} +function doesNotFitWithAlign(xAlign, chart, options, size) { + const {x, width} = size; + const caret = options.caretSize + options.caretPadding; + if (xAlign === 'left' && x + width + caret > chart.width) { + return true; + } + if (xAlign === 'right' && x - width - caret < 0) { + return true; + } +} +function determineXAlign(chart, options, size, yAlign) { + const {x, width} = size; + const {width: chartWidth, chartArea: {left, right}} = chart; + let xAlign = 'center'; + if (yAlign === 'center') { + xAlign = x <= (left + right) / 2 ? 'left' : 'right'; + } else if (x <= width / 2) { + xAlign = 'left'; + } else if (x >= chartWidth - width / 2) { + xAlign = 'right'; + } + if (doesNotFitWithAlign(xAlign, chart, options, size)) { + xAlign = 'center'; + } + return xAlign; +} +function determineAlignment(chart, options, size) { + const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size); + return { + xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign), + yAlign + }; +} +function alignX(size, xAlign) { + let {x, width} = size; + if (xAlign === 'right') { + x -= width; + } else if (xAlign === 'center') { + x -= (width / 2); + } + return x; +} +function alignY(size, yAlign, paddingAndSize) { + let {y, height} = size; + if (yAlign === 'top') { + y += paddingAndSize; + } else if (yAlign === 'bottom') { + y -= height + paddingAndSize; + } else { + y -= (height / 2); + } + return y; +} +function getBackgroundPoint(options, size, alignment, chart) { + const {caretSize, caretPadding, cornerRadius} = options; + const {xAlign, yAlign} = alignment; + const paddingAndSize = caretSize + caretPadding; + const {topLeft, topRight, bottomLeft, bottomRight} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.au)(cornerRadius); + let x = alignX(size, xAlign); + const y = alignY(size, yAlign, paddingAndSize); + if (yAlign === 'center') { + if (xAlign === 'left') { + x += paddingAndSize; + } else if (xAlign === 'right') { + x -= paddingAndSize; + } + } else if (xAlign === 'left') { + x -= Math.max(topLeft, bottomLeft) + caretSize; + } else if (xAlign === 'right') { + x += Math.max(topRight, bottomRight) + caretSize; + } + return { + x: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(x, 0, chart.width - size.width), + y: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(y, 0, chart.height - size.height) + }; +} +function getAlignedX(tooltip, align, options) { + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(options.padding); + return align === 'center' + ? tooltip.x + tooltip.width / 2 + : align === 'right' + ? tooltip.x + tooltip.width - padding.right + : tooltip.x + padding.left; +} +function getBeforeAfterBodyLines(callback) { + return pushOrConcat([], splitNewlines(callback)); +} +function createTooltipContext(parent, tooltip, tooltipItems) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { + tooltip, + tooltipItems, + type: 'tooltip' + }); +} +function overrideCallbacks(callbacks, context) { + const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks; + return override ? callbacks.override(override) : callbacks; +} +class Tooltip extends Element { + constructor(config) { + super(); + this.opacity = 0; + this._active = []; + this._eventPosition = undefined; + this._size = undefined; + this._cachedAnimations = undefined; + this._tooltipItems = []; + this.$animations = undefined; + this.$context = undefined; + this.chart = config.chart || config._chart; + this._chart = this.chart; + this.options = config.options; + this.dataPoints = undefined; + this.title = undefined; + this.beforeBody = undefined; + this.body = undefined; + this.afterBody = undefined; + this.footer = undefined; + this.xAlign = undefined; + this.yAlign = undefined; + this.x = undefined; + this.y = undefined; + this.height = undefined; + this.width = undefined; + this.caretX = undefined; + this.caretY = undefined; + this.labelColors = undefined; + this.labelPointStyles = undefined; + this.labelTextColors = undefined; + } + initialize(options) { + this.options = options; + this._cachedAnimations = undefined; + this.$context = undefined; + } + _resolveAnimations() { + const cached = this._cachedAnimations; + if (cached) { + return cached; + } + const chart = this.chart; + const options = this.options.setContext(this.getContext()); + const opts = options.enabled && chart.options.animation && options.animations; + const animations = new Animations(this.chart, opts); + if (opts._cacheable) { + this._cachedAnimations = Object.freeze(animations); + } + return animations; + } + getContext() { + return this.$context || + (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems)); + } + getTitle(context, options) { + const {callbacks} = options; + const beforeTitle = callbacks.beforeTitle.apply(this, [context]); + const title = callbacks.title.apply(this, [context]); + const afterTitle = callbacks.afterTitle.apply(this, [context]); + let lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeTitle)); + lines = pushOrConcat(lines, splitNewlines(title)); + lines = pushOrConcat(lines, splitNewlines(afterTitle)); + return lines; + } + getBeforeBody(tooltipItems, options) { + return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems])); + } + getBody(tooltipItems, options) { + const {callbacks} = options; + const bodyItems = []; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(tooltipItems, (context) => { + const bodyItem = { + before: [], + lines: [], + after: [] + }; + const scoped = overrideCallbacks(callbacks, context); + pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context))); + pushOrConcat(bodyItem.lines, scoped.label.call(this, context)); + pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context))); + bodyItems.push(bodyItem); + }); + return bodyItems; + } + getAfterBody(tooltipItems, options) { + return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems])); + } + getFooter(tooltipItems, options) { + const {callbacks} = options; + const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]); + const footer = callbacks.footer.apply(this, [tooltipItems]); + const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]); + let lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeFooter)); + lines = pushOrConcat(lines, splitNewlines(footer)); + lines = pushOrConcat(lines, splitNewlines(afterFooter)); + return lines; + } + _createItems(options) { + const active = this._active; + const data = this.chart.data; + const labelColors = []; + const labelPointStyles = []; + const labelTextColors = []; + let tooltipItems = []; + let i, len; + for (i = 0, len = active.length; i < len; ++i) { + tooltipItems.push(createTooltipItem(this.chart, active[i])); + } + if (options.filter) { + tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data)); + } + if (options.itemSort) { + tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data)); + } + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(tooltipItems, (context) => { + const scoped = overrideCallbacks(options.callbacks, context); + labelColors.push(scoped.labelColor.call(this, context)); + labelPointStyles.push(scoped.labelPointStyle.call(this, context)); + labelTextColors.push(scoped.labelTextColor.call(this, context)); + }); + this.labelColors = labelColors; + this.labelPointStyles = labelPointStyles; + this.labelTextColors = labelTextColors; + this.dataPoints = tooltipItems; + return tooltipItems; + } + update(changed, replay) { + const options = this.options.setContext(this.getContext()); + const active = this._active; + let properties; + let tooltipItems = []; + if (!active.length) { + if (this.opacity !== 0) { + properties = { + opacity: 0 + }; + } + } else { + const position = positioners[options.position].call(this, active, this._eventPosition); + tooltipItems = this._createItems(options); + this.title = this.getTitle(tooltipItems, options); + this.beforeBody = this.getBeforeBody(tooltipItems, options); + this.body = this.getBody(tooltipItems, options); + this.afterBody = this.getAfterBody(tooltipItems, options); + this.footer = this.getFooter(tooltipItems, options); + const size = this._size = getTooltipSize(this, options); + const positionAndSize = Object.assign({}, position, size); + const alignment = determineAlignment(this.chart, options, positionAndSize); + const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart); + this.xAlign = alignment.xAlign; + this.yAlign = alignment.yAlign; + properties = { + opacity: 1, + x: backgroundPoint.x, + y: backgroundPoint.y, + width: size.width, + height: size.height, + caretX: position.x, + caretY: position.y + }; + } + this._tooltipItems = tooltipItems; + this.$context = undefined; + if (properties) { + this._resolveAnimations().update(this, properties); + } + if (changed && options.external) { + options.external.call(this, {chart: this.chart, tooltip: this, replay}); + } + } + drawCaret(tooltipPoint, ctx, size, options) { + const caretPosition = this.getCaretPosition(tooltipPoint, size, options); + ctx.lineTo(caretPosition.x1, caretPosition.y1); + ctx.lineTo(caretPosition.x2, caretPosition.y2); + ctx.lineTo(caretPosition.x3, caretPosition.y3); + } + getCaretPosition(tooltipPoint, size, options) { + const {xAlign, yAlign} = this; + const {caretSize, cornerRadius} = options; + const {topLeft, topRight, bottomLeft, bottomRight} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.au)(cornerRadius); + const {x: ptX, y: ptY} = tooltipPoint; + const {width, height} = size; + let x1, x2, x3, y1, y2, y3; + if (yAlign === 'center') { + y2 = ptY + (height / 2); + if (xAlign === 'left') { + x1 = ptX; + x2 = x1 - caretSize; + y1 = y2 + caretSize; + y3 = y2 - caretSize; + } else { + x1 = ptX + width; + x2 = x1 + caretSize; + y1 = y2 - caretSize; + y3 = y2 + caretSize; + } + x3 = x1; + } else { + if (xAlign === 'left') { + x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize); + } else if (xAlign === 'right') { + x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize; + } else { + x2 = this.caretX; + } + if (yAlign === 'top') { + y1 = ptY; + y2 = y1 - caretSize; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else { + y1 = ptY + height; + y2 = y1 + caretSize; + x1 = x2 + caretSize; + x3 = x2 - caretSize; + } + y3 = y1; + } + return {x1, x2, x3, y1, y2, y3}; + } + drawTitle(pt, ctx, options) { + const title = this.title; + const length = title.length; + let titleFont, titleSpacing, i; + if (length) { + const rtlHelper = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ax)(options.rtl, this.x, this.width); + pt.x = getAlignedX(this, options.titleAlign, options); + ctx.textAlign = rtlHelper.textAlign(options.titleAlign); + ctx.textBaseline = 'middle'; + titleFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.titleFont); + titleSpacing = options.titleSpacing; + ctx.fillStyle = options.titleColor; + ctx.font = titleFont.string; + for (i = 0; i < length; ++i) { + ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2); + pt.y += titleFont.lineHeight + titleSpacing; + if (i + 1 === length) { + pt.y += options.titleMarginBottom - titleSpacing; + } + } + } + } + _drawColorBox(ctx, pt, i, rtlHelper, options) { + const labelColors = this.labelColors[i]; + const labelPointStyle = this.labelPointStyles[i]; + const {boxHeight, boxWidth, boxPadding} = options; + const bodyFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.bodyFont); + const colorX = getAlignedX(this, 'left', options); + const rtlColorX = rtlHelper.x(colorX); + const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0; + const colorY = pt.y + yOffSet; + if (options.usePointStyle) { + const drawOptions = { + radius: Math.min(boxWidth, boxHeight) / 2, + pointStyle: labelPointStyle.pointStyle, + rotation: labelPointStyle.rotation, + borderWidth: 1 + }; + const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2; + const centerY = colorY + boxHeight / 2; + ctx.strokeStyle = options.multiKeyBackground; + ctx.fillStyle = options.multiKeyBackground; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ar)(ctx, drawOptions, centerX, centerY); + ctx.strokeStyle = labelColors.borderColor; + ctx.fillStyle = labelColors.backgroundColor; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ar)(ctx, drawOptions, centerX, centerY); + } else { + ctx.lineWidth = labelColors.borderWidth || 1; + ctx.strokeStyle = labelColors.borderColor; + ctx.setLineDash(labelColors.borderDash || []); + ctx.lineDashOffset = labelColors.borderDashOffset || 0; + const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding); + const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2); + const borderRadius = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.au)(labelColors.borderRadius); + if (Object.values(borderRadius).some(v => v !== 0)) { + ctx.beginPath(); + ctx.fillStyle = options.multiKeyBackground; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.as)(ctx, { + x: outerX, + y: colorY, + w: boxWidth, + h: boxHeight, + radius: borderRadius, + }); + ctx.fill(); + ctx.stroke(); + ctx.fillStyle = labelColors.backgroundColor; + ctx.beginPath(); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.as)(ctx, { + x: innerX, + y: colorY + 1, + w: boxWidth - 2, + h: boxHeight - 2, + radius: borderRadius, + }); + ctx.fill(); + } else { + ctx.fillStyle = options.multiKeyBackground; + ctx.fillRect(outerX, colorY, boxWidth, boxHeight); + ctx.strokeRect(outerX, colorY, boxWidth, boxHeight); + ctx.fillStyle = labelColors.backgroundColor; + ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2); + } + } + ctx.fillStyle = this.labelTextColors[i]; + } + drawBody(pt, ctx, options) { + const {body} = this; + const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options; + const bodyFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.bodyFont); + let bodyLineHeight = bodyFont.lineHeight; + let xLinePadding = 0; + const rtlHelper = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ax)(options.rtl, this.x, this.width); + const fillLineOfText = function(line) { + ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2); + pt.y += bodyLineHeight + bodySpacing; + }; + const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign); + let bodyItem, textColor, lines, i, j, ilen, jlen; + ctx.textAlign = bodyAlign; + ctx.textBaseline = 'middle'; + ctx.font = bodyFont.string; + pt.x = getAlignedX(this, bodyAlignForCalculation, options); + ctx.fillStyle = options.bodyColor; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this.beforeBody, fillLineOfText); + xLinePadding = displayColors && bodyAlignForCalculation !== 'right' + ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding) + : 0; + for (i = 0, ilen = body.length; i < ilen; ++i) { + bodyItem = body[i]; + textColor = this.labelTextColors[i]; + ctx.fillStyle = textColor; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(bodyItem.before, fillLineOfText); + lines = bodyItem.lines; + if (displayColors && lines.length) { + this._drawColorBox(ctx, pt, i, rtlHelper, options); + bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight); + } + for (j = 0, jlen = lines.length; j < jlen; ++j) { + fillLineOfText(lines[j]); + bodyLineHeight = bodyFont.lineHeight; + } + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(bodyItem.after, fillLineOfText); + } + xLinePadding = 0; + bodyLineHeight = bodyFont.lineHeight; + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.D)(this.afterBody, fillLineOfText); + pt.y -= bodySpacing; + } + drawFooter(pt, ctx, options) { + const footer = this.footer; + const length = footer.length; + let footerFont, i; + if (length) { + const rtlHelper = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ax)(options.rtl, this.x, this.width); + pt.x = getAlignedX(this, options.footerAlign, options); + pt.y += options.footerMarginTop; + ctx.textAlign = rtlHelper.textAlign(options.footerAlign); + ctx.textBaseline = 'middle'; + footerFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(options.footerFont); + ctx.fillStyle = options.footerColor; + ctx.font = footerFont.string; + for (i = 0; i < length; ++i) { + ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2); + pt.y += footerFont.lineHeight + options.footerSpacing; + } + } + } + drawBackground(pt, ctx, tooltipSize, options) { + const {xAlign, yAlign} = this; + const {x, y} = pt; + const {width, height} = tooltipSize; + const {topLeft, topRight, bottomLeft, bottomRight} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.au)(options.cornerRadius); + ctx.fillStyle = options.backgroundColor; + ctx.strokeStyle = options.borderColor; + ctx.lineWidth = options.borderWidth; + ctx.beginPath(); + ctx.moveTo(x + topLeft, y); + if (yAlign === 'top') { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x + width - topRight, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + topRight); + if (yAlign === 'center' && xAlign === 'right') { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x + width, y + height - bottomRight); + ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height); + if (yAlign === 'bottom') { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x + bottomLeft, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft); + if (yAlign === 'center' && xAlign === 'left') { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x, y + topLeft); + ctx.quadraticCurveTo(x, y, x + topLeft, y); + ctx.closePath(); + ctx.fill(); + if (options.borderWidth > 0) { + ctx.stroke(); + } + } + _updateAnimationTarget(options) { + const chart = this.chart; + const anims = this.$animations; + const animX = anims && anims.x; + const animY = anims && anims.y; + if (animX || animY) { + const position = positioners[options.position].call(this, this._active, this._eventPosition); + if (!position) { + return; + } + const size = this._size = getTooltipSize(this, options); + const positionAndSize = Object.assign({}, position, this._size); + const alignment = determineAlignment(chart, options, positionAndSize); + const point = getBackgroundPoint(options, positionAndSize, alignment, chart); + if (animX._to !== point.x || animY._to !== point.y) { + this.xAlign = alignment.xAlign; + this.yAlign = alignment.yAlign; + this.width = size.width; + this.height = size.height; + this.caretX = position.x; + this.caretY = position.y; + this._resolveAnimations().update(this, point); + } + } + } + draw(ctx) { + const options = this.options.setContext(this.getContext()); + let opacity = this.opacity; + if (!opacity) { + return; + } + this._updateAnimationTarget(options); + const tooltipSize = { + width: this.width, + height: this.height + }; + const pt = { + x: this.x, + y: this.y + }; + opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity; + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(options.padding); + const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length; + if (options.enabled && hasTooltipContent) { + ctx.save(); + ctx.globalAlpha = opacity; + this.drawBackground(pt, ctx, tooltipSize, options); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.ay)(ctx, options.textDirection); + pt.y += padding.top; + this.drawTitle(pt, ctx, options); + this.drawBody(pt, ctx, options); + this.drawFooter(pt, ctx, options); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aA)(ctx, options.textDirection); + ctx.restore(); + } + } + getActiveElements() { + return this._active || []; + } + setActiveElements(activeElements, eventPosition) { + const lastActive = this._active; + const active = activeElements.map(({datasetIndex, index}) => { + const meta = this.chart.getDatasetMeta(datasetIndex); + if (!meta) { + throw new Error('Cannot find a dataset at index ' + datasetIndex); + } + return { + datasetIndex, + element: meta.data[index], + index, + }; + }); + const changed = !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.af)(lastActive, active); + const positionChanged = this._positionChanged(active, eventPosition); + if (changed || positionChanged) { + this._active = active; + this._eventPosition = eventPosition; + this._ignoreReplayEvents = true; + this.update(true); + } + } + handleEvent(e, replay, inChartArea = true) { + if (replay && this._ignoreReplayEvents) { + return false; + } + this._ignoreReplayEvents = false; + const options = this.options; + const lastActive = this._active || []; + const active = this._getActiveElements(e, lastActive, replay, inChartArea); + const positionChanged = this._positionChanged(active, e); + const changed = replay || !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.af)(active, lastActive) || positionChanged; + if (changed) { + this._active = active; + if (options.enabled || options.external) { + this._eventPosition = { + x: e.x, + y: e.y + }; + this.update(true, replay); + } + } + return changed; + } + _getActiveElements(e, lastActive, replay, inChartArea) { + const options = this.options; + if (e.type === 'mouseout') { + return []; + } + if (!inChartArea) { + return lastActive; + } + const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay); + if (options.reverse) { + active.reverse(); + } + return active; + } + _positionChanged(active, e) { + const {caretX, caretY, options} = this; + const position = positioners[options.position].call(this, active, e); + return position !== false && (caretX !== position.x || caretY !== position.y); + } +} +Tooltip.positioners = positioners; +var plugin_tooltip = { + id: 'tooltip', + _element: Tooltip, + positioners, + afterInit(chart, _args, options) { + if (options) { + chart.tooltip = new Tooltip({chart, options}); + } + }, + beforeUpdate(chart, _args, options) { + if (chart.tooltip) { + chart.tooltip.initialize(options); + } + }, + reset(chart, _args, options) { + if (chart.tooltip) { + chart.tooltip.initialize(options); + } + }, + afterDraw(chart) { + const tooltip = chart.tooltip; + const args = { + tooltip + }; + if (chart.notifyPlugins('beforeTooltipDraw', args) === false) { + return; + } + if (tooltip) { + tooltip.draw(chart.ctx); + } + chart.notifyPlugins('afterTooltipDraw', args); + }, + afterEvent(chart, args) { + if (chart.tooltip) { + const useFinalPosition = args.replay; + if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) { + args.changed = true; + } + } + }, + defaults: { + enabled: true, + external: null, + position: 'average', + backgroundColor: 'rgba(0,0,0,0.8)', + titleColor: '#fff', + titleFont: { + weight: 'bold', + }, + titleSpacing: 2, + titleMarginBottom: 6, + titleAlign: 'left', + bodyColor: '#fff', + bodySpacing: 2, + bodyFont: { + }, + bodyAlign: 'left', + footerColor: '#fff', + footerSpacing: 2, + footerMarginTop: 6, + footerFont: { + weight: 'bold', + }, + footerAlign: 'left', + padding: 6, + caretPadding: 2, + caretSize: 5, + cornerRadius: 6, + boxHeight: (ctx, opts) => opts.bodyFont.size, + boxWidth: (ctx, opts) => opts.bodyFont.size, + multiKeyBackground: '#fff', + displayColors: true, + boxPadding: 0, + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + animation: { + duration: 400, + easing: 'easeOutQuart', + }, + animations: { + numbers: { + type: 'number', + properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'], + }, + opacity: { + easing: 'linear', + duration: 200 + } + }, + callbacks: { + beforeTitle: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + title(tooltipItems) { + if (tooltipItems.length > 0) { + const item = tooltipItems[0]; + const labels = item.chart.data.labels; + const labelCount = labels ? labels.length : 0; + if (this && this.options && this.options.mode === 'dataset') { + return item.dataset.label || ''; + } else if (item.label) { + return item.label; + } else if (labelCount > 0 && item.dataIndex < labelCount) { + return labels[item.dataIndex]; + } + } + return ''; + }, + afterTitle: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + beforeBody: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + beforeLabel: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + label(tooltipItem) { + if (this && this.options && this.options.mode === 'dataset') { + return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue; + } + let label = tooltipItem.dataset.label || ''; + if (label) { + label += ': '; + } + const value = tooltipItem.formattedValue; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(value)) { + label += value; + } + return label; + }, + labelColor(tooltipItem) { + const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); + const options = meta.controller.getStyle(tooltipItem.dataIndex); + return { + borderColor: options.borderColor, + backgroundColor: options.backgroundColor, + borderWidth: options.borderWidth, + borderDash: options.borderDash, + borderDashOffset: options.borderDashOffset, + borderRadius: 0, + }; + }, + labelTextColor() { + return this.options.bodyColor; + }, + labelPointStyle(tooltipItem) { + const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); + const options = meta.controller.getStyle(tooltipItem.dataIndex); + return { + pointStyle: options.pointStyle, + rotation: options.rotation, + }; + }, + afterLabel: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + afterBody: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + beforeFooter: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + footer: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB, + afterFooter: _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aB + } + }, + defaultRoutes: { + bodyFont: 'font', + footerFont: 'font', + titleFont: 'font' + }, + descriptors: { + _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external', + _indexable: false, + callbacks: { + _scriptable: false, + _indexable: false, + }, + animation: { + _fallback: false + }, + animations: { + _fallback: 'animation' + } + }, + additionalOptionScopes: ['interaction'] +}; + +var plugins = /*#__PURE__*/Object.freeze({ +__proto__: null, +Decimation: plugin_decimation, +Filler: plugin_filler, +Legend: plugin_legend, +SubTitle: plugin_subtitle, +Title: plugin_title, +Tooltip: plugin_tooltip +}); + +const addIfString = (labels, raw, index, addedLabels) => { + if (typeof raw === 'string') { + index = labels.push(raw) - 1; + addedLabels.unshift({index, label: raw}); + } else if (isNaN(raw)) { + index = null; + } + return index; +}; +function findOrAddLabel(labels, raw, index, addedLabels) { + const first = labels.indexOf(raw); + if (first === -1) { + return addIfString(labels, raw, index, addedLabels); + } + const last = labels.lastIndexOf(raw); + return first !== last ? index : first; +} +const validIndex = (index, max) => index === null ? null : (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(Math.round(index), 0, max); +class CategoryScale extends Scale { + constructor(cfg) { + super(cfg); + this._startValue = undefined; + this._valueRange = 0; + this._addedLabels = []; + } + init(scaleOptions) { + const added = this._addedLabels; + if (added.length) { + const labels = this.getLabels(); + for (const {index, label} of added) { + if (labels[index] === label) { + labels.splice(index, 1); + } + } + this._addedLabels = []; + } + super.init(scaleOptions); + } + parse(raw, index) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(raw)) { + return null; + } + const labels = this.getLabels(); + index = isFinite(index) && labels[index] === raw ? index + : findOrAddLabel(labels, raw, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(index, raw), this._addedLabels); + return validIndex(index, labels.length - 1); + } + determineDataLimits() { + const {minDefined, maxDefined} = this.getUserBounds(); + let {min, max} = this.getMinMax(true); + if (this.options.bounds === 'ticks') { + if (!minDefined) { + min = 0; + } + if (!maxDefined) { + max = this.getLabels().length - 1; + } + } + this.min = min; + this.max = max; + } + buildTicks() { + const min = this.min; + const max = this.max; + const offset = this.options.offset; + const ticks = []; + let labels = this.getLabels(); + labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1); + this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1); + this._startValue = this.min - (offset ? 0.5 : 0); + for (let value = min; value <= max; value++) { + ticks.push({value}); + } + return ticks; + } + getLabelForValue(value) { + const labels = this.getLabels(); + if (value >= 0 && value < labels.length) { + return labels[value]; + } + return value; + } + configure() { + super.configure(); + if (!this.isHorizontal()) { + this._reversePixels = !this._reversePixels; + } + } + getPixelForValue(value) { + if (typeof value !== 'number') { + value = this.parse(value); + } + return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); + } + getPixelForTick(index) { + const ticks = this.ticks; + if (index < 0 || index > ticks.length - 1) { + return null; + } + return this.getPixelForValue(ticks[index].value); + } + getValueForPixel(pixel) { + return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange); + } + getBasePixel() { + return this.bottom; + } +} +CategoryScale.id = 'category'; +CategoryScale.defaults = { + ticks: { + callback: CategoryScale.prototype.getLabelForValue + } +}; + +function generateTicks$1(generationOptions, dataRange) { + const ticks = []; + const MIN_SPACING = 1e-14; + const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions; + const unit = step || 1; + const maxSpaces = maxTicks - 1; + const {min: rmin, max: rmax} = dataRange; + const minDefined = !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(min); + const maxDefined = !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(max); + const countDefined = !(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(count); + const minSpacing = (rmax - rmin) / (maxDigits + 1); + let spacing = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aE)((rmax - rmin) / maxSpaces / unit) * unit; + let factor, niceMin, niceMax, numSpaces; + if (spacing < MIN_SPACING && !minDefined && !maxDefined) { + return [{value: rmin}, {value: rmax}]; + } + numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); + if (numSpaces > maxSpaces) { + spacing = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aE)(numSpaces * spacing / maxSpaces / unit) * unit; + } + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(precision)) { + factor = Math.pow(10, precision); + spacing = Math.ceil(spacing * factor) / factor; + } + if (bounds === 'ticks') { + niceMin = Math.floor(rmin / spacing) * spacing; + niceMax = Math.ceil(rmax / spacing) * spacing; + } else { + niceMin = rmin; + niceMax = rmax; + } + if (minDefined && maxDefined && step && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aF)((max - min) / step, spacing / 1000)) { + numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks)); + spacing = (max - min) / numSpaces; + niceMin = min; + niceMax = max; + } else if (countDefined) { + niceMin = minDefined ? min : niceMin; + niceMax = maxDefined ? max : niceMax; + numSpaces = count - 1; + spacing = (niceMax - niceMin) / numSpaces; + } else { + numSpaces = (niceMax - niceMin) / spacing; + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aG)(numSpaces, Math.round(numSpaces), spacing / 1000)) { + numSpaces = Math.round(numSpaces); + } else { + numSpaces = Math.ceil(numSpaces); + } + } + const decimalPlaces = Math.max( + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aH)(spacing), + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aH)(niceMin) + ); + factor = Math.pow(10, (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(precision) ? decimalPlaces : precision); + niceMin = Math.round(niceMin * factor) / factor; + niceMax = Math.round(niceMax * factor) / factor; + let j = 0; + if (minDefined) { + if (includeBounds && niceMin !== min) { + ticks.push({value: min}); + if (niceMin < min) { + j++; + } + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aG)(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) { + j++; + } + } else if (niceMin < min) { + j++; + } + } + for (; j < numSpaces; ++j) { + ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor}); + } + if (maxDefined && includeBounds && niceMax !== max) { + if (ticks.length && (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aG)(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) { + ticks[ticks.length - 1].value = max; + } else { + ticks.push({value: max}); + } + } else if (!maxDefined || niceMax === max) { + ticks.push({value: niceMax}); + } + return ticks; +} +function relativeLabelSize(value, minSpacing, {horizontal, minRotation}) { + const rad = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(minRotation); + const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001; + const length = 0.75 * minSpacing * ('' + value).length; + return Math.min(minSpacing / ratio, length); +} +class LinearScaleBase extends Scale { + constructor(cfg) { + super(cfg); + this.start = undefined; + this.end = undefined; + this._startValue = undefined; + this._endValue = undefined; + this._valueRange = 0; + } + parse(raw, index) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(raw)) { + return null; + } + if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) { + return null; + } + return +raw; + } + handleTickRangeOptions() { + const {beginAtZero} = this.options; + const {minDefined, maxDefined} = this.getUserBounds(); + let {min, max} = this; + const setMin = v => (min = minDefined ? min : v); + const setMax = v => (max = maxDefined ? max : v); + if (beginAtZero) { + const minSign = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(min); + const maxSign = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.s)(max); + if (minSign < 0 && maxSign < 0) { + setMax(0); + } else if (minSign > 0 && maxSign > 0) { + setMin(0); + } + } + if (min === max) { + let offset = 1; + if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) { + offset = Math.abs(max * 0.05); + } + setMax(max + offset); + if (!beginAtZero) { + setMin(min - offset); + } + } + this.min = min; + this.max = max; + } + getTickLimit() { + const tickOpts = this.options.ticks; + let {maxTicksLimit, stepSize} = tickOpts; + let maxTicks; + if (stepSize) { + maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1; + if (maxTicks > 1000) { + console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`); + maxTicks = 1000; + } + } else { + maxTicks = this.computeTickLimit(); + maxTicksLimit = maxTicksLimit || 11; + } + if (maxTicksLimit) { + maxTicks = Math.min(maxTicksLimit, maxTicks); + } + return maxTicks; + } + computeTickLimit() { + return Number.POSITIVE_INFINITY; + } + buildTicks() { + const opts = this.options; + const tickOpts = opts.ticks; + let maxTicks = this.getTickLimit(); + maxTicks = Math.max(2, maxTicks); + const numericGeneratorOptions = { + maxTicks, + bounds: opts.bounds, + min: opts.min, + max: opts.max, + precision: tickOpts.precision, + step: tickOpts.stepSize, + count: tickOpts.count, + maxDigits: this._maxDigits(), + horizontal: this.isHorizontal(), + minRotation: tickOpts.minRotation || 0, + includeBounds: tickOpts.includeBounds !== false + }; + const dataRange = this._range || this; + const ticks = generateTicks$1(numericGeneratorOptions, dataRange); + if (opts.bounds === 'ticks') { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aD)(ticks, this, 'value'); + } + if (opts.reverse) { + ticks.reverse(); + this.start = this.max; + this.end = this.min; + } else { + this.start = this.min; + this.end = this.max; + } + return ticks; + } + configure() { + const ticks = this.ticks; + let start = this.min; + let end = this.max; + super.configure(); + if (this.options.offset && ticks.length) { + const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2; + start -= offset; + end += offset; + } + this._startValue = start; + this._endValue = end; + this._valueRange = end - start; + } + getLabelForValue(value) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.o)(value, this.chart.options.locale, this.options.ticks.format); + } +} + +class LinearScale extends LinearScaleBase { + determineDataLimits() { + const {min, max} = this.getMinMax(true); + this.min = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(min) ? min : 0; + this.max = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(max) ? max : 1; + this.handleTickRangeOptions(); + } + computeTickLimit() { + const horizontal = this.isHorizontal(); + const length = horizontal ? this.width : this.height; + const minRotation = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.options.ticks.minRotation); + const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001; + const tickFont = this._resolveTickFontOptions(0); + return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio)); + } + getPixelForValue(value) { + return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); + } + getValueForPixel(pixel) { + return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange; + } +} +LinearScale.id = 'linear'; +LinearScale.defaults = { + ticks: { + callback: Ticks.formatters.numeric + } +}; + +function isMajor(tickVal) { + const remain = tickVal / (Math.pow(10, Math.floor((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(tickVal)))); + return remain === 1; +} +function generateTicks(generationOptions, dataRange) { + const endExp = Math.floor((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(dataRange.max)); + const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); + const ticks = []; + let tickVal = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(generationOptions.min, Math.pow(10, Math.floor((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(dataRange.min)))); + let exp = Math.floor((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(tickVal)); + let significand = Math.floor(tickVal / Math.pow(10, exp)); + let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; + do { + ticks.push({value: tickVal, major: isMajor(tickVal)}); + ++significand; + if (significand === 10) { + significand = 1; + ++exp; + precision = exp >= 0 ? 1 : precision; + } + tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; + } while (exp < endExp || (exp === endExp && significand < endSignificand)); + const lastTick = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.N)(generationOptions.max, tickVal); + ticks.push({value: lastTick, major: isMajor(tickVal)}); + return ticks; +} +class LogarithmicScale extends Scale { + constructor(cfg) { + super(cfg); + this.start = undefined; + this.end = undefined; + this._startValue = undefined; + this._valueRange = 0; + } + parse(raw, index) { + const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]); + if (value === 0) { + this._zero = true; + return undefined; + } + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(value) && value > 0 ? value : null; + } + determineDataLimits() { + const {min, max} = this.getMinMax(true); + this.min = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(min) ? Math.max(0, min) : null; + this.max = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(max) ? Math.max(0, max) : null; + if (this.options.beginAtZero) { + this._zero = true; + } + this.handleTickRangeOptions(); + } + handleTickRangeOptions() { + const {minDefined, maxDefined} = this.getUserBounds(); + let min = this.min; + let max = this.max; + const setMin = v => (min = minDefined ? min : v); + const setMax = v => (max = maxDefined ? max : v); + const exp = (v, m) => Math.pow(10, Math.floor((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(v)) + m); + if (min === max) { + if (min <= 0) { + setMin(1); + setMax(10); + } else { + setMin(exp(min, -1)); + setMax(exp(max, +1)); + } + } + if (min <= 0) { + setMin(exp(max, -1)); + } + if (max <= 0) { + setMax(exp(min, +1)); + } + if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) { + setMin(exp(min, -1)); + } + this.min = min; + this.max = max; + } + buildTicks() { + const opts = this.options; + const generationOptions = { + min: this._userMin, + max: this._userMax + }; + const ticks = generateTicks(generationOptions, this); + if (opts.bounds === 'ticks') { + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aD)(ticks, this, 'value'); + } + if (opts.reverse) { + ticks.reverse(); + this.start = this.max; + this.end = this.min; + } else { + this.start = this.min; + this.end = this.max; + } + return ticks; + } + getLabelForValue(value) { + return value === undefined + ? '0' + : (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.o)(value, this.chart.options.locale, this.options.ticks.format); + } + configure() { + const start = this.min; + super.configure(); + this._startValue = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(start); + this._valueRange = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(this.max) - (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(start); + } + getPixelForValue(value) { + if (value === undefined || value === 0) { + value = this.min; + } + if (value === null || isNaN(value)) { + return NaN; + } + return this.getPixelForDecimal(value === this.min + ? 0 + : ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.L)(value) - this._startValue) / this._valueRange); + } + getValueForPixel(pixel) { + const decimal = this.getDecimalForPixel(pixel); + return Math.pow(10, this._startValue + decimal * this._valueRange); + } +} +LogarithmicScale.id = 'logarithmic'; +LogarithmicScale.defaults = { + ticks: { + callback: Ticks.formatters.logarithmic, + major: { + enabled: true + } + } +}; + +function getTickBackdropHeight(opts) { + const tickOpts = opts.ticks; + if (tickOpts.display && opts.display) { + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(tickOpts.backdropPadding); + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(tickOpts.font && tickOpts.font.size, _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.d.font.size) + padding.height; + } + return 0; +} +function measureLabelSize(ctx, font, label) { + label = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.b)(label) ? label : [label]; + return { + w: (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aI)(ctx, font.string, label), + h: label.length * font.lineHeight + }; +} +function determineLimits(angle, pos, size, min, max) { + if (angle === min || angle === max) { + return { + start: pos - (size / 2), + end: pos + (size / 2) + }; + } else if (angle < min || angle > max) { + return { + start: pos - size, + end: pos + }; + } + return { + start: pos, + end: pos + size + }; +} +function fitWithPointLabels(scale) { + const orig = { + l: scale.left + scale._padding.left, + r: scale.right - scale._padding.right, + t: scale.top + scale._padding.top, + b: scale.bottom - scale._padding.bottom + }; + const limits = Object.assign({}, orig); + const labelSizes = []; + const padding = []; + const valueCount = scale._pointLabels.length; + const pointLabelOpts = scale.options.pointLabels; + const additionalAngle = pointLabelOpts.centerPointLabels ? _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P / valueCount : 0; + for (let i = 0; i < valueCount; i++) { + const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i)); + padding[i] = opts.padding; + const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle); + const plFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(opts.font); + const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]); + labelSizes[i] = textSize; + const angleRadians = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aw)(scale.getIndexAngle(i) + additionalAngle); + const angle = Math.round((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.R)(angleRadians)); + const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); + const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); + updateLimits(limits, orig, angleRadians, hLimits, vLimits); + } + scale.setCenterPoint( + orig.l - limits.l, + limits.r - orig.r, + orig.t - limits.t, + limits.b - orig.b + ); + scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding); +} +function updateLimits(limits, orig, angle, hLimits, vLimits) { + const sin = Math.abs(Math.sin(angle)); + const cos = Math.abs(Math.cos(angle)); + let x = 0; + let y = 0; + if (hLimits.start < orig.l) { + x = (orig.l - hLimits.start) / sin; + limits.l = Math.min(limits.l, orig.l - x); + } else if (hLimits.end > orig.r) { + x = (hLimits.end - orig.r) / sin; + limits.r = Math.max(limits.r, orig.r + x); + } + if (vLimits.start < orig.t) { + y = (orig.t - vLimits.start) / cos; + limits.t = Math.min(limits.t, orig.t - y); + } else if (vLimits.end > orig.b) { + y = (vLimits.end - orig.b) / cos; + limits.b = Math.max(limits.b, orig.b + y); + } +} +function buildPointLabelItems(scale, labelSizes, padding) { + const items = []; + const valueCount = scale._pointLabels.length; + const opts = scale.options; + const extra = getTickBackdropHeight(opts) / 2; + const outerDistance = scale.drawingArea; + const additionalAngle = opts.pointLabels.centerPointLabels ? _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.P / valueCount : 0; + for (let i = 0; i < valueCount; i++) { + const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle); + const angle = Math.round((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.R)((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aw)(pointLabelPosition.angle + _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H))); + const size = labelSizes[i]; + const y = yForAngle(pointLabelPosition.y, size.h, angle); + const textAlign = getTextAlignForAngle(angle); + const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign); + items.push({ + x: pointLabelPosition.x, + y, + textAlign, + left, + top: y, + right: left + size.w, + bottom: y + size.h + }); + } + return items; +} +function getTextAlignForAngle(angle) { + if (angle === 0 || angle === 180) { + return 'center'; + } else if (angle < 180) { + return 'left'; + } + return 'right'; +} +function leftForTextAlign(x, w, align) { + if (align === 'right') { + x -= w; + } else if (align === 'center') { + x -= (w / 2); + } + return x; +} +function yForAngle(y, h, angle) { + if (angle === 90 || angle === 270) { + y -= (h / 2); + } else if (angle > 270 || angle < 90) { + y -= h; + } + return y; +} +function drawPointLabels(scale, labelCount) { + const {ctx, options: {pointLabels}} = scale; + for (let i = labelCount - 1; i >= 0; i--) { + const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i)); + const plFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(optsAtIndex.font); + const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i]; + const {backdropColor} = optsAtIndex; + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(backdropColor)) { + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(optsAtIndex.backdropPadding); + ctx.fillStyle = backdropColor; + ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height); + } + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.X)( + ctx, + scale._pointLabels[i], + x, + y + (plFont.lineHeight / 2), + plFont, + { + color: optsAtIndex.color, + textAlign: textAlign, + textBaseline: 'middle' + } + ); + } +} +function pathRadiusLine(scale, radius, circular, labelCount) { + const {ctx} = scale; + if (circular) { + ctx.arc(scale.xCenter, scale.yCenter, radius, 0, _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T); + } else { + let pointPosition = scale.getPointPosition(0, radius); + ctx.moveTo(pointPosition.x, pointPosition.y); + for (let i = 1; i < labelCount; i++) { + pointPosition = scale.getPointPosition(i, radius); + ctx.lineTo(pointPosition.x, pointPosition.y); + } + } +} +function drawRadiusLine(scale, gridLineOpts, radius, labelCount) { + const ctx = scale.ctx; + const circular = gridLineOpts.circular; + const {color, lineWidth} = gridLineOpts; + if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) { + return; + } + ctx.save(); + ctx.strokeStyle = color; + ctx.lineWidth = lineWidth; + ctx.setLineDash(gridLineOpts.borderDash); + ctx.lineDashOffset = gridLineOpts.borderDashOffset; + ctx.beginPath(); + pathRadiusLine(scale, radius, circular, labelCount); + ctx.closePath(); + ctx.stroke(); + ctx.restore(); +} +function createPointLabelContext(parent, index, label) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { + label, + index, + type: 'pointLabel' + }); +} +class RadialLinearScale extends LinearScaleBase { + constructor(cfg) { + super(cfg); + this.xCenter = undefined; + this.yCenter = undefined; + this.drawingArea = undefined; + this._pointLabels = []; + this._pointLabelItems = []; + } + setDimensions() { + const padding = this._padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(getTickBackdropHeight(this.options) / 2); + const w = this.width = this.maxWidth - padding.width; + const h = this.height = this.maxHeight - padding.height; + this.xCenter = Math.floor(this.left + w / 2 + padding.left); + this.yCenter = Math.floor(this.top + h / 2 + padding.top); + this.drawingArea = Math.floor(Math.min(w, h) / 2); + } + determineDataLimits() { + const {min, max} = this.getMinMax(false); + this.min = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(min) && !isNaN(min) ? min : 0; + this.max = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(max) && !isNaN(max) ? max : 0; + this.handleTickRangeOptions(); + } + computeTickLimit() { + return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); + } + generateTickLabels(ticks) { + LinearScaleBase.prototype.generateTickLabels.call(this, ticks); + this._pointLabels = this.getLabels() + .map((value, index) => { + const label = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(this.options.pointLabels.callback, [value, index], this); + return label || label === 0 ? label : ''; + }) + .filter((v, i) => this.chart.getDataVisibility(i)); + } + fit() { + const opts = this.options; + if (opts.display && opts.pointLabels.display) { + fitWithPointLabels(this); + } else { + this.setCenterPoint(0, 0, 0, 0); + } + } + setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) { + this.xCenter += Math.floor((leftMovement - rightMovement) / 2); + this.yCenter += Math.floor((topMovement - bottomMovement) / 2); + this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement)); + } + getIndexAngle(index) { + const angleMultiplier = _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.T / (this._pointLabels.length || 1); + const startAngle = this.options.startAngle || 0; + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aw)(index * angleMultiplier + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(startAngle)); + } + getDistanceFromCenterForValue(value) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(value)) { + return NaN; + } + const scalingFactor = this.drawingArea / (this.max - this.min); + if (this.options.reverse) { + return (this.max - value) * scalingFactor; + } + return (value - this.min) * scalingFactor; + } + getValueForDistanceFromCenter(distance) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(distance)) { + return NaN; + } + const scaledDistance = distance / (this.drawingArea / (this.max - this.min)); + return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance; + } + getPointLabelContext(index) { + const pointLabels = this._pointLabels || []; + if (index >= 0 && index < pointLabels.length) { + const pointLabel = pointLabels[index]; + return createPointLabelContext(this.getContext(), index, pointLabel); + } + } + getPointPosition(index, distanceFromCenter, additionalAngle = 0) { + const angle = this.getIndexAngle(index) - _chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.H + additionalAngle; + return { + x: Math.cos(angle) * distanceFromCenter + this.xCenter, + y: Math.sin(angle) * distanceFromCenter + this.yCenter, + angle + }; + } + getPointPositionForValue(index, value) { + return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); + } + getBasePosition(index) { + return this.getPointPositionForValue(index || 0, this.getBaseValue()); + } + getPointLabelPosition(index) { + const {left, top, right, bottom} = this._pointLabelItems[index]; + return { + left, + top, + right, + bottom, + }; + } + drawBackground() { + const {backgroundColor, grid: {circular}} = this.options; + if (backgroundColor) { + const ctx = this.ctx; + ctx.save(); + ctx.beginPath(); + pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length); + ctx.closePath(); + ctx.fillStyle = backgroundColor; + ctx.fill(); + ctx.restore(); + } + } + drawGrid() { + const ctx = this.ctx; + const opts = this.options; + const {angleLines, grid} = opts; + const labelCount = this._pointLabels.length; + let i, offset, position; + if (opts.pointLabels.display) { + drawPointLabels(this, labelCount); + } + if (grid.display) { + this.ticks.forEach((tick, index) => { + if (index !== 0) { + offset = this.getDistanceFromCenterForValue(tick.value); + const optsAtIndex = grid.setContext(this.getContext(index - 1)); + drawRadiusLine(this, optsAtIndex, offset, labelCount); + } + }); + } + if (angleLines.display) { + ctx.save(); + for (i = labelCount - 1; i >= 0; i--) { + const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i)); + const {color, lineWidth} = optsAtIndex; + if (!lineWidth || !color) { + continue; + } + ctx.lineWidth = lineWidth; + ctx.strokeStyle = color; + ctx.setLineDash(optsAtIndex.borderDash); + ctx.lineDashOffset = optsAtIndex.borderDashOffset; + offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max); + position = this.getPointPosition(i, offset); + ctx.beginPath(); + ctx.moveTo(this.xCenter, this.yCenter); + ctx.lineTo(position.x, position.y); + ctx.stroke(); + } + ctx.restore(); + } + } + drawBorder() {} + drawLabels() { + const ctx = this.ctx; + const opts = this.options; + const tickOpts = opts.ticks; + if (!tickOpts.display) { + return; + } + const startAngle = this.getIndexAngle(0); + let offset, width; + ctx.save(); + ctx.translate(this.xCenter, this.yCenter); + ctx.rotate(startAngle); + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + this.ticks.forEach((tick, index) => { + if (index === 0 && !opts.reverse) { + return; + } + const optsAtIndex = tickOpts.setContext(this.getContext(index)); + const tickFont = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.Z)(optsAtIndex.font); + offset = this.getDistanceFromCenterForValue(this.ticks[index].value); + if (optsAtIndex.showLabelBackdrop) { + ctx.font = tickFont.string; + width = ctx.measureText(tick.label).width; + ctx.fillStyle = optsAtIndex.backdropColor; + const padding = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.C)(optsAtIndex.backdropPadding); + ctx.fillRect( + -width / 2 - padding.left, + -offset - tickFont.size / 2 - padding.top, + width + padding.width, + tickFont.size + padding.height + ); + } + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.X)(ctx, tick.label, 0, -offset, tickFont, { + color: optsAtIndex.color, + }); + }); + ctx.restore(); + } + drawTitle() {} +} +RadialLinearScale.id = 'radialLinear'; +RadialLinearScale.defaults = { + display: true, + animate: true, + position: 'chartArea', + angleLines: { + display: true, + lineWidth: 1, + borderDash: [], + borderDashOffset: 0.0 + }, + grid: { + circular: false + }, + startAngle: 0, + ticks: { + showLabelBackdrop: true, + callback: Ticks.formatters.numeric + }, + pointLabels: { + backdropColor: undefined, + backdropPadding: 2, + display: true, + font: { + size: 10 + }, + callback(label) { + return label; + }, + padding: 5, + centerPointLabels: false + } +}; +RadialLinearScale.defaultRoutes = { + 'angleLines.color': 'borderColor', + 'pointLabels.color': 'color', + 'ticks.color': 'color' +}; +RadialLinearScale.descriptors = { + angleLines: { + _fallback: 'grid' + } +}; + +const INTERVALS = { + millisecond: {common: true, size: 1, steps: 1000}, + second: {common: true, size: 1000, steps: 60}, + minute: {common: true, size: 60000, steps: 60}, + hour: {common: true, size: 3600000, steps: 24}, + day: {common: true, size: 86400000, steps: 30}, + week: {common: false, size: 604800000, steps: 4}, + month: {common: true, size: 2.628e9, steps: 12}, + quarter: {common: false, size: 7.884e9, steps: 4}, + year: {common: true, size: 3.154e10} +}; +const UNITS = (Object.keys(INTERVALS)); +function sorter(a, b) { + return a - b; +} +function parse(scale, input) { + if ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.k)(input)) { + return null; + } + const adapter = scale._adapter; + const {parser, round, isoWeekday} = scale._parseOpts; + let value = input; + if (typeof parser === 'function') { + value = parser(value); + } + if (!(0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(value)) { + value = typeof parser === 'string' + ? adapter.parse(value, parser) + : adapter.parse(value); + } + if (value === null) { + return null; + } + if (round) { + value = round === 'week' && ((0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.q)(isoWeekday) || isoWeekday === true) + ? adapter.startOf(value, 'isoWeek', isoWeekday) + : adapter.startOf(value, round); + } + return +value; +} +function determineUnitForAutoTicks(minUnit, min, max, capacity) { + const ilen = UNITS.length; + for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { + const interval = INTERVALS[UNITS[i]]; + const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER; + if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { + return UNITS[i]; + } + } + return UNITS[ilen - 1]; +} +function determineUnitForFormatting(scale, numTicks, minUnit, min, max) { + for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) { + const unit = UNITS[i]; + if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) { + return unit; + } + } + return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; +} +function determineMajorUnit(unit) { + for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { + if (INTERVALS[UNITS[i]].common) { + return UNITS[i]; + } + } +} +function addTick(ticks, time, timestamps) { + if (!timestamps) { + ticks[time] = true; + } else if (timestamps.length) { + const {lo, hi} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aK)(timestamps, time); + const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi]; + ticks[timestamp] = true; + } +} +function setMajorTicks(scale, ticks, map, majorUnit) { + const adapter = scale._adapter; + const first = +adapter.startOf(ticks[0].value, majorUnit); + const last = ticks[ticks.length - 1].value; + let major, index; + for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) { + index = map[major]; + if (index >= 0) { + ticks[index].major = true; + } + } + return ticks; +} +function ticksFromTimestamps(scale, values, majorUnit) { + const ticks = []; + const map = {}; + const ilen = values.length; + let i, value; + for (i = 0; i < ilen; ++i) { + value = values[i]; + map[value] = i; + ticks.push({ + value, + major: false + }); + } + return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit); +} +class TimeScale extends Scale { + constructor(props) { + super(props); + this._cache = { + data: [], + labels: [], + all: [] + }; + this._unit = 'day'; + this._majorUnit = undefined; + this._offsets = {}; + this._normalized = false; + this._parseOpts = undefined; + } + init(scaleOpts, opts) { + const time = scaleOpts.time || (scaleOpts.time = {}); + const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date); + (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.a9)(time.displayFormats, adapter.formats()); + this._parseOpts = { + parser: time.parser, + round: time.round, + isoWeekday: time.isoWeekday + }; + super.init(scaleOpts); + this._normalized = opts.normalized; + } + parse(raw, index) { + if (raw === undefined) { + return null; + } + return parse(this, raw); + } + beforeLayout() { + super.beforeLayout(); + this._cache = { + data: [], + labels: [], + all: [] + }; + } + determineDataLimits() { + const options = this.options; + const adapter = this._adapter; + const unit = options.time.unit || 'day'; + let {min, max, minDefined, maxDefined} = this.getUserBounds(); + function _applyBounds(bounds) { + if (!minDefined && !isNaN(bounds.min)) { + min = Math.min(min, bounds.min); + } + if (!maxDefined && !isNaN(bounds.max)) { + max = Math.max(max, bounds.max); + } + } + if (!minDefined || !maxDefined) { + _applyBounds(this._getLabelBounds()); + if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') { + _applyBounds(this.getMinMax(false)); + } + } + min = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit); + max = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.g)(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1; + this.min = Math.min(min, max - 1); + this.max = Math.max(min + 1, max); + } + _getLabelBounds() { + const arr = this.getLabelTimestamps(); + let min = Number.POSITIVE_INFINITY; + let max = Number.NEGATIVE_INFINITY; + if (arr.length) { + min = arr[0]; + max = arr[arr.length - 1]; + } + return {min, max}; + } + buildTicks() { + const options = this.options; + const timeOpts = options.time; + const tickOpts = options.ticks; + const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate(); + if (options.bounds === 'ticks' && timestamps.length) { + this.min = this._userMin || timestamps[0]; + this.max = this._userMax || timestamps[timestamps.length - 1]; + } + const min = this.min; + const max = this.max; + const ticks = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.aJ)(timestamps, min, max); + this._unit = timeOpts.unit || (tickOpts.autoSkip + ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) + : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max)); + this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined + : determineMajorUnit(this._unit); + this.initOffsets(timestamps); + if (options.reverse) { + ticks.reverse(); + } + return ticksFromTimestamps(this, ticks, this._majorUnit); + } + initOffsets(timestamps) { + let start = 0; + let end = 0; + let first, last; + if (this.options.offset && timestamps.length) { + first = this.getDecimalForValue(timestamps[0]); + if (timestamps.length === 1) { + start = 1 - first; + } else { + start = (this.getDecimalForValue(timestamps[1]) - first) / 2; + } + last = this.getDecimalForValue(timestamps[timestamps.length - 1]); + if (timestamps.length === 1) { + end = last; + } else { + end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2; + } + } + const limit = timestamps.length < 3 ? 0.5 : 0.25; + start = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(start, 0, limit); + end = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.w)(end, 0, limit); + this._offsets = {start, end, factor: 1 / (start + 1 + end)}; + } + _generate() { + const adapter = this._adapter; + const min = this.min; + const max = this.max; + const options = this.options; + const timeOpts = options.time; + const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min)); + const stepSize = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.v)(timeOpts.stepSize, 1); + const weekday = minor === 'week' ? timeOpts.isoWeekday : false; + const hasWeekday = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.q)(weekday) || weekday === true; + const ticks = {}; + let first = min; + let time, count; + if (hasWeekday) { + first = +adapter.startOf(first, 'isoWeek', weekday); + } + first = +adapter.startOf(first, hasWeekday ? 'day' : minor); + if (adapter.diff(max, min, minor) > 100000 * stepSize) { + throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor); + } + const timestamps = options.ticks.source === 'data' && this.getDataTimestamps(); + for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) { + addTick(ticks, time, timestamps); + } + if (time === max || options.bounds === 'ticks' || count === 1) { + addTick(ticks, time, timestamps); + } + return Object.keys(ticks).sort((a, b) => a - b).map(x => +x); + } + getLabelForValue(value) { + const adapter = this._adapter; + const timeOpts = this.options.time; + if (timeOpts.tooltipFormat) { + return adapter.format(value, timeOpts.tooltipFormat); + } + return adapter.format(value, timeOpts.displayFormats.datetime); + } + _tickFormatFunction(time, index, ticks, format) { + const options = this.options; + const formats = options.time.displayFormats; + const unit = this._unit; + const majorUnit = this._majorUnit; + const minorFormat = unit && formats[unit]; + const majorFormat = majorUnit && formats[majorUnit]; + const tick = ticks[index]; + const major = majorUnit && majorFormat && tick && tick.major; + const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat)); + const formatter = options.ticks.callback; + return formatter ? (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.O)(formatter, [label, index, ticks], this) : label; + } + generateTickLabels(ticks) { + let i, ilen, tick; + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + tick = ticks[i]; + tick.label = this._tickFormatFunction(tick.value, i, ticks); + } + } + getDecimalForValue(value) { + return value === null ? NaN : (value - this.min) / (this.max - this.min); + } + getPixelForValue(value) { + const offsets = this._offsets; + const pos = this.getDecimalForValue(value); + return this.getPixelForDecimal((offsets.start + pos) * offsets.factor); + } + getValueForPixel(pixel) { + const offsets = this._offsets; + const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; + return this.min + pos * (this.max - this.min); + } + _getLabelSize(label) { + const ticksOpts = this.options.ticks; + const tickLabelWidth = this.ctx.measureText(label).width; + const angle = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.t)(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation); + const cosRotation = Math.cos(angle); + const sinRotation = Math.sin(angle); + const tickFontSize = this._resolveTickFontOptions(0).size; + return { + w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation), + h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation) + }; + } + _getLabelCapacity(exampleTime) { + const timeOpts = this.options.time; + const displayFormats = timeOpts.displayFormats; + const format = displayFormats[timeOpts.unit] || displayFormats.millisecond; + const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format); + const size = this._getLabelSize(exampleLabel); + const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1; + return capacity > 0 ? capacity : 1; + } + getDataTimestamps() { + let timestamps = this._cache.data || []; + let i, ilen; + if (timestamps.length) { + return timestamps; + } + const metas = this.getMatchingVisibleMetas(); + if (this._normalized && metas.length) { + return (this._cache.data = metas[0].controller.getAllParsedValues(this)); + } + for (i = 0, ilen = metas.length; i < ilen; ++i) { + timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this)); + } + return (this._cache.data = this.normalize(timestamps)); + } + getLabelTimestamps() { + const timestamps = this._cache.labels || []; + let i, ilen; + if (timestamps.length) { + return timestamps; + } + const labels = this.getLabels(); + for (i = 0, ilen = labels.length; i < ilen; ++i) { + timestamps.push(parse(this, labels[i])); + } + return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps)); + } + normalize(values) { + return (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__._)(values.sort(sorter)); + } +} +TimeScale.id = 'time'; +TimeScale.defaults = { + bounds: 'data', + adapters: {}, + time: { + parser: false, + unit: false, + round: false, + isoWeekday: false, + minUnit: 'millisecond', + displayFormats: {} + }, + ticks: { + source: 'auto', + major: { + enabled: false + } + } +}; + +function interpolate(table, val, reverse) { + let lo = 0; + let hi = table.length - 1; + let prevSource, nextSource, prevTarget, nextTarget; + if (reverse) { + if (val >= table[lo].pos && val <= table[hi].pos) { + ({lo, hi} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(table, 'pos', val)); + } + ({pos: prevSource, time: prevTarget} = table[lo]); + ({pos: nextSource, time: nextTarget} = table[hi]); + } else { + if (val >= table[lo].time && val <= table[hi].time) { + ({lo, hi} = (0,_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__.x)(table, 'time', val)); + } + ({time: prevSource, pos: prevTarget} = table[lo]); + ({time: nextSource, pos: nextTarget} = table[hi]); + } + const span = nextSource - prevSource; + return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget; +} +class TimeSeriesScale extends TimeScale { + constructor(props) { + super(props); + this._table = []; + this._minPos = undefined; + this._tableRange = undefined; + } + initOffsets() { + const timestamps = this._getTimestampsForTable(); + const table = this._table = this.buildLookupTable(timestamps); + this._minPos = interpolate(table, this.min); + this._tableRange = interpolate(table, this.max) - this._minPos; + super.initOffsets(timestamps); + } + buildLookupTable(timestamps) { + const {min, max} = this; + const items = []; + const table = []; + let i, ilen, prev, curr, next; + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + curr = timestamps[i]; + if (curr >= min && curr <= max) { + items.push(curr); + } + } + if (items.length < 2) { + return [ + {time: min, pos: 0}, + {time: max, pos: 1} + ]; + } + for (i = 0, ilen = items.length; i < ilen; ++i) { + next = items[i + 1]; + prev = items[i - 1]; + curr = items[i]; + if (Math.round((next + prev) / 2) !== curr) { + table.push({time: curr, pos: i / (ilen - 1)}); + } + } + return table; + } + _getTimestampsForTable() { + let timestamps = this._cache.all || []; + if (timestamps.length) { + return timestamps; + } + const data = this.getDataTimestamps(); + const label = this.getLabelTimestamps(); + if (data.length && label.length) { + timestamps = this.normalize(data.concat(label)); + } else { + timestamps = data.length ? data : label; + } + timestamps = this._cache.all = timestamps; + return timestamps; + } + getDecimalForValue(value) { + return (interpolate(this._table, value) - this._minPos) / this._tableRange; + } + getValueForPixel(pixel) { + const offsets = this._offsets; + const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; + return interpolate(this._table, decimal * this._tableRange + this._minPos, true); + } +} +TimeSeriesScale.id = 'timeseries'; +TimeSeriesScale.defaults = TimeScale.defaults; + +var scales = /*#__PURE__*/Object.freeze({ +__proto__: null, +CategoryScale: CategoryScale, +LinearScale: LinearScale, +LogarithmicScale: LogarithmicScale, +RadialLinearScale: RadialLinearScale, +TimeScale: TimeScale, +TimeSeriesScale: TimeSeriesScale +}); + +const registerables = [ + controllers, + elements, + plugins, + scales, +]; + + + + +/***/ }), + +/***/ "./node_modules/chart.js/dist/chunks/helpers.segment.js": +/*!**************************************************************!*\ + !*** ./node_modules/chart.js/dist/chunks/helpers.segment.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "$": () => (/* binding */ _toLeftRightCenter), +/* harmony export */ "A": () => (/* binding */ _rlookupByKey), +/* harmony export */ "B": () => (/* binding */ getAngleFromPoint), +/* harmony export */ "C": () => (/* binding */ toPadding), +/* harmony export */ "D": () => (/* binding */ each), +/* harmony export */ "E": () => (/* binding */ getMaximumSize), +/* harmony export */ "F": () => (/* binding */ _getParentNode), +/* harmony export */ "G": () => (/* binding */ readUsedSize), +/* harmony export */ "H": () => (/* binding */ HALF_PI), +/* harmony export */ "I": () => (/* binding */ throttled), +/* harmony export */ "J": () => (/* binding */ supportsEventListenerOptions), +/* harmony export */ "K": () => (/* binding */ _isDomSupported), +/* harmony export */ "L": () => (/* binding */ log10), +/* harmony export */ "M": () => (/* binding */ _factorize), +/* harmony export */ "N": () => (/* binding */ finiteOrDefault), +/* harmony export */ "O": () => (/* binding */ callback), +/* harmony export */ "P": () => (/* binding */ PI), +/* harmony export */ "Q": () => (/* binding */ _addGrace), +/* harmony export */ "R": () => (/* binding */ toDegrees), +/* harmony export */ "S": () => (/* binding */ _measureText), +/* harmony export */ "T": () => (/* binding */ TAU), +/* harmony export */ "U": () => (/* binding */ _int16Range), +/* harmony export */ "V": () => (/* binding */ _alignPixel), +/* harmony export */ "W": () => (/* binding */ clipArea), +/* harmony export */ "X": () => (/* binding */ renderText), +/* harmony export */ "Y": () => (/* binding */ unclipArea), +/* harmony export */ "Z": () => (/* binding */ toFont), +/* harmony export */ "_": () => (/* binding */ _arrayUnique), +/* harmony export */ "a": () => (/* binding */ resolve), +/* harmony export */ "a$": () => (/* binding */ _angleDiff), +/* harmony export */ "a0": () => (/* binding */ _alignStartEnd), +/* harmony export */ "a1": () => (/* binding */ overrides), +/* harmony export */ "a2": () => (/* binding */ merge), +/* harmony export */ "a3": () => (/* binding */ _capitalize), +/* harmony export */ "a4": () => (/* binding */ descriptors), +/* harmony export */ "a5": () => (/* binding */ isFunction), +/* harmony export */ "a6": () => (/* binding */ _attachContext), +/* harmony export */ "a7": () => (/* binding */ _createResolver), +/* harmony export */ "a8": () => (/* binding */ _descriptors), +/* harmony export */ "a9": () => (/* binding */ mergeIf), +/* harmony export */ "aA": () => (/* binding */ restoreTextDirection), +/* harmony export */ "aB": () => (/* binding */ noop), +/* harmony export */ "aC": () => (/* binding */ distanceBetweenPoints), +/* harmony export */ "aD": () => (/* binding */ _setMinAndMaxByKey), +/* harmony export */ "aE": () => (/* binding */ niceNum), +/* harmony export */ "aF": () => (/* binding */ almostWhole), +/* harmony export */ "aG": () => (/* binding */ almostEquals), +/* harmony export */ "aH": () => (/* binding */ _decimalPlaces), +/* harmony export */ "aI": () => (/* binding */ _longestText), +/* harmony export */ "aJ": () => (/* binding */ _filterBetween), +/* harmony export */ "aK": () => (/* binding */ _lookup), +/* harmony export */ "aL": () => (/* binding */ getHoverColor), +/* harmony export */ "aM": () => (/* binding */ clone$1), +/* harmony export */ "aN": () => (/* binding */ _merger), +/* harmony export */ "aO": () => (/* binding */ _mergerIf), +/* harmony export */ "aP": () => (/* binding */ _deprecated), +/* harmony export */ "aQ": () => (/* binding */ toFontString), +/* harmony export */ "aR": () => (/* binding */ splineCurve), +/* harmony export */ "aS": () => (/* binding */ splineCurveMonotone), +/* harmony export */ "aT": () => (/* binding */ getStyle), +/* harmony export */ "aU": () => (/* binding */ fontString), +/* harmony export */ "aV": () => (/* binding */ toLineHeight), +/* harmony export */ "aW": () => (/* binding */ PITAU), +/* harmony export */ "aX": () => (/* binding */ INFINITY), +/* harmony export */ "aY": () => (/* binding */ RAD_PER_DEG), +/* harmony export */ "aZ": () => (/* binding */ QUARTER_PI), +/* harmony export */ "a_": () => (/* binding */ TWO_THIRDS_PI), +/* harmony export */ "aa": () => (/* binding */ uid), +/* harmony export */ "ab": () => (/* binding */ debounce), +/* harmony export */ "ac": () => (/* binding */ retinaScale), +/* harmony export */ "ad": () => (/* binding */ clearCanvas), +/* harmony export */ "ae": () => (/* binding */ setsEqual), +/* harmony export */ "af": () => (/* binding */ _elementsEqual), +/* harmony export */ "ag": () => (/* binding */ _isClickEvent), +/* harmony export */ "ah": () => (/* binding */ _isBetween), +/* harmony export */ "ai": () => (/* binding */ _readValueToProps), +/* harmony export */ "aj": () => (/* binding */ _updateBezierControlPoints), +/* harmony export */ "ak": () => (/* binding */ _computeSegments), +/* harmony export */ "al": () => (/* binding */ _boundSegments), +/* harmony export */ "am": () => (/* binding */ _steppedInterpolation), +/* harmony export */ "an": () => (/* binding */ _bezierInterpolation), +/* harmony export */ "ao": () => (/* binding */ _pointInLine), +/* harmony export */ "ap": () => (/* binding */ _steppedLineTo), +/* harmony export */ "aq": () => (/* binding */ _bezierCurveTo), +/* harmony export */ "ar": () => (/* binding */ drawPoint), +/* harmony export */ "as": () => (/* binding */ addRoundedRectPath), +/* harmony export */ "at": () => (/* binding */ toTRBL), +/* harmony export */ "au": () => (/* binding */ toTRBLCorners), +/* harmony export */ "av": () => (/* binding */ _boundSegment), +/* harmony export */ "aw": () => (/* binding */ _normalizeAngle), +/* harmony export */ "ax": () => (/* binding */ getRtlAdapter), +/* harmony export */ "ay": () => (/* binding */ overrideTextDirection), +/* harmony export */ "az": () => (/* binding */ _textX), +/* harmony export */ "b": () => (/* binding */ isArray), +/* harmony export */ "c": () => (/* binding */ color), +/* harmony export */ "d": () => (/* binding */ defaults), +/* harmony export */ "e": () => (/* binding */ effects), +/* harmony export */ "f": () => (/* binding */ resolveObjectKey), +/* harmony export */ "g": () => (/* binding */ isNumberFinite), +/* harmony export */ "h": () => (/* binding */ createContext), +/* harmony export */ "i": () => (/* binding */ isObject), +/* harmony export */ "j": () => (/* binding */ defined), +/* harmony export */ "k": () => (/* binding */ isNullOrUndef), +/* harmony export */ "l": () => (/* binding */ listenArrayEvents), +/* harmony export */ "m": () => (/* binding */ toPercentage), +/* harmony export */ "n": () => (/* binding */ toDimension), +/* harmony export */ "o": () => (/* binding */ formatNumber), +/* harmony export */ "p": () => (/* binding */ _angleBetween), +/* harmony export */ "q": () => (/* binding */ isNumber), +/* harmony export */ "r": () => (/* binding */ requestAnimFrame), +/* harmony export */ "s": () => (/* binding */ sign), +/* harmony export */ "t": () => (/* binding */ toRadians), +/* harmony export */ "u": () => (/* binding */ unlistenArrayEvents), +/* harmony export */ "v": () => (/* binding */ valueOrDefault), +/* harmony export */ "w": () => (/* binding */ _limitValue), +/* harmony export */ "x": () => (/* binding */ _lookupByKey), +/* harmony export */ "y": () => (/* binding */ getRelativePosition), +/* harmony export */ "z": () => (/* binding */ _isPointInArea) +/* harmony export */ }); +/*! + * Chart.js v3.7.1 + * https://www.chartjs.org + * (c) 2022 Chart.js Contributors + * Released under the MIT License + */ +function fontString(pixelSize, fontStyle, fontFamily) { + return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; +} +const requestAnimFrame = (function() { + if (typeof window === 'undefined') { + return function(callback) { + return callback(); + }; + } + return window.requestAnimationFrame; +}()); +function throttled(fn, thisArg, updateFn) { + const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args)); + let ticking = false; + let args = []; + return function(...rest) { + args = updateArgs(rest); + if (!ticking) { + ticking = true; + requestAnimFrame.call(window, () => { + ticking = false; + fn.apply(thisArg, args); + }); + } + }; +} +function debounce(fn, delay) { + let timeout; + return function(...args) { + if (delay) { + clearTimeout(timeout); + timeout = setTimeout(fn, delay, args); + } else { + fn.apply(this, args); + } + return delay; + }; +} +const _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center'; +const _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2; +const _textX = (align, left, right, rtl) => { + const check = rtl ? 'left' : 'right'; + return align === check ? right : align === 'center' ? (left + right) / 2 : left; +}; + +function noop() {} +const uid = (function() { + let id = 0; + return function() { + return id++; + }; +}()); +function isNullOrUndef(value) { + return value === null || typeof value === 'undefined'; +} +function isArray(value) { + if (Array.isArray && Array.isArray(value)) { + return true; + } + const type = Object.prototype.toString.call(value); + if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') { + return true; + } + return false; +} +function isObject(value) { + return value !== null && Object.prototype.toString.call(value) === '[object Object]'; +} +const isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value); +function finiteOrDefault(value, defaultValue) { + return isNumberFinite(value) ? value : defaultValue; +} +function valueOrDefault(value, defaultValue) { + return typeof value === 'undefined' ? defaultValue : value; +} +const toPercentage = (value, dimension) => + typeof value === 'string' && value.endsWith('%') ? + parseFloat(value) / 100 + : value / dimension; +const toDimension = (value, dimension) => + typeof value === 'string' && value.endsWith('%') ? + parseFloat(value) / 100 * dimension + : +value; +function callback(fn, args, thisArg) { + if (fn && typeof fn.call === 'function') { + return fn.apply(thisArg, args); + } +} +function each(loopable, fn, thisArg, reverse) { + let i, len, keys; + if (isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } + } + } else if (isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); + } + } +} +function _elementsEqual(a0, a1) { + let i, ilen, v0, v1; + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; + if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) { + return false; + } + } + return true; +} +function clone$1(source) { + if (isArray(source)) { + return source.map(clone$1); + } + if (isObject(source)) { + const target = Object.create(null); + const keys = Object.keys(source); + const klen = keys.length; + let k = 0; + for (; k < klen; ++k) { + target[keys[k]] = clone$1(source[keys[k]]); + } + return target; + } + return source; +} +function isValidKey(key) { + return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1; +} +function _merger(key, target, source, options) { + if (!isValidKey(key)) { + return; + } + const tval = target[key]; + const sval = source[key]; + if (isObject(tval) && isObject(sval)) { + merge(tval, sval, options); + } else { + target[key] = clone$1(sval); + } +} +function merge(target, source, options) { + const sources = isArray(source) ? source : [source]; + const ilen = sources.length; + if (!isObject(target)) { + return target; + } + options = options || {}; + const merger = options.merger || _merger; + for (let i = 0; i < ilen; ++i) { + source = sources[i]; + if (!isObject(source)) { + continue; + } + const keys = Object.keys(source); + for (let k = 0, klen = keys.length; k < klen; ++k) { + merger(keys[k], target, source, options); + } + } + return target; +} +function mergeIf(target, source) { + return merge(target, source, {merger: _mergerIf}); +} +function _mergerIf(key, target, source) { + if (!isValidKey(key)) { + return; + } + const tval = target[key]; + const sval = source[key]; + if (isObject(tval) && isObject(sval)) { + mergeIf(tval, sval); + } else if (!Object.prototype.hasOwnProperty.call(target, key)) { + target[key] = clone$1(sval); + } +} +function _deprecated(scope, value, previous, current) { + if (value !== undefined) { + console.warn(scope + ': "' + previous + + '" is deprecated. Please use "' + current + '" instead'); + } +} +const emptyString = ''; +const dot = '.'; +function indexOfDotOrLength(key, start) { + const idx = key.indexOf(dot, start); + return idx === -1 ? key.length : idx; +} +function resolveObjectKey(obj, key) { + if (key === emptyString) { + return obj; + } + let pos = 0; + let idx = indexOfDotOrLength(key, pos); + while (obj && idx > pos) { + obj = obj[key.substr(pos, idx - pos)]; + pos = idx + 1; + idx = indexOfDotOrLength(key, pos); + } + return obj; +} +function _capitalize(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} +const defined = (value) => typeof value !== 'undefined'; +const isFunction = (value) => typeof value === 'function'; +const setsEqual = (a, b) => { + if (a.size !== b.size) { + return false; + } + for (const item of a) { + if (!b.has(item)) { + return false; + } + } + return true; +}; +function _isClickEvent(e) { + return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu'; +} + +const PI = Math.PI; +const TAU = 2 * PI; +const PITAU = TAU + PI; +const INFINITY = Number.POSITIVE_INFINITY; +const RAD_PER_DEG = PI / 180; +const HALF_PI = PI / 2; +const QUARTER_PI = PI / 4; +const TWO_THIRDS_PI = PI * 2 / 3; +const log10 = Math.log10; +const sign = Math.sign; +function niceNum(range) { + const roundedRange = Math.round(range); + range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range; + const niceRange = Math.pow(10, Math.floor(log10(range))); + const fraction = range / niceRange; + const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10; + return niceFraction * niceRange; +} +function _factorize(value) { + const result = []; + const sqrt = Math.sqrt(value); + let i; + for (i = 1; i < sqrt; i++) { + if (value % i === 0) { + result.push(i); + result.push(value / i); + } + } + if (sqrt === (sqrt | 0)) { + result.push(sqrt); + } + result.sort((a, b) => a - b).pop(); + return result; +} +function isNumber(n) { + return !isNaN(parseFloat(n)) && isFinite(n); +} +function almostEquals(x, y, epsilon) { + return Math.abs(x - y) < epsilon; +} +function almostWhole(x, epsilon) { + const rounded = Math.round(x); + return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x); +} +function _setMinAndMaxByKey(array, target, property) { + let i, ilen, value; + for (i = 0, ilen = array.length; i < ilen; i++) { + value = array[i][property]; + if (!isNaN(value)) { + target.min = Math.min(target.min, value); + target.max = Math.max(target.max, value); + } + } +} +function toRadians(degrees) { + return degrees * (PI / 180); +} +function toDegrees(radians) { + return radians * (180 / PI); +} +function _decimalPlaces(x) { + if (!isNumberFinite(x)) { + return; + } + let e = 1; + let p = 0; + while (Math.round(x * e) / e !== x) { + e *= 10; + p++; + } + return p; +} +function getAngleFromPoint(centrePoint, anglePoint) { + const distanceFromXCenter = anglePoint.x - centrePoint.x; + const distanceFromYCenter = anglePoint.y - centrePoint.y; + const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); + let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); + if (angle < (-0.5 * PI)) { + angle += TAU; + } + return { + angle, + distance: radialDistanceFromCenter + }; +} +function distanceBetweenPoints(pt1, pt2) { + return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); +} +function _angleDiff(a, b) { + return (a - b + PITAU) % TAU - PI; +} +function _normalizeAngle(a) { + return (a % TAU + TAU) % TAU; +} +function _angleBetween(angle, start, end, sameAngleIsFullCircle) { + const a = _normalizeAngle(angle); + const s = _normalizeAngle(start); + const e = _normalizeAngle(end); + const angleToStart = _normalizeAngle(s - a); + const angleToEnd = _normalizeAngle(e - a); + const startToAngle = _normalizeAngle(a - s); + const endToAngle = _normalizeAngle(a - e); + return a === s || a === e || (sameAngleIsFullCircle && s === e) + || (angleToStart > angleToEnd && startToAngle < endToAngle); +} +function _limitValue(value, min, max) { + return Math.max(min, Math.min(max, value)); +} +function _int16Range(value) { + return _limitValue(value, -32768, 32767); +} +function _isBetween(value, start, end, epsilon = 1e-6) { + return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon; +} + +const atEdge = (t) => t === 0 || t === 1; +const elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p)); +const elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1; +const effects = { + linear: t => t, + easeInQuad: t => t * t, + easeOutQuad: t => -t * (t - 2), + easeInOutQuad: t => ((t /= 0.5) < 1) + ? 0.5 * t * t + : -0.5 * ((--t) * (t - 2) - 1), + easeInCubic: t => t * t * t, + easeOutCubic: t => (t -= 1) * t * t + 1, + easeInOutCubic: t => ((t /= 0.5) < 1) + ? 0.5 * t * t * t + : 0.5 * ((t -= 2) * t * t + 2), + easeInQuart: t => t * t * t * t, + easeOutQuart: t => -((t -= 1) * t * t * t - 1), + easeInOutQuart: t => ((t /= 0.5) < 1) + ? 0.5 * t * t * t * t + : -0.5 * ((t -= 2) * t * t * t - 2), + easeInQuint: t => t * t * t * t * t, + easeOutQuint: t => (t -= 1) * t * t * t * t + 1, + easeInOutQuint: t => ((t /= 0.5) < 1) + ? 0.5 * t * t * t * t * t + : 0.5 * ((t -= 2) * t * t * t * t + 2), + easeInSine: t => -Math.cos(t * HALF_PI) + 1, + easeOutSine: t => Math.sin(t * HALF_PI), + easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1), + easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)), + easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1, + easeInOutExpo: t => atEdge(t) ? t : t < 0.5 + ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) + : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2), + easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1), + easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t), + easeInOutCirc: t => ((t /= 0.5) < 1) + ? -0.5 * (Math.sqrt(1 - t * t) - 1) + : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1), + easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3), + easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3), + easeInOutElastic(t) { + const s = 0.1125; + const p = 0.45; + return atEdge(t) ? t : + t < 0.5 + ? 0.5 * elasticIn(t * 2, s, p) + : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p); + }, + easeInBack(t) { + const s = 1.70158; + return t * t * ((s + 1) * t - s); + }, + easeOutBack(t) { + const s = 1.70158; + return (t -= 1) * t * ((s + 1) * t + s) + 1; + }, + easeInOutBack(t) { + let s = 1.70158; + if ((t /= 0.5) < 1) { + return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); + } + return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + }, + easeInBounce: t => 1 - effects.easeOutBounce(1 - t), + easeOutBounce(t) { + const m = 7.5625; + const d = 2.75; + if (t < (1 / d)) { + return m * t * t; + } + if (t < (2 / d)) { + return m * (t -= (1.5 / d)) * t + 0.75; + } + if (t < (2.5 / d)) { + return m * (t -= (2.25 / d)) * t + 0.9375; + } + return m * (t -= (2.625 / d)) * t + 0.984375; + }, + easeInOutBounce: t => (t < 0.5) + ? effects.easeInBounce(t * 2) * 0.5 + : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5, +}; + +/*! + * @kurkle/color v0.1.9 + * https://github.com/kurkle/color#readme + * (c) 2020 Jukka Kurkela + * Released under the MIT License + */ +const map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15}; +const hex = '0123456789ABCDEF'; +const h1 = (b) => hex[b & 0xF]; +const h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF]; +const eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF)); +function isShort(v) { + return eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a); +} +function hexParse(str) { + var len = str.length; + var ret; + if (str[0] === '#') { + if (len === 4 || len === 5) { + ret = { + r: 255 & map[str[1]] * 17, + g: 255 & map[str[2]] * 17, + b: 255 & map[str[3]] * 17, + a: len === 5 ? map[str[4]] * 17 : 255 + }; + } else if (len === 7 || len === 9) { + ret = { + r: map[str[1]] << 4 | map[str[2]], + g: map[str[3]] << 4 | map[str[4]], + b: map[str[5]] << 4 | map[str[6]], + a: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255 + }; + } + } + return ret; +} +function hexString(v) { + var f = isShort(v) ? h1 : h2; + return v + ? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '') + : v; +} +function round(v) { + return v + 0.5 | 0; +} +const lim = (v, l, h) => Math.max(Math.min(v, h), l); +function p2b(v) { + return lim(round(v * 2.55), 0, 255); +} +function n2b(v) { + return lim(round(v * 255), 0, 255); +} +function b2n(v) { + return lim(round(v / 2.55) / 100, 0, 1); +} +function n2p(v) { + return lim(round(v * 100), 0, 100); +} +const RGB_RE = /^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/; +function rgbParse(str) { + const m = RGB_RE.exec(str); + let a = 255; + let r, g, b; + if (!m) { + return; + } + if (m[7] !== r) { + const v = +m[7]; + a = 255 & (m[8] ? p2b(v) : v * 255); + } + r = +m[1]; + g = +m[3]; + b = +m[5]; + r = 255 & (m[2] ? p2b(r) : r); + g = 255 & (m[4] ? p2b(g) : g); + b = 255 & (m[6] ? p2b(b) : b); + return { + r: r, + g: g, + b: b, + a: a + }; +} +function rgbString(v) { + return v && ( + v.a < 255 + ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` + : `rgb(${v.r}, ${v.g}, ${v.b})` + ); +} +const HUE_RE = /^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/; +function hsl2rgbn(h, s, l) { + const a = s * Math.min(l, 1 - l); + const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); + return [f(0), f(8), f(4)]; +} +function hsv2rgbn(h, s, v) { + const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0); + return [f(5), f(3), f(1)]; +} +function hwb2rgbn(h, w, b) { + const rgb = hsl2rgbn(h, 1, 0.5); + let i; + if (w + b > 1) { + i = 1 / (w + b); + w *= i; + b *= i; + } + for (i = 0; i < 3; i++) { + rgb[i] *= 1 - w - b; + rgb[i] += w; + } + return rgb; +} +function rgb2hsl(v) { + const range = 255; + const r = v.r / range; + const g = v.g / range; + const b = v.b / range; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + const l = (max + min) / 2; + let h, s, d; + if (max !== min) { + d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + h = max === r + ? ((g - b) / d) + (g < b ? 6 : 0) + : max === g + ? (b - r) / d + 2 + : (r - g) / d + 4; + h = h * 60 + 0.5; + } + return [h | 0, s || 0, l]; +} +function calln(f, a, b, c) { + return ( + Array.isArray(a) + ? f(a[0], a[1], a[2]) + : f(a, b, c) + ).map(n2b); +} +function hsl2rgb(h, s, l) { + return calln(hsl2rgbn, h, s, l); +} +function hwb2rgb(h, w, b) { + return calln(hwb2rgbn, h, w, b); +} +function hsv2rgb(h, s, v) { + return calln(hsv2rgbn, h, s, v); +} +function hue(h) { + return (h % 360 + 360) % 360; +} +function hueParse(str) { + const m = HUE_RE.exec(str); + let a = 255; + let v; + if (!m) { + return; + } + if (m[5] !== v) { + a = m[6] ? p2b(+m[5]) : n2b(+m[5]); + } + const h = hue(+m[2]); + const p1 = +m[3] / 100; + const p2 = +m[4] / 100; + if (m[1] === 'hwb') { + v = hwb2rgb(h, p1, p2); + } else if (m[1] === 'hsv') { + v = hsv2rgb(h, p1, p2); + } else { + v = hsl2rgb(h, p1, p2); + } + return { + r: v[0], + g: v[1], + b: v[2], + a: a + }; +} +function rotate(v, deg) { + var h = rgb2hsl(v); + h[0] = hue(h[0] + deg); + h = hsl2rgb(h); + v.r = h[0]; + v.g = h[1]; + v.b = h[2]; +} +function hslString(v) { + if (!v) { + return; + } + const a = rgb2hsl(v); + const h = a[0]; + const s = n2p(a[1]); + const l = n2p(a[2]); + return v.a < 255 + ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` + : `hsl(${h}, ${s}%, ${l}%)`; +} +const map$1 = { + x: 'dark', + Z: 'light', + Y: 're', + X: 'blu', + W: 'gr', + V: 'medium', + U: 'slate', + A: 'ee', + T: 'ol', + S: 'or', + B: 'ra', + C: 'lateg', + D: 'ights', + R: 'in', + Q: 'turquois', + E: 'hi', + P: 'ro', + O: 'al', + N: 'le', + M: 'de', + L: 'yello', + F: 'en', + K: 'ch', + G: 'arks', + H: 'ea', + I: 'ightg', + J: 'wh' +}; +const names = { + OiceXe: 'f0f8ff', + antiquewEte: 'faebd7', + aqua: 'ffff', + aquamarRe: '7fffd4', + azuY: 'f0ffff', + beige: 'f5f5dc', + bisque: 'ffe4c4', + black: '0', + blanKedOmond: 'ffebcd', + Xe: 'ff', + XeviTet: '8a2be2', + bPwn: 'a52a2a', + burlywood: 'deb887', + caMtXe: '5f9ea0', + KartYuse: '7fff00', + KocTate: 'd2691e', + cSO: 'ff7f50', + cSnflowerXe: '6495ed', + cSnsilk: 'fff8dc', + crimson: 'dc143c', + cyan: 'ffff', + xXe: '8b', + xcyan: '8b8b', + xgTMnPd: 'b8860b', + xWay: 'a9a9a9', + xgYF: '6400', + xgYy: 'a9a9a9', + xkhaki: 'bdb76b', + xmagFta: '8b008b', + xTivegYF: '556b2f', + xSange: 'ff8c00', + xScEd: '9932cc', + xYd: '8b0000', + xsOmon: 'e9967a', + xsHgYF: '8fbc8f', + xUXe: '483d8b', + xUWay: '2f4f4f', + xUgYy: '2f4f4f', + xQe: 'ced1', + xviTet: '9400d3', + dAppRk: 'ff1493', + dApskyXe: 'bfff', + dimWay: '696969', + dimgYy: '696969', + dodgerXe: '1e90ff', + fiYbrick: 'b22222', + flSOwEte: 'fffaf0', + foYstWAn: '228b22', + fuKsia: 'ff00ff', + gaRsbSo: 'dcdcdc', + ghostwEte: 'f8f8ff', + gTd: 'ffd700', + gTMnPd: 'daa520', + Way: '808080', + gYF: '8000', + gYFLw: 'adff2f', + gYy: '808080', + honeyMw: 'f0fff0', + hotpRk: 'ff69b4', + RdianYd: 'cd5c5c', + Rdigo: '4b0082', + ivSy: 'fffff0', + khaki: 'f0e68c', + lavFMr: 'e6e6fa', + lavFMrXsh: 'fff0f5', + lawngYF: '7cfc00', + NmoncEffon: 'fffacd', + ZXe: 'add8e6', + ZcSO: 'f08080', + Zcyan: 'e0ffff', + ZgTMnPdLw: 'fafad2', + ZWay: 'd3d3d3', + ZgYF: '90ee90', + ZgYy: 'd3d3d3', + ZpRk: 'ffb6c1', + ZsOmon: 'ffa07a', + ZsHgYF: '20b2aa', + ZskyXe: '87cefa', + ZUWay: '778899', + ZUgYy: '778899', + ZstAlXe: 'b0c4de', + ZLw: 'ffffe0', + lime: 'ff00', + limegYF: '32cd32', + lRF: 'faf0e6', + magFta: 'ff00ff', + maPon: '800000', + VaquamarRe: '66cdaa', + VXe: 'cd', + VScEd: 'ba55d3', + VpurpN: '9370db', + VsHgYF: '3cb371', + VUXe: '7b68ee', + VsprRggYF: 'fa9a', + VQe: '48d1cc', + VviTetYd: 'c71585', + midnightXe: '191970', + mRtcYam: 'f5fffa', + mistyPse: 'ffe4e1', + moccasR: 'ffe4b5', + navajowEte: 'ffdead', + navy: '80', + Tdlace: 'fdf5e6', + Tive: '808000', + TivedBb: '6b8e23', + Sange: 'ffa500', + SangeYd: 'ff4500', + ScEd: 'da70d6', + pOegTMnPd: 'eee8aa', + pOegYF: '98fb98', + pOeQe: 'afeeee', + pOeviTetYd: 'db7093', + papayawEp: 'ffefd5', + pHKpuff: 'ffdab9', + peru: 'cd853f', + pRk: 'ffc0cb', + plum: 'dda0dd', + powMrXe: 'b0e0e6', + purpN: '800080', + YbeccapurpN: '663399', + Yd: 'ff0000', + Psybrown: 'bc8f8f', + PyOXe: '4169e1', + saddNbPwn: '8b4513', + sOmon: 'fa8072', + sandybPwn: 'f4a460', + sHgYF: '2e8b57', + sHshell: 'fff5ee', + siFna: 'a0522d', + silver: 'c0c0c0', + skyXe: '87ceeb', + UXe: '6a5acd', + UWay: '708090', + UgYy: '708090', + snow: 'fffafa', + sprRggYF: 'ff7f', + stAlXe: '4682b4', + tan: 'd2b48c', + teO: '8080', + tEstN: 'd8bfd8', + tomato: 'ff6347', + Qe: '40e0d0', + viTet: 'ee82ee', + JHt: 'f5deb3', + wEte: 'ffffff', + wEtesmoke: 'f5f5f5', + Lw: 'ffff00', + LwgYF: '9acd32' +}; +function unpack() { + const unpacked = {}; + const keys = Object.keys(names); + const tkeys = Object.keys(map$1); + let i, j, k, ok, nk; + for (i = 0; i < keys.length; i++) { + ok = nk = keys[i]; + for (j = 0; j < tkeys.length; j++) { + k = tkeys[j]; + nk = nk.replace(k, map$1[k]); + } + k = parseInt(names[ok], 16); + unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF]; + } + return unpacked; +} +let names$1; +function nameParse(str) { + if (!names$1) { + names$1 = unpack(); + names$1.transparent = [0, 0, 0, 0]; + } + const a = names$1[str.toLowerCase()]; + return a && { + r: a[0], + g: a[1], + b: a[2], + a: a.length === 4 ? a[3] : 255 + }; +} +function modHSL(v, i, ratio) { + if (v) { + let tmp = rgb2hsl(v); + tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1)); + tmp = hsl2rgb(tmp); + v.r = tmp[0]; + v.g = tmp[1]; + v.b = tmp[2]; + } +} +function clone(v, proto) { + return v ? Object.assign(proto || {}, v) : v; +} +function fromObject(input) { + var v = {r: 0, g: 0, b: 0, a: 255}; + if (Array.isArray(input)) { + if (input.length >= 3) { + v = {r: input[0], g: input[1], b: input[2], a: 255}; + if (input.length > 3) { + v.a = n2b(input[3]); + } + } + } else { + v = clone(input, {r: 0, g: 0, b: 0, a: 1}); + v.a = n2b(v.a); + } + return v; +} +function functionParse(str) { + if (str.charAt(0) === 'r') { + return rgbParse(str); + } + return hueParse(str); +} +class Color { + constructor(input) { + if (input instanceof Color) { + return input; + } + const type = typeof input; + let v; + if (type === 'object') { + v = fromObject(input); + } else if (type === 'string') { + v = hexParse(input) || nameParse(input) || functionParse(input); + } + this._rgb = v; + this._valid = !!v; + } + get valid() { + return this._valid; + } + get rgb() { + var v = clone(this._rgb); + if (v) { + v.a = b2n(v.a); + } + return v; + } + set rgb(obj) { + this._rgb = fromObject(obj); + } + rgbString() { + return this._valid ? rgbString(this._rgb) : this._rgb; + } + hexString() { + return this._valid ? hexString(this._rgb) : this._rgb; + } + hslString() { + return this._valid ? hslString(this._rgb) : this._rgb; + } + mix(color, weight) { + const me = this; + if (color) { + const c1 = me.rgb; + const c2 = color.rgb; + let w2; + const p = weight === w2 ? 0.5 : weight; + const w = 2 * p - 1; + const a = c1.a - c2.a; + const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + w2 = 1 - w1; + c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5; + c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5; + c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5; + c1.a = p * c1.a + (1 - p) * c2.a; + me.rgb = c1; + } + return me; + } + clone() { + return new Color(this.rgb); + } + alpha(a) { + this._rgb.a = n2b(a); + return this; + } + clearer(ratio) { + const rgb = this._rgb; + rgb.a *= 1 - ratio; + return this; + } + greyscale() { + const rgb = this._rgb; + const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11); + rgb.r = rgb.g = rgb.b = val; + return this; + } + opaquer(ratio) { + const rgb = this._rgb; + rgb.a *= 1 + ratio; + return this; + } + negate() { + const v = this._rgb; + v.r = 255 - v.r; + v.g = 255 - v.g; + v.b = 255 - v.b; + return this; + } + lighten(ratio) { + modHSL(this._rgb, 2, ratio); + return this; + } + darken(ratio) { + modHSL(this._rgb, 2, -ratio); + return this; + } + saturate(ratio) { + modHSL(this._rgb, 1, ratio); + return this; + } + desaturate(ratio) { + modHSL(this._rgb, 1, -ratio); + return this; + } + rotate(deg) { + rotate(this._rgb, deg); + return this; + } +} +function index_esm(input) { + return new Color(input); +} + +const isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern; +function color(value) { + return isPatternOrGradient(value) ? value : index_esm(value); +} +function getHoverColor(value) { + return isPatternOrGradient(value) + ? value + : index_esm(value).saturate(0.5).darken(0.1).hexString(); +} + +const overrides = Object.create(null); +const descriptors = Object.create(null); +function getScope$1(node, key) { + if (!key) { + return node; + } + const keys = key.split('.'); + for (let i = 0, n = keys.length; i < n; ++i) { + const k = keys[i]; + node = node[k] || (node[k] = Object.create(null)); + } + return node; +} +function set(root, scope, values) { + if (typeof scope === 'string') { + return merge(getScope$1(root, scope), values); + } + return merge(getScope$1(root, ''), scope); +} +class Defaults { + constructor(_descriptors) { + this.animation = undefined; + this.backgroundColor = 'rgba(0,0,0,0.1)'; + this.borderColor = 'rgba(0,0,0,0.1)'; + this.color = '#666'; + this.datasets = {}; + this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio(); + this.elements = {}; + this.events = [ + 'mousemove', + 'mouseout', + 'click', + 'touchstart', + 'touchmove' + ]; + this.font = { + family: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + size: 12, + style: 'normal', + lineHeight: 1.2, + weight: null + }; + this.hover = {}; + this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor); + this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor); + this.hoverColor = (ctx, options) => getHoverColor(options.color); + this.indexAxis = 'x'; + this.interaction = { + mode: 'nearest', + intersect: true + }; + this.maintainAspectRatio = true; + this.onHover = null; + this.onClick = null; + this.parsing = true; + this.plugins = {}; + this.responsive = true; + this.scale = undefined; + this.scales = {}; + this.showLine = true; + this.drawActiveElementsOnTop = true; + this.describe(_descriptors); + } + set(scope, values) { + return set(this, scope, values); + } + get(scope) { + return getScope$1(this, scope); + } + describe(scope, values) { + return set(descriptors, scope, values); + } + override(scope, values) { + return set(overrides, scope, values); + } + route(scope, name, targetScope, targetName) { + const scopeObject = getScope$1(this, scope); + const targetScopeObject = getScope$1(this, targetScope); + const privateName = '_' + name; + Object.defineProperties(scopeObject, { + [privateName]: { + value: scopeObject[name], + writable: true + }, + [name]: { + enumerable: true, + get() { + const local = this[privateName]; + const target = targetScopeObject[targetName]; + if (isObject(local)) { + return Object.assign({}, target, local); + } + return valueOrDefault(local, target); + }, + set(value) { + this[privateName] = value; + } + } + }); + } +} +var defaults = new Defaults({ + _scriptable: (name) => !name.startsWith('on'), + _indexable: (name) => name !== 'events', + hover: { + _fallback: 'interaction' + }, + interaction: { + _scriptable: false, + _indexable: false, + } +}); + +function toFontString(font) { + if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) { + return null; + } + return (font.style ? font.style + ' ' : '') + + (font.weight ? font.weight + ' ' : '') + + font.size + 'px ' + + font.family; +} +function _measureText(ctx, data, gc, longest, string) { + let textWidth = data[string]; + if (!textWidth) { + textWidth = data[string] = ctx.measureText(string).width; + gc.push(string); + } + if (textWidth > longest) { + longest = textWidth; + } + return longest; +} +function _longestText(ctx, font, arrayOfThings, cache) { + cache = cache || {}; + let data = cache.data = cache.data || {}; + let gc = cache.garbageCollect = cache.garbageCollect || []; + if (cache.font !== font) { + data = cache.data = {}; + gc = cache.garbageCollect = []; + cache.font = font; + } + ctx.save(); + ctx.font = font; + let longest = 0; + const ilen = arrayOfThings.length; + let i, j, jlen, thing, nestedThing; + for (i = 0; i < ilen; i++) { + thing = arrayOfThings[i]; + if (thing !== undefined && thing !== null && isArray(thing) !== true) { + longest = _measureText(ctx, data, gc, longest, thing); + } else if (isArray(thing)) { + for (j = 0, jlen = thing.length; j < jlen; j++) { + nestedThing = thing[j]; + if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) { + longest = _measureText(ctx, data, gc, longest, nestedThing); + } + } + } + } + ctx.restore(); + const gcLen = gc.length / 2; + if (gcLen > arrayOfThings.length) { + for (i = 0; i < gcLen; i++) { + delete data[gc[i]]; + } + gc.splice(0, gcLen); + } + return longest; +} +function _alignPixel(chart, pixel, width) { + const devicePixelRatio = chart.currentDevicePixelRatio; + const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0; + return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; +} +function clearCanvas(canvas, ctx) { + ctx = ctx || canvas.getContext('2d'); + ctx.save(); + ctx.resetTransform(); + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.restore(); +} +function drawPoint(ctx, options, x, y) { + let type, xOffset, yOffset, size, cornerRadius; + const style = options.pointStyle; + const rotation = options.rotation; + const radius = options.radius; + let rad = (rotation || 0) * RAD_PER_DEG; + if (style && typeof style === 'object') { + type = style.toString(); + if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { + ctx.save(); + ctx.translate(x, y); + ctx.rotate(rad); + ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height); + ctx.restore(); + return; + } + } + if (isNaN(radius) || radius <= 0) { + return; + } + ctx.beginPath(); + switch (style) { + default: + ctx.arc(x, y, radius, 0, TAU); + ctx.closePath(); + break; + case 'triangle': + ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + ctx.closePath(); + break; + case 'rectRounded': + cornerRadius = radius * 0.516; + size = radius - cornerRadius; + xOffset = Math.cos(rad + QUARTER_PI) * size; + yOffset = Math.sin(rad + QUARTER_PI) * size; + ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); + ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); + ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); + ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); + ctx.closePath(); + break; + case 'rect': + if (!rotation) { + size = Math.SQRT1_2 * radius; + ctx.rect(x - size, y - size, 2 * size, 2 * size); + break; + } + rad += QUARTER_PI; + case 'rectRot': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + yOffset, y - xOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.lineTo(x - yOffset, y + xOffset); + ctx.closePath(); + break; + case 'crossRot': + rad += QUARTER_PI; + case 'cross': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'star': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + rad += QUARTER_PI; + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'line': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + break; + case 'dash': + ctx.moveTo(x, y); + ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); + break; + } + ctx.fill(); + if (options.borderWidth > 0) { + ctx.stroke(); + } +} +function _isPointInArea(point, area, margin) { + margin = margin || 0.5; + return !area || (point && point.x > area.left - margin && point.x < area.right + margin && + point.y > area.top - margin && point.y < area.bottom + margin); +} +function clipArea(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); +} +function unclipArea(ctx) { + ctx.restore(); +} +function _steppedLineTo(ctx, previous, target, flip, mode) { + if (!previous) { + return ctx.lineTo(target.x, target.y); + } + if (mode === 'middle') { + const midpoint = (previous.x + target.x) / 2.0; + ctx.lineTo(midpoint, previous.y); + ctx.lineTo(midpoint, target.y); + } else if (mode === 'after' !== !!flip) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); +} +function _bezierCurveTo(ctx, previous, target, flip) { + if (!previous) { + return ctx.lineTo(target.x, target.y); + } + ctx.bezierCurveTo( + flip ? previous.cp1x : previous.cp2x, + flip ? previous.cp1y : previous.cp2y, + flip ? target.cp2x : target.cp1x, + flip ? target.cp2y : target.cp1y, + target.x, + target.y); +} +function renderText(ctx, text, x, y, font, opts = {}) { + const lines = isArray(text) ? text : [text]; + const stroke = opts.strokeWidth > 0 && opts.strokeColor !== ''; + let i, line; + ctx.save(); + ctx.font = font.string; + setRenderOpts(ctx, opts); + for (i = 0; i < lines.length; ++i) { + line = lines[i]; + if (stroke) { + if (opts.strokeColor) { + ctx.strokeStyle = opts.strokeColor; + } + if (!isNullOrUndef(opts.strokeWidth)) { + ctx.lineWidth = opts.strokeWidth; + } + ctx.strokeText(line, x, y, opts.maxWidth); + } + ctx.fillText(line, x, y, opts.maxWidth); + decorateText(ctx, x, y, line, opts); + y += font.lineHeight; + } + ctx.restore(); +} +function setRenderOpts(ctx, opts) { + if (opts.translation) { + ctx.translate(opts.translation[0], opts.translation[1]); + } + if (!isNullOrUndef(opts.rotation)) { + ctx.rotate(opts.rotation); + } + if (opts.color) { + ctx.fillStyle = opts.color; + } + if (opts.textAlign) { + ctx.textAlign = opts.textAlign; + } + if (opts.textBaseline) { + ctx.textBaseline = opts.textBaseline; + } +} +function decorateText(ctx, x, y, line, opts) { + if (opts.strikethrough || opts.underline) { + const metrics = ctx.measureText(line); + const left = x - metrics.actualBoundingBoxLeft; + const right = x + metrics.actualBoundingBoxRight; + const top = y - metrics.actualBoundingBoxAscent; + const bottom = y + metrics.actualBoundingBoxDescent; + const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom; + ctx.strokeStyle = ctx.fillStyle; + ctx.beginPath(); + ctx.lineWidth = opts.decorationWidth || 2; + ctx.moveTo(left, yDecoration); + ctx.lineTo(right, yDecoration); + ctx.stroke(); + } +} +function addRoundedRectPath(ctx, rect) { + const {x, y, w, h, radius} = rect; + ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true); + ctx.lineTo(x, y + h - radius.bottomLeft); + ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true); + ctx.lineTo(x + w - radius.bottomRight, y + h); + ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true); + ctx.lineTo(x + w, y + radius.topRight); + ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true); + ctx.lineTo(x + radius.topLeft, y); +} + +const LINE_HEIGHT = new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); +const FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/); +function toLineHeight(value, size) { + const matches = ('' + value).match(LINE_HEIGHT); + if (!matches || matches[1] === 'normal') { + return size * 1.2; + } + value = +matches[2]; + switch (matches[3]) { + case 'px': + return value; + case '%': + value /= 100; + break; + } + return size * value; +} +const numberOrZero = v => +v || 0; +function _readValueToProps(value, props) { + const ret = {}; + const objProps = isObject(props); + const keys = objProps ? Object.keys(props) : props; + const read = isObject(value) + ? objProps + ? prop => valueOrDefault(value[prop], value[props[prop]]) + : prop => value[prop] + : () => value; + for (const prop of keys) { + ret[prop] = numberOrZero(read(prop)); + } + return ret; +} +function toTRBL(value) { + return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'}); +} +function toTRBLCorners(value) { + return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']); +} +function toPadding(value) { + const obj = toTRBL(value); + obj.width = obj.left + obj.right; + obj.height = obj.top + obj.bottom; + return obj; +} +function toFont(options, fallback) { + options = options || {}; + fallback = fallback || defaults.font; + let size = valueOrDefault(options.size, fallback.size); + if (typeof size === 'string') { + size = parseInt(size, 10); + } + let style = valueOrDefault(options.style, fallback.style); + if (style && !('' + style).match(FONT_STYLE)) { + console.warn('Invalid font style specified: "' + style + '"'); + style = ''; + } + const font = { + family: valueOrDefault(options.family, fallback.family), + lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size), + size, + style, + weight: valueOrDefault(options.weight, fallback.weight), + string: '' + }; + font.string = toFontString(font); + return font; +} +function resolve(inputs, context, index, info) { + let cacheable = true; + let i, ilen, value; + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === undefined) { + continue; + } + if (context !== undefined && typeof value === 'function') { + value = value(context); + cacheable = false; + } + if (index !== undefined && isArray(value)) { + value = value[index % value.length]; + cacheable = false; + } + if (value !== undefined) { + if (info && !cacheable) { + info.cacheable = false; + } + return value; + } + } +} +function _addGrace(minmax, grace, beginAtZero) { + const {min, max} = minmax; + const change = toDimension(grace, (max - min) / 2); + const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add; + return { + min: keepZero(min, -Math.abs(change)), + max: keepZero(max, change) + }; +} +function createContext(parentContext, context) { + return Object.assign(Object.create(parentContext), context); +} + +function _lookup(table, value, cmp) { + cmp = cmp || ((index) => table[index] < value); + let hi = table.length - 1; + let lo = 0; + let mid; + while (hi - lo > 1) { + mid = (lo + hi) >> 1; + if (cmp(mid)) { + lo = mid; + } else { + hi = mid; + } + } + return {lo, hi}; +} +const _lookupByKey = (table, key, value) => + _lookup(table, value, index => table[index][key] < value); +const _rlookupByKey = (table, key, value) => + _lookup(table, value, index => table[index][key] >= value); +function _filterBetween(values, min, max) { + let start = 0; + let end = values.length; + while (start < end && values[start] < min) { + start++; + } + while (end > start && values[end - 1] > max) { + end--; + } + return start > 0 || end < values.length + ? values.slice(start, end) + : values; +} +const arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; +function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; + } + Object.defineProperty(array, '_chartjs', { + configurable: true, + enumerable: false, + value: { + listeners: [listener] + } + }); + arrayEvents.forEach((key) => { + const method = '_onData' + _capitalize(key); + const base = array[key]; + Object.defineProperty(array, key, { + configurable: true, + enumerable: false, + value(...args) { + const res = base.apply(this, args); + array._chartjs.listeners.forEach((object) => { + if (typeof object[method] === 'function') { + object[method](...args); + } + }); + return res; + } + }); + }); +} +function unlistenArrayEvents(array, listener) { + const stub = array._chartjs; + if (!stub) { + return; + } + const listeners = stub.listeners; + const index = listeners.indexOf(listener); + if (index !== -1) { + listeners.splice(index, 1); + } + if (listeners.length > 0) { + return; + } + arrayEvents.forEach((key) => { + delete array[key]; + }); + delete array._chartjs; +} +function _arrayUnique(items) { + const set = new Set(); + let i, ilen; + for (i = 0, ilen = items.length; i < ilen; ++i) { + set.add(items[i]); + } + if (set.size === ilen) { + return items; + } + return Array.from(set); +} + +function _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) { + if (!defined(fallback)) { + fallback = _resolve('_fallback', scopes); + } + const cache = { + [Symbol.toStringTag]: 'Object', + _cacheable: true, + _scopes: scopes, + _rootScopes: rootScopes, + _fallback: fallback, + _getTarget: getTarget, + override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback), + }; + return new Proxy(cache, { + deleteProperty(target, prop) { + delete target[prop]; + delete target._keys; + delete scopes[0][prop]; + return true; + }, + get(target, prop) { + return _cached(target, prop, + () => _resolveWithPrefixes(prop, prefixes, scopes, target)); + }, + getOwnPropertyDescriptor(target, prop) { + return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop); + }, + getPrototypeOf() { + return Reflect.getPrototypeOf(scopes[0]); + }, + has(target, prop) { + return getKeysFromAllScopes(target).includes(prop); + }, + ownKeys(target) { + return getKeysFromAllScopes(target); + }, + set(target, prop, value) { + const storage = target._storage || (target._storage = getTarget()); + target[prop] = storage[prop] = value; + delete target._keys; + return true; + } + }); +} +function _attachContext(proxy, context, subProxy, descriptorDefaults) { + const cache = { + _cacheable: false, + _proxy: proxy, + _context: context, + _subProxy: subProxy, + _stack: new Set(), + _descriptors: _descriptors(proxy, descriptorDefaults), + setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults), + override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults) + }; + return new Proxy(cache, { + deleteProperty(target, prop) { + delete target[prop]; + delete proxy[prop]; + return true; + }, + get(target, prop, receiver) { + return _cached(target, prop, + () => _resolveWithContext(target, prop, receiver)); + }, + getOwnPropertyDescriptor(target, prop) { + return target._descriptors.allKeys + ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined + : Reflect.getOwnPropertyDescriptor(proxy, prop); + }, + getPrototypeOf() { + return Reflect.getPrototypeOf(proxy); + }, + has(target, prop) { + return Reflect.has(proxy, prop); + }, + ownKeys() { + return Reflect.ownKeys(proxy); + }, + set(target, prop, value) { + proxy[prop] = value; + delete target[prop]; + return true; + } + }); +} +function _descriptors(proxy, defaults = {scriptable: true, indexable: true}) { + const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy; + return { + allKeys: _allKeys, + scriptable: _scriptable, + indexable: _indexable, + isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable, + isIndexable: isFunction(_indexable) ? _indexable : () => _indexable + }; +} +const readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name; +const needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' && + (Object.getPrototypeOf(value) === null || value.constructor === Object); +function _cached(target, prop, resolve) { + if (Object.prototype.hasOwnProperty.call(target, prop)) { + return target[prop]; + } + const value = resolve(); + target[prop] = value; + return value; +} +function _resolveWithContext(target, prop, receiver) { + const {_proxy, _context, _subProxy, _descriptors: descriptors} = target; + let value = _proxy[prop]; + if (isFunction(value) && descriptors.isScriptable(prop)) { + value = _resolveScriptable(prop, value, target, receiver); + } + if (isArray(value) && value.length) { + value = _resolveArray(prop, value, target, descriptors.isIndexable); + } + if (needsSubResolver(prop, value)) { + value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors); + } + return value; +} +function _resolveScriptable(prop, value, target, receiver) { + const {_proxy, _context, _subProxy, _stack} = target; + if (_stack.has(prop)) { + throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop); + } + _stack.add(prop); + value = value(_context, _subProxy || receiver); + _stack.delete(prop); + if (needsSubResolver(prop, value)) { + value = createSubResolver(_proxy._scopes, _proxy, prop, value); + } + return value; +} +function _resolveArray(prop, value, target, isIndexable) { + const {_proxy, _context, _subProxy, _descriptors: descriptors} = target; + if (defined(_context.index) && isIndexable(prop)) { + value = value[_context.index % value.length]; + } else if (isObject(value[0])) { + const arr = value; + const scopes = _proxy._scopes.filter(s => s !== arr); + value = []; + for (const item of arr) { + const resolver = createSubResolver(scopes, _proxy, prop, item); + value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors)); + } + } + return value; +} +function resolveFallback(fallback, prop, value) { + return isFunction(fallback) ? fallback(prop, value) : fallback; +} +const getScope = (key, parent) => key === true ? parent + : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined; +function addScopes(set, parentScopes, key, parentFallback, value) { + for (const parent of parentScopes) { + const scope = getScope(key, parent); + if (scope) { + set.add(scope); + const fallback = resolveFallback(scope._fallback, key, value); + if (defined(fallback) && fallback !== key && fallback !== parentFallback) { + return fallback; + } + } else if (scope === false && defined(parentFallback) && key !== parentFallback) { + return null; + } + } + return false; +} +function createSubResolver(parentScopes, resolver, prop, value) { + const rootScopes = resolver._rootScopes; + const fallback = resolveFallback(resolver._fallback, prop, value); + const allScopes = [...parentScopes, ...rootScopes]; + const set = new Set(); + set.add(value); + let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value); + if (key === null) { + return false; + } + if (defined(fallback) && fallback !== prop) { + key = addScopesFromKey(set, allScopes, fallback, key, value); + if (key === null) { + return false; + } + } + return _createResolver(Array.from(set), [''], rootScopes, fallback, + () => subGetTarget(resolver, prop, value)); +} +function addScopesFromKey(set, allScopes, key, fallback, item) { + while (key) { + key = addScopes(set, allScopes, key, fallback, item); + } + return key; +} +function subGetTarget(resolver, prop, value) { + const parent = resolver._getTarget(); + if (!(prop in parent)) { + parent[prop] = {}; + } + const target = parent[prop]; + if (isArray(target) && isObject(value)) { + return value; + } + return target; +} +function _resolveWithPrefixes(prop, prefixes, scopes, proxy) { + let value; + for (const prefix of prefixes) { + value = _resolve(readKey(prefix, prop), scopes); + if (defined(value)) { + return needsSubResolver(prop, value) + ? createSubResolver(scopes, proxy, prop, value) + : value; + } + } +} +function _resolve(key, scopes) { + for (const scope of scopes) { + if (!scope) { + continue; + } + const value = scope[key]; + if (defined(value)) { + return value; + } + } +} +function getKeysFromAllScopes(target) { + let keys = target._keys; + if (!keys) { + keys = target._keys = resolveKeysFromAllScopes(target._scopes); + } + return keys; +} +function resolveKeysFromAllScopes(scopes) { + const set = new Set(); + for (const scope of scopes) { + for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) { + set.add(key); + } + } + return Array.from(set); +} + +const EPSILON = Number.EPSILON || 1e-14; +const getPoint = (points, i) => i < points.length && !points[i].skip && points[i]; +const getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x'; +function splineCurve(firstPoint, middlePoint, afterPoint, t) { + const previous = firstPoint.skip ? middlePoint : firstPoint; + const current = middlePoint; + const next = afterPoint.skip ? middlePoint : afterPoint; + const d01 = distanceBetweenPoints(current, previous); + const d12 = distanceBetweenPoints(next, current); + let s01 = d01 / (d01 + d12); + let s12 = d12 / (d01 + d12); + s01 = isNaN(s01) ? 0 : s01; + s12 = isNaN(s12) ? 0 : s12; + const fa = t * s01; + const fb = t * s12; + return { + previous: { + x: current.x - fa * (next.x - previous.x), + y: current.y - fa * (next.y - previous.y) + }, + next: { + x: current.x + fb * (next.x - previous.x), + y: current.y + fb * (next.y - previous.y) + } + }; +} +function monotoneAdjust(points, deltaK, mK) { + const pointsLen = points.length; + let alphaK, betaK, tauK, squaredMagnitude, pointCurrent; + let pointAfter = getPoint(points, 0); + for (let i = 0; i < pointsLen - 1; ++i) { + pointCurrent = pointAfter; + pointAfter = getPoint(points, i + 1); + if (!pointCurrent || !pointAfter) { + continue; + } + if (almostEquals(deltaK[i], 0, EPSILON)) { + mK[i] = mK[i + 1] = 0; + continue; + } + alphaK = mK[i] / deltaK[i]; + betaK = mK[i + 1] / deltaK[i]; + squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); + if (squaredMagnitude <= 9) { + continue; + } + tauK = 3 / Math.sqrt(squaredMagnitude); + mK[i] = alphaK * tauK * deltaK[i]; + mK[i + 1] = betaK * tauK * deltaK[i]; + } +} +function monotoneCompute(points, mK, indexAxis = 'x') { + const valueAxis = getValueAxis(indexAxis); + const pointsLen = points.length; + let delta, pointBefore, pointCurrent; + let pointAfter = getPoint(points, 0); + for (let i = 0; i < pointsLen; ++i) { + pointBefore = pointCurrent; + pointCurrent = pointAfter; + pointAfter = getPoint(points, i + 1); + if (!pointCurrent) { + continue; + } + const iPixel = pointCurrent[indexAxis]; + const vPixel = pointCurrent[valueAxis]; + if (pointBefore) { + delta = (iPixel - pointBefore[indexAxis]) / 3; + pointCurrent[`cp1${indexAxis}`] = iPixel - delta; + pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i]; + } + if (pointAfter) { + delta = (pointAfter[indexAxis] - iPixel) / 3; + pointCurrent[`cp2${indexAxis}`] = iPixel + delta; + pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i]; + } + } +} +function splineCurveMonotone(points, indexAxis = 'x') { + const valueAxis = getValueAxis(indexAxis); + const pointsLen = points.length; + const deltaK = Array(pointsLen).fill(0); + const mK = Array(pointsLen); + let i, pointBefore, pointCurrent; + let pointAfter = getPoint(points, 0); + for (i = 0; i < pointsLen; ++i) { + pointBefore = pointCurrent; + pointCurrent = pointAfter; + pointAfter = getPoint(points, i + 1); + if (!pointCurrent) { + continue; + } + if (pointAfter) { + const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis]; + deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0; + } + mK[i] = !pointBefore ? deltaK[i] + : !pointAfter ? deltaK[i - 1] + : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0 + : (deltaK[i - 1] + deltaK[i]) / 2; + } + monotoneAdjust(points, deltaK, mK); + monotoneCompute(points, mK, indexAxis); +} +function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); +} +function capBezierPoints(points, area) { + let i, ilen, point, inArea, inAreaPrev; + let inAreaNext = _isPointInArea(points[0], area); + for (i = 0, ilen = points.length; i < ilen; ++i) { + inAreaPrev = inArea; + inArea = inAreaNext; + inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area); + if (!inArea) { + continue; + } + point = points[i]; + if (inAreaPrev) { + point.cp1x = capControlPoint(point.cp1x, area.left, area.right); + point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom); + } + if (inAreaNext) { + point.cp2x = capControlPoint(point.cp2x, area.left, area.right); + point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom); + } + } +} +function _updateBezierControlPoints(points, options, area, loop, indexAxis) { + let i, ilen, point, controlPoints; + if (options.spanGaps) { + points = points.filter((pt) => !pt.skip); + } + if (options.cubicInterpolationMode === 'monotone') { + splineCurveMonotone(points, indexAxis); + } else { + let prev = loop ? points[points.length - 1] : points[0]; + for (i = 0, ilen = points.length; i < ilen; ++i) { + point = points[i]; + controlPoints = splineCurve( + prev, + point, + points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], + options.tension + ); + point.cp1x = controlPoints.previous.x; + point.cp1y = controlPoints.previous.y; + point.cp2x = controlPoints.next.x; + point.cp2y = controlPoints.next.y; + prev = point; + } + } + if (options.capBezierPoints) { + capBezierPoints(points, area); + } +} + +function _isDomSupported() { + return typeof window !== 'undefined' && typeof document !== 'undefined'; +} +function _getParentNode(domNode) { + let parent = domNode.parentNode; + if (parent && parent.toString() === '[object ShadowRoot]') { + parent = parent.host; + } + return parent; +} +function parseMaxStyle(styleValue, node, parentProperty) { + let valueInPixels; + if (typeof styleValue === 'string') { + valueInPixels = parseInt(styleValue, 10); + if (styleValue.indexOf('%') !== -1) { + valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; + } + } else { + valueInPixels = styleValue; + } + return valueInPixels; +} +const getComputedStyle = (element) => window.getComputedStyle(element, null); +function getStyle(el, property) { + return getComputedStyle(el).getPropertyValue(property); +} +const positions = ['top', 'right', 'bottom', 'left']; +function getPositionedStyle(styles, style, suffix) { + const result = {}; + suffix = suffix ? '-' + suffix : ''; + for (let i = 0; i < 4; i++) { + const pos = positions[i]; + result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0; + } + result.width = result.left + result.right; + result.height = result.top + result.bottom; + return result; +} +const useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot); +function getCanvasPosition(evt, canvas) { + const e = evt.native || evt; + const touches = e.touches; + const source = touches && touches.length ? touches[0] : e; + const {offsetX, offsetY} = source; + let box = false; + let x, y; + if (useOffsetPos(offsetX, offsetY, e.target)) { + x = offsetX; + y = offsetY; + } else { + const rect = canvas.getBoundingClientRect(); + x = source.clientX - rect.left; + y = source.clientY - rect.top; + box = true; + } + return {x, y, box}; +} +function getRelativePosition(evt, chart) { + const {canvas, currentDevicePixelRatio} = chart; + const style = getComputedStyle(canvas); + const borderBox = style.boxSizing === 'border-box'; + const paddings = getPositionedStyle(style, 'padding'); + const borders = getPositionedStyle(style, 'border', 'width'); + const {x, y, box} = getCanvasPosition(evt, canvas); + const xOffset = paddings.left + (box && borders.left); + const yOffset = paddings.top + (box && borders.top); + let {width, height} = chart; + if (borderBox) { + width -= paddings.width + borders.width; + height -= paddings.height + borders.height; + } + return { + x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio), + y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio) + }; +} +function getContainerSize(canvas, width, height) { + let maxWidth, maxHeight; + if (width === undefined || height === undefined) { + const container = _getParentNode(canvas); + if (!container) { + width = canvas.clientWidth; + height = canvas.clientHeight; + } else { + const rect = container.getBoundingClientRect(); + const containerStyle = getComputedStyle(container); + const containerBorder = getPositionedStyle(containerStyle, 'border', 'width'); + const containerPadding = getPositionedStyle(containerStyle, 'padding'); + width = rect.width - containerPadding.width - containerBorder.width; + height = rect.height - containerPadding.height - containerBorder.height; + maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth'); + maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight'); + } + } + return { + width, + height, + maxWidth: maxWidth || INFINITY, + maxHeight: maxHeight || INFINITY + }; +} +const round1 = v => Math.round(v * 10) / 10; +function getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) { + const style = getComputedStyle(canvas); + const margins = getPositionedStyle(style, 'margin'); + const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY; + const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY; + const containerSize = getContainerSize(canvas, bbWidth, bbHeight); + let {width, height} = containerSize; + if (style.boxSizing === 'content-box') { + const borders = getPositionedStyle(style, 'border', 'width'); + const paddings = getPositionedStyle(style, 'padding'); + width -= paddings.width + borders.width; + height -= paddings.height + borders.height; + } + width = Math.max(0, width - margins.width); + height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height); + width = round1(Math.min(width, maxWidth, containerSize.maxWidth)); + height = round1(Math.min(height, maxHeight, containerSize.maxHeight)); + if (width && !height) { + height = round1(width / 2); + } + return { + width, + height + }; +} +function retinaScale(chart, forceRatio, forceStyle) { + const pixelRatio = forceRatio || 1; + const deviceHeight = Math.floor(chart.height * pixelRatio); + const deviceWidth = Math.floor(chart.width * pixelRatio); + chart.height = deviceHeight / pixelRatio; + chart.width = deviceWidth / pixelRatio; + const canvas = chart.canvas; + if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) { + canvas.style.height = `${chart.height}px`; + canvas.style.width = `${chart.width}px`; + } + if (chart.currentDevicePixelRatio !== pixelRatio + || canvas.height !== deviceHeight + || canvas.width !== deviceWidth) { + chart.currentDevicePixelRatio = pixelRatio; + canvas.height = deviceHeight; + canvas.width = deviceWidth; + chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0); + return true; + } + return false; +} +const supportsEventListenerOptions = (function() { + let passiveSupported = false; + try { + const options = { + get passive() { + passiveSupported = true; + return false; + } + }; + window.addEventListener('test', null, options); + window.removeEventListener('test', null, options); + } catch (e) { + } + return passiveSupported; +}()); +function readUsedSize(element, property) { + const value = getStyle(element, property); + const matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? +matches[1] : undefined; +} + +function _pointInLine(p1, p2, t, mode) { + return { + x: p1.x + t * (p2.x - p1.x), + y: p1.y + t * (p2.y - p1.y) + }; +} +function _steppedInterpolation(p1, p2, t, mode) { + return { + x: p1.x + t * (p2.x - p1.x), + y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y + : mode === 'after' ? t < 1 ? p1.y : p2.y + : t > 0 ? p2.y : p1.y + }; +} +function _bezierInterpolation(p1, p2, t, mode) { + const cp1 = {x: p1.cp2x, y: p1.cp2y}; + const cp2 = {x: p2.cp1x, y: p2.cp1y}; + const a = _pointInLine(p1, cp1, t); + const b = _pointInLine(cp1, cp2, t); + const c = _pointInLine(cp2, p2, t); + const d = _pointInLine(a, b, t); + const e = _pointInLine(b, c, t); + return _pointInLine(d, e, t); +} + +const intlCache = new Map(); +function getNumberFormat(locale, options) { + options = options || {}; + const cacheKey = locale + JSON.stringify(options); + let formatter = intlCache.get(cacheKey); + if (!formatter) { + formatter = new Intl.NumberFormat(locale, options); + intlCache.set(cacheKey, formatter); + } + return formatter; +} +function formatNumber(num, locale, options) { + return getNumberFormat(locale, options).format(num); +} + +const getRightToLeftAdapter = function(rectX, width) { + return { + x(x) { + return rectX + rectX + width - x; + }, + setWidth(w) { + width = w; + }, + textAlign(align) { + if (align === 'center') { + return align; + } + return align === 'right' ? 'left' : 'right'; + }, + xPlus(x, value) { + return x - value; + }, + leftForLtr(x, itemWidth) { + return x - itemWidth; + }, + }; +}; +const getLeftToRightAdapter = function() { + return { + x(x) { + return x; + }, + setWidth(w) { + }, + textAlign(align) { + return align; + }, + xPlus(x, value) { + return x + value; + }, + leftForLtr(x, _itemWidth) { + return x; + }, + }; +}; +function getRtlAdapter(rtl, rectX, width) { + return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter(); +} +function overrideTextDirection(ctx, direction) { + let style, original; + if (direction === 'ltr' || direction === 'rtl') { + style = ctx.canvas.style; + original = [ + style.getPropertyValue('direction'), + style.getPropertyPriority('direction'), + ]; + style.setProperty('direction', direction, 'important'); + ctx.prevTextDirection = original; + } +} +function restoreTextDirection(ctx, original) { + if (original !== undefined) { + delete ctx.prevTextDirection; + ctx.canvas.style.setProperty('direction', original[0], original[1]); + } +} + +function propertyFn(property) { + if (property === 'angle') { + return { + between: _angleBetween, + compare: _angleDiff, + normalize: _normalizeAngle, + }; + } + return { + between: _isBetween, + compare: (a, b) => a - b, + normalize: x => x + }; +} +function normalizeSegment({start, end, count, loop, style}) { + return { + start: start % count, + end: end % count, + loop: loop && (end - start + 1) % count === 0, + style + }; +} +function getSegment(segment, points, bounds) { + const {property, start: startBound, end: endBound} = bounds; + const {between, normalize} = propertyFn(property); + const count = points.length; + let {start, end, loop} = segment; + let i, ilen; + if (loop) { + start += count; + end += count; + for (i = 0, ilen = count; i < ilen; ++i) { + if (!between(normalize(points[start % count][property]), startBound, endBound)) { + break; + } + start--; + end--; + } + start %= count; + end %= count; + } + if (end < start) { + end += count; + } + return {start, end, loop, style: segment.style}; +} +function _boundSegment(segment, points, bounds) { + if (!bounds) { + return [segment]; + } + const {property, start: startBound, end: endBound} = bounds; + const count = points.length; + const {compare, between, normalize} = propertyFn(property); + const {start, end, loop, style} = getSegment(segment, points, bounds); + const result = []; + let inside = false; + let subStart = null; + let value, point, prevValue; + const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0; + const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value); + const shouldStart = () => inside || startIsBefore(); + const shouldStop = () => !inside || endIsBefore(); + for (let i = start, prev = start; i <= end; ++i) { + point = points[i % count]; + if (point.skip) { + continue; + } + value = normalize(point[property]); + if (value === prevValue) { + continue; + } + inside = between(value, startBound, endBound); + if (subStart === null && shouldStart()) { + subStart = compare(value, startBound) === 0 ? i : prev; + } + if (subStart !== null && shouldStop()) { + result.push(normalizeSegment({start: subStart, end: i, loop, count, style})); + subStart = null; + } + prev = i; + prevValue = value; + } + if (subStart !== null) { + result.push(normalizeSegment({start: subStart, end, loop, count, style})); + } + return result; +} +function _boundSegments(line, bounds) { + const result = []; + const segments = line.segments; + for (let i = 0; i < segments.length; i++) { + const sub = _boundSegment(segments[i], line.points, bounds); + if (sub.length) { + result.push(...sub); + } + } + return result; +} +function findStartAndEnd(points, count, loop, spanGaps) { + let start = 0; + let end = count - 1; + if (loop && !spanGaps) { + while (start < count && !points[start].skip) { + start++; + } + } + while (start < count && points[start].skip) { + start++; + } + start %= count; + if (loop) { + end += start; + } + while (end > start && points[end % count].skip) { + end--; + } + end %= count; + return {start, end}; +} +function solidSegments(points, start, max, loop) { + const count = points.length; + const result = []; + let last = start; + let prev = points[start]; + let end; + for (end = start + 1; end <= max; ++end) { + const cur = points[end % count]; + if (cur.skip || cur.stop) { + if (!prev.skip) { + loop = false; + result.push({start: start % count, end: (end - 1) % count, loop}); + start = last = cur.stop ? end : null; + } + } else { + last = end; + if (prev.skip) { + start = end; + } + } + prev = cur; + } + if (last !== null) { + result.push({start: start % count, end: last % count, loop}); + } + return result; +} +function _computeSegments(line, segmentOptions) { + const points = line.points; + const spanGaps = line.options.spanGaps; + const count = points.length; + if (!count) { + return []; + } + const loop = !!line._loop; + const {start, end} = findStartAndEnd(points, count, loop, spanGaps); + if (spanGaps === true) { + return splitByStyles(line, [{start, end, loop}], points, segmentOptions); + } + const max = end < start ? end + count : end; + const completeLoop = !!line._fullLoop && start === 0 && end === count - 1; + return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions); +} +function splitByStyles(line, segments, points, segmentOptions) { + if (!segmentOptions || !segmentOptions.setContext || !points) { + return segments; + } + return doSplitByStyles(line, segments, points, segmentOptions); +} +function doSplitByStyles(line, segments, points, segmentOptions) { + const chartContext = line._chart.getContext(); + const baseStyle = readStyle(line.options); + const {_datasetIndex: datasetIndex, options: {spanGaps}} = line; + const count = points.length; + const result = []; + let prevStyle = baseStyle; + let start = segments[0].start; + let i = start; + function addStyle(s, e, l, st) { + const dir = spanGaps ? -1 : 1; + if (s === e) { + return; + } + s += count; + while (points[s % count].skip) { + s -= dir; + } + while (points[e % count].skip) { + e += dir; + } + if (s % count !== e % count) { + result.push({start: s % count, end: e % count, loop: l, style: st}); + prevStyle = st; + start = e % count; + } + } + for (const segment of segments) { + start = spanGaps ? start : segment.start; + let prev = points[start % count]; + let style; + for (i = start + 1; i <= segment.end; i++) { + const pt = points[i % count]; + style = readStyle(segmentOptions.setContext(createContext(chartContext, { + type: 'segment', + p0: prev, + p1: pt, + p0DataIndex: (i - 1) % count, + p1DataIndex: i % count, + datasetIndex + }))); + if (styleChanged(style, prevStyle)) { + addStyle(start, i - 1, segment.loop, prevStyle); + } + prev = pt; + prevStyle = style; + } + if (start < i - 1) { + addStyle(start, i - 1, segment.loop, prevStyle); + } + } + return result; +} +function readStyle(options) { + return { + backgroundColor: options.backgroundColor, + borderCapStyle: options.borderCapStyle, + borderDash: options.borderDash, + borderDashOffset: options.borderDashOffset, + borderJoinStyle: options.borderJoinStyle, + borderWidth: options.borderWidth, + borderColor: options.borderColor + }; +} +function styleChanged(style, prevStyle) { + return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle); +} + + + + +/***/ }), + +/***/ "./node_modules/core-js/internals/a-callable.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/a-callable.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); + +var TypeError = global.TypeError; + +// `Assert: IsCallable(argument) is true` +module.exports = function (argument) { + if (isCallable(argument)) return argument; + throw TypeError(tryToString(argument) + ' is not a function'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/a-possible-prototype.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/a-possible-prototype.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +var String = global.String; +var TypeError = global.TypeError; + +module.exports = function (argument) { + if (typeof argument == 'object' || isCallable(argument)) return argument; + throw TypeError("Can't set " + String(argument) + ' as a prototype'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/add-to-unscopables.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/add-to-unscopables.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); + +var UNSCOPABLES = wellKnownSymbol('unscopables'); +var ArrayPrototype = Array.prototype; + +// Array.prototype[@@unscopables] +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +if (ArrayPrototype[UNSCOPABLES] == undefined) { + definePropertyModule.f(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create(null) + }); +} + +// add a key to Array.prototype[@@unscopables] +module.exports = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/advance-string-index.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/advance-string-index.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt); + +// `AdvanceStringIndex` abstract operation +// https://tc39.es/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/an-instance.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/an-instance.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); + +var TypeError = global.TypeError; + +module.exports = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) return it; + throw TypeError('Incorrect invocation'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/an-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/an-object.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var String = global.String; +var TypeError = global.TypeError; + +// `Assert: Type(argument) is Object` +module.exports = function (argument) { + if (isObject(argument)) return argument; + throw TypeError(String(argument) + ' is not an object'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-buffer-non-extensible.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/array-buffer-non-extensible.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = fails(function () { + if (typeof ArrayBuffer == 'function') { + var buffer = new ArrayBuffer(8); + // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe + if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 }); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-for-each.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/array-for-each.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); + +var STRICT_METHOD = arrayMethodIsStrict('forEach'); + +// `Array.prototype.forEach` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.foreach +module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); +// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe +} : [].forEach; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-includes.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/array-includes.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); + +// `Array.prototype.{ indexOf, includes }` methods implementation +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +module.exports = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-iteration.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/array-iteration.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); + +var push = uncurryThis([].push); + +// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation +var createMethod = function (TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var IS_FILTER_REJECT = TYPE == 7; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = IndexedObject(O); + var boundFunction = bind(callbackfn, that); + var length = lengthOfArrayLike(self); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push(target, value); // filterReject + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +module.exports = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: createMethod(7) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-method-has-species-support.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js/internals/array-method-has-species-support.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js/internals/engine-v8-version.js"); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-method-is-strict.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/array-method-is-strict.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call -- required for testing + method.call(null, argument || function () { return 1; }, 1); + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-reduce.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/array-reduce.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); + +var TypeError = global.TypeError; + +// `Array.prototype.{ reduce, reduceRight }` methods implementation +var createMethod = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + aCallable(callbackfn); + var O = toObject(that); + var self = IndexedObject(O); + var length = lengthOfArrayLike(O); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; +}; + +module.exports = { + // `Array.prototype.reduce` method + // https://tc39.es/ecma262/#sec-array.prototype.reduce + left: createMethod(false), + // `Array.prototype.reduceRight` method + // https://tc39.es/ecma262/#sec-array.prototype.reduceright + right: createMethod(true) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-slice-simple.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/array-slice-simple.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); + +var Array = global.Array; +var max = Math.max; + +module.exports = function (O, start, end) { + var length = lengthOfArrayLike(O); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + var result = Array(max(fin - k, 0)); + for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]); + result.length = n; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-species-constructor.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/array-species-constructor.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); +var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var SPECIES = wellKnownSymbol('species'); +var Array = global.Array; + +// a part of `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? Array : C; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-species-create.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/array-species-create.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ "./node_modules/core-js/internals/array-species-constructor.js"); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof-raw.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/classof-raw.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +var toString = uncurryThis({}.toString); +var stringSlice = uncurryThis(''.slice); + +module.exports = function (it) { + return stringSlice(toString(it), 8, -1); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/classof.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var Object = global.Object; + +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/collection-weak.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/collection-weak.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ "./node_modules/core-js/internals/define-built-ins.js"); +var getWeakData = (__webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").getWeakData); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); +var ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + +var setInternalState = InternalStateModule.set; +var internalStateGetterFor = InternalStateModule.getterFor; +var find = ArrayIterationModule.find; +var findIndex = ArrayIterationModule.findIndex; +var splice = uncurryThis([].splice); +var id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function (store) { + return store.frozen || (store.frozen = new UncaughtFrozenStore()); +}; + +var UncaughtFrozenStore = function () { + this.entries = []; +}; + +var findUncaughtFrozen = function (store, key) { + return find(store.entries, function (it) { + return it[0] === key; + }); +}; + +UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.entries.push([key, value]); + }, + 'delete': function (key) { + var index = findIndex(this.entries, function (it) { + return it[0] === key; + }); + if (~index) splice(this.entries, index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance(that, Prototype); + setInternalState(that, { + type: CONSTRUCTOR_NAME, + id: id++, + frozen: undefined + }); + if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + }); + + var Prototype = Constructor.prototype; + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var data = getWeakData(anObject(key), true); + if (data === true) uncaughtFrozenStore(state).set(key, value); + else data[state.id] = value; + return that; + }; + + defineBuiltIns(Prototype, { + // `{ WeakMap, WeakSet }.prototype.delete(key)` methods + // https://tc39.es/ecma262/#sec-weakmap.prototype.delete + // https://tc39.es/ecma262/#sec-weakset.prototype.delete + 'delete': function (key) { + var state = getInternalState(this); + if (!isObject(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state)['delete'](key); + return data && hasOwn(data, state.id) && delete data[state.id]; + }, + // `{ WeakMap, WeakSet }.prototype.has(key)` methods + // https://tc39.es/ecma262/#sec-weakmap.prototype.has + // https://tc39.es/ecma262/#sec-weakset.prototype.has + has: function has(key) { + var state = getInternalState(this); + if (!isObject(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).has(key); + return data && hasOwn(data, state.id); + } + }); + + defineBuiltIns(Prototype, IS_MAP ? { + // `WeakMap.prototype.get(key)` method + // https://tc39.es/ecma262/#sec-weakmap.prototype.get + get: function get(key) { + var state = getInternalState(this); + if (isObject(key)) { + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).get(key); + return data ? data[state.id] : undefined; + } + }, + // `WeakMap.prototype.set(key, value)` method + // https://tc39.es/ecma262/#sec-weakmap.prototype.set + set: function set(key, value) { + return define(this, key, value); + } + } : { + // `WeakSet.prototype.add(value)` method + // https://tc39.es/ecma262/#sec-weakset.prototype.add + add: function add(value) { + return define(this, value, true); + } + }); + + return Constructor; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/collection.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/collection.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); + +module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + + var fixMethod = function (KEY) { + var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]); + defineBuiltIn(NativePrototype, KEY, + KEY == 'add' ? function add(value) { + uncurriedNativeMethod(this, value === 0 ? 0 : value); + return this; + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : function set(key, value) { + uncurriedNativeMethod(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + var REPLACE = isForced( + CONSTRUCTOR_NAME, + !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + })) + ); + + if (REPLACE) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule.enable(); + } else if (isForced(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + // eslint-disable-next-line no-new -- required for testing + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, NativePrototype); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; + } + + exported[CONSTRUCTOR_NAME] = Constructor; + $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported); + + setToStringTag(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + + return Constructor; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/copy-constructor-properties.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); + +module.exports = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/correct-prototype-getter.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-iterator-constructor.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-non-enumerable-property.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property-descriptor.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! + \**********************************************************************/ +/***/ ((module) => { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/create-property.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = function (object, key, value) { + var propertyKey = toPropertyKey(key); + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-built-in.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/define-built-in.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "./node_modules/core-js/internals/make-built-in.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); + +module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + var name = options && options.name !== undefined ? options.name : key; + if (isCallable(value)) makeBuiltIn(value, name, options); + if (O === global) { + if (simple) O[key] = value; + else setGlobal(key, value); + return O; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) O[key] = value; + else createNonEnumerableProperty(O, key, value); + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-built-ins.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/define-built-ins.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); + +module.exports = function (target, src, options) { + for (var key in src) defineBuiltIn(target, key, src[key], options); + return target; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-iterator.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/define-iterator.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var FunctionName = __webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js"); + +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + + return methods; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/descriptors.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/descriptors.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// Detect IE8's incomplete defineProperty implementation +module.exports = !fails(function () { + // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/document-create-element.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/document-create-element.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var EXISTS = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/dom-iterables.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/dom-iterables.js ***! + \*********************************************************/ +/***/ ((module) => { + +// iterable DOM collections +// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods +module.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/dom-token-list-prototype.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/dom-token-list-prototype.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` +var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); + +var classList = documentCreateElement('span').classList; +var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype; + +module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/engine-is-node.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/engine-is-node.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +module.exports = classof(global.process) == 'process'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/engine-user-agent.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/engine-user-agent.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); + +module.exports = getBuiltIn('navigator', 'userAgent') || ''; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/engine-v8-version.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/engine-v8-version.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js/internals/engine-user-agent.js"); + +var process = global.process; +var Deno = global.Deno; +var versions = process && process.versions || Deno && Deno.version; +var v8 = versions && versions.v8; +var match, version; + +if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); +} + +// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` +// so check `userAgent` even if `.v8` exists, but 0 +if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } +} + +module.exports = version; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/enum-bug-keys.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! + \*********************************************************/ +/***/ ((module) => { + +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/export.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/export.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); +var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + defineBuiltIn(target, key, sourceProperty, options); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/fails.js": +/*!*************************************************!*\ + !*** ./node_modules/core-js/internals/fails.js ***! + \*************************************************/ +/***/ ((module) => { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***! + \******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +// TODO: Remove from `core-js@4` since it's moved to entry points +__webpack_require__(/*! ../modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); + +var SPECIES = wellKnownSymbol('species'); +var RegExpPrototype = RegExp.prototype; + +module.exports = function (KEY, exec, FORCED, SHAM) { + var SYMBOL = wellKnownSymbol(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { execCalled = true; return null; }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + FORCED + ) { + var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]); + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + var uncurriedNativeMethod = uncurryThis(nativeMethod); + var $exec = regexp.exec; + if ($exec === regexpExec || $exec === RegExpPrototype.exec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) }; + } + return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) }; + } + return { done: false }; + }); + + defineBuiltIn(String.prototype, KEY, methods[0]); + defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); + } + + if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/freezing.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/freezing.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !fails(function () { + // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing + return Object.isExtensible(Object.preventExtensions({})); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-apply.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/function-apply.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var FunctionPrototype = Function.prototype; +var apply = FunctionPrototype.apply; +var call = FunctionPrototype.call; + +// eslint-disable-next-line es-x/no-reflect -- safe +module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { + return call.apply(apply, arguments); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-bind-context.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/function-bind-context.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var bind = uncurryThis(uncurryThis.bind); + +// optional / simple context binding +module.exports = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-bind-native.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/function-bind-native.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !fails(function () { + // eslint-disable-next-line es-x/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-call.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/function-call.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var call = Function.prototype.call; + +module.exports = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-name.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/function-name.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); + +var FunctionPrototype = Function.prototype; +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; + +var EXISTS = hasOwn(FunctionPrototype, 'name'); +// additional protection from minified / mangled / dropped function names +var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; +var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); + +module.exports = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-uncurry-this.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/function-uncurry-this.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var FunctionPrototype = Function.prototype; +var bind = FunctionPrototype.bind; +var call = FunctionPrototype.call; +var uncurryThis = NATIVE_BIND && bind.bind(call, call); + +module.exports = NATIVE_BIND ? function (fn) { + return fn && uncurryThis(fn); +} : function (fn) { + return fn && function () { + return call.apply(fn, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-built-in.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/get-built-in.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +var aFunction = function (argument) { + return isCallable(argument) ? argument : undefined; +}; + +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-iterator-method.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/get-iterator-method.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (it != undefined) return getMethod(it, ITERATOR) + || getMethod(it, '@@iterator') + || Iterators[classof(it)]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-iterator.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/get-iterator.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); + +var TypeError = global.TypeError; + +module.exports = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); + throw TypeError(tryToString(argument) + ' is not iterable'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-method.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/get-method.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); + +// `GetMethod` abstract operation +// https://tc39.es/ecma262/#sec-getmethod +module.exports = function (V, P) { + var func = V[P]; + return func == null ? undefined : aCallable(func); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-substitution.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/get-substitution.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); + +var floor = Math.floor; +var charAt = uncurryThis(''.charAt); +var replace = uncurryThis(''.replace); +var stringSlice = uncurryThis(''.slice); +var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; + +// `GetSubstitution` abstract operation +// https://tc39.es/ecma262/#sec-getsubstitution +module.exports = function (matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return replace(replacement, symbols, function (match, ch) { + var capture; + switch (charAt(ch, 0)) { + case '$': return '$'; + case '&': return matched; + case '`': return stringSlice(str, 0, position); + case "'": return stringSlice(str, tailPos); + case '<': + capture = namedCaptures[stringSlice(ch, 1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/global.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/global.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var check = function (it) { + return it && it.Math == Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line es-x/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/has-own-property.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/has-own-property.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); + +var hasOwnProperty = uncurryThis({}.hasOwnProperty); + +// `HasOwnProperty` abstract operation +// https://tc39.es/ecma262/#sec-hasownproperty +// eslint-disable-next-line es-x/no-object-hasown -- safe +module.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/hidden-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/hidden-keys.js ***! + \*******************************************************/ +/***/ ((module) => { + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/html.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/html.js ***! + \************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); + +module.exports = getBuiltIn('document', 'documentElement'); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/ie8-dom-define.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); + +// Thanks to IE8 for its funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/indexed-object.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/indexed-object.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + +var Object = global.Object; +var split = uncurryThis(''.split); + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split(it, '') : Object(it); +} : Object; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/inherit-if-required.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/inherit-if-required.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); + +// makes subclassing work correct for wrapped built-ins +module.exports = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + isCallable(NewTarget = dummy.constructor) && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf($this, NewTargetPrototype); + return $this; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/inspect-source.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/inspect-source.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); + +var functionToString = uncurryThis(Function.toString); + +// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper +if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; +} + +module.exports = store.inspectSource; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/internal-metadata.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/internal-metadata.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); +var getOwnPropertyNamesExternalModule = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ "./node_modules/core-js/internals/object-get-own-property-names-external.js"); +var isExtensible = __webpack_require__(/*! ../internals/object-is-extensible */ "./node_modules/core-js/internals/object-is-extensible.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); +var FREEZING = __webpack_require__(/*! ../internals/freezing */ "./node_modules/core-js/internals/freezing.js"); + +var REQUIRED = false; +var METADATA = uid('meta'); +var id = 0; + +var setMetadata = function (it) { + defineProperty(it, METADATA, { value: { + objectID: 'O' + id++, // object ID + weakData: {} // weak collections IDs + } }); +}; + +var fastKey = function (it, create) { + // return a primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!hasOwn(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; +}; + +var getWeakData = function (it, create) { + if (!hasOwn(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; +}; + +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it); + return it; +}; + +var enable = function () { + meta.enable = function () { /* empty */ }; + REQUIRED = true; + var getOwnPropertyNames = getOwnPropertyNamesModule.f; + var splice = uncurryThis([].splice); + var test = {}; + test[METADATA] = 1; + + // prevent exposing of metadata key + if (getOwnPropertyNames(test).length) { + getOwnPropertyNamesModule.f = function (it) { + var result = getOwnPropertyNames(it); + for (var i = 0, length = result.length; i < length; i++) { + if (result[i] === METADATA) { + splice(result, i, 1); + break; + } + } return result; + }; + + $({ target: 'Object', stat: true, forced: true }, { + getOwnPropertyNames: getOwnPropertyNamesExternalModule.f + }); + } +}; + +var meta = module.exports = { + enable: enable, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze +}; + +hiddenKeys[METADATA] = true; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/internal-state.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/internal-state.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; +var TypeError = global.TypeError; +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + var wmget = uncurryThis(store.get); + var wmhas = uncurryThis(store.has); + var wmset = uncurryThis(store.set); + set = function (it, metadata) { + if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + wmset(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget(store, it) || {}; + }; + has = function (it) { + return wmhas(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-array-iterator-method.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-array.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/is-array.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + +// `IsArray` abstract operation +// https://tc39.es/ecma262/#sec-isarray +// eslint-disable-next-line es-x/no-array-isarray -- safe +module.exports = Array.isArray || function isArray(argument) { + return classof(argument) == 'Array'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-callable.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/is-callable.js ***! + \*******************************************************/ +/***/ ((module) => { + +// `IsCallable` abstract operation +// https://tc39.es/ecma262/#sec-iscallable +module.exports = function (argument) { + return typeof argument == 'function'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-constructor.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/is-constructor.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); + +var noop = function () { /* empty */ }; +var empty = []; +var construct = getBuiltIn('Reflect', 'construct'); +var constructorRegExp = /^\s*(?:class|function)\b/; +var exec = uncurryThis(constructorRegExp.exec); +var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); + +var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) return false; + try { + construct(noop, empty, argument); + return true; + } catch (error) { + return false; + } +}; + +var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } +}; + +isConstructorLegacy.sham = true; + +// `IsConstructor` abstract operation +// https://tc39.es/ecma262/#sec-isconstructor +module.exports = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; +}) ? isConstructorLegacy : isConstructorModern; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-forced.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-forced.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : isCallable(detection) ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-object.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +module.exports = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-pure.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/is-pure.js ***! + \***************************************************/ +/***/ ((module) => { + +module.exports = false; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-symbol.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-symbol.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); + +var Object = global.Object; + +module.exports = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterate.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/iterate.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); +var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var getIterator = __webpack_require__(/*! ../internals/get-iterator */ "./node_modules/core-js/internals/get-iterator.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); +var iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ "./node_modules/core-js/internals/iterator-close.js"); + +var TypeError = global.TypeError; + +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; + +var ResultPrototype = Result.prototype; + +module.exports = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + + next = iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterator-close.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/iterator-close.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); + +module.exports = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject(innerResult); + return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators-core.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/iterators-core.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +// `%IteratorPrototype%` object +// https://tc39.es/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +/* eslint-disable es-x/no-array-prototype-keys -- safe */ +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype[ITERATOR].call(test) !== test; +}); + +if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; +else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); + +// `%IteratorPrototype%[@@iterator]()` method +// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator +if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); +} + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/iterators.js ***! + \*****************************************************/ +/***/ ((module) => { + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/length-of-array-like.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/length-of-array-like.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); + +// `LengthOfArrayLike` abstract operation +// https://tc39.es/ecma262/#sec-lengthofarraylike +module.exports = function (obj) { + return toLength(obj.length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/make-built-in.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/make-built-in.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").CONFIGURABLE); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +// eslint-disable-next-line es-x/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; + +var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { + return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; +}); + +var TEMPLATE = String(String).split('String'); + +var makeBuiltIn = module.exports = function (value, name, options) { + if (String(name).slice(0, 7) === 'Symbol(') { + name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']'; + } + if (options && options.getter) name = 'get ' + name; + if (options && options.setter) name = 'set ' + name; + if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { + defineProperty(value, 'name', { value: name, configurable: true }); + } + if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { + defineProperty(value, 'length', { value: options.arity }); + } + if (options && hasOwn(options, 'constructor') && options.constructor) { + if (DESCRIPTORS) try { + defineProperty(value, 'prototype', { writable: false }); + } catch (error) { /* empty */ } + } else value.prototype = undefined; + var state = enforceInternalState(value); + if (!hasOwn(state, 'source')) { + state.source = TEMPLATE.join(typeof name == 'string' ? name : ''); + } return value; +}; + +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +// eslint-disable-next-line no-extend-native -- required +Function.prototype.toString = makeBuiltIn(function toString() { + return isCallable(this) && getInternalState(this).source || inspectSource(this); +}, 'toString'); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/native-symbol.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/native-symbol.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* eslint-disable es-x/no-symbol -- required for testing */ +var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js/internals/engine-v8-version.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol(); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + return !String(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION && V8_VERSION < 41; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/native-weak-map.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/native-weak-map.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); + +var WeakMap = global.WeakMap; + +module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap)); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/number-parse-int.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/number-parse-int.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var trim = (__webpack_require__(/*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim); +var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); + +var $parseInt = global.parseInt; +var Symbol = global.Symbol; +var ITERATOR = Symbol && Symbol.iterator; +var hex = /^[+-]?0x/i; +var exec = uncurryThis(hex.exec); +var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22 + // MS Edge 18- broken with boxed symbols + || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); })); + +// `parseInt` method +// https://tc39.es/ecma262/#sec-parseint-string-radix +module.exports = FORCED ? function parseInt(string, radix) { + var S = trim(toString(string)); + return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10)); +} : $parseInt; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-assign.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/object-assign.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); + +// eslint-disable-next-line es-x/no-object-assign -- safe +var $assign = Object.assign; +// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing +var defineProperty = Object.defineProperty; +var concat = uncurryThis([].concat); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +module.exports = !$assign || fails(function () { + // should have correct order of operations (Edge bug) + if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { + enumerable: true, + get: function () { + defineProperty(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + // eslint-disable-next-line es-x/no-symbol -- safe + var symbol = Symbol(); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; + } + } return T; +} : $assign; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-create.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/object-create.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* global ActiveXObject -- old IE, WSH */ +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); +var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); +var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); + +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); + +var EmptyConstructor = function () { /* empty */ }; + +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; + +// Create object with fake `null` prototype: use ActiveX Object with cleared prototype +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; +}; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; + +// Check for document.domain and active x support +// No need to use active x approach when document.domain is not set +// see https://github.com/es-shims/es5-shim/issues/150 +// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 +// avoid IE GC bug +var activeXDocument; +var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; + +hiddenKeys[IE_PROTO] = true; + +// `Object.create` method +// https://tc39.es/ecma262/#sec-object.create +// eslint-disable-next-line es-x/no-object-create -- safe +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-properties.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-properties.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); + +// `Object.defineProperties` method +// https://tc39.es/ecma262/#sec-object.defineproperties +// eslint-disable-next-line es-x/no-object-defineproperties -- safe +exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-property.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-property.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); + +var TypeError = global.TypeError; +// eslint-disable-next-line es-x/no-object-defineproperty -- safe +var $defineProperty = Object.defineProperty; +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var ENUMERABLE = 'enumerable'; +var CONFIGURABLE = 'configurable'; +var WRITABLE = 'writable'; + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty(O, P, Attributes); +} : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); + +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-names-external.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-names-external.js ***! + \**********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* eslint-disable es-x/no-object-getownpropertynames -- safe */ +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f); +var arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ "./node_modules/core-js/internals/array-slice-simple.js"); + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } +}; + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) == 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames(toIndexedObject(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-names.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +// `Object.getOwnPropertyNames` method +// https://tc39.es/ecma262/#sec-object.getownpropertynames +// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); + +var IE_PROTO = sharedKey('IE_PROTO'); +var Object = global.Object; +var ObjectPrototype = Object.prototype; + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof Object ? ObjectPrototype : null; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-is-extensible.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/object-is-extensible.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(/*! ../internals/array-buffer-non-extensible */ "./node_modules/core-js/internals/array-buffer-non-extensible.js"); + +// eslint-disable-next-line es-x/no-object-isextensible -- safe +var $isExtensible = Object.isExtensible; +var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); }); + +// `Object.isExtensible` method +// https://tc39.es/ecma262/#sec-object.isextensible +module.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) { + if (!isObject(it)) return false; + if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false; + return $isExtensible ? $isExtensible(it) : true; +} : $isExtensible; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-is-prototype-of.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-is-prototype-of.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +module.exports = uncurryThis({}.isPrototypeOf); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys-internal.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys-internal.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var push = uncurryThis([].push); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +// eslint-disable-next-line es-x/no-object-keys -- safe +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +var $propertyIsEnumerable = {}.propertyIsEnumerable; +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); + +// `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : $propertyIsEnumerable; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-set-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* eslint-disable no-proto -- safe */ +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "./node_modules/core-js/internals/a-possible-prototype.js"); + +// `Object.setPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.setprototypeof +// Works with __proto__ only. Old v8 can't work with null proto objects. +// eslint-disable-next-line es-x/no-object-setprototypeof -- safe +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe + setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-to-string.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/object-to-string.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); + +// `Object.prototype.toString` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.tostring +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/ordinary-to-primitive.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/ordinary-to-primitive.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var TypeError = global.TypeError; + +// `OrdinaryToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-ordinarytoprimitive +module.exports = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/own-keys.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/own-keys.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +var concat = uncurryThis([].concat); + +// all object keys, includes non-enumerable and symbols +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-exec-abstract.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); + +var TypeError = global.TypeError; + +// `RegExpExec` abstract operation +// https://tc39.es/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (isCallable(exec)) { + var result = call(exec, R, S); + if (result !== null) anObject(result); + return result; + } + if (classof(R) === 'RegExp') return call(regexpExec, R, S); + throw TypeError('RegExp#exec called on incompatible receiver'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-exec.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-exec.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ +/* eslint-disable regexp/no-useless-quantifier -- testing */ +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); +var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var getInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").get); +var UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js"); +var UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ "./node_modules/core-js/internals/regexp-unsupported-ncg.js"); + +var nativeReplace = shared('native-string-replace', String.prototype.replace); +var nativeExec = RegExp.prototype.exec; +var patchedExec = nativeExec; +var charAt = uncurryThis(''.charAt); +var indexOf = uncurryThis(''.indexOf); +var replace = uncurryThis(''.replace); +var stringSlice = uncurryThis(''.slice); + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + call(nativeExec, re1, 'a'); + call(nativeExec, re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; +})(); + +var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; + +if (PATCH) { + patchedExec = function exec(string) { + var re = this; + var state = getInternalState(re); + var str = toString(string); + var raw = state.raw; + var result, reCopy, lastIndex, match, i, object, group; + + if (raw) { + raw.lastIndex = re.lastIndex; + result = call(patchedExec, raw, str); + re.lastIndex = raw.lastIndex; + return result; + } + + var groups = state.groups; + var sticky = UNSUPPORTED_Y && re.sticky; + var flags = call(regexpFlags, re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = replace(flags, 'y', ''); + if (indexOf(flags, 'g') === -1) { + flags += 'g'; + } + + strCopy = stringSlice(str, re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = call(nativeExec, sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = stringSlice(match.input, charsAdded); + match[0] = stringSlice(match[0], charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + call(nativeReplace, match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + if (match && groups) { + match.groups = object = create(null); + for (i = 0; i < groups.length; i++) { + group = groups[i]; + object[group[0]] = match[group[1]]; + } + } + + return match; + }; +} + +module.exports = patchedExec; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-flags.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-flags.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +// `RegExp.prototype.flags` getter implementation +// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.hasIndices) result += 'd'; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-sticky-helpers.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError +var $RegExp = global.RegExp; + +var UNSUPPORTED_Y = fails(function () { + var re = $RegExp('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; +}); + +// UC Browser bug +// https://github.com/zloirock/core-js/issues/1008 +var MISSED_STICKY = UNSUPPORTED_Y || fails(function () { + return !$RegExp('a', 'y').sticky; +}); + +var BROKEN_CARET = UNSUPPORTED_Y || fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = $RegExp('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; +}); + +module.exports = { + BROKEN_CARET: BROKEN_CARET, + MISSED_STICKY: MISSED_STICKY, + UNSUPPORTED_Y: UNSUPPORTED_Y +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-unsupported-dot-all.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError +var $RegExp = global.RegExp; + +module.exports = fails(function () { + var re = $RegExp('.', 's'); + return !(re.dotAll && re.exec('\n') && re.flags === 's'); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-unsupported-ncg.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-unsupported-ncg.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError +var $RegExp = global.RegExp; + +module.exports = fails(function () { + var re = $RegExp('(?b)', 'g'); + return re.exec('b').groups.a !== 'b' || + 'b'.replace(re, '$c') !== 'bc'; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/require-object-coercible.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/require-object-coercible.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +var TypeError = global.TypeError; + +// `RequireObjectCoercible` abstract operation +// https://tc39.es/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/set-global.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/set-global.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +// eslint-disable-next-line es-x/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; + +module.exports = function (key, value) { + try { + defineProperty(global, key, { value: value, configurable: true, writable: true }); + } catch (error) { + global[key] = value; + } return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/set-to-string-tag.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (target, TAG, STATIC) { + if (target && !STATIC) target = target.prototype; + if (target && !hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared-key.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/shared-key.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared-store.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/shared-store.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); + +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || setGlobal(SHARED, {}); + +module.exports = store; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/shared.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.22.5', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.22.5/LICENSE', + source: 'https://github.com/zloirock/core-js' +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-multibyte.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/string-multibyte.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var stringSlice = uncurryThis(''.slice); + +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = toString(requireObjectCoercible($this)); + var position = toIntegerOrInfinity(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = charCodeAt(S, position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING + ? charAt(S, position) + : first + : CONVERT_TO_STRING + ? stringSlice(S, position, position + 2) + : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-trim.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/string-trim.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); + +var replace = uncurryThis(''.replace); +var whitespace = '[' + whitespaces + ']'; +var ltrim = RegExp('^' + whitespace + whitespace + '*'); +var rtrim = RegExp(whitespace + whitespace + '*$'); + +// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation +var createMethod = function (TYPE) { + return function ($this) { + var string = toString(requireObjectCoercible($this)); + if (TYPE & 1) string = replace(string, ltrim, ''); + if (TYPE & 2) string = replace(string, rtrim, ''); + return string; + }; +}; + +module.exports = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimstart + start: createMethod(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimend + end: createMethod(2), + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + trim: createMethod(3) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-absolute-index.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-absolute-index.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). +module.exports = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-indexed-object.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-indexed-object.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-integer-or-infinity.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/to-integer-or-infinity.js ***! + \******************************************************************/ +/***/ ((module) => { + +var ceil = Math.ceil; +var floor = Math.floor; + +// `ToIntegerOrInfinity` abstract operation +// https://tc39.es/ecma262/#sec-tointegerorinfinity +module.exports = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- safe + return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-length.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-length.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.es/ecma262/#sec-tolength +module.exports = function (argument) { + return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-object.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +var Object = global.Object; + +// `ToObject` abstract operation +// https://tc39.es/ecma262/#sec-toobject +module.exports = function (argument) { + return Object(requireObjectCoercible(argument)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-primitive.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/to-primitive.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js/internals/ordinary-to-primitive.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TypeError = global.TypeError; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + +// `ToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-toprimitive +module.exports = function (input, pref) { + if (!isObject(input) || isSymbol(input)) return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) return result; + throw TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-property-key.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/to-property-key.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); + +// `ToPropertyKey` abstract operation +// https://tc39.es/ecma262/#sec-topropertykey +module.exports = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-string-tag-support.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/to-string-tag-support.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; + +test[TO_STRING_TAG] = 'z'; + +module.exports = String(test) === '[object z]'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-string.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-string.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); + +var String = global.String; + +module.exports = function (argument) { + if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string'); + return String(argument); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/try-to-string.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/try-to-string.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +var String = global.String; + +module.exports = function (argument) { + try { + return String(argument); + } catch (error) { + return 'Object'; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/uid.js": +/*!***********************************************!*\ + !*** ./node_modules/core-js/internals/uid.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +var id = 0; +var postfix = Math.random(); +var toString = uncurryThis(1.0.toString); + +module.exports = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/use-symbol-as-uid.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* eslint-disable es-x/no-symbol -- required for testing */ +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); + +module.exports = NATIVE_SYMBOL + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/v8-prototype-define-bug.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/v8-prototype-define-bug.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// V8 ~ Chrome 36- +// https://bugs.chromium.org/p/v8/issues/detail?id=3334 +module.exports = DESCRIPTORS && fails(function () { + // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype != 42; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/well-known-symbol.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/well-known-symbol.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); +var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); + +var WellKnownSymbolsStore = shared('wks'); +var Symbol = global.Symbol; +var symbolFor = Symbol && Symbol['for']; +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; + +module.exports = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) { + var description = 'Symbol.' + name; + if (NATIVE_SYMBOL && hasOwn(Symbol, name)) { + WellKnownSymbolsStore[name] = Symbol[name]; + } else if (USE_SYMBOL_AS_UID && symbolFor) { + WellKnownSymbolsStore[name] = symbolFor(description); + } else { + WellKnownSymbolsStore[name] = createWellKnownSymbol(description); + } + } return WellKnownSymbolsStore[name]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/whitespaces.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/whitespaces.js ***! + \*******************************************************/ +/***/ ((module) => { + +// a string of all valid unicode whitespaces +module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.filter.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.filter.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $filter = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").filter); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); + +// `Array.prototype.filter` method +// https://tc39.es/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.for-each.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.for-each.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var forEach = __webpack_require__(/*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js"); + +// `Array.prototype.forEach` method +// https://tc39.es/ecma262/#sec-array.prototype.foreach +// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe +$({ target: 'Array', proto: true, forced: [].forEach != forEach }, { + forEach: forEach +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.iterator.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.iterator.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); +var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.es/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.es/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.es/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.es/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { value: undefined, done: true }; + } + if (kind == 'keys') return { value: index, done: false }; + if (kind == 'values') return { value: target[index], done: false }; + return { value: [index, target[index]], done: false }; +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.es/ecma262/#sec-createunmappedargumentsobject +// https://tc39.es/ecma262/#sec-createmappedargumentsobject +var values = Iterators.Arguments = Iterators.Array; + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +// V8 ~ Chrome 45- bug +if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try { + defineProperty(values, 'name', { value: 'values' }); +} catch (error) { /* empty */ } + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.reduce.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.reduce.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $reduce = (__webpack_require__(/*! ../internals/array-reduce */ "./node_modules/core-js/internals/array-reduce.js").left); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); +var CHROME_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js/internals/engine-v8-version.js"); +var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ "./node_modules/core-js/internals/engine-is-node.js"); + +var STRICT_METHOD = arrayMethodIsStrict('reduce'); +// Chrome 80-82 has a critical bug +// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982 +var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83; + +// `Array.prototype.reduce` method +// https://tc39.es/ecma262/#sec-array.prototype.reduce +$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.function.name.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/modules/es.function.name.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var FUNCTION_NAME_EXISTS = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").EXISTS); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); + +var FunctionPrototype = Function.prototype; +var functionToString = uncurryThis(FunctionPrototype.toString); +var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; +var regExpExec = uncurryThis(nameRE.exec); +var NAME = 'name'; + +// Function instances `.name` property +// https://tc39.es/ecma262/#sec-function-instances-name +if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) { + defineProperty(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return regExpExec(nameRE, functionToString(this))[1]; + } catch (error) { + return ''; + } + } + }); +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.assign.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.assign.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var assign = __webpack_require__(/*! ../internals/object-assign */ "./node_modules/core-js/internals/object-assign.js"); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +// eslint-disable-next-line es-x/no-object-assign -- required for testing +$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { + assign: assign +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.to-string.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.to-string.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var toString = __webpack_require__(/*! ../internals/object-to-string */ "./node_modules/core-js/internals/object-to-string.js"); + +// `Object.prototype.toString` method +// https://tc39.es/ecma262/#sec-object.prototype.tostring +if (!TO_STRING_TAG_SUPPORT) { + defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.parse-int.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/modules/es.parse-int.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $parseInt = __webpack_require__(/*! ../internals/number-parse-int */ "./node_modules/core-js/internals/number-parse-int.js"); + +// `parseInt` method +// https://tc39.es/ecma262/#sec-parseint-string-radix +$({ global: true, forced: parseInt != $parseInt }, { + parseInt: $parseInt +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.regexp.exec.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.regexp.exec.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var exec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); + +// `RegExp.prototype.exec` method +// https://tc39.es/ecma262/#sec-regexp.prototype.exec +$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { + exec: exec +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.iterator.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.iterator.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: toString(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: point, done: false }; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.match.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.match.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); +var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); + +// @@match logic +fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.es/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible(this); + var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH); + return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@match + function (string) { + var rx = anObject(this); + var S = toString(string); + var res = maybeCallNative(nativeMatch, rx, S); + + if (res.done) return res.value; + + if (!rx.global) return regExpExec(rx, S); + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = toString(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.replace.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.replace.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js"); +var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var REPLACE = wellKnownSymbol('replace'); +var max = Math.max; +var min = Math.min; +var concat = uncurryThis([].concat); +var push = uncurryThis([].push); +var stringIndexOf = uncurryThis(''.indexOf); +var stringSlice = uncurryThis(''.slice); + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// IE <= 11 replaces $0 with the whole match, as if it was $& +// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 +var REPLACE_KEEPS_$0 = (function () { + // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing + return 'a'.replace(/./, '$0') === '$0'; +})(); + +// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string +var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; +})(); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive + return ''.replace(re, '$') !== '7'; +}); + +// @@replace logic +fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) { + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.es/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE); + return replacer + ? call(replacer, searchValue, O, replaceValue) + : call(nativeReplace, toString(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace + function (string, replaceValue) { + var rx = anObject(this); + var S = toString(string); + + if ( + typeof replaceValue == 'string' && + stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && + stringIndexOf(replaceValue, '$<') === -1 + ) { + var res = maybeCallNative(nativeReplace, rx, S, replaceValue); + if (res.done) return res.value; + } + + var functionalReplace = isCallable(replaceValue); + if (!functionalReplace) replaceValue = toString(replaceValue); + + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + + push(results, result); + if (!global) break; + + var matchStr = toString(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = toString(result[0]); + var position = max(min(toIntegerOrInfinity(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = concat([matched], captures, position, S); + if (namedCaptures !== undefined) push(replacerArgs, namedCaptures); + var replacement = toString(apply(replaceValue, undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + stringSlice(S, nextSourcePosition); + } + ]; +}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.weak-map.constructor.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.weak-map.constructor.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ "./node_modules/core-js/internals/define-built-ins.js"); +var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js"); +var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/core-js/internals/collection.js"); +var collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ "./node_modules/core-js/internals/collection-weak.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var isExtensible = __webpack_require__(/*! ../internals/object-is-extensible */ "./node_modules/core-js/internals/object-is-extensible.js"); +var enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").enforce); +var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); + +var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; +var InternalWeakMap; + +var wrapper = function (init) { + return function WeakMap() { + return init(this, arguments.length ? arguments[0] : undefined); + }; +}; + +// `WeakMap` constructor +// https://tc39.es/ecma262/#sec-weakmap-constructor +var $WeakMap = collection('WeakMap', wrapper, collectionWeak); + +// IE11 WeakMap frozen keys fix +// We can't use feature detection because it crash some old IE builds +// https://github.com/zloirock/core-js/issues/485 +if (NATIVE_WEAK_MAP && IS_IE11) { + InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); + InternalMetadataModule.enable(); + var WeakMapPrototype = $WeakMap.prototype; + var nativeDelete = uncurryThis(WeakMapPrototype['delete']); + var nativeHas = uncurryThis(WeakMapPrototype.has); + var nativeGet = uncurryThis(WeakMapPrototype.get); + var nativeSet = uncurryThis(WeakMapPrototype.set); + defineBuiltIns(WeakMapPrototype, { + 'delete': function (key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeDelete(this, key) || state.frozen['delete'](key); + } return nativeDelete(this, key); + }, + has: function has(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas(this, key) || state.frozen.has(key); + } return nativeHas(this, key); + }, + get: function get(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key); + } return nativeGet(this, key); + }, + set: function set(key, value) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value); + } else nativeSet(this, key, value); + return this; + } + }); +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.weak-map.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/modules/es.weak-map.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +// TODO: Remove this module from `core-js@4` since it's replaced to module below +__webpack_require__(/*! ../modules/es.weak-map.constructor */ "./node_modules/core-js/modules/es.weak-map.constructor.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.dom-collections.for-each.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/modules/web.dom-collections.for-each.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); +var DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ "./node_modules/core-js/internals/dom-token-list-prototype.js"); +var forEach = __webpack_require__(/*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); + +var handlePrototype = function (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { + createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); + } catch (error) { + CollectionPrototype.forEach = forEach; + } +}; + +for (var COLLECTION_NAME in DOMIterables) { + if (DOMIterables[COLLECTION_NAME]) { + handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype); + } +} + +handlePrototype(DOMTokenListPrototype); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.dom-collections.iterator.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/modules/web.dom-collections.iterator.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); +var DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ "./node_modules/core-js/internals/dom-token-list-prototype.js"); +var ArrayIteratorMethods = __webpack_require__(/*! ../modules/es.array.iterator */ "./node_modules/core-js/modules/es.array.iterator.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var ArrayValues = ArrayIteratorMethods.values; + +var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { + if (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[ITERATOR] !== ArrayValues) try { + createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); + } catch (error) { + CollectionPrototype[ITERATOR] = ArrayValues; + } + if (!CollectionPrototype[TO_STRING_TAG]) { + createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); + } + if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { + createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); + } catch (error) { + CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; + } + } + } +}; + +for (var COLLECTION_NAME in DOMIterables) { + handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME); +} + +handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/common/main.css": +/*!**************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/common/main.css ***! + \**************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); +// Imports + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); +// Module +___CSS_LOADER_EXPORT___.push([module.id, "\n/* classes attached to */\n/* TODO: make fc-event selector work when calender in shadow DOM */\n.fc-not-allowed,\n.fc-not-allowed .fc-event { /* override events' custom cursors */\n cursor: not-allowed;\n}\n/* TODO: not attached to body. attached to specific els. move */\n.fc-unselectable {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n.fc {\n /* layout of immediate children */\n display: flex;\n flex-direction: column;\n\n font-size: 1em\n}\n.fc,\n .fc *,\n .fc *:before,\n .fc *:after {\n box-sizing: border-box;\n }\n.fc table {\n border-collapse: collapse;\n border-spacing: 0;\n font-size: 1em; /* normalize cross-browser */\n }\n.fc th {\n text-align: center;\n }\n.fc th,\n .fc td {\n vertical-align: top;\n padding: 0;\n }\n.fc a[data-navlink] {\n cursor: pointer;\n }\n.fc a[data-navlink]:hover {\n text-decoration: underline;\n }\n.fc-direction-ltr {\n direction: ltr;\n text-align: left;\n}\n.fc-direction-rtl {\n direction: rtl;\n text-align: right;\n}\n.fc-theme-standard td,\n .fc-theme-standard th {\n border: 1px solid #ddd;\n border: 1px solid var(--fc-border-color, #ddd);\n }\n/* for FF, which doesn't expand a 100% div within a table cell. use absolute positioning */\n/* inner-wrappers are responsible for being absolute */\n/* TODO: best place for this? */\n.fc-liquid-hack td,\n .fc-liquid-hack th {\n position: relative;\n }\n@font-face {\n font-family: 'fcicons';\n src: url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format('truetype');\n font-weight: normal;\n font-style: normal;\n}\n.fc-icon {\n /* added for fc */\n display: inline-block;\n width: 1em;\n height: 1em;\n text-align: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'fcicons' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.fc-icon-chevron-left:before {\n content: \"\\e900\";\n}\n.fc-icon-chevron-right:before {\n content: \"\\e901\";\n}\n.fc-icon-chevrons-left:before {\n content: \"\\e902\";\n}\n.fc-icon-chevrons-right:before {\n content: \"\\e903\";\n}\n.fc-icon-minus-square:before {\n content: \"\\e904\";\n}\n.fc-icon-plus-square:before {\n content: \"\\e905\";\n}\n.fc-icon-x:before {\n content: \"\\e906\";\n}\n/*\nLots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css\n\nThese styles only apply when the standard-theme is activated.\nWhen it's NOT activated, the fc-button classes won't even be in the DOM.\n*/\n.fc {\n\n /* reset */\n\n}\n.fc .fc-button {\n border-radius: 0;\n overflow: visible;\n text-transform: none;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n.fc .fc-button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n.fc .fc-button {\n -webkit-appearance: button;\n }\n.fc .fc-button:not(:disabled) {\n cursor: pointer;\n }\n.fc .fc-button::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n.fc {\n\n /* theme */\n\n}\n.fc .fc-button {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.4em 0.65em;\n font-size: 1em;\n line-height: 1.5;\n border-radius: 0.25em;\n }\n.fc .fc-button:hover {\n text-decoration: none;\n }\n.fc .fc-button:focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n }\n.fc .fc-button:disabled {\n opacity: 0.65;\n }\n.fc {\n\n /* \"primary\" coloring */\n\n}\n.fc .fc-button-primary {\n color: #fff;\n color: var(--fc-button-text-color, #fff);\n background-color: #2C3E50;\n background-color: var(--fc-button-bg-color, #2C3E50);\n border-color: #2C3E50;\n border-color: var(--fc-button-border-color, #2C3E50);\n }\n.fc .fc-button-primary:hover {\n color: #fff;\n color: var(--fc-button-text-color, #fff);\n background-color: #1e2b37;\n background-color: var(--fc-button-hover-bg-color, #1e2b37);\n border-color: #1a252f;\n border-color: var(--fc-button-hover-border-color, #1a252f);\n }\n.fc .fc-button-primary:disabled { /* not DRY */\n color: #fff;\n color: var(--fc-button-text-color, #fff);\n background-color: #2C3E50;\n background-color: var(--fc-button-bg-color, #2C3E50);\n border-color: #2C3E50;\n border-color: var(--fc-button-border-color, #2C3E50); /* overrides :hover */\n }\n.fc .fc-button-primary:focus {\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\n }\n.fc .fc-button-primary:not(:disabled):active,\n .fc .fc-button-primary:not(:disabled).fc-button-active {\n color: #fff;\n color: var(--fc-button-text-color, #fff);\n background-color: #1a252f;\n background-color: var(--fc-button-active-bg-color, #1a252f);\n border-color: #151e27;\n border-color: var(--fc-button-active-border-color, #151e27);\n }\n.fc .fc-button-primary:not(:disabled):active:focus,\n .fc .fc-button-primary:not(:disabled).fc-button-active:focus {\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\n }\n.fc {\n\n /* icons within buttons */\n\n}\n.fc .fc-button .fc-icon {\n vertical-align: middle;\n font-size: 1.5em; /* bump up the size (but don't make it bigger than line-height of button, which is 1.5em also) */\n }\n.fc .fc-button-group {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n }\n.fc .fc-button-group > .fc-button {\n position: relative;\n flex: 1 1 auto;\n }\n.fc .fc-button-group > .fc-button:hover {\n z-index: 1;\n }\n.fc .fc-button-group > .fc-button:focus,\n .fc .fc-button-group > .fc-button:active,\n .fc .fc-button-group > .fc-button.fc-button-active {\n z-index: 1;\n }\n.fc-direction-ltr .fc-button-group > .fc-button:not(:first-child) {\n margin-left: -1px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n.fc-direction-ltr .fc-button-group > .fc-button:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n.fc-direction-rtl .fc-button-group > .fc-button:not(:first-child) {\n margin-right: -1px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n.fc-direction-rtl .fc-button-group > .fc-button:not(:last-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n.fc .fc-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n.fc .fc-toolbar.fc-header-toolbar {\n margin-bottom: 1.5em;\n }\n.fc .fc-toolbar.fc-footer-toolbar {\n margin-top: 1.5em;\n }\n.fc .fc-toolbar-title {\n font-size: 1.75em;\n margin: 0;\n }\n.fc-direction-ltr .fc-toolbar > * > :not(:first-child) {\n margin-left: .75em; /* space between */\n }\n.fc-direction-rtl .fc-toolbar > * > :not(:first-child) {\n margin-right: .75em; /* space between */\n }\n.fc-direction-rtl .fc-toolbar-ltr { /* when the toolbar-chunk positioning system is explicitly left-to-right */\n flex-direction: row-reverse;\n }\n.fc .fc-scroller {\n -webkit-overflow-scrolling: touch;\n position: relative; /* for abs-positioned elements within */\n }\n.fc .fc-scroller-liquid {\n height: 100%;\n }\n.fc .fc-scroller-liquid-absolute {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n }\n.fc .fc-scroller-harness {\n position: relative;\n overflow: hidden;\n direction: ltr;\n /* hack for chrome computing the scroller's right/left wrong for rtl. undone below... */\n /* TODO: demonstrate in codepen */\n }\n.fc .fc-scroller-harness-liquid {\n height: 100%;\n }\n.fc-direction-rtl .fc-scroller-harness > .fc-scroller { /* undo above hack */\n direction: rtl;\n }\n.fc-theme-standard .fc-scrollgrid {\n border: 1px solid #ddd;\n border: 1px solid var(--fc-border-color, #ddd); /* bootstrap does this. match */\n }\n.fc .fc-scrollgrid,\n .fc .fc-scrollgrid table { /* all tables (self included) */\n width: 100%; /* because tables don't normally do this */\n table-layout: fixed;\n }\n.fc .fc-scrollgrid table { /* inner tables */\n border-top-style: hidden;\n border-left-style: hidden;\n border-right-style: hidden;\n }\n.fc .fc-scrollgrid {\n\n border-collapse: separate;\n border-right-width: 0;\n border-bottom-width: 0;\n\n }\n.fc .fc-scrollgrid-liquid {\n height: 100%;\n }\n.fc .fc-scrollgrid-section { /* a
*/\n height: 1px /* better than 0, for firefox */\n\n }\n.fc .fc-scrollgrid-section > td {\n height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */\n }\n.fc .fc-scrollgrid-section table {\n height: 1px;\n /* for most browsers, if a height isn't set on the table, can't do liquid-height within cells */\n /* serves as a min-height. harmless */\n }\n.fc .fc-scrollgrid-section-liquid > td {\n height: 100%; /* better than `auto`, for firefox */\n }\n.fc .fc-scrollgrid-section > * {\n border-top-width: 0;\n border-left-width: 0;\n }\n.fc .fc-scrollgrid-section-header > *,\n .fc .fc-scrollgrid-section-footer > * {\n border-bottom-width: 0;\n }\n.fc .fc-scrollgrid-section-body table,\n .fc .fc-scrollgrid-section-footer table {\n border-bottom-style: hidden; /* head keeps its bottom border tho */\n }\n.fc {\n\n /* stickiness */\n\n}\n.fc .fc-scrollgrid-section-sticky > * {\n background: #fff;\n background: var(--fc-page-bg-color, #fff);\n position: -webkit-sticky;\n position: sticky;\n z-index: 3; /* TODO: var */\n /* TODO: box-shadow when sticking */\n }\n.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {\n top: 0; /* because border-sharing causes a gap at the top */\n /* TODO: give safari -1. has bug */\n }\n.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * {\n bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */\n }\n.fc .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */\n height: 1px; /* needs height to create scrollbars */\n margin-bottom: -1px;\n }\n.fc-sticky { /* no .fc wrap because used as child of body */\n position: -webkit-sticky;\n position: sticky;\n}\n.fc .fc-view-harness {\n flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */\n position: relative;\n }\n.fc {\n\n /* when the harness controls the height, make the view liquid */\n\n}\n.fc .fc-view-harness-active > .fc-view {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n.fc .fc-col-header-cell-cushion {\n display: inline-block; /* x-browser for when sticky (when multi-tier header) */\n padding: 2px 4px;\n }\n.fc .fc-bg-event,\n .fc .fc-non-business,\n .fc .fc-highlight {\n /* will always have a harness with position:relative/absolute, so absolutely expand */\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n.fc .fc-non-business {\n background: rgba(215, 215, 215, 0.3);\n background: var(--fc-non-business-color, rgba(215, 215, 215, 0.3));\n }\n.fc .fc-bg-event {\n background: rgb(143, 223, 130);\n background: var(--fc-bg-event-color, rgb(143, 223, 130));\n opacity: 0.3;\n opacity: var(--fc-bg-event-opacity, 0.3)\n }\n.fc .fc-bg-event .fc-event-title {\n margin: .5em;\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n font-style: italic;\n }\n.fc .fc-highlight {\n background: rgba(188, 232, 241, 0.3);\n background: var(--fc-highlight-color, rgba(188, 232, 241, 0.3));\n }\n.fc .fc-cell-shaded,\n .fc .fc-day-disabled {\n background: rgba(208, 208, 208, 0.3);\n background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n }\n/* link resets */\n/* ---------------------------------------------------------------------------------------------------- */\na.fc-event,\na.fc-event:hover {\n text-decoration: none;\n}\n/* cursor */\n.fc-event[href],\n.fc-event.fc-event-draggable {\n cursor: pointer;\n}\n/* event text content */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event .fc-event-main {\n position: relative;\n z-index: 2;\n }\n/* dragging */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event-dragging:not(.fc-event-selected) { /* MOUSE */\n opacity: 0.75;\n }\n.fc-event-dragging.fc-event-selected { /* TOUCH */\n box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);\n }\n/* resizing */\n/* ---------------------------------------------------------------------------------------------------- */\n/* (subclasses should hone positioning for touch and non-touch) */\n.fc-event .fc-event-resizer {\n display: none;\n position: absolute;\n z-index: 4;\n }\n.fc-event:hover, /* MOUSE */\n.fc-event-selected { /* TOUCH */\n\n}\n.fc-event:hover .fc-event-resizer, .fc-event-selected .fc-event-resizer {\n display: block;\n }\n.fc-event-selected .fc-event-resizer {\n border-radius: 4px;\n border-radius: calc(var(--fc-event-resizer-dot-total-width, 8px) / 2);\n border-width: 1px;\n border-width: var(--fc-event-resizer-dot-border-width, 1px);\n width: 8px;\n width: var(--fc-event-resizer-dot-total-width, 8px);\n height: 8px;\n height: var(--fc-event-resizer-dot-total-width, 8px);\n border-style: solid;\n border-color: inherit;\n background: #fff;\n background: var(--fc-page-bg-color, #fff)\n\n /* expand hit area */\n\n }\n.fc-event-selected .fc-event-resizer:before {\n content: '';\n position: absolute;\n top: -20px;\n left: -20px;\n right: -20px;\n bottom: -20px;\n }\n/* selecting (always TOUCH) */\n/* OR, focused by tab-index */\n/* (TODO: maybe not the best focus-styling for .fc-daygrid-dot-event) */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event-selected,\n.fc-event:focus {\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2)\n\n /* expand hit area (subclasses should expand) */\n\n}\n.fc-event-selected:before, .fc-event:focus:before {\n content: \"\";\n position: absolute;\n z-index: 3;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n.fc-event-selected,\n.fc-event:focus {\n\n /* dimmer effect */\n\n}\n.fc-event-selected:after, .fc-event:focus:after {\n content: \"\";\n background: rgba(0, 0, 0, 0.25);\n background: var(--fc-event-selected-overlay-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n z-index: 1;\n\n /* assume there's a border on all sides. overcome it. */\n /* sometimes there's NOT a border, in which case the dimmer will go over */\n /* an adjacent border, which looks fine. */\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n }\n/*\nA HORIZONTAL event\n*/\n.fc-h-event { /* allowed to be top-level */\n display: block;\n border: 1px solid #3788d8;\n border: 1px solid var(--fc-event-border-color, #3788d8);\n background-color: #3788d8;\n background-color: var(--fc-event-bg-color, #3788d8)\n\n}\n.fc-h-event .fc-event-main {\n color: #fff;\n color: var(--fc-event-text-color, #fff);\n }\n.fc-h-event .fc-event-main-frame {\n display: flex; /* for make fc-event-title-container expand */\n }\n.fc-h-event .fc-event-time {\n max-width: 100%; /* clip overflow on this element */\n overflow: hidden;\n }\n.fc-h-event .fc-event-title-container { /* serves as a container for the sticky cushion */\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n }\n.fc-h-event .fc-event-title {\n display: inline-block; /* need this to be sticky cross-browser */\n vertical-align: top; /* for not messing up line-height */\n left: 0; /* for sticky */\n right: 0; /* for sticky */\n max-width: 100%; /* clip overflow on this element */\n overflow: hidden;\n }\n.fc-h-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n/* adjust border and border-radius (if there is any) for non-start/end */\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left-width: 0;\n}\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right-width: 0;\n}\n/* resizers */\n.fc-h-event:not(.fc-event-selected) .fc-event-resizer {\n top: 0;\n bottom: 0;\n width: 8px;\n width: var(--fc-event-resizer-thickness, 8px);\n}\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end {\n cursor: w-resize;\n left: -4px;\n left: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));\n}\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start {\n cursor: e-resize;\n right: -4px;\n right: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));\n}\n/* resizers for TOUCH */\n.fc-h-event.fc-event-selected .fc-event-resizer {\n top: 50%;\n margin-top: -4px;\n margin-top: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));\n}\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end {\n left: -4px;\n left: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));\n}\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start {\n right: -4px;\n right: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));\n}\n.fc .fc-popover {\n position: absolute;\n z-index: 9999;\n box-shadow: 0 2px 6px rgba(0,0,0,.15);\n }\n.fc .fc-popover-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: 3px 4px;\n }\n.fc .fc-popover-title {\n margin: 0 2px;\n }\n.fc .fc-popover-close {\n cursor: pointer;\n opacity: 0.65;\n font-size: 1.1em;\n }\n.fc-theme-standard .fc-popover {\n border: 1px solid #ddd;\n border: 1px solid var(--fc-border-color, #ddd);\n background: #fff;\n background: var(--fc-page-bg-color, #fff);\n }\n.fc-theme-standard .fc-popover-header {\n background: rgba(208, 208, 208, 0.3);\n background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n }\n", ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/daygrid/main.css": +/*!***************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/daygrid/main.css ***! + \***************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); +// Imports + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); +// Module +___CSS_LOADER_EXPORT___.push([module.id, "\n:root {\n --fc-daygrid-event-dot-width: 8px;\n}\n/* help things clear margins of inner content */\n.fc-daygrid-day-frame,\n.fc-daygrid-day-events,\n.fc-daygrid-event-harness { /* for event top/bottom margins */\n}\n.fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-body { /* a
that wraps the table */\n position: relative;\n z-index: 1; /* container inner z-index's because
s can't do it */\n }\n.fc .fc-daygrid-day.fc-day-today {\n background-color: rgba(255, 220, 40, 0.15);\n background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));\n }\n.fc .fc-daygrid-day-frame {\n position: relative;\n min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */\n }\n.fc {\n\n /* cell top */\n\n}\n.fc .fc-daygrid-day-top {\n display: flex;\n flex-direction: row-reverse;\n }\n.fc .fc-day-other .fc-daygrid-day-top {\n opacity: 0.3;\n }\n.fc {\n\n /* day number (within cell top) */\n\n}\n.fc .fc-daygrid-day-number {\n position: relative;\n z-index: 4;\n padding: 4px;\n }\n.fc {\n\n /* event container */\n\n}\n.fc .fc-daygrid-day-events {\n margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */\n }\n.fc {\n\n /* positioning for balanced vs natural */\n\n}\n.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {\n position: absolute;\n left: 0;\n right: 0;\n }\n.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events {\n position: relative; /* for containing abs positioned event harnesses */\n min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */\n }\n.fc .fc-daygrid-body-natural { /* can coexist with -unbalanced */\n }\n.fc .fc-daygrid-body-natural .fc-daygrid-day-events {\n margin-bottom: 1em;\n }\n.fc {\n\n /* event harness */\n\n}\n.fc .fc-daygrid-event-harness {\n position: relative;\n }\n.fc .fc-daygrid-event-harness-abs {\n position: absolute;\n top: 0; /* fallback coords for when cannot yet be computed */\n left: 0; /* */\n right: 0; /* */\n }\n.fc .fc-daygrid-bg-harness {\n position: absolute;\n top: 0;\n bottom: 0;\n }\n.fc {\n\n /* bg content */\n\n}\n.fc .fc-daygrid-day-bg .fc-non-business { z-index: 1 }\n.fc .fc-daygrid-day-bg .fc-bg-event { z-index: 2 }\n.fc .fc-daygrid-day-bg .fc-highlight { z-index: 3 }\n.fc {\n\n /* events */\n\n}\n.fc .fc-daygrid-event {\n z-index: 6;\n margin-top: 1px;\n }\n.fc .fc-daygrid-event.fc-event-mirror {\n z-index: 7;\n }\n.fc {\n\n /* cell bottom (within day-events) */\n\n}\n.fc .fc-daygrid-day-bottom {\n font-size: .85em;\n padding: 2px 3px 0\n }\n.fc .fc-daygrid-day-bottom:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-more-link {\n position: relative;\n z-index: 4;\n cursor: pointer;\n }\n.fc {\n\n /* week number (within frame) */\n\n}\n.fc .fc-daygrid-week-number {\n position: absolute;\n z-index: 5;\n top: 0;\n padding: 2px;\n min-width: 1.5em;\n text-align: center;\n background-color: rgba(208, 208, 208, 0.3);\n background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n color: #808080;\n color: var(--fc-neutral-text-color, #808080);\n }\n.fc {\n\n /* popover */\n\n}\n.fc .fc-more-popover .fc-popover-body {\n min-width: 220px;\n padding: 10px;\n }\n.fc-direction-ltr .fc-daygrid-event.fc-event-start,\n.fc-direction-rtl .fc-daygrid-event.fc-event-end {\n margin-left: 2px;\n}\n.fc-direction-ltr .fc-daygrid-event.fc-event-end,\n.fc-direction-rtl .fc-daygrid-event.fc-event-start {\n margin-right: 2px;\n}\n.fc-direction-ltr .fc-daygrid-week-number {\n left: 0;\n border-radius: 0 0 3px 0;\n }\n.fc-direction-rtl .fc-daygrid-week-number {\n right: 0;\n border-radius: 0 0 0 3px;\n }\n.fc-liquid-hack .fc-daygrid-day-frame {\n position: static; /* will cause inner absolute stuff to expand to
/ elements with colspans. + SOLUTION: making individual
+ _this.frameElRefs = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap(); // the fc-daygrid-day-frame + _this.fgElRefs = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap(); // the fc-daygrid-day-events + _this.segHarnessRefs = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap(); // indexed by "instanceId:firstCol" + _this.rootElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.state = { + framePositions: null, + maxContentHeight: null, + eventInstanceHeights: {}, + }; + return _this; + } + TableRow.prototype.render = function () { + var _this = this; + var _a = this, props = _a.props, state = _a.state, context = _a.context; + var options = context.options; + var colCnt = props.cells.length; + var businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt); + var bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt); + var highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt); + var mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt); + var _b = computeFgSegPlacement((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sortEventSegs)(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells), singleColPlacements = _b.singleColPlacements, multiColPlacements = _b.multiColPlacements, moreCnts = _b.moreCnts, moreMarginTops = _b.moreMarginTops; + var isForcedInvisible = // TODO: messy way to compute this + (props.eventDrag && props.eventDrag.affectedInstances) || + (props.eventResize && props.eventResize.affectedInstances) || + {}; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { ref: this.rootElRef, role: "row" }, + props.renderIntro && props.renderIntro(), + props.cells.map(function (cell, col) { + var normalFgNodes = _this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible); + var mirrorFgNodes = _this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, normalFgNodes), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, + _this.renderFillSegs(highlightSegsByCol[col], 'highlight'), + _this.renderFillSegs(businessHoursByCol[col], 'non-business'), + _this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) })); + }))); + }; + TableRow.prototype.componentDidMount = function () { + this.updateSizing(true); + }; + TableRow.prototype.componentDidUpdate = function (prevProps, prevState) { + var currentProps = this.props; + this.updateSizing(!(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isPropsEqual)(prevProps, currentProps)); + }; + TableRow.prototype.getHighlightSegs = function () { + var props = this.props; + if (props.eventDrag && props.eventDrag.segs.length) { // messy check + return props.eventDrag.segs; + } + if (props.eventResize && props.eventResize.segs.length) { // messy check + return props.eventResize.segs; + } + return props.dateSelectionSegs; + }; + TableRow.prototype.getMirrorSegs = function () { + var props = this.props; + if (props.eventResize && props.eventResize.segs.length) { // messy check + return props.eventResize.segs; + } + return []; + }; + TableRow.prototype.renderFgSegs = function (col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) { + var context = this.context; + var eventSelection = this.props.eventSelection; + var framePositions = this.state.framePositions; + var defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1 + var isMirror = isDragging || isResizing || isDateSelecting; + var nodes = []; + if (framePositions) { + for (var _i = 0, segPlacements_1 = segPlacements; _i < segPlacements_1.length; _i++) { + var placement = segPlacements_1[_i]; + var seg = placement.seg; + var instanceId = seg.eventRange.instance.instanceId; + var key = instanceId + ':' + col; + var isVisible = placement.isVisible && !isForcedInvisible[instanceId]; + var isAbsolute = placement.isAbsolute; + var left = ''; + var right = ''; + if (isAbsolute) { + if (context.isRtl) { + right = 0; + left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol]; + } + else { + left = 0; + right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol]; + } + } + /* + known bug: events that are force to be list-item but span multiple days still take up space in later columns + todo: in print view, for multi-day events, don't display title within non-start/end segs + */ + nodes.push((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: key, ref: isMirror ? null : this.segHarnessRefs.createRef(key), style: { + visibility: isVisible ? '' : 'hidden', + marginTop: isAbsolute ? '' : placement.marginTop, + top: isAbsolute ? placement.absoluteTop : '', + left: left, + right: right, + } }, hasListItemDisplay(seg) ? ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableListItemEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, todayRange)))) : ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableBlockEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, todayRange)))))); + } + } + return nodes; + }; + TableRow.prototype.renderFillSegs = function (segs, fillType) { + var isRtl = this.context.isRtl; + var todayRange = this.props.todayRange; + var framePositions = this.state.framePositions; + var nodes = []; + if (framePositions) { + for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { + var seg = segs_1[_i]; + var leftRightCss = isRtl ? { + right: 0, + left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol], + } : { + left: 0, + right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol], + }; + nodes.push((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { key: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildEventRangeKey)(seg.eventRange), className: "fc-daygrid-bg-harness", style: leftRightCss }, fillType === 'bg-event' ? + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BgEvent, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ seg: seg }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, todayRange))) : + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.renderFill)(fillType))); + } + } + return _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, {}], nodes)); + }; + TableRow.prototype.updateSizing = function (isExternalSizingChange) { + var _a = this, props = _a.props, frameElRefs = _a.frameElRefs; + if (!props.forPrint && + props.clientWidth !== null // positioning ready? + ) { + if (isExternalSizingChange) { + var frameEls = props.cells.map(function (cell) { return frameElRefs.currentMap[cell.key]; }); + if (frameEls.length) { + var originEl = this.rootElRef.current; + this.setState({ + framePositions: new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.PositionCache(originEl, frameEls, true, // isHorizontal + false), + }); + } + } + var oldInstanceHeights = this.state.eventInstanceHeights; + var newInstanceHeights = this.queryEventInstanceHeights(); + var limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true; + this.setState({ + // HACK to prevent oscillations of events being shown/hidden from max-event-rows + // Essentially, once you compute an element's height, never null-out. + // TODO: always display all events, as visibility:hidden? + eventInstanceHeights: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, oldInstanceHeights), newInstanceHeights), + maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null, + }); + } + }; + TableRow.prototype.queryEventInstanceHeights = function () { + var segElMap = this.segHarnessRefs.currentMap; + var eventInstanceHeights = {}; + // get the max height amongst instance segs + for (var key in segElMap) { + var height = Math.round(segElMap[key].getBoundingClientRect().height); + var instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key + eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height); + } + return eventInstanceHeights; + }; + TableRow.prototype.computeMaxContentHeight = function () { + var firstKey = this.props.cells[0].key; + var cellEl = this.cellElRefs.currentMap[firstKey]; + var fcContainerEl = this.fgElRefs.currentMap[firstKey]; + return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top; + }; + TableRow.prototype.getCellEls = function () { + var elMap = this.cellElRefs.currentMap; + return this.props.cells.map(function (cell) { return elMap[cell.key]; }); + }; + return TableRow; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); +TableRow.addStateEquality({ + eventInstanceHeights: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isPropsEqual, +}); +function buildMirrorPlacements(mirrorSegs, colPlacements) { + if (!mirrorSegs.length) { + return []; + } + var topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render? + return mirrorSegs.map(function (seg) { return ({ + seg: seg, + isVisible: true, + isAbsolute: true, + absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId], + marginTop: 0, + }); }); +} +function buildAbsoluteTopHash(colPlacements) { + var topsByInstanceId = {}; + for (var _i = 0, colPlacements_1 = colPlacements; _i < colPlacements_1.length; _i++) { + var placements = colPlacements_1[_i]; + for (var _a = 0, placements_1 = placements; _a < placements_1.length; _a++) { + var placement = placements_1[_a]; + topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop; + } + } + return topsByInstanceId; +} + +var Table = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(Table, _super); + function Table() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.splitBusinessHourSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByRow); + _this.splitBgEventSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByRow); + _this.splitFgEventSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByRow); + _this.splitDateSelectionSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitSegsByRow); + _this.splitEventDrag = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitInteractionByRow); + _this.splitEventResize = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(splitInteractionByRow); + _this.rowRefs = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RefMap(); + _this.handleRootEl = function (rootEl) { + _this.rootEl = rootEl; + if (rootEl) { + _this.context.registerInteractiveComponent(_this, { + el: rootEl, + isHitComboAllowed: _this.props.isHitComboAllowed, + }); + } + else { + _this.context.unregisterInteractiveComponent(_this); + } + }; + return _this; + } + Table.prototype.render = function () { + var _this = this; + var props = this.props; + var dateProfile = props.dateProfile, dayMaxEventRows = props.dayMaxEventRows, dayMaxEvents = props.dayMaxEvents, expandRows = props.expandRows; + var rowCnt = props.cells.length; + var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt); + var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt); + var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt); + var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt); + var eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt); + var eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt); + var limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true; + // if rows can't expand to fill fixed height, can't do balanced-height event limit + // TODO: best place to normalize these options? + if (limitViaBalanced && !expandRows) { + limitViaBalanced = false; + dayMaxEventRows = null; + dayMaxEvents = null; + } + var classNames = [ + 'fc-daygrid-body', + limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced', + expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others? + ]; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: classNames.join(' '), ref: this.handleRootEl, style: { + // these props are important to give this wrapper correct dimensions for interactions + // TODO: if we set it here, can we avoid giving to inner tables? + width: props.clientWidth, + minWidth: props.tableMinWidth, + } }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowTimer, { unit: "day" }, function (nowDate, todayRange) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("table", { role: "presentation", className: "fc-scrollgrid-sync-table", style: { + width: props.clientWidth, + minWidth: props.tableMinWidth, + height: expandRows ? props.clientHeight : '', + } }, + props.colGroupNode, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tbody", { role: "presentation" }, props.cells.map(function (cells, row) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length + ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */ + : row // in case there are no cells (like when resource view is loading) + , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */, fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })); }))))); }))); + }; + // Hit System + // ---------------------------------------------------------------------------------------------------- + Table.prototype.prepareHits = function () { + this.rowPositions = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.PositionCache(this.rootEl, this.rowRefs.collect().map(function (rowObj) { return rowObj.getCellEls()[0]; }), // first cell el in each row. TODO: not optimal + false, true); + this.colPositions = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row + true, // horizontal + false); + }; + Table.prototype.queryHit = function (positionLeft, positionTop) { + var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions; + var col = colPositions.leftToIndex(positionLeft); + var row = rowPositions.topToIndex(positionTop); + if (row != null && col != null) { + var cell = this.props.cells[row][col]; + return { + dateProfile: this.props.dateProfile, + dateSpan: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan), + dayEl: this.getCellEl(row, col), + rect: { + left: colPositions.lefts[col], + right: colPositions.rights[col], + top: rowPositions.tops[row], + bottom: rowPositions.bottoms[row], + }, + layer: 0, + }; + } + return null; + }; + Table.prototype.getCellEl = function (row, col) { + return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal + }; + Table.prototype.getCellRange = function (row, col) { + var start = this.props.cells[row][col].date; + var end = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDays)(start, 1); + return { start: start, end: end }; + }; + return Table; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); +function isSegAllDay(seg) { + return seg.eventRange.def.allDay; +} + +var DayTableSlicer = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DayTableSlicer, _super); + function DayTableSlicer() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.forceDayIfListItem = true; + return _this; + } + DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) { + return dayTableModel.sliceRange(dateRange); + }; + return DayTableSlicer; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Slicer)); + +var DayTable = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DayTable, _super); + function DayTable() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.slicer = new DayTableSlicer(); + _this.tableRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + return _this; + } + DayTable.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(Table, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))); + }; + return DayTable; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); + +var DayTableView = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(DayTableView, _super); + function DayTableView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.buildDayTableModel = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(buildDayTableModel); + _this.headerRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.tableRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + return _this; + } + DayTableView.prototype.render = function () { + var _this = this; + var _a = this.context, options = _a.options, dateProfileGenerator = _a.dateProfileGenerator; + var props = this.props; + var dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator); + var headerContent = options.dayHeaders && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 })); + var bodyContent = function (contentArg) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(DayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); }; + return options.dayMinWidth + ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth) + : this.renderSimpleLayout(headerContent, bodyContent); + }; + return DayTableView; +}(TableView)); +function buildDayTableModel(dateProfile, dateProfileGenerator) { + var daySeries = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); + return new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit)); +} + +var TableDateProfileGenerator = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(TableDateProfileGenerator, _super); + function TableDateProfileGenerator() { + return _super !== null && _super.apply(this, arguments) || this; + } + // Computes the date range that will be rendered. + TableDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { + var dateEnv = this.props.dateEnv; + var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay); + var start = renderRange.start; + var end = renderRange.end; + var endOfWeek; + // year and month views should be aligned with weeks. this is already done for week + if (/^(year|month)$/.test(currentRangeUnit)) { + start = dateEnv.startOfWeek(start); + // make end-of-week if not already + endOfWeek = dateEnv.startOfWeek(end); + if (endOfWeek.valueOf() !== end.valueOf()) { + end = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addWeeks)(endOfWeek, 1); + } + } + // ensure 6 weeks + if (this.props.monthMode && + this.props.fixedWeekCount) { + var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffWeeks)(start, end)); + end = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addWeeks)(end, 6 - rowCnt); + } + return { start: start, end: end }; + }; + return TableDateProfileGenerator; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateProfileGenerator)); + +var main = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createPlugin)({ + initialView: 'dayGridMonth', + views: { + dayGrid: { + component: DayTableView, + dateProfileGeneratorClass: TableDateProfileGenerator, + }, + dayGridDay: { + type: 'dayGrid', + duration: { days: 1 }, + }, + dayGridWeek: { + type: 'dayGrid', + duration: { weeks: 1 }, + }, + dayGridMonth: { + type: 'dayGrid', + duration: { months: 1 }, + monthMode: true, + fixedWeekCount: true, + }, + }, +}); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (main); + +//# sourceMappingURL=main.js.map + + +/***/ }), + +/***/ "./node_modules/@fullcalendar/interaction/main.js": +/*!********************************************************!*\ + !*** ./node_modules/@fullcalendar/interaction/main.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ "Draggable": () => (/* binding */ ExternalDraggable), +/* harmony export */ "FeaturefulElementDragging": () => (/* binding */ FeaturefulElementDragging), +/* harmony export */ "PointerDragging": () => (/* binding */ PointerDragging), +/* harmony export */ "ThirdPartyDraggable": () => (/* binding */ ThirdPartyDraggable) +/* harmony export */ }); +/* harmony import */ var _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @fullcalendar/common */ "./node_modules/@fullcalendar/common/main.js"); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/*! +FullCalendar v5.10.1 +Docs & License: https://fullcalendar.io/ +(c) 2021 Adam Shaw +*/ + + + +_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.config.touchMouseIgnoreWait = 500; +var ignoreMouseDepth = 0; +var listenerCnt = 0; +var isWindowTouchMoveCancelled = false; +/* +Uses a "pointer" abstraction, which monitors UI events for both mouse and touch. +Tracks when the pointer "drags" on a certain element, meaning down+move+up. + +Also, tracks if there was touch-scrolling. +Also, can prevent touch-scrolling from happening. +Also, can fire pointermove events when scrolling happens underneath, even when no real pointer movement. + +emits: +- pointerdown +- pointermove +- pointerup +*/ +var PointerDragging = /** @class */ (function () { + function PointerDragging(containerEl) { + var _this = this; + this.subjectEl = null; + // options that can be directly assigned by caller + this.selector = ''; // will cause subjectEl in all emitted events to be this element + this.handleSelector = ''; + this.shouldIgnoreMove = false; + this.shouldWatchScroll = true; // for simulating pointermove on scroll + // internal states + this.isDragging = false; + this.isTouchDragging = false; + this.wasTouchScroll = false; + // Mouse + // ---------------------------------------------------------------------------------------------------- + this.handleMouseDown = function (ev) { + if (!_this.shouldIgnoreMouse() && + isPrimaryMouseButton(ev) && + _this.tryStart(ev)) { + var pev = _this.createEventFromMouse(ev, true); + _this.emitter.trigger('pointerdown', pev); + _this.initScrollWatch(pev); + if (!_this.shouldIgnoreMove) { + document.addEventListener('mousemove', _this.handleMouseMove); + } + document.addEventListener('mouseup', _this.handleMouseUp); + } + }; + this.handleMouseMove = function (ev) { + var pev = _this.createEventFromMouse(ev); + _this.recordCoords(pev); + _this.emitter.trigger('pointermove', pev); + }; + this.handleMouseUp = function (ev) { + document.removeEventListener('mousemove', _this.handleMouseMove); + document.removeEventListener('mouseup', _this.handleMouseUp); + _this.emitter.trigger('pointerup', _this.createEventFromMouse(ev)); + _this.cleanup(); // call last so that pointerup has access to props + }; + // Touch + // ---------------------------------------------------------------------------------------------------- + this.handleTouchStart = function (ev) { + if (_this.tryStart(ev)) { + _this.isTouchDragging = true; + var pev = _this.createEventFromTouch(ev, true); + _this.emitter.trigger('pointerdown', pev); + _this.initScrollWatch(pev); + // unlike mouse, need to attach to target, not document + // https://stackoverflow.com/a/45760014 + var targetEl = ev.target; + if (!_this.shouldIgnoreMove) { + targetEl.addEventListener('touchmove', _this.handleTouchMove); + } + targetEl.addEventListener('touchend', _this.handleTouchEnd); + targetEl.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end + // attach a handler to get called when ANY scroll action happens on the page. + // this was impossible to do with normal on/off because 'scroll' doesn't bubble. + // http://stackoverflow.com/a/32954565/96342 + window.addEventListener('scroll', _this.handleTouchScroll, true); + } + }; + this.handleTouchMove = function (ev) { + var pev = _this.createEventFromTouch(ev); + _this.recordCoords(pev); + _this.emitter.trigger('pointermove', pev); + }; + this.handleTouchEnd = function (ev) { + if (_this.isDragging) { // done to guard against touchend followed by touchcancel + var targetEl = ev.target; + targetEl.removeEventListener('touchmove', _this.handleTouchMove); + targetEl.removeEventListener('touchend', _this.handleTouchEnd); + targetEl.removeEventListener('touchcancel', _this.handleTouchEnd); + window.removeEventListener('scroll', _this.handleTouchScroll, true); // useCaptured=true + _this.emitter.trigger('pointerup', _this.createEventFromTouch(ev)); + _this.cleanup(); // call last so that pointerup has access to props + _this.isTouchDragging = false; + startIgnoringMouse(); + } + }; + this.handleTouchScroll = function () { + _this.wasTouchScroll = true; + }; + this.handleScroll = function (ev) { + if (!_this.shouldIgnoreMove) { + var pageX = (window.pageXOffset - _this.prevScrollX) + _this.prevPageX; + var pageY = (window.pageYOffset - _this.prevScrollY) + _this.prevPageY; + _this.emitter.trigger('pointermove', { + origEvent: ev, + isTouch: _this.isTouchDragging, + subjectEl: _this.subjectEl, + pageX: pageX, + pageY: pageY, + deltaX: pageX - _this.origPageX, + deltaY: pageY - _this.origPageY, + }); + } + }; + this.containerEl = containerEl; + this.emitter = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.Emitter(); + containerEl.addEventListener('mousedown', this.handleMouseDown); + containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true }); + listenerCreated(); + } + PointerDragging.prototype.destroy = function () { + this.containerEl.removeEventListener('mousedown', this.handleMouseDown); + this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true }); + listenerDestroyed(); + }; + PointerDragging.prototype.tryStart = function (ev) { + var subjectEl = this.querySubjectEl(ev); + var downEl = ev.target; + if (subjectEl && + (!this.handleSelector || (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementClosest)(downEl, this.handleSelector))) { + this.subjectEl = subjectEl; + this.isDragging = true; // do this first so cancelTouchScroll will work + this.wasTouchScroll = false; + return true; + } + return false; + }; + PointerDragging.prototype.cleanup = function () { + isWindowTouchMoveCancelled = false; + this.isDragging = false; + this.subjectEl = null; + // keep wasTouchScroll around for later access + this.destroyScrollWatch(); + }; + PointerDragging.prototype.querySubjectEl = function (ev) { + if (this.selector) { + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementClosest)(ev.target, this.selector); + } + return this.containerEl; + }; + PointerDragging.prototype.shouldIgnoreMouse = function () { + return ignoreMouseDepth || this.isTouchDragging; + }; + // can be called by user of this class, to cancel touch-based scrolling for the current drag + PointerDragging.prototype.cancelTouchScroll = function () { + if (this.isDragging) { + isWindowTouchMoveCancelled = true; + } + }; + // Scrolling that simulates pointermoves + // ---------------------------------------------------------------------------------------------------- + PointerDragging.prototype.initScrollWatch = function (ev) { + if (this.shouldWatchScroll) { + this.recordCoords(ev); + window.addEventListener('scroll', this.handleScroll, true); // useCapture=true + } + }; + PointerDragging.prototype.recordCoords = function (ev) { + if (this.shouldWatchScroll) { + this.prevPageX = ev.pageX; + this.prevPageY = ev.pageY; + this.prevScrollX = window.pageXOffset; + this.prevScrollY = window.pageYOffset; + } + }; + PointerDragging.prototype.destroyScrollWatch = function () { + if (this.shouldWatchScroll) { + window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true + } + }; + // Event Normalization + // ---------------------------------------------------------------------------------------------------- + PointerDragging.prototype.createEventFromMouse = function (ev, isFirst) { + var deltaX = 0; + var deltaY = 0; + // TODO: repeat code + if (isFirst) { + this.origPageX = ev.pageX; + this.origPageY = ev.pageY; + } + else { + deltaX = ev.pageX - this.origPageX; + deltaY = ev.pageY - this.origPageY; + } + return { + origEvent: ev, + isTouch: false, + subjectEl: this.subjectEl, + pageX: ev.pageX, + pageY: ev.pageY, + deltaX: deltaX, + deltaY: deltaY, + }; + }; + PointerDragging.prototype.createEventFromTouch = function (ev, isFirst) { + var touches = ev.touches; + var pageX; + var pageY; + var deltaX = 0; + var deltaY = 0; + // if touch coords available, prefer, + // because FF would give bad ev.pageX ev.pageY + if (touches && touches.length) { + pageX = touches[0].pageX; + pageY = touches[0].pageY; + } + else { + pageX = ev.pageX; + pageY = ev.pageY; + } + // TODO: repeat code + if (isFirst) { + this.origPageX = pageX; + this.origPageY = pageY; + } + else { + deltaX = pageX - this.origPageX; + deltaY = pageY - this.origPageY; + } + return { + origEvent: ev, + isTouch: true, + subjectEl: this.subjectEl, + pageX: pageX, + pageY: pageY, + deltaX: deltaX, + deltaY: deltaY, + }; + }; + return PointerDragging; +}()); +// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) +function isPrimaryMouseButton(ev) { + return ev.button === 0 && !ev.ctrlKey; +} +// Ignoring fake mouse events generated by touch +// ---------------------------------------------------------------------------------------------------- +function startIgnoringMouse() { + ignoreMouseDepth += 1; + setTimeout(function () { + ignoreMouseDepth -= 1; + }, _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.config.touchMouseIgnoreWait); +} +// We want to attach touchmove as early as possible for Safari +// ---------------------------------------------------------------------------------------------------- +function listenerCreated() { + listenerCnt += 1; + if (listenerCnt === 1) { + window.addEventListener('touchmove', onWindowTouchMove, { passive: false }); + } +} +function listenerDestroyed() { + listenerCnt -= 1; + if (!listenerCnt) { + window.removeEventListener('touchmove', onWindowTouchMove, { passive: false }); + } +} +function onWindowTouchMove(ev) { + if (isWindowTouchMoveCancelled) { + ev.preventDefault(); + } +} + +/* +An effect in which an element follows the movement of a pointer across the screen. +The moving element is a clone of some other element. +Must call start + handleMove + stop. +*/ +var ElementMirror = /** @class */ (function () { + function ElementMirror() { + this.isVisible = false; // must be explicitly enabled + this.sourceEl = null; + this.mirrorEl = null; + this.sourceElRect = null; // screen coords relative to viewport + // options that can be set directly by caller + this.parentNode = document.body; // HIGHLY SUGGESTED to set this to sidestep ShadowDOM issues + this.zIndex = 9999; + this.revertDuration = 0; + } + ElementMirror.prototype.start = function (sourceEl, pageX, pageY) { + this.sourceEl = sourceEl; + this.sourceElRect = this.sourceEl.getBoundingClientRect(); + this.origScreenX = pageX - window.pageXOffset; + this.origScreenY = pageY - window.pageYOffset; + this.deltaX = 0; + this.deltaY = 0; + this.updateElPosition(); + }; + ElementMirror.prototype.handleMove = function (pageX, pageY) { + this.deltaX = (pageX - window.pageXOffset) - this.origScreenX; + this.deltaY = (pageY - window.pageYOffset) - this.origScreenY; + this.updateElPosition(); + }; + // can be called before start + ElementMirror.prototype.setIsVisible = function (bool) { + if (bool) { + if (!this.isVisible) { + if (this.mirrorEl) { + this.mirrorEl.style.display = ''; + } + this.isVisible = bool; // needs to happen before updateElPosition + this.updateElPosition(); // because was not updating the position while invisible + } + } + else if (this.isVisible) { + if (this.mirrorEl) { + this.mirrorEl.style.display = 'none'; + } + this.isVisible = bool; + } + }; + // always async + ElementMirror.prototype.stop = function (needsRevertAnimation, callback) { + var _this = this; + var done = function () { + _this.cleanup(); + callback(); + }; + if (needsRevertAnimation && + this.mirrorEl && + this.isVisible && + this.revertDuration && // if 0, transition won't work + (this.deltaX || this.deltaY) // if same coords, transition won't work + ) { + this.doRevertAnimation(done, this.revertDuration); + } + else { + setTimeout(done, 0); + } + }; + ElementMirror.prototype.doRevertAnimation = function (callback, revertDuration) { + var mirrorEl = this.mirrorEl; + var finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened + mirrorEl.style.transition = + 'top ' + revertDuration + 'ms,' + + 'left ' + revertDuration + 'ms'; + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.applyStyle)(mirrorEl, { + left: finalSourceElRect.left, + top: finalSourceElRect.top, + }); + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.whenTransitionDone)(mirrorEl, function () { + mirrorEl.style.transition = ''; + callback(); + }); + }; + ElementMirror.prototype.cleanup = function () { + if (this.mirrorEl) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.removeElement)(this.mirrorEl); + this.mirrorEl = null; + } + this.sourceEl = null; + }; + ElementMirror.prototype.updateElPosition = function () { + if (this.sourceEl && this.isVisible) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.applyStyle)(this.getMirrorEl(), { + left: this.sourceElRect.left + this.deltaX, + top: this.sourceElRect.top + this.deltaY, + }); + } + }; + ElementMirror.prototype.getMirrorEl = function () { + var sourceElRect = this.sourceElRect; + var mirrorEl = this.mirrorEl; + if (!mirrorEl) { + mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true + // we don't want long taps or any mouse interaction causing selection/menus. + // would use preventSelection(), but that prevents selectstart, causing problems. + mirrorEl.classList.add('fc-unselectable'); + mirrorEl.classList.add('fc-event-dragging'); + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.applyStyle)(mirrorEl, { + position: 'fixed', + zIndex: this.zIndex, + visibility: '', + boxSizing: 'border-box', + width: sourceElRect.right - sourceElRect.left, + height: sourceElRect.bottom - sourceElRect.top, + right: 'auto', + bottom: 'auto', + margin: 0, + }); + this.parentNode.appendChild(mirrorEl); + } + return mirrorEl; + }; + return ElementMirror; +}()); + +/* +Is a cache for a given element's scroll information (all the info that ScrollController stores) +in addition the "client rectangle" of the element.. the area within the scrollbars. + +The cache can be in one of two modes: +- doesListening:false - ignores when the container is scrolled by someone else +- doesListening:true - watch for scrolling and update the cache +*/ +var ScrollGeomCache = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(ScrollGeomCache, _super); + function ScrollGeomCache(scrollController, doesListening) { + var _this = _super.call(this) || this; + _this.handleScroll = function () { + _this.scrollTop = _this.scrollController.getScrollTop(); + _this.scrollLeft = _this.scrollController.getScrollLeft(); + _this.handleScrollChange(); + }; + _this.scrollController = scrollController; + _this.doesListening = doesListening; + _this.scrollTop = _this.origScrollTop = scrollController.getScrollTop(); + _this.scrollLeft = _this.origScrollLeft = scrollController.getScrollLeft(); + _this.scrollWidth = scrollController.getScrollWidth(); + _this.scrollHeight = scrollController.getScrollHeight(); + _this.clientWidth = scrollController.getClientWidth(); + _this.clientHeight = scrollController.getClientHeight(); + _this.clientRect = _this.computeClientRect(); // do last in case it needs cached values + if (_this.doesListening) { + _this.getEventTarget().addEventListener('scroll', _this.handleScroll); + } + return _this; + } + ScrollGeomCache.prototype.destroy = function () { + if (this.doesListening) { + this.getEventTarget().removeEventListener('scroll', this.handleScroll); + } + }; + ScrollGeomCache.prototype.getScrollTop = function () { + return this.scrollTop; + }; + ScrollGeomCache.prototype.getScrollLeft = function () { + return this.scrollLeft; + }; + ScrollGeomCache.prototype.setScrollTop = function (top) { + this.scrollController.setScrollTop(top); + if (!this.doesListening) { + // we are not relying on the element to normalize out-of-bounds scroll values + // so we need to sanitize ourselves + this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0); + this.handleScrollChange(); + } + }; + ScrollGeomCache.prototype.setScrollLeft = function (top) { + this.scrollController.setScrollLeft(top); + if (!this.doesListening) { + // we are not relying on the element to normalize out-of-bounds scroll values + // so we need to sanitize ourselves + this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0); + this.handleScrollChange(); + } + }; + ScrollGeomCache.prototype.getClientWidth = function () { + return this.clientWidth; + }; + ScrollGeomCache.prototype.getClientHeight = function () { + return this.clientHeight; + }; + ScrollGeomCache.prototype.getScrollWidth = function () { + return this.scrollWidth; + }; + ScrollGeomCache.prototype.getScrollHeight = function () { + return this.scrollHeight; + }; + ScrollGeomCache.prototype.handleScrollChange = function () { + }; + return ScrollGeomCache; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.ScrollController)); + +var ElementScrollGeomCache = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(ElementScrollGeomCache, _super); + function ElementScrollGeomCache(el, doesListening) { + return _super.call(this, new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.ElementScrollController(el), doesListening) || this; + } + ElementScrollGeomCache.prototype.getEventTarget = function () { + return this.scrollController.el; + }; + ElementScrollGeomCache.prototype.computeClientRect = function () { + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.computeInnerRect)(this.scrollController.el); + }; + return ElementScrollGeomCache; +}(ScrollGeomCache)); + +var WindowScrollGeomCache = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(WindowScrollGeomCache, _super); + function WindowScrollGeomCache(doesListening) { + return _super.call(this, new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.WindowScrollController(), doesListening) || this; + } + WindowScrollGeomCache.prototype.getEventTarget = function () { + return window; + }; + WindowScrollGeomCache.prototype.computeClientRect = function () { + return { + left: this.scrollLeft, + right: this.scrollLeft + this.clientWidth, + top: this.scrollTop, + bottom: this.scrollTop + this.clientHeight, + }; + }; + // the window is the only scroll object that changes it's rectangle relative + // to the document's topleft as it scrolls + WindowScrollGeomCache.prototype.handleScrollChange = function () { + this.clientRect = this.computeClientRect(); + }; + return WindowScrollGeomCache; +}(ScrollGeomCache)); + +// If available we are using native "performance" API instead of "Date" +// Read more about it on MDN: +// https://developer.mozilla.org/en-US/docs/Web/API/Performance +var getTime = typeof performance === 'function' ? performance.now : Date.now; +/* +For a pointer interaction, automatically scrolls certain scroll containers when the pointer +approaches the edge. + +The caller must call start + handleMove + stop. +*/ +var AutoScroller = /** @class */ (function () { + function AutoScroller() { + var _this = this; + // options that can be set by caller + this.isEnabled = true; + this.scrollQuery = [window, '.fc-scroller']; + this.edgeThreshold = 50; // pixels + this.maxVelocity = 300; // pixels per second + // internal state + this.pointerScreenX = null; + this.pointerScreenY = null; + this.isAnimating = false; + this.scrollCaches = null; + // protect against the initial pointerdown being too close to an edge and starting the scroll + this.everMovedUp = false; + this.everMovedDown = false; + this.everMovedLeft = false; + this.everMovedRight = false; + this.animate = function () { + if (_this.isAnimating) { // wasn't cancelled between animation calls + var edge = _this.computeBestEdge(_this.pointerScreenX + window.pageXOffset, _this.pointerScreenY + window.pageYOffset); + if (edge) { + var now = getTime(); + _this.handleSide(edge, (now - _this.msSinceRequest) / 1000); + _this.requestAnimation(now); + } + else { + _this.isAnimating = false; // will stop animation + } + } + }; + } + AutoScroller.prototype.start = function (pageX, pageY, scrollStartEl) { + if (this.isEnabled) { + this.scrollCaches = this.buildCaches(scrollStartEl); + this.pointerScreenX = null; + this.pointerScreenY = null; + this.everMovedUp = false; + this.everMovedDown = false; + this.everMovedLeft = false; + this.everMovedRight = false; + this.handleMove(pageX, pageY); + } + }; + AutoScroller.prototype.handleMove = function (pageX, pageY) { + if (this.isEnabled) { + var pointerScreenX = pageX - window.pageXOffset; + var pointerScreenY = pageY - window.pageYOffset; + var yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY; + var xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX; + if (yDelta < 0) { + this.everMovedUp = true; + } + else if (yDelta > 0) { + this.everMovedDown = true; + } + if (xDelta < 0) { + this.everMovedLeft = true; + } + else if (xDelta > 0) { + this.everMovedRight = true; + } + this.pointerScreenX = pointerScreenX; + this.pointerScreenY = pointerScreenY; + if (!this.isAnimating) { + this.isAnimating = true; + this.requestAnimation(getTime()); + } + } + }; + AutoScroller.prototype.stop = function () { + if (this.isEnabled) { + this.isAnimating = false; // will stop animation + for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { + var scrollCache = _a[_i]; + scrollCache.destroy(); + } + this.scrollCaches = null; + } + }; + AutoScroller.prototype.requestAnimation = function (now) { + this.msSinceRequest = now; + requestAnimationFrame(this.animate); + }; + AutoScroller.prototype.handleSide = function (edge, seconds) { + var scrollCache = edge.scrollCache; + var edgeThreshold = this.edgeThreshold; + var invDistance = edgeThreshold - edge.distance; + var velocity = // the closer to the edge, the faster we scroll + ((invDistance * invDistance) / (edgeThreshold * edgeThreshold)) * // quadratic + this.maxVelocity * seconds; + var sign = 1; + switch (edge.name) { + case 'left': + sign = -1; + // falls through + case 'right': + scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign); + break; + case 'top': + sign = -1; + // falls through + case 'bottom': + scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign); + break; + } + }; + // left/top are relative to document topleft + AutoScroller.prototype.computeBestEdge = function (left, top) { + var edgeThreshold = this.edgeThreshold; + var bestSide = null; + for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { + var scrollCache = _a[_i]; + var rect = scrollCache.clientRect; + var leftDist = left - rect.left; + var rightDist = rect.right - left; + var topDist = top - rect.top; + var bottomDist = rect.bottom - top; + // completely within the rect? + if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) { + if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() && + (!bestSide || bestSide.distance > topDist)) { + bestSide = { scrollCache: scrollCache, name: 'top', distance: topDist }; + } + if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() && + (!bestSide || bestSide.distance > bottomDist)) { + bestSide = { scrollCache: scrollCache, name: 'bottom', distance: bottomDist }; + } + if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() && + (!bestSide || bestSide.distance > leftDist)) { + bestSide = { scrollCache: scrollCache, name: 'left', distance: leftDist }; + } + if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() && + (!bestSide || bestSide.distance > rightDist)) { + bestSide = { scrollCache: scrollCache, name: 'right', distance: rightDist }; + } + } + } + return bestSide; + }; + AutoScroller.prototype.buildCaches = function (scrollStartEl) { + return this.queryScrollEls(scrollStartEl).map(function (el) { + if (el === window) { + return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls + } + return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls + }); + }; + AutoScroller.prototype.queryScrollEls = function (scrollStartEl) { + var els = []; + for (var _i = 0, _a = this.scrollQuery; _i < _a.length; _i++) { + var query = _a[_i]; + if (typeof query === 'object') { + els.push(query); + } + else { + els.push.apply(els, Array.prototype.slice.call((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getElRoot)(scrollStartEl).querySelectorAll(query))); + } + } + return els; + }; + return AutoScroller; +}()); + +/* +Monitors dragging on an element. Has a number of high-level features: +- minimum distance required before dragging +- minimum wait time ("delay") before dragging +- a mirror element that follows the pointer +*/ +var FeaturefulElementDragging = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(FeaturefulElementDragging, _super); + function FeaturefulElementDragging(containerEl, selector) { + var _this = _super.call(this, containerEl) || this; + _this.containerEl = containerEl; + // options that can be directly set by caller + // the caller can also set the PointerDragging's options as well + _this.delay = null; + _this.minDistance = 0; + _this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag + _this.mirrorNeedsRevert = false; + _this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup + _this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation + _this.isDelayEnded = false; + _this.isDistanceSurpassed = false; + _this.delayTimeoutId = null; + _this.onPointerDown = function (ev) { + if (!_this.isDragging) { // so new drag doesn't happen while revert animation is going + _this.isInteracting = true; + _this.isDelayEnded = false; + _this.isDistanceSurpassed = false; + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.preventSelection)(document.body); + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.preventContextMenu)(document.body); + // prevent links from being visited if there's an eventual drag. + // also prevents selection in older browsers (maybe?). + // not necessary for touch, besides, browser would complain about passiveness. + if (!ev.isTouch) { + ev.origEvent.preventDefault(); + } + _this.emitter.trigger('pointerdown', ev); + if (_this.isInteracting && // not destroyed via pointerdown handler + !_this.pointer.shouldIgnoreMove) { + // actions related to initiating dragstart+dragmove+dragend... + _this.mirror.setIsVisible(false); // reset. caller must set-visible + _this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down + _this.startDelay(ev); + if (!_this.minDistance) { + _this.handleDistanceSurpassed(ev); + } + } + } + }; + _this.onPointerMove = function (ev) { + if (_this.isInteracting) { + _this.emitter.trigger('pointermove', ev); + if (!_this.isDistanceSurpassed) { + var minDistance = _this.minDistance; + var distanceSq = void 0; // current distance from the origin, squared + var deltaX = ev.deltaX, deltaY = ev.deltaY; + distanceSq = deltaX * deltaX + deltaY * deltaY; + if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem + _this.handleDistanceSurpassed(ev); + } + } + if (_this.isDragging) { + // a real pointer move? (not one simulated by scrolling) + if (ev.origEvent.type !== 'scroll') { + _this.mirror.handleMove(ev.pageX, ev.pageY); + _this.autoScroller.handleMove(ev.pageX, ev.pageY); + } + _this.emitter.trigger('dragmove', ev); + } + } + }; + _this.onPointerUp = function (ev) { + if (_this.isInteracting) { + _this.isInteracting = false; + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.allowSelection)(document.body); + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.allowContextMenu)(document.body); + _this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert + if (_this.isDragging) { + _this.autoScroller.stop(); + _this.tryStopDrag(ev); // which will stop the mirror + } + if (_this.delayTimeoutId) { + clearTimeout(_this.delayTimeoutId); + _this.delayTimeoutId = null; + } + } + }; + var pointer = _this.pointer = new PointerDragging(containerEl); + pointer.emitter.on('pointerdown', _this.onPointerDown); + pointer.emitter.on('pointermove', _this.onPointerMove); + pointer.emitter.on('pointerup', _this.onPointerUp); + if (selector) { + pointer.selector = selector; + } + _this.mirror = new ElementMirror(); + _this.autoScroller = new AutoScroller(); + return _this; + } + FeaturefulElementDragging.prototype.destroy = function () { + this.pointer.destroy(); + // HACK: simulate a pointer-up to end the current drag + // TODO: fire 'dragend' directly and stop interaction. discourage use of pointerup event (b/c might not fire) + this.onPointerUp({}); + }; + FeaturefulElementDragging.prototype.startDelay = function (ev) { + var _this = this; + if (typeof this.delay === 'number') { + this.delayTimeoutId = setTimeout(function () { + _this.delayTimeoutId = null; + _this.handleDelayEnd(ev); + }, this.delay); // not assignable to number! + } + else { + this.handleDelayEnd(ev); + } + }; + FeaturefulElementDragging.prototype.handleDelayEnd = function (ev) { + this.isDelayEnded = true; + this.tryStartDrag(ev); + }; + FeaturefulElementDragging.prototype.handleDistanceSurpassed = function (ev) { + this.isDistanceSurpassed = true; + this.tryStartDrag(ev); + }; + FeaturefulElementDragging.prototype.tryStartDrag = function (ev) { + if (this.isDelayEnded && this.isDistanceSurpassed) { + if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) { + this.isDragging = true; + this.mirrorNeedsRevert = false; + this.autoScroller.start(ev.pageX, ev.pageY, this.containerEl); + this.emitter.trigger('dragstart', ev); + if (this.touchScrollAllowed === false) { + this.pointer.cancelTouchScroll(); + } + } + } + }; + FeaturefulElementDragging.prototype.tryStopDrag = function (ev) { + // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events + // that come from the document to fire beforehand. much more convenient this way. + this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev)); + }; + FeaturefulElementDragging.prototype.stopDrag = function (ev) { + this.isDragging = false; + this.emitter.trigger('dragend', ev); + }; + // fill in the implementations... + FeaturefulElementDragging.prototype.setIgnoreMove = function (bool) { + this.pointer.shouldIgnoreMove = bool; + }; + FeaturefulElementDragging.prototype.setMirrorIsVisible = function (bool) { + this.mirror.setIsVisible(bool); + }; + FeaturefulElementDragging.prototype.setMirrorNeedsRevert = function (bool) { + this.mirrorNeedsRevert = bool; + }; + FeaturefulElementDragging.prototype.setAutoScrollEnabled = function (bool) { + this.autoScroller.isEnabled = bool; + }; + return FeaturefulElementDragging; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.ElementDragging)); + +/* +When this class is instantiated, it records the offset of an element (relative to the document topleft), +and continues to monitor scrolling, updating the cached coordinates if it needs to. +Does not access the DOM after instantiation, so highly performant. + +Also keeps track of all scrolling/overflow:hidden containers that are parents of the given element +and an determine if a given point is inside the combined clipping rectangle. +*/ +var OffsetTracker = /** @class */ (function () { + function OffsetTracker(el) { + this.origRect = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.computeRect)(el); + // will work fine for divs that have overflow:hidden + this.scrollCaches = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getClippingParents)(el).map(function (scrollEl) { return new ElementScrollGeomCache(scrollEl, true); }); + } + OffsetTracker.prototype.destroy = function () { + for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { + var scrollCache = _a[_i]; + scrollCache.destroy(); + } + }; + OffsetTracker.prototype.computeLeft = function () { + var left = this.origRect.left; + for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { + var scrollCache = _a[_i]; + left += scrollCache.origScrollLeft - scrollCache.getScrollLeft(); + } + return left; + }; + OffsetTracker.prototype.computeTop = function () { + var top = this.origRect.top; + for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { + var scrollCache = _a[_i]; + top += scrollCache.origScrollTop - scrollCache.getScrollTop(); + } + return top; + }; + OffsetTracker.prototype.isWithinClipping = function (pageX, pageY) { + var point = { left: pageX, top: pageY }; + for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { + var scrollCache = _a[_i]; + if (!isIgnoredClipping(scrollCache.getEventTarget()) && + !(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.pointInsideRect)(point, scrollCache.clientRect)) { + return false; + } + } + return true; + }; + return OffsetTracker; +}()); +// certain clipping containers should never constrain interactions, like and +// https://github.com/fullcalendar/fullcalendar/issues/3615 +function isIgnoredClipping(node) { + var tagName = node.tagName; + return tagName === 'HTML' || tagName === 'BODY'; +} + +/* +Tracks movement over multiple droppable areas (aka "hits") +that exist in one or more DateComponents. +Relies on an existing draggable. + +emits: +- pointerdown +- dragstart +- hitchange - fires initially, even if not over a hit +- pointerup +- (hitchange - again, to null, if ended over a hit) +- dragend +*/ +var HitDragging = /** @class */ (function () { + function HitDragging(dragging, droppableStore) { + var _this = this; + // options that can be set by caller + this.useSubjectCenter = false; + this.requireInitial = true; // if doesn't start out on a hit, won't emit any events + this.initialHit = null; + this.movingHit = null; + this.finalHit = null; // won't ever be populated if shouldIgnoreMove + this.handlePointerDown = function (ev) { + var dragging = _this.dragging; + _this.initialHit = null; + _this.movingHit = null; + _this.finalHit = null; + _this.prepareHits(); + _this.processFirstCoord(ev); + if (_this.initialHit || !_this.requireInitial) { + dragging.setIgnoreMove(false); + // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :( + _this.emitter.trigger('pointerdown', ev); + } + else { + dragging.setIgnoreMove(true); + } + }; + this.handleDragStart = function (ev) { + _this.emitter.trigger('dragstart', ev); + _this.handleMove(ev, true); // force = fire even if initially null + }; + this.handleDragMove = function (ev) { + _this.emitter.trigger('dragmove', ev); + _this.handleMove(ev); + }; + this.handlePointerUp = function (ev) { + _this.releaseHits(); + _this.emitter.trigger('pointerup', ev); + }; + this.handleDragEnd = function (ev) { + if (_this.movingHit) { + _this.emitter.trigger('hitupdate', null, true, ev); + } + _this.finalHit = _this.movingHit; + _this.movingHit = null; + _this.emitter.trigger('dragend', ev); + }; + this.droppableStore = droppableStore; + dragging.emitter.on('pointerdown', this.handlePointerDown); + dragging.emitter.on('dragstart', this.handleDragStart); + dragging.emitter.on('dragmove', this.handleDragMove); + dragging.emitter.on('pointerup', this.handlePointerUp); + dragging.emitter.on('dragend', this.handleDragEnd); + this.dragging = dragging; + this.emitter = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.Emitter(); + } + // sets initialHit + // sets coordAdjust + HitDragging.prototype.processFirstCoord = function (ev) { + var origPoint = { left: ev.pageX, top: ev.pageY }; + var adjustedPoint = origPoint; + var subjectEl = ev.subjectEl; + var subjectRect; + if (subjectEl instanceof HTMLElement) { // i.e. not a Document/ShadowRoot + subjectRect = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.computeRect)(subjectEl); + adjustedPoint = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.constrainPoint)(adjustedPoint, subjectRect); + } + var initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top); + if (initialHit) { + if (this.useSubjectCenter && subjectRect) { + var slicedSubjectRect = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.intersectRects)(subjectRect, initialHit.rect); + if (slicedSubjectRect) { + adjustedPoint = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getRectCenter)(slicedSubjectRect); + } + } + this.coordAdjust = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.diffPoints)(adjustedPoint, origPoint); + } + else { + this.coordAdjust = { left: 0, top: 0 }; + } + }; + HitDragging.prototype.handleMove = function (ev, forceHandle) { + var hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top); + if (forceHandle || !isHitsEqual(this.movingHit, hit)) { + this.movingHit = hit; + this.emitter.trigger('hitupdate', hit, false, ev); + } + }; + HitDragging.prototype.prepareHits = function () { + this.offsetTrackers = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.mapHash)(this.droppableStore, function (interactionSettings) { + interactionSettings.component.prepareHits(); + return new OffsetTracker(interactionSettings.el); + }); + }; + HitDragging.prototype.releaseHits = function () { + var offsetTrackers = this.offsetTrackers; + for (var id in offsetTrackers) { + offsetTrackers[id].destroy(); + } + this.offsetTrackers = {}; + }; + HitDragging.prototype.queryHitForOffset = function (offsetLeft, offsetTop) { + var _a = this, droppableStore = _a.droppableStore, offsetTrackers = _a.offsetTrackers; + var bestHit = null; + for (var id in droppableStore) { + var component = droppableStore[id].component; + var offsetTracker = offsetTrackers[id]; + if (offsetTracker && // wasn't destroyed mid-drag + offsetTracker.isWithinClipping(offsetLeft, offsetTop)) { + var originLeft = offsetTracker.computeLeft(); + var originTop = offsetTracker.computeTop(); + var positionLeft = offsetLeft - originLeft; + var positionTop = offsetTop - originTop; + var origRect = offsetTracker.origRect; + var width = origRect.right - origRect.left; + var height = origRect.bottom - origRect.top; + if ( + // must be within the element's bounds + positionLeft >= 0 && positionLeft < width && + positionTop >= 0 && positionTop < height) { + var hit = component.queryHit(positionLeft, positionTop, width, height); + if (hit && ( + // make sure the hit is within activeRange, meaning it's not a dead cell + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.rangeContainsRange)(hit.dateProfile.activeRange, hit.dateSpan.range)) && + (!bestHit || hit.layer > bestHit.layer)) { + hit.componentId = id; + hit.context = component.context; + // TODO: better way to re-orient rectangle + hit.rect.left += originLeft; + hit.rect.right += originLeft; + hit.rect.top += originTop; + hit.rect.bottom += originTop; + bestHit = hit; + } + } + } + } + return bestHit; + }; + return HitDragging; +}()); +function isHitsEqual(hit0, hit1) { + if (!hit0 && !hit1) { + return true; + } + if (Boolean(hit0) !== Boolean(hit1)) { + return false; + } + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.isDateSpansEqual)(hit0.dateSpan, hit1.dateSpan); +} + +function buildDatePointApiWithContext(dateSpan, context) { + var props = {}; + for (var _i = 0, _a = context.pluginHooks.datePointTransforms; _i < _a.length; _i++) { + var transform = _a[_i]; + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)(props, transform(dateSpan, context)); + } + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)(props, buildDatePointApi(dateSpan, context.dateEnv)); + return props; +} +function buildDatePointApi(span, dateEnv) { + return { + date: dateEnv.toDate(span.range.start), + dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }), + allDay: span.allDay, + }; +} + +/* +Monitors when the user clicks on a specific date/time of a component. +A pointerdown+pointerup on the same "hit" constitutes a click. +*/ +var DateClicking = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(DateClicking, _super); + function DateClicking(settings) { + var _this = _super.call(this, settings) || this; + _this.handlePointerDown = function (pev) { + var dragging = _this.dragging; + var downEl = pev.origEvent.target; + // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired + dragging.setIgnoreMove(!_this.component.isValidDateDownEl(downEl)); + }; + // won't even fire if moving was ignored + _this.handleDragEnd = function (ev) { + var component = _this.component; + var pointer = _this.dragging.pointer; + if (!pointer.wasTouchScroll) { + var _a = _this.hitDragging, initialHit = _a.initialHit, finalHit = _a.finalHit; + if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) { + var context = component.context; + var arg = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, buildDatePointApiWithContext(initialHit.dateSpan, context)), { dayEl: initialHit.dayEl, jsEvent: ev.origEvent, view: context.viewApi || context.calendarApi.view }); + context.emitter.trigger('dateClick', arg); + } + } + }; + // we DO want to watch pointer moves because otherwise finalHit won't get populated + _this.dragging = new FeaturefulElementDragging(settings.el); + _this.dragging.autoScroller.isEnabled = false; + var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.interactionSettingsToStore)(settings)); + hitDragging.emitter.on('pointerdown', _this.handlePointerDown); + hitDragging.emitter.on('dragend', _this.handleDragEnd); + return _this; + } + DateClicking.prototype.destroy = function () { + this.dragging.destroy(); + }; + return DateClicking; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.Interaction)); + +/* +Tracks when the user selects a portion of time of a component, +constituted by a drag over date cells, with a possible delay at the beginning of the drag. +*/ +var DateSelecting = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(DateSelecting, _super); + function DateSelecting(settings) { + var _this = _super.call(this, settings) || this; + _this.dragSelection = null; + _this.handlePointerDown = function (ev) { + var _a = _this, component = _a.component, dragging = _a.dragging; + var options = component.context.options; + var canSelect = options.selectable && + component.isValidDateDownEl(ev.origEvent.target); + // don't bother to watch expensive moves if component won't do selection + dragging.setIgnoreMove(!canSelect); + // if touch, require user to hold down + dragging.delay = ev.isTouch ? getComponentTouchDelay$1(component) : null; + }; + _this.handleDragStart = function (ev) { + _this.component.context.calendarApi.unselect(ev); // unselect previous selections + }; + _this.handleHitUpdate = function (hit, isFinal) { + var context = _this.component.context; + var dragSelection = null; + var isInvalid = false; + if (hit) { + var initialHit = _this.hitDragging.initialHit; + var disallowed = hit.componentId === initialHit.componentId + && _this.isHitComboAllowed + && !_this.isHitComboAllowed(initialHit, hit); + if (!disallowed) { + dragSelection = joinHitsIntoSelection(initialHit, hit, context.pluginHooks.dateSelectionTransformers); + } + if (!dragSelection || !(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.isDateSelectionValid)(dragSelection, hit.dateProfile, context)) { + isInvalid = true; + dragSelection = null; + } + } + if (dragSelection) { + context.dispatch({ type: 'SELECT_DATES', selection: dragSelection }); + } + else if (!isFinal) { // only unselect if moved away while dragging + context.dispatch({ type: 'UNSELECT_DATES' }); + } + if (!isInvalid) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.enableCursor)(); + } + else { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.disableCursor)(); + } + if (!isFinal) { + _this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging + } + }; + _this.handlePointerUp = function (pev) { + if (_this.dragSelection) { + // selection is already rendered, so just need to report selection + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.triggerDateSelect)(_this.dragSelection, pev, _this.component.context); + _this.dragSelection = null; + } + }; + var component = settings.component; + var options = component.context.options; + var dragging = _this.dragging = new FeaturefulElementDragging(settings.el); + dragging.touchScrollAllowed = false; + dragging.minDistance = options.selectMinDistance || 0; + dragging.autoScroller.isEnabled = options.dragScroll; + var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.interactionSettingsToStore)(settings)); + hitDragging.emitter.on('pointerdown', _this.handlePointerDown); + hitDragging.emitter.on('dragstart', _this.handleDragStart); + hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); + hitDragging.emitter.on('pointerup', _this.handlePointerUp); + return _this; + } + DateSelecting.prototype.destroy = function () { + this.dragging.destroy(); + }; + return DateSelecting; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.Interaction)); +function getComponentTouchDelay$1(component) { + var options = component.context.options; + var delay = options.selectLongPressDelay; + if (delay == null) { + delay = options.longPressDelay; + } + return delay; +} +function joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) { + var dateSpan0 = hit0.dateSpan; + var dateSpan1 = hit1.dateSpan; + var ms = [ + dateSpan0.range.start, + dateSpan0.range.end, + dateSpan1.range.start, + dateSpan1.range.end, + ]; + ms.sort(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.compareNumbers); + var props = {}; + for (var _i = 0, dateSelectionTransformers_1 = dateSelectionTransformers; _i < dateSelectionTransformers_1.length; _i++) { + var transformer = dateSelectionTransformers_1[_i]; + var res = transformer(hit0, hit1); + if (res === false) { + return null; + } + if (res) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)(props, res); + } + } + props.range = { start: ms[0], end: ms[3] }; + props.allDay = dateSpan0.allDay; + return props; +} + +var EventDragging = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(EventDragging, _super); + function EventDragging(settings) { + var _this = _super.call(this, settings) || this; + // internal state + _this.subjectEl = null; + _this.subjectSeg = null; // the seg being selected/dragged + _this.isDragging = false; + _this.eventRange = null; + _this.relevantEvents = null; // the events being dragged + _this.receivingContext = null; + _this.validMutation = null; + _this.mutatedRelevantEvents = null; + _this.handlePointerDown = function (ev) { + var origTarget = ev.origEvent.target; + var _a = _this, component = _a.component, dragging = _a.dragging; + var mirror = dragging.mirror; + var options = component.context.options; + var initialContext = component.context; + _this.subjectEl = ev.subjectEl; + var subjectSeg = _this.subjectSeg = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getElSeg)(ev.subjectEl); + var eventRange = _this.eventRange = subjectSeg.eventRange; + var eventInstanceId = eventRange.instance.instanceId; + _this.relevantEvents = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getRelevantEvents)(initialContext.getCurrentData().eventStore, eventInstanceId); + dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance; + dragging.delay = + // only do a touch delay if touch and this event hasn't been selected yet + (ev.isTouch && eventInstanceId !== component.props.eventSelection) ? + getComponentTouchDelay(component) : + null; + if (options.fixedMirrorParent) { + mirror.parentNode = options.fixedMirrorParent; + } + else { + mirror.parentNode = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementClosest)(origTarget, '.fc'); + } + mirror.revertDuration = options.dragRevertDuration; + var isValid = component.isValidSegDownEl(origTarget) && + !(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementClosest)(origTarget, '.fc-event-resizer'); // NOT on a resizer + dragging.setIgnoreMove(!isValid); + // disable dragging for elements that are resizable (ie, selectable) + // but are not draggable + _this.isDragging = isValid && + ev.subjectEl.classList.contains('fc-event-draggable'); + }; + _this.handleDragStart = function (ev) { + var initialContext = _this.component.context; + var eventRange = _this.eventRange; + var eventInstanceId = eventRange.instance.instanceId; + if (ev.isTouch) { + // need to select a different event? + if (eventInstanceId !== _this.component.props.eventSelection) { + initialContext.dispatch({ type: 'SELECT_EVENT', eventInstanceId: eventInstanceId }); + } + } + else { + // if now using mouse, but was previous touch interaction, clear selected event + initialContext.dispatch({ type: 'UNSELECT_EVENT' }); + } + if (_this.isDragging) { + initialContext.calendarApi.unselect(ev); // unselect *date* selection + initialContext.emitter.trigger('eventDragStart', { + el: _this.subjectEl, + event: new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(initialContext, eventRange.def, eventRange.instance), + jsEvent: ev.origEvent, + view: initialContext.viewApi, + }); + } + }; + _this.handleHitUpdate = function (hit, isFinal) { + if (!_this.isDragging) { + return; + } + var relevantEvents = _this.relevantEvents; + var initialHit = _this.hitDragging.initialHit; + var initialContext = _this.component.context; + // states based on new hit + var receivingContext = null; + var mutation = null; + var mutatedRelevantEvents = null; + var isInvalid = false; + var interaction = { + affectedEvents: relevantEvents, + mutatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEmptyEventStore)(), + isEvent: true, + }; + if (hit) { + receivingContext = hit.context; + var receivingOptions = receivingContext.options; + if (initialContext === receivingContext || + (receivingOptions.editable && receivingOptions.droppable)) { + mutation = computeEventMutation(initialHit, hit, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers); + if (mutation) { + mutatedRelevantEvents = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.applyMutationToEventStore)(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext); + interaction.mutatedEvents = mutatedRelevantEvents; + if (!(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.isInteractionValid)(interaction, hit.dateProfile, receivingContext)) { + isInvalid = true; + mutation = null; + mutatedRelevantEvents = null; + interaction.mutatedEvents = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEmptyEventStore)(); + } + } + } + else { + receivingContext = null; + } + } + _this.displayDrag(receivingContext, interaction); + if (!isInvalid) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.enableCursor)(); + } + else { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.disableCursor)(); + } + if (!isFinal) { + if (initialContext === receivingContext && // TODO: write test for this + isHitsEqual(initialHit, hit)) { + mutation = null; + } + _this.dragging.setMirrorNeedsRevert(!mutation); + // render the mirror if no already-rendered mirror + // TODO: wish we could somehow wait for dispatch to guarantee render + _this.dragging.setMirrorIsVisible(!hit || !(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getElRoot)(_this.subjectEl).querySelector('.fc-event-mirror')); + // assign states based on new hit + _this.receivingContext = receivingContext; + _this.validMutation = mutation; + _this.mutatedRelevantEvents = mutatedRelevantEvents; + } + }; + _this.handlePointerUp = function () { + if (!_this.isDragging) { + _this.cleanup(); // because handleDragEnd won't fire + } + }; + _this.handleDragEnd = function (ev) { + if (_this.isDragging) { + var initialContext_1 = _this.component.context; + var initialView = initialContext_1.viewApi; + var _a = _this, receivingContext_1 = _a.receivingContext, validMutation = _a.validMutation; + var eventDef = _this.eventRange.def; + var eventInstance = _this.eventRange.instance; + var eventApi = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(initialContext_1, eventDef, eventInstance); + var relevantEvents_1 = _this.relevantEvents; + var mutatedRelevantEvents_1 = _this.mutatedRelevantEvents; + var finalHit = _this.hitDragging.finalHit; + _this.clearDrag(); // must happen after revert animation + initialContext_1.emitter.trigger('eventDragStop', { + el: _this.subjectEl, + event: eventApi, + jsEvent: ev.origEvent, + view: initialView, + }); + if (validMutation) { + // dropped within same calendar + if (receivingContext_1 === initialContext_1) { + var updatedEventApi = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(initialContext_1, mutatedRelevantEvents_1.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents_1.instances[eventInstance.instanceId] : null); + initialContext_1.dispatch({ + type: 'MERGE_EVENTS', + eventStore: mutatedRelevantEvents_1, + }); + var eventChangeArg = { + oldEvent: eventApi, + event: updatedEventApi, + relatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.buildEventApis)(mutatedRelevantEvents_1, initialContext_1, eventInstance), + revert: function () { + initialContext_1.dispatch({ + type: 'MERGE_EVENTS', + eventStore: relevantEvents_1, // the pre-change data + }); + }, + }; + var transformed = {}; + for (var _i = 0, _b = initialContext_1.getCurrentData().pluginHooks.eventDropTransformers; _i < _b.length; _i++) { + var transformer = _b[_i]; + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)(transformed, transformer(validMutation, initialContext_1)); + } + initialContext_1.emitter.trigger('eventDrop', (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, eventChangeArg), transformed), { el: ev.subjectEl, delta: validMutation.datesDelta, jsEvent: ev.origEvent, view: initialView })); + initialContext_1.emitter.trigger('eventChange', eventChangeArg); + // dropped in different calendar + } + else if (receivingContext_1) { + var eventRemoveArg = { + event: eventApi, + relatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.buildEventApis)(relevantEvents_1, initialContext_1, eventInstance), + revert: function () { + initialContext_1.dispatch({ + type: 'MERGE_EVENTS', + eventStore: relevantEvents_1, + }); + }, + }; + initialContext_1.emitter.trigger('eventLeave', (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, eventRemoveArg), { draggedEl: ev.subjectEl, view: initialView })); + initialContext_1.dispatch({ + type: 'REMOVE_EVENTS', + eventStore: relevantEvents_1, + }); + initialContext_1.emitter.trigger('eventRemove', eventRemoveArg); + var addedEventDef = mutatedRelevantEvents_1.defs[eventDef.defId]; + var addedEventInstance = mutatedRelevantEvents_1.instances[eventInstance.instanceId]; + var addedEventApi = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(receivingContext_1, addedEventDef, addedEventInstance); + receivingContext_1.dispatch({ + type: 'MERGE_EVENTS', + eventStore: mutatedRelevantEvents_1, + }); + var eventAddArg = { + event: addedEventApi, + relatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.buildEventApis)(mutatedRelevantEvents_1, receivingContext_1, addedEventInstance), + revert: function () { + receivingContext_1.dispatch({ + type: 'REMOVE_EVENTS', + eventStore: mutatedRelevantEvents_1, + }); + }, + }; + receivingContext_1.emitter.trigger('eventAdd', eventAddArg); + if (ev.isTouch) { + receivingContext_1.dispatch({ + type: 'SELECT_EVENT', + eventInstanceId: eventInstance.instanceId, + }); + } + receivingContext_1.emitter.trigger('drop', (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext_1)), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.context.viewApi })); + receivingContext_1.emitter.trigger('eventReceive', (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, eventAddArg), { draggedEl: ev.subjectEl, view: finalHit.context.viewApi })); + } + } + else { + initialContext_1.emitter.trigger('_noEventDrop'); + } + } + _this.cleanup(); + }; + var component = _this.component; + var options = component.context.options; + var dragging = _this.dragging = new FeaturefulElementDragging(settings.el); + dragging.pointer.selector = EventDragging.SELECTOR; + dragging.touchScrollAllowed = false; + dragging.autoScroller.isEnabled = options.dragScroll; + var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.interactionSettingsStore); + hitDragging.useSubjectCenter = settings.useEventCenter; + hitDragging.emitter.on('pointerdown', _this.handlePointerDown); + hitDragging.emitter.on('dragstart', _this.handleDragStart); + hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); + hitDragging.emitter.on('pointerup', _this.handlePointerUp); + hitDragging.emitter.on('dragend', _this.handleDragEnd); + return _this; + } + EventDragging.prototype.destroy = function () { + this.dragging.destroy(); + }; + // render a drag state on the next receivingCalendar + EventDragging.prototype.displayDrag = function (nextContext, state) { + var initialContext = this.component.context; + var prevContext = this.receivingContext; + // does the previous calendar need to be cleared? + if (prevContext && prevContext !== nextContext) { + // does the initial calendar need to be cleared? + // if so, don't clear all the way. we still need to to hide the affectedEvents + if (prevContext === initialContext) { + prevContext.dispatch({ + type: 'SET_EVENT_DRAG', + state: { + affectedEvents: state.affectedEvents, + mutatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEmptyEventStore)(), + isEvent: true, + }, + }); + // completely clear the old calendar if it wasn't the initial + } + else { + prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' }); + } + } + if (nextContext) { + nextContext.dispatch({ type: 'SET_EVENT_DRAG', state: state }); + } + }; + EventDragging.prototype.clearDrag = function () { + var initialCalendar = this.component.context; + var receivingContext = this.receivingContext; + if (receivingContext) { + receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' }); + } + // the initial calendar might have an dummy drag state from displayDrag + if (initialCalendar !== receivingContext) { + initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); + } + }; + EventDragging.prototype.cleanup = function () { + this.subjectSeg = null; + this.isDragging = false; + this.eventRange = null; + this.relevantEvents = null; + this.receivingContext = null; + this.validMutation = null; + this.mutatedRelevantEvents = null; + }; + // TODO: test this in IE11 + // QUESTION: why do we need it on the resizable??? + EventDragging.SELECTOR = '.fc-event-draggable, .fc-event-resizable'; + return EventDragging; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.Interaction)); +function computeEventMutation(hit0, hit1, massagers) { + var dateSpan0 = hit0.dateSpan; + var dateSpan1 = hit1.dateSpan; + var date0 = dateSpan0.range.start; + var date1 = dateSpan1.range.start; + var standardProps = {}; + if (dateSpan0.allDay !== dateSpan1.allDay) { + standardProps.allDay = dateSpan1.allDay; + standardProps.hasEnd = hit1.context.options.allDayMaintainDuration; + if (dateSpan1.allDay) { + // means date1 is already start-of-day, + // but date0 needs to be converted + date0 = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.startOfDay)(date0); + } + } + var delta = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.diffDates)(date0, date1, hit0.context.dateEnv, hit0.componentId === hit1.componentId ? + hit0.largeUnit : + null); + if (delta.milliseconds) { // has hours/minutes/seconds + standardProps.allDay = false; + } + var mutation = { + datesDelta: delta, + standardProps: standardProps, + }; + for (var _i = 0, massagers_1 = massagers; _i < massagers_1.length; _i++) { + var massager = massagers_1[_i]; + massager(mutation, hit0, hit1); + } + return mutation; +} +function getComponentTouchDelay(component) { + var options = component.context.options; + var delay = options.eventLongPressDelay; + if (delay == null) { + delay = options.longPressDelay; + } + return delay; +} + +var EventResizing = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(EventResizing, _super); + function EventResizing(settings) { + var _this = _super.call(this, settings) || this; + // internal state + _this.draggingSegEl = null; + _this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg? + _this.eventRange = null; + _this.relevantEvents = null; + _this.validMutation = null; + _this.mutatedRelevantEvents = null; + _this.handlePointerDown = function (ev) { + var component = _this.component; + var segEl = _this.querySegEl(ev); + var seg = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getElSeg)(segEl); + var eventRange = _this.eventRange = seg.eventRange; + _this.dragging.minDistance = component.context.options.eventDragMinDistance; + // if touch, need to be working with a selected event + _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) || + (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId)); + }; + _this.handleDragStart = function (ev) { + var context = _this.component.context; + var eventRange = _this.eventRange; + _this.relevantEvents = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getRelevantEvents)(context.getCurrentData().eventStore, _this.eventRange.instance.instanceId); + var segEl = _this.querySegEl(ev); + _this.draggingSegEl = segEl; + _this.draggingSeg = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getElSeg)(segEl); + context.calendarApi.unselect(); + context.emitter.trigger('eventResizeStart', { + el: segEl, + event: new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(context, eventRange.def, eventRange.instance), + jsEvent: ev.origEvent, + view: context.viewApi, + }); + }; + _this.handleHitUpdate = function (hit, isFinal, ev) { + var context = _this.component.context; + var relevantEvents = _this.relevantEvents; + var initialHit = _this.hitDragging.initialHit; + var eventInstance = _this.eventRange.instance; + var mutation = null; + var mutatedRelevantEvents = null; + var isInvalid = false; + var interaction = { + affectedEvents: relevantEvents, + mutatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEmptyEventStore)(), + isEvent: true, + }; + if (hit) { + var disallowed = hit.componentId === initialHit.componentId + && _this.isHitComboAllowed + && !_this.isHitComboAllowed(initialHit, hit); + if (!disallowed) { + mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-event-resizer-start'), eventInstance.range); + } + } + if (mutation) { + mutatedRelevantEvents = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.applyMutationToEventStore)(relevantEvents, context.getCurrentData().eventUiBases, mutation, context); + interaction.mutatedEvents = mutatedRelevantEvents; + if (!(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.isInteractionValid)(interaction, hit.dateProfile, context)) { + isInvalid = true; + mutation = null; + mutatedRelevantEvents = null; + interaction.mutatedEvents = null; + } + } + if (mutatedRelevantEvents) { + context.dispatch({ + type: 'SET_EVENT_RESIZE', + state: interaction, + }); + } + else { + context.dispatch({ type: 'UNSET_EVENT_RESIZE' }); + } + if (!isInvalid) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.enableCursor)(); + } + else { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.disableCursor)(); + } + if (!isFinal) { + if (mutation && isHitsEqual(initialHit, hit)) { + mutation = null; + } + _this.validMutation = mutation; + _this.mutatedRelevantEvents = mutatedRelevantEvents; + } + }; + _this.handleDragEnd = function (ev) { + var context = _this.component.context; + var eventDef = _this.eventRange.def; + var eventInstance = _this.eventRange.instance; + var eventApi = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(context, eventDef, eventInstance); + var relevantEvents = _this.relevantEvents; + var mutatedRelevantEvents = _this.mutatedRelevantEvents; + context.emitter.trigger('eventResizeStop', { + el: _this.draggingSegEl, + event: eventApi, + jsEvent: ev.origEvent, + view: context.viewApi, + }); + if (_this.validMutation) { + var updatedEventApi = new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(context, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null); + context.dispatch({ + type: 'MERGE_EVENTS', + eventStore: mutatedRelevantEvents, + }); + var eventChangeArg = { + oldEvent: eventApi, + event: updatedEventApi, + relatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.buildEventApis)(mutatedRelevantEvents, context, eventInstance), + revert: function () { + context.dispatch({ + type: 'MERGE_EVENTS', + eventStore: relevantEvents, // the pre-change events + }); + }, + }; + context.emitter.trigger('eventResize', (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, eventChangeArg), { el: _this.draggingSegEl, startDelta: _this.validMutation.startDelta || (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createDuration)(0), endDelta: _this.validMutation.endDelta || (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createDuration)(0), jsEvent: ev.origEvent, view: context.viewApi })); + context.emitter.trigger('eventChange', eventChangeArg); + } + else { + context.emitter.trigger('_noEventResize'); + } + // reset all internal state + _this.draggingSeg = null; + _this.relevantEvents = null; + _this.validMutation = null; + // okay to keep eventInstance around. useful to set it in handlePointerDown + }; + var component = settings.component; + var dragging = _this.dragging = new FeaturefulElementDragging(settings.el); + dragging.pointer.selector = '.fc-event-resizer'; + dragging.touchScrollAllowed = false; + dragging.autoScroller.isEnabled = component.context.options.dragScroll; + var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.interactionSettingsToStore)(settings)); + hitDragging.emitter.on('pointerdown', _this.handlePointerDown); + hitDragging.emitter.on('dragstart', _this.handleDragStart); + hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); + hitDragging.emitter.on('dragend', _this.handleDragEnd); + return _this; + } + EventResizing.prototype.destroy = function () { + this.dragging.destroy(); + }; + EventResizing.prototype.querySegEl = function (ev) { + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementClosest)(ev.subjectEl, '.fc-event'); + }; + return EventResizing; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.Interaction)); +function computeMutation(hit0, hit1, isFromStart, instanceRange) { + var dateEnv = hit0.context.dateEnv; + var date0 = hit0.dateSpan.range.start; + var date1 = hit1.dateSpan.range.start; + var delta = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.diffDates)(date0, date1, dateEnv, hit0.largeUnit); + if (isFromStart) { + if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) { + return { startDelta: delta }; + } + } + else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) { + return { endDelta: delta }; + } + return null; +} + +var UnselectAuto = /** @class */ (function () { + function UnselectAuto(context) { + var _this = this; + this.context = context; + this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system + this.matchesCancel = false; + this.matchesEvent = false; + this.onSelect = function (selectInfo) { + if (selectInfo.jsEvent) { + _this.isRecentPointerDateSelect = true; + } + }; + this.onDocumentPointerDown = function (pev) { + var unselectCancel = _this.context.options.unselectCancel; + var downEl = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getEventTargetViaRoot)(pev.origEvent); + _this.matchesCancel = !!(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementClosest)(downEl, unselectCancel); + _this.matchesEvent = !!(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementClosest)(downEl, EventDragging.SELECTOR); // interaction started on an event? + }; + this.onDocumentPointerUp = function (pev) { + var context = _this.context; + var documentPointer = _this.documentPointer; + var calendarState = context.getCurrentData(); + // touch-scrolling should never unfocus any type of selection + if (!documentPointer.wasTouchScroll) { + if (calendarState.dateSelection && // an existing date selection? + !_this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp? + ) { + var unselectAuto = context.options.unselectAuto; + if (unselectAuto && (!unselectAuto || !_this.matchesCancel)) { + context.calendarApi.unselect(pev); + } + } + if (calendarState.eventSelection && // an existing event selected? + !_this.matchesEvent // interaction DIDN'T start on an event + ) { + context.dispatch({ type: 'UNSELECT_EVENT' }); + } + } + _this.isRecentPointerDateSelect = false; + }; + var documentPointer = this.documentPointer = new PointerDragging(document); + documentPointer.shouldIgnoreMove = true; + documentPointer.shouldWatchScroll = false; + documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown); + documentPointer.emitter.on('pointerup', this.onDocumentPointerUp); + /* + TODO: better way to know about whether there was a selection with the pointer + */ + context.emitter.on('select', this.onSelect); + } + UnselectAuto.prototype.destroy = function () { + this.context.emitter.off('select', this.onSelect); + this.documentPointer.destroy(); + }; + return UnselectAuto; +}()); + +var OPTION_REFINERS = { + fixedMirrorParent: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, +}; +var LISTENER_REFINERS = { + dateClick: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventDragStart: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventDragStop: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventDrop: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventResizeStart: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventResizeStop: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventResize: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + drop: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventReceive: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, + eventLeave: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.identity, +}; + +/* +Given an already instantiated draggable object for one-or-more elements, +Interprets any dragging as an attempt to drag an events that lives outside +of a calendar onto a calendar. +*/ +var ExternalElementDragging = /** @class */ (function () { + function ExternalElementDragging(dragging, suppliedDragMeta) { + var _this = this; + this.receivingContext = null; + this.droppableEvent = null; // will exist for all drags, even if create:false + this.suppliedDragMeta = null; + this.dragMeta = null; + this.handleDragStart = function (ev) { + _this.dragMeta = _this.buildDragMeta(ev.subjectEl); + }; + this.handleHitUpdate = function (hit, isFinal, ev) { + var dragging = _this.hitDragging.dragging; + var receivingContext = null; + var droppableEvent = null; + var isInvalid = false; + var interaction = { + affectedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEmptyEventStore)(), + mutatedEvents: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEmptyEventStore)(), + isEvent: _this.dragMeta.create, + }; + if (hit) { + receivingContext = hit.context; + if (_this.canDropElOnCalendar(ev.subjectEl, receivingContext)) { + droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingContext); + interaction.mutatedEvents = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.eventTupleToStore)(droppableEvent); + isInvalid = !(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.isInteractionValid)(interaction, hit.dateProfile, receivingContext); + if (isInvalid) { + interaction.mutatedEvents = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEmptyEventStore)(); + droppableEvent = null; + } + } + } + _this.displayDrag(receivingContext, interaction); + // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?) + // TODO: wish we could somehow wait for dispatch to guarantee render + dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-event-mirror')); + if (!isInvalid) { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.enableCursor)(); + } + else { + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.disableCursor)(); + } + if (!isFinal) { + dragging.setMirrorNeedsRevert(!droppableEvent); + _this.receivingContext = receivingContext; + _this.droppableEvent = droppableEvent; + } + }; + this.handleDragEnd = function (pev) { + var _a = _this, receivingContext = _a.receivingContext, droppableEvent = _a.droppableEvent; + _this.clearDrag(); + if (receivingContext && droppableEvent) { + var finalHit = _this.hitDragging.finalHit; + var finalView = finalHit.context.viewApi; + var dragMeta = _this.dragMeta; + receivingContext.emitter.trigger('drop', (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView })); + if (dragMeta.create) { + var addingEvents_1 = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.eventTupleToStore)(droppableEvent); + receivingContext.dispatch({ + type: 'MERGE_EVENTS', + eventStore: addingEvents_1, + }); + if (pev.isTouch) { + receivingContext.dispatch({ + type: 'SELECT_EVENT', + eventInstanceId: droppableEvent.instance.instanceId, + }); + } + // signal that an external event landed + receivingContext.emitter.trigger('eventReceive', { + event: new _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.EventApi(receivingContext, droppableEvent.def, droppableEvent.instance), + relatedEvents: [], + revert: function () { + receivingContext.dispatch({ + type: 'REMOVE_EVENTS', + eventStore: addingEvents_1, + }); + }, + draggedEl: pev.subjectEl, + view: finalView, + }); + } + } + _this.receivingContext = null; + _this.droppableEvent = null; + }; + var hitDragging = this.hitDragging = new HitDragging(dragging, _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.interactionSettingsStore); + hitDragging.requireInitial = false; // will start outside of a component + hitDragging.emitter.on('dragstart', this.handleDragStart); + hitDragging.emitter.on('hitupdate', this.handleHitUpdate); + hitDragging.emitter.on('dragend', this.handleDragEnd); + this.suppliedDragMeta = suppliedDragMeta; + } + ExternalElementDragging.prototype.buildDragMeta = function (subjectEl) { + if (typeof this.suppliedDragMeta === 'object') { + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.parseDragMeta)(this.suppliedDragMeta); + } + if (typeof this.suppliedDragMeta === 'function') { + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.parseDragMeta)(this.suppliedDragMeta(subjectEl)); + } + return getDragMetaFromEl(subjectEl); + }; + ExternalElementDragging.prototype.displayDrag = function (nextContext, state) { + var prevContext = this.receivingContext; + if (prevContext && prevContext !== nextContext) { + prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' }); + } + if (nextContext) { + nextContext.dispatch({ type: 'SET_EVENT_DRAG', state: state }); + } + }; + ExternalElementDragging.prototype.clearDrag = function () { + if (this.receivingContext) { + this.receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' }); + } + }; + ExternalElementDragging.prototype.canDropElOnCalendar = function (el, receivingContext) { + var dropAccept = receivingContext.options.dropAccept; + if (typeof dropAccept === 'function') { + return dropAccept.call(receivingContext.calendarApi, el); + } + if (typeof dropAccept === 'string' && dropAccept) { + return Boolean((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.elementMatches)(el, dropAccept)); + } + return true; + }; + return ExternalElementDragging; +}()); +// Utils for computing event store from the DragMeta +// ---------------------------------------------------------------------------------------------------- +function computeEventForDateSpan(dateSpan, dragMeta, context) { + var defProps = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, dragMeta.leftoverProps); + for (var _i = 0, _a = context.pluginHooks.externalDefTransforms; _i < _a.length; _i++) { + var transform = _a[_i]; + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)(defProps, transform(dateSpan, dragMeta)); + } + var _b = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.refineEventDef)(defProps, context), refined = _b.refined, extra = _b.extra; + var def = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.parseEventDef)(refined, extra, dragMeta.sourceId, dateSpan.allDay, context.options.forceEventDuration || Boolean(dragMeta.duration), // hasEnd + context); + var start = dateSpan.range.start; + // only rely on time info if drop zone is all-day, + // otherwise, we already know the time + if (dateSpan.allDay && dragMeta.startTime) { + start = context.dateEnv.add(start, dragMeta.startTime); + } + var end = dragMeta.duration ? + context.dateEnv.add(start, dragMeta.duration) : + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.getDefaultEventEnd)(dateSpan.allDay, start, context); + var instance = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createEventInstance)(def.defId, { start: start, end: end }); + return { def: def, instance: instance }; +} +// Utils for extracting data from element +// ---------------------------------------------------------------------------------------------------- +function getDragMetaFromEl(el) { + var str = getEmbeddedElData(el, 'event'); + var obj = str ? + JSON.parse(str) : + { create: false }; // if no embedded data, assume no event creation + return (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.parseDragMeta)(obj); +} +_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.config.dataAttrPrefix = ''; +function getEmbeddedElData(el, name) { + var prefix = _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.config.dataAttrPrefix; + var prefixedName = (prefix ? prefix + '-' : '') + name; + return el.getAttribute('data-' + prefixedName) || ''; +} + +/* +Makes an element (that is *external* to any calendar) draggable. +Can pass in data that determines how an event will be created when dropped onto a calendar. +Leverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system. +*/ +var ExternalDraggable = /** @class */ (function () { + function ExternalDraggable(el, settings) { + var _this = this; + if (settings === void 0) { settings = {}; } + this.handlePointerDown = function (ev) { + var dragging = _this.dragging; + var _a = _this.settings, minDistance = _a.minDistance, longPressDelay = _a.longPressDelay; + dragging.minDistance = + minDistance != null ? + minDistance : + (ev.isTouch ? 0 : _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.BASE_OPTION_DEFAULTS.eventDragMinDistance); + dragging.delay = + ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv + (longPressDelay != null ? longPressDelay : _fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.BASE_OPTION_DEFAULTS.longPressDelay) : + 0; + }; + this.handleDragStart = function (ev) { + if (ev.isTouch && + _this.dragging.delay && + ev.subjectEl.classList.contains('fc-event')) { + _this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected'); + } + }; + this.settings = settings; + var dragging = this.dragging = new FeaturefulElementDragging(el); + dragging.touchScrollAllowed = false; + if (settings.itemSelector != null) { + dragging.pointer.selector = settings.itemSelector; + } + if (settings.appendTo != null) { + dragging.mirror.parentNode = settings.appendTo; // TODO: write tests + } + dragging.emitter.on('pointerdown', this.handlePointerDown); + dragging.emitter.on('dragstart', this.handleDragStart); + new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new + } + ExternalDraggable.prototype.destroy = function () { + this.dragging.destroy(); + }; + return ExternalDraggable; +}()); + +/* +Detects when a *THIRD-PARTY* drag-n-drop system interacts with elements. +The third-party system is responsible for drawing the visuals effects of the drag. +This class simply monitors for pointer movements and fires events. +It also has the ability to hide the moving element (the "mirror") during the drag. +*/ +var InferredElementDragging = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(InferredElementDragging, _super); + function InferredElementDragging(containerEl) { + var _this = _super.call(this, containerEl) || this; + _this.shouldIgnoreMove = false; + _this.mirrorSelector = ''; + _this.currentMirrorEl = null; + _this.handlePointerDown = function (ev) { + _this.emitter.trigger('pointerdown', ev); + if (!_this.shouldIgnoreMove) { + // fire dragstart right away. does not support delay or min-distance + _this.emitter.trigger('dragstart', ev); + } + }; + _this.handlePointerMove = function (ev) { + if (!_this.shouldIgnoreMove) { + _this.emitter.trigger('dragmove', ev); + } + }; + _this.handlePointerUp = function (ev) { + _this.emitter.trigger('pointerup', ev); + if (!_this.shouldIgnoreMove) { + // fire dragend right away. does not support a revert animation + _this.emitter.trigger('dragend', ev); + } + }; + var pointer = _this.pointer = new PointerDragging(containerEl); + pointer.emitter.on('pointerdown', _this.handlePointerDown); + pointer.emitter.on('pointermove', _this.handlePointerMove); + pointer.emitter.on('pointerup', _this.handlePointerUp); + return _this; + } + InferredElementDragging.prototype.destroy = function () { + this.pointer.destroy(); + }; + InferredElementDragging.prototype.setIgnoreMove = function (bool) { + this.shouldIgnoreMove = bool; + }; + InferredElementDragging.prototype.setMirrorIsVisible = function (bool) { + if (bool) { + // restore a previously hidden element. + // use the reference in case the selector class has already been removed. + if (this.currentMirrorEl) { + this.currentMirrorEl.style.visibility = ''; + this.currentMirrorEl = null; + } + } + else { + var mirrorEl = this.mirrorSelector + // TODO: somehow query FullCalendars WITHIN shadow-roots + ? document.querySelector(this.mirrorSelector) + : null; + if (mirrorEl) { + this.currentMirrorEl = mirrorEl; + mirrorEl.style.visibility = 'hidden'; + } + } + }; + return InferredElementDragging; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.ElementDragging)); + +/* +Bridges third-party drag-n-drop systems with FullCalendar. +Must be instantiated and destroyed by caller. +*/ +var ThirdPartyDraggable = /** @class */ (function () { + function ThirdPartyDraggable(containerOrSettings, settings) { + var containerEl = document; + if ( + // wish we could just test instanceof EventTarget, but doesn't work in IE11 + containerOrSettings === document || + containerOrSettings instanceof Element) { + containerEl = containerOrSettings; + settings = settings || {}; + } + else { + settings = (containerOrSettings || {}); + } + var dragging = this.dragging = new InferredElementDragging(containerEl); + if (typeof settings.itemSelector === 'string') { + dragging.pointer.selector = settings.itemSelector; + } + else if (containerEl === document) { + dragging.pointer.selector = '[data-event]'; + } + if (typeof settings.mirrorSelector === 'string') { + dragging.mirrorSelector = settings.mirrorSelector; + } + new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new + } + ThirdPartyDraggable.prototype.destroy = function () { + this.dragging.destroy(); + }; + return ThirdPartyDraggable; +}()); + +var main = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_0__.createPlugin)({ + componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing], + calendarInteractions: [UnselectAuto], + elementDraggingImpl: FeaturefulElementDragging, + optionRefiners: OPTION_REFINERS, + listenerRefiners: LISTENER_REFINERS, +}); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (main); + +//# sourceMappingURL=main.js.map + + +/***/ }), + +/***/ "./node_modules/@fullcalendar/list/main.js": +/*!*************************************************!*\ + !*** ./node_modules/@fullcalendar/list/main.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ "ListView": () => (/* binding */ ListView) +/* harmony export */ }); +/* harmony import */ var _main_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./main.css */ "./node_modules/@fullcalendar/list/main.css"); +/* harmony import */ var _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fullcalendar/common */ "./node_modules/@fullcalendar/common/main.js"); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/*! +FullCalendar v5.10.1 +Docs & License: https://fullcalendar.io/ +(c) 2021 Adam Shaw +*/ + + + + + +var ListViewHeaderRow = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ListViewHeaderRow, _super); + function ListViewHeaderRow() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.state = { + textId: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getUniqueDomId)(), + }; + return _this; + } + ListViewHeaderRow.prototype.render = function () { + var _a = this.context, theme = _a.theme, dateEnv = _a.dateEnv, options = _a.options, viewApi = _a.viewApi; + var _b = this.props, cellId = _b.cellId, dayDate = _b.dayDate, todayRange = _b.todayRange; + var textId = this.state.textId; + var dayMeta = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getDateMeta)(dayDate, todayRange); + // will ever be falsy? + var text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : ''; + // will ever be falsy? also, BAD NAME "alt" + var sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : ''; + var hookProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ date: dateEnv.toDate(dayDate), view: viewApi, textId: textId, + text: text, + sideText: sideText, navLinkAttrs: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildNavLinkAttrs)(this.context, dayDate), sideNavLinkAttrs: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildNavLinkAttrs)(this.context, dayDate, 'day', false) }, dayMeta); + var classNames = ['fc-list-day'].concat((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getDayClassNames)(dayMeta, theme)); + // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too) + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInnerContent, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-date": (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.formatDayString)(dayDate) }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", { scope: "colgroup", colSpan: 3, id: cellId, "aria-labelledby": textId }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: 'fc-list-day-cushion ' + theme.getClass('tableCellShaded'), ref: innerElRef }, innerContent)))); })); + }; + return ListViewHeaderRow; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function renderInnerContent(props) { + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, + props.text && ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ id: props.textId, className: "fc-list-day-text" }, props.navLinkAttrs), props.text)), + props.sideText && ( /* not keyboard tabbable */(0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ "aria-hidden": true, className: "fc-list-day-side-text" }, props.sideNavLinkAttrs), props.sideText)))); +} + +var DEFAULT_TIME_FORMAT = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)({ + hour: 'numeric', + minute: '2-digit', + meridiem: 'short', +}); +var ListViewEventRow = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ListViewEventRow, _super); + function ListViewEventRow() { + return _super !== null && _super.apply(this, arguments) || this; + } + ListViewEventRow.prototype.render = function () { + var _a = this, props = _a.props, context = _a.context; + var seg = props.seg, timeHeaderId = props.timeHeaderId, eventHeaderId = props.eventHeaderId, dateHeaderId = props.dateHeaderId; + var timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.EventRoot, { seg: seg, timeText: "" // BAD. because of all-day content + , disableDragging: true, disableResizing: true, defaultContent: function () { return renderEventInnerContent(seg, context); } /* weird */, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef }, + buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { "aria-hidden": true, className: "fc-list-event-graphic" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("span", { className: "fc-list-event-dot", style: { borderColor: hookProps.borderColor || hookProps.backgroundColor } })), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { ref: innerElRef, headers: eventHeaderId + " " + dateHeaderId, className: "fc-list-event-title" }, innerContent))); })); + }; + return ListViewEventRow; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); +function renderEventInnerContent(seg, context) { + var interactiveAttrs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegAnchorAttrs)(seg, context); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, interactiveAttrs), seg.eventRange.def.title)); +} +function buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId) { + var options = context.options; + if (options.displayEventTime !== false) { + var eventDef = seg.eventRange.def; + var eventInstance = seg.eventRange.instance; + var doAllDay = false; + var timeText = void 0; + if (eventDef.allDay) { + doAllDay = true; + } + else if ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.isMultiDayRange)(seg.eventRange.range)) { // TODO: use (!isStart || !isEnd) instead? + if (seg.isStart) { + timeText = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildSegTimeText)(seg, timeFormat, context, null, null, eventInstance.range.start, seg.end); + } + else if (seg.isEnd) { + timeText = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildSegTimeText)(seg, timeFormat, context, null, null, seg.start, eventInstance.range.end); + } + else { + doAllDay = true; + } + } + else { + timeText = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildSegTimeText)(seg, timeFormat, context); + } + if (doAllDay) { + var hookProps = { + text: context.options.allDayText, + view: context.viewApi, + }; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { ref: rootElRef, headers: timeHeaderId + " " + dateHeaderId, className: ['fc-list-event-time'].concat(classNames).join(' ') }, innerContent)); })); + } + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { className: "fc-list-event-time" }, timeText)); + } + return null; +} +function renderAllDayInner(hookProps) { + return hookProps.text; +} + +/* +Responsible for the scroller, and forwarding event-related actions into the "grid". +*/ +var ListView = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ListView, _super); + function ListView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.computeDateVars = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(computeDateVars); + _this.eventStoreToSegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.memoize)(_this._eventStoreToSegs); + _this.state = { + timeHeaderId: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getUniqueDomId)(), + eventHeaderId: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getUniqueDomId)(), + dateHeaderIdRoot: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getUniqueDomId)(), + }; + _this.setRootEl = function (rootEl) { + if (rootEl) { + _this.context.registerInteractiveComponent(_this, { + el: rootEl, + }); + } + else { + _this.context.unregisterInteractiveComponent(_this); + } + }; + return _this; + } + ListView.prototype.render = function () { + var _this = this; + var _a = this, props = _a.props, context = _a.context; + var extraClassNames = [ + 'fc-list', + context.theme.getClass('table'), + context.options.stickyHeaderDates !== false ? 'fc-list-sticky' : '', + ]; + var _b = this.computeDateVars(props.dateProfile), dayDates = _b.dayDates, dayRanges = _b.dayRanges; + var eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges); + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewRoot, { viewSpec: context.viewSpec, elRef: this.setRootEl }, function (rootElRef, classNames) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { ref: rootElRef, className: extraClassNames.concat(classNames).join(' ') }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Scroller, { liquid: !props.isHeightAuto, overflowX: props.isHeightAuto ? 'visible' : 'hidden', overflowY: props.isHeightAuto ? 'visible' : 'auto' }, eventSegs.length > 0 ? + _this.renderSegList(eventSegs, dayDates) : + _this.renderEmptyMessage()))); })); + }; + ListView.prototype.renderEmptyMessage = function () { + var _a = this.context, options = _a.options, viewApi = _a.viewApi; + var hookProps = { + text: options.noEventsText, + view: viewApi, + }; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RenderHook, { hookProps: hookProps, classNames: options.noEventsClassNames, content: options.noEventsContent, defaultContent: renderNoEventsInner, didMount: options.noEventsDidMount, willUnmount: options.noEventsWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: ['fc-list-empty'].concat(classNames).join(' '), ref: rootElRef }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-list-empty-cushion", ref: innerElRef }, innerContent))); })); + }; + ListView.prototype.renderSegList = function (allSegs, dayDates) { + var _a = this.context, theme = _a.theme, options = _a.options; + var _b = this.state, timeHeaderId = _b.timeHeaderId, eventHeaderId = _b.eventHeaderId, dateHeaderIdRoot = _b.dateHeaderIdRoot; + var segsByDay = groupSegsByDay(allSegs); // sparse array + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.NowTimer, { unit: "day" }, function (nowDate, todayRange) { + var innerNodes = []; + for (var dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) { + var daySegs = segsByDay[dayIndex]; + if (daySegs) { // sparse array, so might be undefined + var dayStr = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.formatDayString)(dayDates[dayIndex]); + var dateHeaderId = dateHeaderIdRoot + '-' + dayStr; + // append a day header + innerNodes.push((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(ListViewHeaderRow, { key: dayStr, cellId: dateHeaderId, dayDate: dayDates[dayIndex], todayRange: todayRange })); + daySegs = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sortEventSegs)(daySegs, options.eventOrder); + for (var _i = 0, daySegs_1 = daySegs; _i < daySegs_1.length; _i++) { + var seg = daySegs_1[_i]; + innerNodes.push((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(ListViewEventRow, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({ key: dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */, seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, timeHeaderId: timeHeaderId, eventHeaderId: eventHeaderId, dateHeaderId: dateHeaderId }, (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getSegMeta)(seg, todayRange, nowDate)))); + } + } + } + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("table", { className: 'fc-list-table ' + theme.getClass('table') }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("thead", null, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", null, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", { scope: "col", id: timeHeaderId }, options.timeHint), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", { scope: "col", "aria-hidden": true }), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", { scope: "col", id: eventHeaderId }, options.eventHint))), + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tbody", null, innerNodes))); + })); + }; + ListView.prototype._eventStoreToSegs = function (eventStore, eventUiBases, dayRanges) { + return this.eventRangesToSegs((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.sliceEventStore)(eventStore, eventUiBases, this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, dayRanges); + }; + ListView.prototype.eventRangesToSegs = function (eventRanges, dayRanges) { + var segs = []; + for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) { + var eventRange = eventRanges_1[_i]; + segs.push.apply(segs, this.eventRangeToSegs(eventRange, dayRanges)); + } + return segs; + }; + ListView.prototype.eventRangeToSegs = function (eventRange, dayRanges) { + var dateEnv = this.context.dateEnv; + var nextDayThreshold = this.context.options.nextDayThreshold; + var range = eventRange.range; + var allDay = eventRange.def.allDay; + var dayIndex; + var segRange; + var seg; + var segs = []; + for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) { + segRange = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.intersectRanges)(range, dayRanges[dayIndex]); + if (segRange) { + seg = { + component: this, + eventRange: eventRange, + start: segRange.start, + end: segRange.end, + isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(), + isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(), + dayIndex: dayIndex, + }; + segs.push(seg); + // detect when range won't go fully into the next day, + // and mutate the latest seg to the be the end. + if (!seg.isEnd && !allDay && + dayIndex + 1 < dayRanges.length && + range.end < + dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)) { + seg.end = range.end; + seg.isEnd = true; + break; + } + } + } + return segs; + }; + return ListView; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.DateComponent)); +function renderNoEventsInner(hookProps) { + return hookProps.text; +} +function computeDateVars(dateProfile) { + var dayStart = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.startOfDay)(dateProfile.renderRange.start); + var viewEnd = dateProfile.renderRange.end; + var dayDates = []; + var dayRanges = []; + while (dayStart < viewEnd) { + dayDates.push(dayStart); + dayRanges.push({ + start: dayStart, + end: (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDays)(dayStart, 1), + }); + dayStart = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.addDays)(dayStart, 1); + } + return { dayDates: dayDates, dayRanges: dayRanges }; +} +// Returns a sparse array of arrays, segs grouped by their dayIndex +function groupSegsByDay(segs) { + var segsByDay = []; // sparse array + var i; + var seg; + for (i = 0; i < segs.length; i += 1) { + seg = segs[i]; + (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = [])) + .push(seg); + } + return segsByDay; +} + +var OPTION_REFINERS = { + listDayFormat: createFalsableFormatter, + listDaySideFormat: createFalsableFormatter, + noEventsClassNames: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.identity, + noEventsContent: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.identity, + noEventsDidMount: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.identity, + noEventsWillUnmount: _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.identity, + // noEventsText is defined in base options +}; +function createFalsableFormatter(input) { + return input === false ? null : (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)(input); +} + +var main = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createPlugin)({ + optionRefiners: OPTION_REFINERS, + views: { + list: { + component: ListView, + buttonTextKey: 'list', + listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' }, // like "January 1, 2016" + }, + listDay: { + type: 'list', + duration: { days: 1 }, + listDayFormat: { weekday: 'long' }, // day-of-week is all we need. full date is probably in headerToolbar + }, + listWeek: { + type: 'list', + duration: { weeks: 1 }, + listDayFormat: { weekday: 'long' }, + listDaySideFormat: { month: 'long', day: 'numeric', year: 'numeric' }, + }, + listMonth: { + type: 'list', + duration: { month: 1 }, + listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have + }, + listYear: { + type: 'list', + duration: { year: 1 }, + listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have + }, + }, +}); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (main); + +//# sourceMappingURL=main.js.map + + +/***/ }), + +/***/ "./node_modules/@fullcalendar/timegrid/main.js": +/*!*****************************************************!*\ + !*** ./node_modules/@fullcalendar/timegrid/main.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ "DayTimeCols": () => (/* binding */ DayTimeCols), +/* harmony export */ "DayTimeColsSlicer": () => (/* binding */ DayTimeColsSlicer), +/* harmony export */ "DayTimeColsView": () => (/* binding */ DayTimeColsView), +/* harmony export */ "TimeCols": () => (/* binding */ TimeCols), +/* harmony export */ "TimeColsSlatsCoords": () => (/* binding */ TimeColsSlatsCoords), +/* harmony export */ "TimeColsView": () => (/* binding */ TimeColsView), +/* harmony export */ "buildDayRanges": () => (/* binding */ buildDayRanges), +/* harmony export */ "buildSlatMetas": () => (/* binding */ buildSlatMetas), +/* harmony export */ "buildTimeColsModel": () => (/* binding */ buildTimeColsModel) +/* harmony export */ }); +/* harmony import */ var _main_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./main.css */ "./node_modules/@fullcalendar/timegrid/main.css"); +/* harmony import */ var _fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fullcalendar/common */ "./node_modules/@fullcalendar/common/main.js"); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _fullcalendar_daygrid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fullcalendar/daygrid */ "./node_modules/@fullcalendar/daygrid/main.js"); +/*! +FullCalendar v5.10.1 +Docs & License: https://fullcalendar.io/ +(c) 2021 Adam Shaw +*/ + + + + + + +var AllDaySplitter = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(AllDaySplitter, _super); + function AllDaySplitter() { + return _super !== null && _super.apply(this, arguments) || this; + } + AllDaySplitter.prototype.getKeyInfo = function () { + return { + allDay: {}, + timed: {}, + }; + }; + AllDaySplitter.prototype.getKeysForDateSpan = function (dateSpan) { + if (dateSpan.allDay) { + return ['allDay']; + } + return ['timed']; + }; + AllDaySplitter.prototype.getKeysForEventDef = function (eventDef) { + if (!eventDef.allDay) { + return ['timed']; + } + if ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.hasBgRendering)(eventDef)) { + return ['timed', 'allDay']; + } + return ['allDay']; + }; + return AllDaySplitter; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.Splitter)); + +var DEFAULT_SLAT_LABEL_FORMAT = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)({ + hour: 'numeric', + minute: '2-digit', + omitZeroMinute: true, + meridiem: 'short', +}); +function TimeColsAxisCell(props) { + var classNames = [ + 'fc-timegrid-slot', + 'fc-timegrid-slot-label', + props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor', + ]; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.ViewContextType.Consumer, null, function (context) { + if (!props.isLabeled) { + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { className: classNames.join(' '), "data-time": props.isoTimeStr })); + } + var dateEnv = context.dateEnv, options = context.options, viewApi = context.viewApi; + var labelFormat = // TODO: fully pre-parse + options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT : + Array.isArray(options.slotLabelFormat) ? (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)(options.slotLabelFormat[0]) : + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)(options.slotLabelFormat); + var hookProps = { + level: 0, + time: props.time, + date: dateEnv.toDate(props.date), + view: viewApi, + text: dateEnv.format(props.date, labelFormat), + }; + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RenderHook, { hookProps: hookProps, classNames: options.slotLabelClassNames, content: options.slotLabelContent, defaultContent: renderInnerContent, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-time": props.isoTimeStr }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion", ref: innerElRef }, innerContent)))); })); + })); +} +function renderInnerContent(props) { + return props.text; +} + +var TimeBodyAxis = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeBodyAxis, _super); + function TimeBodyAxis() { + return _super !== null && _super.apply(this, arguments) || this; + } + TimeBodyAxis.prototype.render = function () { + return this.props.slatMetas.map(function (slatMeta) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("tr", { key: slatMeta.key }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(TimeColsAxisCell, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, slatMeta)))); }); + }; + return TimeBodyAxis; +}(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.BaseComponent)); + +var DEFAULT_WEEK_NUM_FORMAT = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createFormatter)({ week: 'short' }); +var AUTO_ALL_DAY_MAX_EVENT_ROWS = 5; +var TimeColsView = /** @class */ (function (_super) { + (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(TimeColsView, _super); + function TimeColsView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.allDaySplitter = new AllDaySplitter(); // for use by subclasses + _this.headerElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.rootElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.scrollerElRef = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createRef)(); + _this.state = { + slatCoords: null, + }; + _this.handleScrollTopRequest = function (scrollTop) { + var scrollerEl = _this.scrollerElRef.current; + if (scrollerEl) { // TODO: not sure how this could ever be null. weirdness with the reducer + scrollerEl.scrollTop = scrollTop; + } + }; + /* Header Render Methods + ------------------------------------------------------------------------------------------------------------------*/ + _this.renderHeadAxis = function (rowKey, frameHeight) { + if (frameHeight === void 0) { frameHeight = ''; } + var options = _this.context.options; + var dateProfile = _this.props.dateProfile; + var range = dateProfile.renderRange; + var dayCnt = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.diffDays)(range.start, range.end); + var navLinkAttrs = (dayCnt === 1) // only do in day views (to avoid doing in week views that dont need it) + ? (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.buildNavLinkAttrs)(_this.context, range.start, 'week') + : {}; + if (options.weekNumbers && rowKey === 'day') { + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.WeekNumberRoot, { date: range.start, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (rootElRef, classNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", { ref: rootElRef, "aria-hidden": true, className: [ + 'fc-timegrid-axis', + 'fc-scrollgrid-shrink', + ].concat(classNames).join(' ') }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid", style: { height: frameHeight } }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("a", (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ ref: innerElRef, className: "fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner" }, navLinkAttrs), innerContent)))); })); + } + return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("th", { "aria-hidden": true, className: "fc-timegrid-axis" }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: "fc-timegrid-axis-frame", style: { height: frameHeight } }))); + }; + /* Table Component Render Methods + ------------------------------------------------------------------------------------------------------------------*/ + // only a one-way height sync. we don't send the axis inner-content height to the DayGrid, + // but DayGrid still needs to have classNames on inner elements in order to measure. + _this.renderTableRowAxis = function (rowHeight) { + var _a = _this.context, options = _a.options, viewApi = _a.viewApi; + var hookProps = { + text: options.allDayText, + view: viewApi, + }; + return ( + // TODO: make reusable hook. used in list view too + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)(_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return ((0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("td", { ref: rootElRef, "aria-hidden": true, className: [ + 'fc-timegrid-axis', + 'fc-scrollgrid-shrink', + ].concat(classNames).join(' ') }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", { className: 'fc-timegrid-axis-frame fc-scrollgrid-shrink-frame' + (rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : ''), style: { height: rowHeight } }, + (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.createElement)("span", { className: "fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner", ref: innerElRef }, innerContent)))); })); + }; + _this.handleSlatCoords = function (slatCoords) { + _this.setState({ slatCoords: slatCoords }); + }; + return _this; + } + // rendering + // ---------------------------------------------------------------------------------------------------- + TimeColsView.prototype.renderSimpleLayout = function (headerRowContent, allDayContent, timeContent) { + var _a = this, context = _a.context, props = _a.props; + var sections = []; + var stickyHeaderDates = (0,_fullcalendar_common__WEBPACK_IMPORTED_MODULE_1__.getStickyHeaderDates)(context.options); + if (headerRowContent) { + sections.push({ + type: 'header', + key: 'header', + isSticky: stickyHeaderDates, + chunk: { + elRef: this.headerElRef, + tableClassName: 'fc-col-header', + rowContent: headerRowContent, + }, + }); + } + if (allDayContent) { + sections.push({ + type: 'body', + key: 'all-day', + chunk: { content: allDayContent }, + }); + sections.push({ + type: 'body', + key: 'all-day-divider', + outerContent: ( // TODO: rename to cellContent so don't need to define
*/\n }\n.fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */\n position: relative; /* for z-indexes assigned later */\n white-space: nowrap;\n border-radius: 3px; /* dot event needs this to when selected */\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n}\n/* --- the rectangle (\"block\") style of event --- */\n.fc-daygrid-block-event .fc-event-time {\n font-weight: bold;\n }\n.fc-daygrid-block-event .fc-event-time,\n .fc-daygrid-block-event .fc-event-title {\n padding: 1px;\n }\n/* --- the dot style of event --- */\n.fc-daygrid-dot-event {\n display: flex;\n align-items: center;\n padding: 2px 0\n\n}\n.fc-daygrid-dot-event .fc-event-title {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n overflow: hidden;\n font-weight: bold;\n }\n.fc-daygrid-dot-event:hover,\n .fc-daygrid-dot-event.fc-event-mirror {\n background: rgba(0, 0, 0, 0.1);\n }\n.fc-daygrid-dot-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n.fc-daygrid-event-dot { /* the actual dot */\n margin: 0 4px;\n box-sizing: content-box;\n width: 0;\n height: 0;\n border: 4px solid #3788d8;\n border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);\n border-radius: 4px;\n border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2);\n}\n/* --- spacing between time and title --- */\n.fc-direction-ltr .fc-daygrid-event .fc-event-time {\n margin-right: 3px;\n }\n.fc-direction-rtl .fc-daygrid-event .fc-event-time {\n margin-left: 3px;\n }\n", ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/list/main.css": +/*!************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/list/main.css ***! + \************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); +// Imports + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); +// Module +___CSS_LOADER_EXPORT___.push([module.id, "\n:root {\n --fc-list-event-dot-width: 10px;\n --fc-list-event-hover-bg-color: #f5f5f5;\n}\n.fc-theme-standard .fc-list {\n border: 1px solid #ddd;\n border: 1px solid var(--fc-border-color, #ddd);\n }\n.fc {\n\n /* message when no events */\n\n}\n.fc .fc-list-empty {\n background-color: rgba(208, 208, 208, 0.3);\n background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center; /* vertically aligns fc-list-empty-inner */\n }\n.fc .fc-list-empty-cushion {\n margin: 5em 0;\n }\n.fc {\n\n /* table within the scroller */\n /* ---------------------------------------------------------------------------------------------------- */\n\n}\n.fc .fc-list-table {\n width: 100%;\n border-style: hidden; /* kill outer border on theme */\n }\n.fc .fc-list-table tr > * {\n border-left: 0;\n border-right: 0;\n }\n.fc .fc-list-sticky .fc-list-day > * { /* the cells */\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n background: #fff;\n background: var(--fc-page-bg-color, #fff); /* for when headers are styled to be transparent and sticky */\n }\n.fc {\n\n /* only exists for aria reasons, hide for non-screen-readers */\n\n}\n.fc .fc-list-table thead {\n position: absolute;\n left: -10000px;\n }\n.fc {\n\n /* the table's border-style:hidden gets confused by hidden thead. force-hide top border of first cell */\n\n}\n.fc .fc-list-table tbody > tr:first-child th {\n border-top: 0;\n }\n.fc .fc-list-table th {\n padding: 0; /* uses an inner-wrapper instead... */\n }\n.fc .fc-list-table td,\n .fc .fc-list-day-cushion {\n padding: 8px 14px;\n }\n.fc {\n\n\n /* date heading rows */\n /* ---------------------------------------------------------------------------------------------------- */\n\n}\n.fc .fc-list-day-cushion:after {\n content: \"\";\n clear: both;\n display: table; /* clear floating */\n }\n.fc-theme-standard .fc-list-day-cushion {\n background-color: rgba(208, 208, 208, 0.3);\n background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n }\n.fc-direction-ltr .fc-list-day-text,\n.fc-direction-rtl .fc-list-day-side-text {\n float: left;\n}\n.fc-direction-ltr .fc-list-day-side-text,\n.fc-direction-rtl .fc-list-day-text {\n float: right;\n}\n/* make the dot closer to the event title */\n.fc-direction-ltr .fc-list-table .fc-list-event-graphic { padding-right: 0 }\n.fc-direction-rtl .fc-list-table .fc-list-event-graphic { padding-left: 0 }\n.fc .fc-list-event.fc-event-forced-url {\n cursor: pointer; /* whole row will seem clickable */\n }\n.fc .fc-list-event:hover td {\n background-color: #f5f5f5;\n background-color: var(--fc-list-event-hover-bg-color, #f5f5f5);\n }\n.fc {\n\n /* shrink certain cols */\n\n}\n.fc .fc-list-event-graphic,\n .fc .fc-list-event-time {\n white-space: nowrap;\n width: 1px;\n }\n.fc .fc-list-event-dot {\n display: inline-block;\n box-sizing: content-box;\n width: 0;\n height: 0;\n border: 5px solid #3788d8;\n border: calc(var(--fc-list-event-dot-width, 10px) / 2) solid var(--fc-event-border-color, #3788d8);\n border-radius: 5px;\n border-radius: calc(var(--fc-list-event-dot-width, 10px) / 2);\n }\n.fc {\n\n /* reset styling */\n\n}\n.fc .fc-list-event-title a {\n color: inherit;\n text-decoration: none;\n }\n.fc {\n\n /* underline link when hovering over any part of row */\n\n}\n.fc .fc-list-event.fc-event-forced-url:hover a {\n text-decoration: underline;\n }\n", ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/timegrid/main.css": +/*!****************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/@fullcalendar/timegrid/main.css ***! + \****************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); +// Imports + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); +// Module +___CSS_LOADER_EXPORT___.push([module.id, "\n/*\nA VERTICAL event\n*/\n\n.fc-v-event { /* allowed to be top-level */\n display: block;\n border: 1px solid #3788d8;\n border: 1px solid var(--fc-event-border-color, #3788d8);\n background-color: #3788d8;\n background-color: var(--fc-event-bg-color, #3788d8)\n\n}\n\n.fc-v-event .fc-event-main {\n color: #fff;\n color: var(--fc-event-text-color, #fff);\n height: 100%;\n }\n\n.fc-v-event .fc-event-main-frame {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n.fc-v-event .fc-event-time {\n flex-grow: 0;\n flex-shrink: 0;\n max-height: 100%;\n overflow: hidden;\n }\n\n.fc-v-event .fc-event-title-container { /* a container for the sticky cushion */\n flex-grow: 1;\n flex-shrink: 1;\n min-height: 0; /* important for allowing to shrink all the way */\n }\n\n.fc-v-event .fc-event-title { /* will have fc-sticky on it */\n top: 0;\n bottom: 0;\n max-height: 100%; /* clip overflow */\n overflow: hidden;\n }\n\n.fc-v-event:not(.fc-event-start) {\n border-top-width: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n.fc-v-event:not(.fc-event-end) {\n border-bottom-width: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n.fc-v-event.fc-event-selected:before {\n /* expand hit area */\n left: -10px;\n right: -10px;\n }\n\n.fc-v-event {\n\n /* resizer (mouse AND touch) */\n\n}\n\n.fc-v-event .fc-event-resizer-start {\n cursor: n-resize;\n }\n\n.fc-v-event .fc-event-resizer-end {\n cursor: s-resize;\n }\n\n.fc-v-event {\n\n /* resizer for MOUSE */\n\n}\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer {\n height: 8px;\n height: var(--fc-event-resizer-thickness, 8px);\n left: 0;\n right: 0;\n }\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start {\n top: -4px;\n top: calc(var(--fc-event-resizer-thickness, 8px) / -2);\n }\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end {\n bottom: -4px;\n bottom: calc(var(--fc-event-resizer-thickness, 8px) / -2);\n }\n\n.fc-v-event {\n\n /* resizer for TOUCH (when event is \"selected\") */\n\n}\n\n.fc-v-event.fc-event-selected .fc-event-resizer {\n left: 50%;\n margin-left: -4px;\n margin-left: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);\n }\n\n.fc-v-event.fc-event-selected .fc-event-resizer-start {\n top: -4px;\n top: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);\n }\n\n.fc-v-event.fc-event-selected .fc-event-resizer-end {\n bottom: -4px;\n bottom: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);\n }\n\n.fc .fc-timegrid .fc-daygrid-body { /* the all-day daygrid within the timegrid view */\n z-index: 2; /* put above the timegrid-body so that more-popover is above everything. TODO: better solution */\n }\n\n.fc .fc-timegrid-divider {\n padding: 0 0 2px; /* browsers get confused when you set height. use padding instead */\n }\n\n.fc .fc-timegrid-body {\n position: relative;\n z-index: 1; /* scope the z-indexes of slots and cols */\n min-height: 100%; /* fill height always, even when slat table doesn't grow */\n }\n\n.fc .fc-timegrid-axis-chunk { /* for advanced ScrollGrid */\n position: relative /* offset parent for now-indicator-container */\n\n }\n\n.fc .fc-timegrid-axis-chunk > table {\n position: relative;\n z-index: 1; /* above the now-indicator-container */\n }\n\n.fc .fc-timegrid-slots {\n position: relative;\n z-index: 1;\n }\n\n.fc .fc-timegrid-slot { /* a */\n height: 1.5em;\n border-bottom: 0 /* each cell owns its top border */\n }\n\n.fc .fc-timegrid-slot:empty:before {\n content: '\\00a0'; /* make sure there's at least an empty space to create height for height syncing */\n }\n\n.fc .fc-timegrid-slot-minor {\n border-top-style: dotted;\n }\n\n.fc .fc-timegrid-slot-label-cushion {\n display: inline-block;\n white-space: nowrap;\n }\n\n.fc .fc-timegrid-slot-label {\n vertical-align: middle; /* vertical align the slots */\n }\n\n.fc {\n\n\n /* slots AND axis cells (top-left corner of view including the \"all-day\" text) */\n\n}\n\n.fc .fc-timegrid-axis-cushion,\n .fc .fc-timegrid-slot-label-cushion {\n padding: 0 4px;\n }\n\n.fc {\n\n\n /* axis cells (top-left corner of view including the \"all-day\" text) */\n /* vertical align is more complicated, uses flexbox */\n\n}\n\n.fc .fc-timegrid-axis-frame-liquid {\n height: 100%; /* will need liquid-hack in FF */\n }\n\n.fc .fc-timegrid-axis-frame {\n overflow: hidden;\n display: flex;\n align-items: center; /* vertical align */\n justify-content: flex-end; /* horizontal align. matches text-align below */\n }\n\n.fc .fc-timegrid-axis-cushion {\n max-width: 60px; /* limits the width of the \"all-day\" text */\n flex-shrink: 0; /* allows text to expand how it normally would, regardless of constrained width */\n }\n\n.fc-direction-ltr .fc-timegrid-slot-label-frame {\n text-align: right;\n }\n\n.fc-direction-rtl .fc-timegrid-slot-label-frame {\n text-align: left;\n }\n\n.fc-liquid-hack .fc-timegrid-axis-frame-liquid {\n height: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n.fc .fc-timegrid-col.fc-day-today {\n background-color: rgba(255, 220, 40, 0.15);\n background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));\n }\n\n.fc .fc-timegrid-col-frame {\n min-height: 100%; /* liquid-hack is below */\n position: relative;\n }\n\n.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame {\n height: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n.fc-media-screen .fc-timegrid-cols {\n position: absolute; /* no z-index. children will decide and go above slots */\n top: 0;\n left: 0;\n right: 0;\n bottom: 0\n }\n\n.fc-media-screen .fc-timegrid-cols > table {\n height: 100%;\n }\n\n.fc-media-screen .fc-timegrid-col-bg,\n .fc-media-screen .fc-timegrid-col-events,\n .fc-media-screen .fc-timegrid-now-indicator-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n }\n\n.fc {\n\n /* bg */\n\n}\n\n.fc .fc-timegrid-col-bg {\n z-index: 2; /* TODO: kill */\n }\n\n.fc .fc-timegrid-col-bg .fc-non-business { z-index: 1 }\n\n.fc .fc-timegrid-col-bg .fc-bg-event { z-index: 2 }\n\n.fc .fc-timegrid-col-bg .fc-highlight { z-index: 3 }\n\n.fc .fc-timegrid-bg-harness {\n position: absolute; /* top/bottom will be set by JS */\n left: 0;\n right: 0;\n }\n\n.fc {\n\n /* fg events */\n /* (the mirror segs are put into a separate container with same classname, */\n /* and they must be after the normal seg container to appear at a higher z-index) */\n\n}\n\n.fc .fc-timegrid-col-events {\n z-index: 3;\n /* child event segs have z-indexes that are scoped within this div */\n }\n\n.fc {\n\n /* now indicator */\n\n}\n\n.fc .fc-timegrid-now-indicator-container {\n bottom: 0;\n overflow: hidden; /* don't let overflow of lines/arrows cause unnecessary scrolling */\n /* z-index is set on the individual elements */\n }\n\n.fc-direction-ltr .fc-timegrid-col-events {\n margin: 0 2.5% 0 2px;\n }\n\n.fc-direction-rtl .fc-timegrid-col-events {\n margin: 0 2px 0 2.5%;\n }\n\n.fc-timegrid-event-harness {\n position: absolute /* top/left/right/bottom will all be set by JS */\n}\n\n.fc-timegrid-event-harness > .fc-timegrid-event {\n position: absolute; /* absolute WITHIN the harness */\n top: 0; /* for when not yet positioned */\n bottom: 0; /* \" */\n left: 0;\n right: 0;\n }\n\n.fc-timegrid-event-harness-inset .fc-timegrid-event,\n.fc-timegrid-event.fc-event-mirror,\n.fc-timegrid-more-link {\n box-shadow: 0px 0px 0px 1px #fff;\n box-shadow: 0px 0px 0px 1px var(--fc-page-bg-color, #fff);\n}\n\n.fc-timegrid-event,\n.fc-timegrid-more-link { /* events need to be root */\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n border-radius: 3px;\n}\n\n.fc-timegrid-event { /* events need to be root */\n margin-bottom: 1px /* give some space from bottom */\n}\n\n.fc-timegrid-event .fc-event-main {\n padding: 1px 1px 0;\n }\n\n.fc-timegrid-event .fc-event-time {\n white-space: nowrap;\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n margin-bottom: 1px;\n }\n\n.fc-timegrid-event-short .fc-event-main-frame {\n flex-direction: row;\n overflow: hidden;\n }\n\n.fc-timegrid-event-short .fc-event-time:after {\n content: '\\00a0-\\00a0'; /* dash surrounded by non-breaking spaces */\n }\n\n.fc-timegrid-event-short .fc-event-title {\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em)\n }\n\n.fc-timegrid-more-link { /* does NOT inherit from fc-timegrid-event */\n position: absolute;\n z-index: 9999; /* hack */\n color: inherit;\n color: var(--fc-more-link-text-color, inherit);\n background: #d0d0d0;\n background: var(--fc-more-link-bg-color, #d0d0d0);\n cursor: pointer;\n margin-bottom: 1px; /* match space below fc-timegrid-event */\n}\n\n.fc-timegrid-more-link-inner { /* has fc-sticky */\n padding: 3px 2px;\n top: 0;\n}\n\n.fc-direction-ltr .fc-timegrid-more-link {\n right: 0;\n }\n\n.fc-direction-rtl .fc-timegrid-more-link {\n left: 0;\n }\n\n.fc {\n\n /* line */\n\n}\n\n.fc .fc-timegrid-now-indicator-line {\n position: absolute;\n z-index: 4;\n left: 0;\n right: 0;\n border-style: solid;\n border-color: red;\n border-color: var(--fc-now-indicator-color, red);\n border-width: 1px 0 0;\n }\n\n.fc {\n\n /* arrow */\n\n}\n\n.fc .fc-timegrid-now-indicator-arrow {\n position: absolute;\n z-index: 4;\n margin-top: -5px; /* vertically center on top coordinate */\n border-style: solid;\n border-color: red;\n border-color: var(--fc-now-indicator-color, red);\n }\n\n.fc-direction-ltr .fc-timegrid-now-indicator-arrow {\n left: 0;\n\n /* triangle pointing right. TODO: mixin */\n border-width: 5px 0 5px 6px;\n border-top-color: transparent;\n border-bottom-color: transparent;\n }\n\n.fc-direction-rtl .fc-timegrid-now-indicator-arrow {\n right: 0;\n\n /* triangle pointing left. TODO: mixin */\n border-width: 5px 6px 5px 0;\n border-top-color: transparent;\n border-bottom-color: transparent;\n }\n", ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/api.js": +/*!*****************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/api.js ***! + \*****************************************************/ +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +// eslint-disable-next-line func-names +module.exports = function (cssWithMappingToString) { + var list = []; // return the list of modules as css string + + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item); + + if (item[2]) { + return "@media ".concat(item[2], " {").concat(content, "}"); + } + + return content; + }).join(""); + }; // import a list of modules into the list + // eslint-disable-next-line func-names + + + list.i = function (modules, mediaQuery, dedupe) { + if (typeof modules === "string") { + // eslint-disable-next-line no-param-reassign + modules = [[null, modules, ""]]; + } + + var alreadyImportedModules = {}; + + if (dedupe) { + for (var i = 0; i < this.length; i++) { + // eslint-disable-next-line prefer-destructuring + var id = this[i][0]; + + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + + for (var _i = 0; _i < modules.length; _i++) { + var item = [].concat(modules[_i]); + + if (dedupe && alreadyImportedModules[item[0]]) { + // eslint-disable-next-line no-continue + continue; + } + + if (mediaQuery) { + if (!item[2]) { + item[2] = mediaQuery; + } else { + item[2] = "".concat(mediaQuery, " and ").concat(item[2]); + } + } + + list.push(item); + } + }; + + return list; +}; + +/***/ }), + +/***/ "./node_modules/dayjs/dayjs.min.js": +/*!*****************************************!*\ + !*** ./node_modules/dayjs/dayjs.min.js ***! + \*****************************************/ +/***/ (function(module) { + +!function(t,e){ true?module.exports=e():0}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",$="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date() { + +(function webpackUniversalModuleDefinition(root, factory) { + if(true) + module.exports = factory(); + else { var i, a; } +})(self, function() { +return /******/ (function() { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 3099: +/***/ (function(module) { + +module.exports = function (it) { + if (typeof it != 'function') { + throw TypeError(String(it) + ' is not a function'); + } return it; +}; + + +/***/ }), + +/***/ 6077: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_703__) { + +var isObject = __nested_webpack_require_703__(111); + +module.exports = function (it) { + if (!isObject(it) && it !== null) { + throw TypeError("Can't set " + String(it) + ' as a prototype'); + } return it; +}; + + +/***/ }), + +/***/ 1223: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1001__) { + +var wellKnownSymbol = __nested_webpack_require_1001__(5112); +var create = __nested_webpack_require_1001__(30); +var definePropertyModule = __nested_webpack_require_1001__(3070); + +var UNSCOPABLES = wellKnownSymbol('unscopables'); +var ArrayPrototype = Array.prototype; + +// Array.prototype[@@unscopables] +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +if (ArrayPrototype[UNSCOPABLES] == undefined) { + definePropertyModule.f(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create(null) + }); +} + +// add a key to Array.prototype[@@unscopables] +module.exports = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; +}; + + +/***/ }), + +/***/ 1530: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1715__) { + +"use strict"; + +var charAt = __nested_webpack_require_1715__(8710).charAt; + +// `AdvanceStringIndex` abstract operation +// https://tc39.es/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); +}; + + +/***/ }), + +/***/ 5787: +/***/ (function(module) { + +module.exports = function (it, Constructor, name) { + if (!(it instanceof Constructor)) { + throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); + } return it; +}; + + +/***/ }), + +/***/ 9670: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2317__) { + +var isObject = __nested_webpack_require_2317__(111); + +module.exports = function (it) { + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } return it; +}; + + +/***/ }), + +/***/ 4019: +/***/ (function(module) { + +module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined'; + + +/***/ }), + +/***/ 260: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2726__) { + +"use strict"; + +var NATIVE_ARRAY_BUFFER = __nested_webpack_require_2726__(4019); +var DESCRIPTORS = __nested_webpack_require_2726__(9781); +var global = __nested_webpack_require_2726__(7854); +var isObject = __nested_webpack_require_2726__(111); +var has = __nested_webpack_require_2726__(6656); +var classof = __nested_webpack_require_2726__(648); +var createNonEnumerableProperty = __nested_webpack_require_2726__(8880); +var redefine = __nested_webpack_require_2726__(1320); +var defineProperty = __nested_webpack_require_2726__(3070).f; +var getPrototypeOf = __nested_webpack_require_2726__(9518); +var setPrototypeOf = __nested_webpack_require_2726__(7674); +var wellKnownSymbol = __nested_webpack_require_2726__(5112); +var uid = __nested_webpack_require_2726__(9711); + +var Int8Array = global.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var Uint8ClampedArray = global.Uint8ClampedArray; +var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; +var TypedArray = Int8Array && getPrototypeOf(Int8Array); +var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); +var ObjectPrototype = Object.prototype; +var isPrototypeOf = ObjectPrototype.isPrototypeOf; + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); +// Fixing native typed arrays in Opera Presto crashes the browser, see #595 +var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera'; +var TYPED_ARRAY_TAG_REQIRED = false; +var NAME; + +var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 +}; + +var BigIntArrayConstructorsList = { + BigInt64Array: 8, + BigUint64Array: 8 +}; + +var isView = function isView(it) { + if (!isObject(it)) return false; + var klass = classof(it); + return klass === 'DataView' + || has(TypedArrayConstructorsList, klass) + || has(BigIntArrayConstructorsList, klass); +}; + +var isTypedArray = function (it) { + if (!isObject(it)) return false; + var klass = classof(it); + return has(TypedArrayConstructorsList, klass) + || has(BigIntArrayConstructorsList, klass); +}; + +var aTypedArray = function (it) { + if (isTypedArray(it)) return it; + throw TypeError('Target is not a typed array'); +}; + +var aTypedArrayConstructor = function (C) { + if (setPrototypeOf) { + if (isPrototypeOf.call(TypedArray, C)) return C; + } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) { + var TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) { + return C; + } + } throw TypeError('Target is not a typed array constructor'); +}; + +var exportTypedArrayMethod = function (KEY, property, forced) { + if (!DESCRIPTORS) return; + if (forced) for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) { + delete TypedArrayConstructor.prototype[KEY]; + } + } + if (!TypedArrayPrototype[KEY] || forced) { + redefine(TypedArrayPrototype, KEY, forced ? property + : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property); + } +}; + +var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS) return; + if (setPrototypeOf) { + if (forced) for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) { + delete TypedArrayConstructor[KEY]; + } + } + if (!TypedArray[KEY] || forced) { + // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable + try { + return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property); + } catch (error) { /* empty */ } + } else return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + redefine(TypedArrayConstructor, KEY, property); + } + } +}; + +for (NAME in TypedArrayConstructorsList) { + if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false; +} + +// WebKit bug - typed arrays constructors prototype is Object.prototype +if (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) { + // eslint-disable-next-line no-shadow -- safe + TypedArray = function TypedArray() { + throw TypeError('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) setPrototypeOf(global[NAME], TypedArray); + } +} + +if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { + TypedArrayPrototype = TypedArray.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype); + } +} + +// WebKit bug - one more object in Uint8ClampedArray prototype chain +if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { + setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); +} + +if (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) { + TYPED_ARRAY_TAG_REQIRED = true; + defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () { + return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; + } }); + for (NAME in TypedArrayConstructorsList) if (global[NAME]) { + createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME); + } +} + +module.exports = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG, + aTypedArray: aTypedArray, + aTypedArrayConstructor: aTypedArrayConstructor, + exportTypedArrayMethod: exportTypedArrayMethod, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + isView: isView, + isTypedArray: isTypedArray, + TypedArray: TypedArray, + TypedArrayPrototype: TypedArrayPrototype +}; + + +/***/ }), + +/***/ 3331: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8934__) { + +"use strict"; + +var global = __nested_webpack_require_8934__(7854); +var DESCRIPTORS = __nested_webpack_require_8934__(9781); +var NATIVE_ARRAY_BUFFER = __nested_webpack_require_8934__(4019); +var createNonEnumerableProperty = __nested_webpack_require_8934__(8880); +var redefineAll = __nested_webpack_require_8934__(2248); +var fails = __nested_webpack_require_8934__(7293); +var anInstance = __nested_webpack_require_8934__(5787); +var toInteger = __nested_webpack_require_8934__(9958); +var toLength = __nested_webpack_require_8934__(7466); +var toIndex = __nested_webpack_require_8934__(7067); +var IEEE754 = __nested_webpack_require_8934__(1179); +var getPrototypeOf = __nested_webpack_require_8934__(9518); +var setPrototypeOf = __nested_webpack_require_8934__(7674); +var getOwnPropertyNames = __nested_webpack_require_8934__(8006).f; +var defineProperty = __nested_webpack_require_8934__(3070).f; +var arrayFill = __nested_webpack_require_8934__(1285); +var setToStringTag = __nested_webpack_require_8934__(8003); +var InternalStateModule = __nested_webpack_require_8934__(9909); + +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length'; +var WRONG_INDEX = 'Wrong index'; +var NativeArrayBuffer = global[ARRAY_BUFFER]; +var $ArrayBuffer = NativeArrayBuffer; +var $DataView = global[DATA_VIEW]; +var $DataViewPrototype = $DataView && $DataView[PROTOTYPE]; +var ObjectPrototype = Object.prototype; +var RangeError = global.RangeError; + +var packIEEE754 = IEEE754.pack; +var unpackIEEE754 = IEEE754.unpack; + +var packInt8 = function (number) { + return [number & 0xFF]; +}; + +var packInt16 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF]; +}; + +var packInt32 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; +}; + +var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; +}; + +var packFloat32 = function (number) { + return packIEEE754(number, 23, 4); +}; + +var packFloat64 = function (number) { + return packIEEE754(number, 52, 8); +}; + +var addGetter = function (Constructor, key) { + defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } }); +}; + +var get = function (view, count, index, isLittleEndian) { + var intIndex = toIndex(index); + var store = getInternalState(view); + if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); + var bytes = getInternalState(store.buffer).bytes; + var start = intIndex + store.byteOffset; + var pack = bytes.slice(start, start + count); + return isLittleEndian ? pack : pack.reverse(); +}; + +var set = function (view, count, index, conversion, value, isLittleEndian) { + var intIndex = toIndex(index); + var store = getInternalState(view); + if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); + var bytes = getInternalState(store.buffer).bytes; + var start = intIndex + store.byteOffset; + var pack = conversion(+value); + for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1]; +}; + +if (!NATIVE_ARRAY_BUFFER) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer, ARRAY_BUFFER); + var byteLength = toIndex(length); + setInternalState(this, { + bytes: arrayFill.call(new Array(byteLength), 0), + byteLength: byteLength + }); + if (!DESCRIPTORS) this.byteLength = byteLength; + }; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = getInternalState(buffer).byteLength; + var offset = toInteger(byteOffset); + if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); + setInternalState(this, { + buffer: buffer, + byteLength: byteLength, + byteOffset: offset + }); + if (!DESCRIPTORS) { + this.buffer = buffer; + this.byteLength = byteLength; + this.byteOffset = offset; + } + }; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, 'byteLength'); + addGetter($DataView, 'buffer'); + addGetter($DataView, 'byteLength'); + addGetter($DataView, 'byteOffset'); + } + + redefineAll($DataView[PROTOTYPE], { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined); + } + }); +} else { + /* eslint-disable no-new -- required for testing */ + if (!fails(function () { + NativeArrayBuffer(1); + }) || !fails(function () { + new NativeArrayBuffer(-1); + }) || fails(function () { + new NativeArrayBuffer(); + new NativeArrayBuffer(1.5); + new NativeArrayBuffer(NaN); + return NativeArrayBuffer.name != ARRAY_BUFFER; + })) { + /* eslint-enable no-new -- required for testing */ + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer); + return new NativeArrayBuffer(toIndex(length)); + }; + var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE]; + for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) { + if (!((key = keys[j++]) in $ArrayBuffer)) { + createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]); + } + } + ArrayBufferPrototype.constructor = $ArrayBuffer; + } + + // WebKit bug - the same parent prototype for typed arrays and data view + if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) { + setPrototypeOf($DataViewPrototype, ObjectPrototype); + } + + // iOS Safari 7.x bug + var testView = new $DataView(new $ArrayBuffer(2)); + var nativeSetInt8 = $DataViewPrototype.setInt8; + testView.setInt8(0, 2147483648); + testView.setInt8(1, 2147483649); + if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, { + setInt8: function setInt8(byteOffset, value) { + nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + } + }, { unsafe: true }); +} + +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); + +module.exports = { + ArrayBuffer: $ArrayBuffer, + DataView: $DataView +}; + + +/***/ }), + +/***/ 1048: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_17881__) { + +"use strict"; + +var toObject = __nested_webpack_require_17881__(7908); +var toAbsoluteIndex = __nested_webpack_require_17881__(1400); +var toLength = __nested_webpack_require_17881__(7466); + +var min = Math.min; + +// `Array.prototype.copyWithin` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.copywithin +module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = toLength(O.length); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; + + +/***/ }), + +/***/ 1285: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_18911__) { + +"use strict"; + +var toObject = __nested_webpack_require_18911__(7908); +var toAbsoluteIndex = __nested_webpack_require_18911__(1400); +var toLength = __nested_webpack_require_18911__(7466); + +// `Array.prototype.fill` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.fill +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; + + +/***/ }), + +/***/ 8533: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_19717__) { + +"use strict"; + +var $forEach = __nested_webpack_require_19717__(2092).forEach; +var arrayMethodIsStrict = __nested_webpack_require_19717__(9341); + +var STRICT_METHOD = arrayMethodIsStrict('forEach'); + +// `Array.prototype.forEach` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.foreach +module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); +} : [].forEach; + + +/***/ }), + +/***/ 8457: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_20278__) { + +"use strict"; + +var bind = __nested_webpack_require_20278__(9974); +var toObject = __nested_webpack_require_20278__(7908); +var callWithSafeIterationClosing = __nested_webpack_require_20278__(3411); +var isArrayIteratorMethod = __nested_webpack_require_20278__(7659); +var toLength = __nested_webpack_require_20278__(7466); +var createProperty = __nested_webpack_require_20278__(6135); +var getIteratorMethod = __nested_webpack_require_20278__(1246); + +// `Array.from` method implementation +// https://tc39.es/ecma262/#sec-array.from +module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod(O); + var index = 0; + var length, result, step, iterator, next, value; + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = iteratorMethod.call(O); + next = iterator.next; + result = new C(); + for (;!(step = next.call(iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty(result, index, value); + } + } else { + length = toLength(O.length); + result = new C(length); + for (;length > index; index++) { + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty(result, index, value); + } + } + result.length = index; + return result; +}; + + +/***/ }), + +/***/ 1318: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_22092__) { + +var toIndexedObject = __nested_webpack_require_22092__(5656); +var toLength = __nested_webpack_require_22092__(7466); +var toAbsoluteIndex = __nested_webpack_require_22092__(1400); + +// `Array.prototype.{ indexOf, includes }` methods implementation +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +module.exports = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; + + +/***/ }), + +/***/ 2092: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_23446__) { + +var bind = __nested_webpack_require_23446__(9974); +var IndexedObject = __nested_webpack_require_23446__(8361); +var toObject = __nested_webpack_require_23446__(7908); +var toLength = __nested_webpack_require_23446__(7466); +var arraySpeciesCreate = __nested_webpack_require_23446__(5417); + +var push = [].push; + +// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation +var createMethod = function (TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var IS_FILTER_OUT = TYPE == 7; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = IndexedObject(O); + var boundFunction = bind(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push.call(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push.call(target, value); // filterOut + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +module.exports = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod(6), + // `Array.prototype.filterOut` method + // https://github.com/tc39/proposal-array-filtering + filterOut: createMethod(7) +}; + + +/***/ }), + +/***/ 6583: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_26271__) { + +"use strict"; + +var toIndexedObject = __nested_webpack_require_26271__(5656); +var toInteger = __nested_webpack_require_26271__(9958); +var toLength = __nested_webpack_require_26271__(7466); +var arrayMethodIsStrict = __nested_webpack_require_26271__(9341); + +var min = Math.min; +var nativeLastIndexOf = [].lastIndexOf; +var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; +var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf'); +var FORCED = NEGATIVE_ZERO || !STRICT_METHOD; + +// `Array.prototype.lastIndexOf` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.lastindexof +module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0; + var O = toIndexedObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) index = min(index, toInteger(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; + return -1; +} : nativeLastIndexOf; + + +/***/ }), + +/***/ 1194: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_27452__) { + +var fails = __nested_webpack_require_27452__(7293); +var wellKnownSymbol = __nested_webpack_require_27452__(5112); +var V8_VERSION = __nested_webpack_require_27452__(7392); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; + + +/***/ }), + +/***/ 9341: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_28188__) { + +"use strict"; + +var fails = __nested_webpack_require_28188__(7293); + +module.exports = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing + method.call(null, argument || function () { throw 1; }, 1); + }); +}; + + +/***/ }), + +/***/ 3671: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_28629__) { + +var aFunction = __nested_webpack_require_28629__(3099); +var toObject = __nested_webpack_require_28629__(7908); +var IndexedObject = __nested_webpack_require_28629__(8361); +var toLength = __nested_webpack_require_28629__(7466); + +// `Array.prototype.{ reduce, reduceRight }` methods implementation +var createMethod = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + aFunction(callbackfn); + var O = toObject(that); + var self = IndexedObject(O); + var length = toLength(O.length); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; +}; + +module.exports = { + // `Array.prototype.reduce` method + // https://tc39.es/ecma262/#sec-array.prototype.reduce + left: createMethod(false), + // `Array.prototype.reduceRight` method + // https://tc39.es/ecma262/#sec-array.prototype.reduceright + right: createMethod(true) +}; + + +/***/ }), + +/***/ 5417: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_30017__) { + +var isObject = __nested_webpack_require_30017__(111); +var isArray = __nested_webpack_require_30017__(3157); +var wellKnownSymbol = __nested_webpack_require_30017__(5112); + +var SPECIES = wellKnownSymbol('species'); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); +}; + + +/***/ }), + +/***/ 3411: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_30798__) { + +var anObject = __nested_webpack_require_30798__(9670); +var iteratorClose = __nested_webpack_require_30798__(9212); + +// call something on iterator step with safe closing on error +module.exports = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (error) { + iteratorClose(iterator); + throw error; + } +}; + + +/***/ }), + +/***/ 7072: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_31303__) { + +var wellKnownSymbol = __nested_webpack_require_31303__(5112); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + + +/***/ }), + +/***/ 4326: +/***/ (function(module) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), + +/***/ 648: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_32503__) { + +var TO_STRING_TAG_SUPPORT = __nested_webpack_require_32503__(1694); +var classofRaw = __nested_webpack_require_32503__(4326); +var wellKnownSymbol = __nested_webpack_require_32503__(5112); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; +}; + + +/***/ }), + +/***/ 9920: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_33565__) { + +var has = __nested_webpack_require_33565__(6656); +var ownKeys = __nested_webpack_require_33565__(3887); +var getOwnPropertyDescriptorModule = __nested_webpack_require_33565__(1236); +var definePropertyModule = __nested_webpack_require_33565__(3070); + +module.exports = function (target, source) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } +}; + + +/***/ }), + +/***/ 8544: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_34217__) { + +var fails = __nested_webpack_require_34217__(7293); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + + +/***/ }), + +/***/ 4994: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_34520__) { + +"use strict"; + +var IteratorPrototype = __nested_webpack_require_34520__(3383).IteratorPrototype; +var create = __nested_webpack_require_34520__(30); +var createPropertyDescriptor = __nested_webpack_require_34520__(9114); +var setToStringTag = __nested_webpack_require_34520__(8003); +var Iterators = __nested_webpack_require_34520__(7497); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + + +/***/ }), + +/***/ 8880: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_35290__) { + +var DESCRIPTORS = __nested_webpack_require_35290__(9781); +var definePropertyModule = __nested_webpack_require_35290__(3070); +var createPropertyDescriptor = __nested_webpack_require_35290__(9114); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), + +/***/ 9114: +/***/ (function(module) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), + +/***/ 6135: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_35996__) { + +"use strict"; + +var toPrimitive = __nested_webpack_require_35996__(7593); +var definePropertyModule = __nested_webpack_require_35996__(3070); +var createPropertyDescriptor = __nested_webpack_require_35996__(9114); + +module.exports = function (object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; +}; + + +/***/ }), + +/***/ 654: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_36503__) { + +"use strict"; + +var $ = __nested_webpack_require_36503__(2109); +var createIteratorConstructor = __nested_webpack_require_36503__(4994); +var getPrototypeOf = __nested_webpack_require_36503__(9518); +var setPrototypeOf = __nested_webpack_require_36503__(7674); +var setToStringTag = __nested_webpack_require_36503__(8003); +var createNonEnumerableProperty = __nested_webpack_require_36503__(8880); +var redefine = __nested_webpack_require_36503__(1320); +var wellKnownSymbol = __nested_webpack_require_36503__(5112); +var IS_PURE = __nested_webpack_require_36503__(1913); +var Iterators = __nested_webpack_require_36503__(7497); +var IteratorsCore = __nested_webpack_require_36503__(3383); + +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { + createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return nativeIterator.call(this); }; + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator); + } + Iterators[NAME] = defaultIterator; + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + return methods; +}; + + +/***/ }), + +/***/ 9781: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_40475__) { + +var fails = __nested_webpack_require_40475__(7293); + +// Detect IE8's incomplete defineProperty implementation +module.exports = !fails(function () { + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; +}); + + +/***/ }), + +/***/ 317: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_40795__) { + +var global = __nested_webpack_require_40795__(7854); +var isObject = __nested_webpack_require_40795__(111); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var EXISTS = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; + + +/***/ }), + +/***/ 8324: +/***/ (function(module) { + +// iterable DOM collections +// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods +module.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 +}; + + +/***/ }), + +/***/ 8113: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_42025__) { + +var getBuiltIn = __nested_webpack_require_42025__(5005); + +module.exports = getBuiltIn('navigator', 'userAgent') || ''; + + +/***/ }), + +/***/ 7392: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_42230__) { + +var global = __nested_webpack_require_42230__(7854); +var userAgent = __nested_webpack_require_42230__(8113); + +var process = global.process; +var versions = process && process.versions; +var v8 = versions && versions.v8; +var match, version; + +if (v8) { + match = v8.split('.'); + version = match[0] + match[1]; +} else if (userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) version = match[1]; + } +} + +module.exports = version && +version; + + +/***/ }), + +/***/ 748: +/***/ (function(module) { + +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + + +/***/ }), + +/***/ 2109: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_43065__) { + +var global = __nested_webpack_require_43065__(7854); +var getOwnPropertyDescriptor = __nested_webpack_require_43065__(1236).f; +var createNonEnumerableProperty = __nested_webpack_require_43065__(8880); +var redefine = __nested_webpack_require_43065__(1320); +var setGlobal = __nested_webpack_require_43065__(3505); +var copyConstructorProperties = __nested_webpack_require_43065__(9920); +var isForced = __nested_webpack_require_43065__(4705); + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty === typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + // extend global + redefine(target, key, sourceProperty, options); + } +}; + + +/***/ }), + +/***/ 7293: +/***/ (function(module) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + + +/***/ }), + +/***/ 7007: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_45726__) { + +"use strict"; + +// TODO: Remove from `core-js@4` since it's moved to entry points +__nested_webpack_require_45726__(4916); +var redefine = __nested_webpack_require_45726__(1320); +var fails = __nested_webpack_require_45726__(7293); +var wellKnownSymbol = __nested_webpack_require_45726__(5112); +var regexpExec = __nested_webpack_require_45726__(2261); +var createNonEnumerableProperty = __nested_webpack_require_45726__(8880); + +var SPECIES = wellKnownSymbol('species'); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$') !== '7'; +}); + +// IE <= 11 replaces $0 with the whole match, as if it was $& +// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 +var REPLACE_KEEPS_$0 = (function () { + return 'a'.replace(/./, '$0') === '$0'; +})(); + +var REPLACE = wellKnownSymbol('replace'); +// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string +var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; +})(); + +// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec +// Weex JS has frozen built-in prototypes, so use try / catch wrapper +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { + // eslint-disable-next-line regexp/no-empty-group -- required for testing + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; +}); + +module.exports = function (KEY, length, exec, sham) { + var SYMBOL = wellKnownSymbol(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { execCalled = true; return null; }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !( + REPLACE_SUPPORTS_NAMED_GROUPS && + REPLACE_KEEPS_$0 && + !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + )) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + }, { + REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, + REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + }); + var stringMethod = methods[0]; + var regexMethod = methods[1]; + + redefine(String.prototype, KEY, stringMethod); + redefine(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return regexMethod.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return regexMethod.call(string, this); } + ); + } + + if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); +}; + + +/***/ }), + +/***/ 9974: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_50488__) { + +var aFunction = __nested_webpack_require_50488__(3099); + +// optional / simple context binding +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 0: return function () { + return fn.call(that); + }; + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), + +/***/ 5005: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_51177__) { + +var path = __nested_webpack_require_51177__(857); +var global = __nested_webpack_require_51177__(7854); + +var aFunction = function (variable) { + return typeof variable == 'function' ? variable : undefined; +}; + +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) + : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; +}; + + +/***/ }), + +/***/ 1246: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_51701__) { + +var classof = __nested_webpack_require_51701__(648); +var Iterators = __nested_webpack_require_51701__(7497); +var wellKnownSymbol = __nested_webpack_require_51701__(5112); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), + +/***/ 8554: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_52112__) { + +var anObject = __nested_webpack_require_52112__(9670); +var getIteratorMethod = __nested_webpack_require_52112__(1246); + +module.exports = function (it) { + var iteratorMethod = getIteratorMethod(it); + if (typeof iteratorMethod != 'function') { + throw TypeError(String(it) + ' is not iterable'); + } return anObject(iteratorMethod.call(it)); +}; + + +/***/ }), + +/***/ 647: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_52531__) { + +var toObject = __nested_webpack_require_52531__(7908); + +var floor = Math.floor; +var replace = ''.replace; +var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; + +// https://tc39.es/ecma262/#sec-getsubstitution +module.exports = function (matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); +}; + + +/***/ }), + +/***/ 7854: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_53970__) { + +var check = function (it) { + return it && it.Math == Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + /* global globalThis -- safe */ + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + check(typeof self == 'object' && self) || + check(typeof __nested_webpack_require_53970__.g == 'object' && __nested_webpack_require_53970__.g) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + + +/***/ }), + +/***/ 6656: +/***/ (function(module) { + +var hasOwnProperty = {}.hasOwnProperty; + +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), + +/***/ 3501: +/***/ (function(module) { + +module.exports = {}; + + +/***/ }), + +/***/ 490: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_54852__) { + +var getBuiltIn = __nested_webpack_require_54852__(5005); + +module.exports = getBuiltIn('document', 'documentElement'); + + +/***/ }), + +/***/ 4664: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_55056__) { + +var DESCRIPTORS = __nested_webpack_require_55056__(9781); +var fails = __nested_webpack_require_55056__(7293); +var createElement = __nested_webpack_require_55056__(317); + +// Thank's IE8 for his funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; +}); + + +/***/ }), + +/***/ 1179: +/***/ (function(module) { + +// IEEE754 conversions based on https://github.com/feross/ieee754 +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; + +var pack = function (number, mantissaLength, bytes) { + var buffer = new Array(bytes); + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0; + var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; + var index = 0; + var exponent, mantissa, c; + number = abs(number); + // eslint-disable-next-line no-self-compare -- NaN check + if (number != number || number === Infinity) { + // eslint-disable-next-line no-self-compare -- NaN check + mantissa = number != number ? 1 : 0; + exponent = eMax; + } else { + exponent = floor(log(number) / LN2); + if (number * (c = pow(2, -exponent)) < 1) { + exponent--; + c *= 2; + } + if (exponent + eBias >= 1) { + number += rt / c; + } else { + number += rt * pow(2, 1 - eBias); + } + if (number * c >= 2) { + exponent++; + c /= 2; + } + if (exponent + eBias >= eMax) { + mantissa = 0; + exponent = eMax; + } else if (exponent + eBias >= 1) { + mantissa = (number * c - 1) * pow(2, mantissaLength); + exponent = exponent + eBias; + } else { + mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength); + exponent = 0; + } + } + for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8); + exponent = exponent << mantissaLength | mantissa; + exponentLength += mantissaLength; + for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8); + buffer[--index] |= sign * 128; + return buffer; +}; + +var unpack = function (buffer, mantissaLength) { + var bytes = buffer.length; + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var nBits = exponentLength - 7; + var index = bytes - 1; + var sign = buffer[index--]; + var exponent = sign & 127; + var mantissa; + sign >>= 7; + for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8); + mantissa = exponent & (1 << -nBits) - 1; + exponent >>= -nBits; + nBits += mantissaLength; + for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8); + if (exponent === 0) { + exponent = 1 - eBias; + } else if (exponent === eMax) { + return mantissa ? NaN : sign ? -Infinity : Infinity; + } else { + mantissa = mantissa + pow(2, mantissaLength); + exponent = exponent - eBias; + } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength); +}; + +module.exports = { + pack: pack, + unpack: unpack +}; + + +/***/ }), + +/***/ 8361: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_58329__) { + +var fails = __nested_webpack_require_58329__(7293); +var classof = __nested_webpack_require_58329__(4326); + +var split = ''.split; + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split.call(it, '') : Object(it); +} : Object; + + +/***/ }), + +/***/ 9587: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_58925__) { + +var isObject = __nested_webpack_require_58925__(111); +var setPrototypeOf = __nested_webpack_require_58925__(7674); + +// makes subclassing work correct for wrapped built-ins +module.exports = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + typeof (NewTarget = dummy.constructor) == 'function' && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf($this, NewTargetPrototype); + return $this; +}; + + +/***/ }), + +/***/ 2788: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_59686__) { + +var store = __nested_webpack_require_59686__(5465); + +var functionToString = Function.toString; + +// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper +if (typeof store.inspectSource != 'function') { + store.inspectSource = function (it) { + return functionToString.call(it); + }; +} + +module.exports = store.inspectSource; + + +/***/ }), + +/***/ 9909: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_60112__) { + +var NATIVE_WEAK_MAP = __nested_webpack_require_60112__(8536); +var global = __nested_webpack_require_60112__(7854); +var isObject = __nested_webpack_require_60112__(111); +var createNonEnumerableProperty = __nested_webpack_require_60112__(8880); +var objectHas = __nested_webpack_require_60112__(6656); +var shared = __nested_webpack_require_60112__(5465); +var sharedKey = __nested_webpack_require_60112__(6200); +var hiddenKeys = __nested_webpack_require_60112__(3501); + +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP) { + var store = shared.state || (shared.state = new WeakMap()); + var wmget = store.get; + var wmhas = store.has; + var wmset = store.set; + set = function (it, metadata) { + metadata.facade = it; + wmset.call(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget.call(store, it) || {}; + }; + has = function (it) { + return wmhas.call(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return objectHas(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return objectHas(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + + +/***/ }), + +/***/ 7659: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_61804__) { + +var wellKnownSymbol = __nested_webpack_require_61804__(5112); +var Iterators = __nested_webpack_require_61804__(7497); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + + +/***/ }), + +/***/ 3157: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_62240__) { + +var classof = __nested_webpack_require_62240__(4326); + +// `IsArray` abstract operation +// https://tc39.es/ecma262/#sec-isarray +module.exports = Array.isArray || function isArray(arg) { + return classof(arg) == 'Array'; +}; + + +/***/ }), + +/***/ 4705: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_62548__) { + +var fails = __nested_webpack_require_62548__(7293); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : typeof detection == 'function' ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + + +/***/ }), + +/***/ 111: +/***/ (function(module) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), + +/***/ 1913: +/***/ (function(module) { + +module.exports = false; + + +/***/ }), + +/***/ 7850: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_63453__) { + +var isObject = __nested_webpack_require_63453__(111); +var classof = __nested_webpack_require_63453__(4326); +var wellKnownSymbol = __nested_webpack_require_63453__(5112); + +var MATCH = wellKnownSymbol('match'); + +// `IsRegExp` abstract operation +// https://tc39.es/ecma262/#sec-isregexp +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); +}; + + +/***/ }), + +/***/ 9212: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_63953__) { + +var anObject = __nested_webpack_require_63953__(9670); + +module.exports = function (iterator) { + var returnMethod = iterator['return']; + if (returnMethod !== undefined) { + return anObject(returnMethod.call(iterator)).value; + } +}; + + +/***/ }), + +/***/ 3383: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_64274__) { + +"use strict"; + +var fails = __nested_webpack_require_64274__(7293); +var getPrototypeOf = __nested_webpack_require_64274__(9518); +var createNonEnumerableProperty = __nested_webpack_require_64274__(8880); +var has = __nested_webpack_require_64274__(6656); +var wellKnownSymbol = __nested_webpack_require_64274__(5112); +var IS_PURE = __nested_webpack_require_64274__(1913); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +var returnThis = function () { return this; }; + +// `%IteratorPrototype%` object +// https://tc39.es/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype[ITERATOR].call(test) !== test; +}); + +if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +if ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) { + createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); +} + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + + +/***/ }), + +/***/ 7497: +/***/ (function(module) { + +module.exports = {}; + + +/***/ }), + +/***/ 133: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_65970__) { + +var fails = __nested_webpack_require_65970__(7293); + +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + // Chrome 38 Symbol has incorrect toString conversion + /* global Symbol -- required for testing */ + return !String(Symbol()); +}); + + +/***/ }), + +/***/ 590: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_66314__) { + +var fails = __nested_webpack_require_66314__(7293); +var wellKnownSymbol = __nested_webpack_require_66314__(5112); +var IS_PURE = __nested_webpack_require_66314__(1913); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = !fails(function () { + var url = new URL('b?a=1&b=2&c=3', 'http://a'); + var searchParams = url.searchParams; + var result = ''; + url.pathname = 'c%20d'; + searchParams.forEach(function (value, key) { + searchParams['delete']('b'); + result += key + value; + }); + return (IS_PURE && !url.toJSON) + || !searchParams.sort + || url.href !== 'http://a/c%20d?a=1&c=3' + || searchParams.get('c') !== '3' + || String(new URLSearchParams('?a=1')) !== 'a=1' + || !searchParams[ITERATOR] + // throws in Edge + || new URL('https://a@b').username !== 'a' + || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' + // not punycoded in Edge + || new URL('http://тест').host !== 'xn--e1aybc' + // not escaped in Chrome 62- + || new URL('http://a#б').hash !== '#%D0%B1' + // fails in Chrome 66- + || result !== 'a1c3' + // throws in Safari + || new URL('http://x', undefined).host !== 'x'; +}); + + +/***/ }), + +/***/ 8536: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67534__) { + +var global = __nested_webpack_require_67534__(7854); +var inspectSource = __nested_webpack_require_67534__(2788); + +var WeakMap = global.WeakMap; + +module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); + + +/***/ }), + +/***/ 1574: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67846__) { + +"use strict"; + +var DESCRIPTORS = __nested_webpack_require_67846__(9781); +var fails = __nested_webpack_require_67846__(7293); +var objectKeys = __nested_webpack_require_67846__(1956); +var getOwnPropertySymbolsModule = __nested_webpack_require_67846__(5181); +var propertyIsEnumerableModule = __nested_webpack_require_67846__(5296); +var toObject = __nested_webpack_require_67846__(7908); +var IndexedObject = __nested_webpack_require_67846__(8361); + +var nativeAssign = Object.assign; +var defineProperty = Object.defineProperty; + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +module.exports = !nativeAssign || fails(function () { + // should have correct order of operations (Edge bug) + if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', { + enumerable: true, + get: function () { + defineProperty(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + /* global Symbol -- required for testing */ + var symbol = Symbol(); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key]; + } + } return T; +} : nativeAssign; + + +/***/ }), + +/***/ 30: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_69941__) { + +var anObject = __nested_webpack_require_69941__(9670); +var defineProperties = __nested_webpack_require_69941__(6048); +var enumBugKeys = __nested_webpack_require_69941__(748); +var hiddenKeys = __nested_webpack_require_69941__(3501); +var html = __nested_webpack_require_69941__(490); +var documentCreateElement = __nested_webpack_require_69941__(317); +var sharedKey = __nested_webpack_require_69941__(6200); + +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); + +var EmptyConstructor = function () { /* empty */ }; + +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; + +// Create object with fake `null` prototype: use ActiveX Object with cleared prototype +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; +}; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; + +// Check for document.domain and active x support +// No need to use active x approach when document.domain is not set +// see https://github.com/es-shims/es5-shim/issues/150 +// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 +// avoid IE GC bug +var activeXDocument; +var NullProtoObject = function () { + try { + /* global ActiveXObject -- old IE */ + activeXDocument = document.domain && new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; + +hiddenKeys[IE_PROTO] = true; + +// `Object.create` method +// https://tc39.es/ecma262/#sec-object.create +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : defineProperties(result, Properties); +}; + + +/***/ }), + +/***/ 6048: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_72835__) { + +var DESCRIPTORS = __nested_webpack_require_72835__(9781); +var definePropertyModule = __nested_webpack_require_72835__(3070); +var anObject = __nested_webpack_require_72835__(9670); +var objectKeys = __nested_webpack_require_72835__(1956); + +// `Object.defineProperties` method +// https://tc39.es/ecma262/#sec-object.defineproperties +module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); + return O; +}; + + +/***/ }), + +/***/ 3070: +/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_73525__) { + +var DESCRIPTORS = __nested_webpack_require_73525__(9781); +var IE8_DOM_DEFINE = __nested_webpack_require_73525__(4664); +var anObject = __nested_webpack_require_73525__(9670); +var toPrimitive = __nested_webpack_require_73525__(7593); + +var nativeDefineProperty = Object.defineProperty; + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), + +/***/ 1236: +/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_74380__) { + +var DESCRIPTORS = __nested_webpack_require_74380__(9781); +var propertyIsEnumerableModule = __nested_webpack_require_74380__(5296); +var createPropertyDescriptor = __nested_webpack_require_74380__(9114); +var toIndexedObject = __nested_webpack_require_74380__(5656); +var toPrimitive = __nested_webpack_require_74380__(7593); +var has = __nested_webpack_require_74380__(6656); +var IE8_DOM_DEFINE = __nested_webpack_require_74380__(4664); + +var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); +}; + + +/***/ }), + +/***/ 8006: +/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_75368__) { + +var internalObjectKeys = __nested_webpack_require_75368__(6324); +var enumBugKeys = __nested_webpack_require_75368__(748); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +// `Object.getOwnPropertyNames` method +// https://tc39.es/ecma262/#sec-object.getownpropertynames +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + + +/***/ }), + +/***/ 5181: +/***/ (function(__unused_webpack_module, exports) { + +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ 9518: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_75966__) { + +var has = __nested_webpack_require_75966__(6656); +var toObject = __nested_webpack_require_75966__(7908); +var sharedKey = __nested_webpack_require_75966__(6200); +var CORRECT_PROTOTYPE_GETTER = __nested_webpack_require_75966__(8544); + +var IE_PROTO = sharedKey('IE_PROTO'); +var ObjectPrototype = Object.prototype; + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectPrototype : null; +}; + + +/***/ }), + +/***/ 6324: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_76729__) { + +var has = __nested_webpack_require_76729__(6656); +var toIndexedObject = __nested_webpack_require_76729__(5656); +var indexOf = __nested_webpack_require_76729__(1318).indexOf; +var hiddenKeys = __nested_webpack_require_76729__(3501); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~indexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), + +/***/ 1956: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_77369__) { + +var internalObjectKeys = __nested_webpack_require_77369__(6324); +var enumBugKeys = __nested_webpack_require_77369__(748); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + + +/***/ }), + +/***/ 5296: +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var nativePropertyIsEnumerable = {}.propertyIsEnumerable; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + +// `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : nativePropertyIsEnumerable; + + +/***/ }), + +/***/ 7674: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_78394__) { + +/* eslint-disable no-proto -- safe */ +var anObject = __nested_webpack_require_78394__(9670); +var aPossiblePrototype = __nested_webpack_require_78394__(6077); + +// `Object.setPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.setprototypeof +// Works with __proto__ only. Old v8 can't work with null proto objects. +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; + setter.call(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) setter.call(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + + +/***/ }), + +/***/ 288: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_79325__) { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __nested_webpack_require_79325__(1694); +var classof = __nested_webpack_require_79325__(648); + +// `Object.prototype.toString` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.tostring +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; +}; + + +/***/ }), + +/***/ 3887: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_79769__) { + +var getBuiltIn = __nested_webpack_require_79769__(5005); +var getOwnPropertyNamesModule = __nested_webpack_require_79769__(8006); +var getOwnPropertySymbolsModule = __nested_webpack_require_79769__(5181); +var anObject = __nested_webpack_require_79769__(9670); + +// all object keys, includes non-enumerable and symbols +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; +}; + + +/***/ }), + +/***/ 857: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80406__) { + +var global = __nested_webpack_require_80406__(7854); + +module.exports = global; + + +/***/ }), + +/***/ 2248: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80571__) { + +var redefine = __nested_webpack_require_80571__(1320); + +module.exports = function (target, src, options) { + for (var key in src) redefine(target, key, src[key], options); + return target; +}; + + +/***/ }), + +/***/ 1320: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80849__) { + +var global = __nested_webpack_require_80849__(7854); +var createNonEnumerableProperty = __nested_webpack_require_80849__(8880); +var has = __nested_webpack_require_80849__(6656); +var setGlobal = __nested_webpack_require_80849__(3505); +var inspectSource = __nested_webpack_require_80849__(2788); +var InternalStateModule = __nested_webpack_require_80849__(9909); + +var getInternalState = InternalStateModule.get; +var enforceInternalState = InternalStateModule.enforce; +var TEMPLATE = String(String).split('String'); + +(module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + var state; + if (typeof value == 'function') { + if (typeof key == 'string' && !has(value, 'name')) { + createNonEnumerableProperty(value, 'name', key); + } + state = enforceInternalState(value); + if (!state.source) { + state.source = TEMPLATE.join(typeof key == 'string' ? key : ''); + } + } + if (O === global) { + if (simple) O[key] = value; + else setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) O[key] = value; + else createNonEnumerableProperty(O, key, value); +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, 'toString', function toString() { + return typeof this == 'function' && getInternalState(this).source || inspectSource(this); +}); + + +/***/ }), + +/***/ 7651: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_82466__) { + +var classof = __nested_webpack_require_82466__(4326); +var regexpExec = __nested_webpack_require_82466__(2261); + +// `RegExpExec` abstract operation +// https://tc39.es/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + + if (classof(R) !== 'RegExp') { + throw TypeError('RegExp#exec called on incompatible receiver'); + } + + return regexpExec.call(R, S); +}; + + + +/***/ }), + +/***/ 2261: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_83158__) { + +"use strict"; + +var regexpFlags = __nested_webpack_require_83158__(7066); +var stickyHelpers = __nested_webpack_require_83158__(2999); + +var nativeExec = RegExp.prototype.exec; +// This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. +var nativeReplace = String.prototype.replace; + +var patchedExec = nativeExec; + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; +})(); + +var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET; + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y; + +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + var sticky = UNSUPPORTED_Y && re.sticky; + var flags = regexpFlags.call(re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = flags.replace('y', ''); + if (flags.indexOf('g') === -1) { + flags += 'g'; + } + + strCopy = String(str).slice(re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = nativeExec.call(sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = match.input.slice(charsAdded); + match[0] = match[0].slice(charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; +} + +module.exports = patchedExec; + + +/***/ }), + +/***/ 7066: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_86176__) { + +"use strict"; + +var anObject = __nested_webpack_require_86176__(9670); + +// `RegExp.prototype.flags` getter implementation +// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; + + +/***/ }), + +/***/ 2999: +/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_86753__) { + +"use strict"; + + +var fails = __nested_webpack_require_86753__(7293); + +// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, +// so we use an intermediate function. +function RE(s, f) { + return RegExp(s, f); +} + +exports.UNSUPPORTED_Y = fails(function () { + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var re = RE('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; +}); + +exports.BROKEN_CARET = fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = RE('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; +}); + + +/***/ }), + +/***/ 4488: +/***/ (function(module) { + +// `RequireObjectCoercible` abstract operation +// https://tc39.es/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), + +/***/ 3505: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_87737__) { + +var global = __nested_webpack_require_87737__(7854); +var createNonEnumerableProperty = __nested_webpack_require_87737__(8880); + +module.exports = function (key, value) { + try { + createNonEnumerableProperty(global, key, value); + } catch (error) { + global[key] = value; + } return value; +}; + + +/***/ }), + +/***/ 6340: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_88106__) { + +"use strict"; + +var getBuiltIn = __nested_webpack_require_88106__(5005); +var definePropertyModule = __nested_webpack_require_88106__(3070); +var wellKnownSymbol = __nested_webpack_require_88106__(5112); +var DESCRIPTORS = __nested_webpack_require_88106__(9781); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = definePropertyModule.f; + + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineProperty(Constructor, SPECIES, { + configurable: true, + get: function () { return this; } + }); + } +}; + + +/***/ }), + +/***/ 8003: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_88786__) { + +var defineProperty = __nested_webpack_require_88786__(3070).f; +var has = __nested_webpack_require_88786__(6656); +var wellKnownSymbol = __nested_webpack_require_88786__(5112); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { + defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); + } +}; + + +/***/ }), + +/***/ 6200: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89271__) { + +var shared = __nested_webpack_require_89271__(2309); +var uid = __nested_webpack_require_89271__(9711); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + + +/***/ }), + +/***/ 5465: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89559__) { + +var global = __nested_webpack_require_89559__(7854); +var setGlobal = __nested_webpack_require_89559__(3505); + +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || setGlobal(SHARED, {}); + +module.exports = store; + + +/***/ }), + +/***/ 2309: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89855__) { + +var IS_PURE = __nested_webpack_require_89855__(1913); +var store = __nested_webpack_require_89855__(5465); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.9.0', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2021 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), + +/***/ 6707: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_90288__) { + +var anObject = __nested_webpack_require_90288__(9670); +var aFunction = __nested_webpack_require_90288__(3099); +var wellKnownSymbol = __nested_webpack_require_90288__(5112); + +var SPECIES = wellKnownSymbol('species'); + +// `SpeciesConstructor` abstract operation +// https://tc39.es/ecma262/#sec-speciesconstructor +module.exports = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); +}; + + +/***/ }), + +/***/ 8710: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_90863__) { + +var toInteger = __nested_webpack_require_90863__(9958); +var requireObjectCoercible = __nested_webpack_require_90863__(4488); + +// `String.prototype.{ codePointAt, at }` methods implementation +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = String(requireObjectCoercible($this)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; + + +/***/ }), + +/***/ 3197: +/***/ (function(module) { + +"use strict"; + +// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js +var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 +var base = 36; +var tMin = 1; +var tMax = 26; +var skew = 38; +var damp = 700; +var initialBias = 72; +var initialN = 128; // 0x80 +var delimiter = '-'; // '\x2D' +var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars +var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators +var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process'; +var baseMinusTMin = base - tMin; +var floor = Math.floor; +var stringFromCharCode = String.fromCharCode; + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + */ +var ucs2decode = function (string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; +}; + +/** + * Converts a digit/integer into a basic code point. + */ +var digitToBasic = function (digit) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26); +}; + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + */ +var adapt = function (delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + */ +// eslint-disable-next-line max-statements -- TODO +var encode = function (input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + var i, currentValue; + + // Handle the basic code points. + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + var basicLength = output.length; // number of basic code points. + var handledCPCount = basicLength; // number of code points that have been handled; + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + // All non-basic code points < n have been handled already. Find the next larger one: + var m = maxInt; + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , but guard against overflow. + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + throw RangeError(OVERFLOW_ERROR); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < n && ++delta > maxInt) { + throw RangeError(OVERFLOW_ERROR); + } + if (currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + for (var k = base; /* no condition */; k += base) { + var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) break; + var qMinusT = q - t; + var baseMinusT = base - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT))); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + } + return output.join(''); +}; + +module.exports = function (input) { + var encoded = []; + var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.'); + var i, label; + for (i = 0; i < labels.length; i++) { + label = labels[i]; + encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label); + } + return encoded.join('.'); +}; + + +/***/ }), + +/***/ 6091: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_97360__) { + +var fails = __nested_webpack_require_97360__(7293); +var whitespaces = __nested_webpack_require_97360__(1361); + +var non = '\u200B\u0085\u180E'; + +// check that a method works with the correct list +// of whitespaces and has a correct name +module.exports = function (METHOD_NAME) { + return fails(function () { + return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; + }); +}; + + +/***/ }), + +/***/ 3111: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_97868__) { + +var requireObjectCoercible = __nested_webpack_require_97868__(4488); +var whitespaces = __nested_webpack_require_97868__(1361); + +var whitespace = '[' + whitespaces + ']'; +var ltrim = RegExp('^' + whitespace + whitespace + '*'); +var rtrim = RegExp(whitespace + whitespace + '*$'); + +// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation +var createMethod = function (TYPE) { + return function ($this) { + var string = String(requireObjectCoercible($this)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; + }; +}; + +module.exports = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimstart + start: createMethod(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimend + end: createMethod(2), + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + trim: createMethod(3) +}; + + +/***/ }), + +/***/ 1400: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_98992__) { + +var toInteger = __nested_webpack_require_98992__(9958); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). +module.exports = function (index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; + + +/***/ }), + +/***/ 7067: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_99521__) { + +var toInteger = __nested_webpack_require_99521__(9958); +var toLength = __nested_webpack_require_99521__(7466); + +// `ToIndex` abstract operation +// https://tc39.es/ecma262/#sec-toindex +module.exports = function (it) { + if (it === undefined) return 0; + var number = toInteger(it); + var length = toLength(number); + if (number !== length) throw RangeError('Wrong length or index'); + return length; +}; + + +/***/ }), + +/***/ 5656: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_99996__) { + +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = __nested_webpack_require_99996__(8361); +var requireObjectCoercible = __nested_webpack_require_99996__(4488); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; + + +/***/ }), + +/***/ 9958: +/***/ (function(module) { + +var ceil = Math.ceil; +var floor = Math.floor; + +// `ToInteger` abstract operation +// https://tc39.es/ecma262/#sec-tointeger +module.exports = function (argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); +}; + + +/***/ }), + +/***/ 7466: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_100645__) { + +var toInteger = __nested_webpack_require_100645__(9958); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.es/ecma262/#sec-tolength +module.exports = function (argument) { + return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + + +/***/ }), + +/***/ 7908: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101032__) { + +var requireObjectCoercible = __nested_webpack_require_101032__(4488); + +// `ToObject` abstract operation +// https://tc39.es/ecma262/#sec-toobject +module.exports = function (argument) { + return Object(requireObjectCoercible(argument)); +}; + + +/***/ }), + +/***/ 4590: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101355__) { + +var toPositiveInteger = __nested_webpack_require_101355__(3002); + +module.exports = function (it, BYTES) { + var offset = toPositiveInteger(it); + if (offset % BYTES) throw RangeError('Wrong offset'); + return offset; +}; + + +/***/ }), + +/***/ 3002: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101660__) { + +var toInteger = __nested_webpack_require_101660__(9958); + +module.exports = function (it) { + var result = toInteger(it); + if (result < 0) throw RangeError("The argument can't be less than 0"); + return result; +}; + + +/***/ }), + +/***/ 7593: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101959__) { + +var isObject = __nested_webpack_require_101959__(111); + +// `ToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-toprimitive +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (input, PREFERRED_STRING) { + if (!isObject(input)) return input; + var fn, val; + if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; + if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), + +/***/ 1694: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_102821__) { + +var wellKnownSymbol = __nested_webpack_require_102821__(5112); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; + +test[TO_STRING_TAG] = 'z'; + +module.exports = String(test) === '[object z]'; + + +/***/ }), + +/***/ 9843: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_103114__) { + +"use strict"; + +var $ = __nested_webpack_require_103114__(2109); +var global = __nested_webpack_require_103114__(7854); +var DESCRIPTORS = __nested_webpack_require_103114__(9781); +var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __nested_webpack_require_103114__(3832); +var ArrayBufferViewCore = __nested_webpack_require_103114__(260); +var ArrayBufferModule = __nested_webpack_require_103114__(3331); +var anInstance = __nested_webpack_require_103114__(5787); +var createPropertyDescriptor = __nested_webpack_require_103114__(9114); +var createNonEnumerableProperty = __nested_webpack_require_103114__(8880); +var toLength = __nested_webpack_require_103114__(7466); +var toIndex = __nested_webpack_require_103114__(7067); +var toOffset = __nested_webpack_require_103114__(4590); +var toPrimitive = __nested_webpack_require_103114__(7593); +var has = __nested_webpack_require_103114__(6656); +var classof = __nested_webpack_require_103114__(648); +var isObject = __nested_webpack_require_103114__(111); +var create = __nested_webpack_require_103114__(30); +var setPrototypeOf = __nested_webpack_require_103114__(7674); +var getOwnPropertyNames = __nested_webpack_require_103114__(8006).f; +var typedArrayFrom = __nested_webpack_require_103114__(7321); +var forEach = __nested_webpack_require_103114__(2092).forEach; +var setSpecies = __nested_webpack_require_103114__(6340); +var definePropertyModule = __nested_webpack_require_103114__(3070); +var getOwnPropertyDescriptorModule = __nested_webpack_require_103114__(1236); +var InternalStateModule = __nested_webpack_require_103114__(9909); +var inheritIfRequired = __nested_webpack_require_103114__(9587); + +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var round = Math.round; +var RangeError = global.RangeError; +var ArrayBuffer = ArrayBufferModule.ArrayBuffer; +var DataView = ArrayBufferModule.DataView; +var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; +var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG; +var TypedArray = ArrayBufferViewCore.TypedArray; +var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype; +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; +var isTypedArray = ArrayBufferViewCore.isTypedArray; +var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; +var WRONG_LENGTH = 'Wrong length'; + +var fromList = function (C, list) { + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor(C))(length); + while (length > index) result[index] = list[index++]; + return result; +}; + +var addGetter = function (it, key) { + nativeDefineProperty(it, key, { get: function () { + return getInternalState(this)[key]; + } }); +}; + +var isArrayBuffer = function (it) { + var klass; + return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer'; +}; + +var isTypedArrayIndex = function (target, key) { + return isTypedArray(target) + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); +}; + +var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { + return isTypedArrayIndex(target, key = toPrimitive(key, true)) + ? createPropertyDescriptor(2, target[key]) + : nativeGetOwnPropertyDescriptor(target, key); +}; + +var wrappedDefineProperty = function defineProperty(target, key, descriptor) { + if (isTypedArrayIndex(target, key = toPrimitive(key, true)) + && isObject(descriptor) + && has(descriptor, 'value') + && !has(descriptor, 'get') + && !has(descriptor, 'set') + // TODO: add validation descriptor w/o calling accessors + && !descriptor.configurable + && (!has(descriptor, 'writable') || descriptor.writable) + && (!has(descriptor, 'enumerable') || descriptor.enumerable) + ) { + target[key] = descriptor.value; + return target; + } return nativeDefineProperty(target, key, descriptor); +}; + +if (DESCRIPTORS) { + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor; + definePropertyModule.f = wrappedDefineProperty; + addGetter(TypedArrayPrototype, 'buffer'); + addGetter(TypedArrayPrototype, 'byteOffset'); + addGetter(TypedArrayPrototype, 'byteLength'); + addGetter(TypedArrayPrototype, 'length'); + } + + $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, + defineProperty: wrappedDefineProperty + }); + + module.exports = function (TYPE, wrapper, CLAMPED) { + var BYTES = TYPE.match(/\d+$/)[0] / 8; + var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + TYPE; + var SETTER = 'set' + TYPE; + var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME]; + var TypedArrayConstructor = NativeTypedArrayConstructor; + var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; + var exported = {}; + + var getter = function (that, index) { + var data = getInternalState(that); + return data.view[GETTER](index * BYTES + data.byteOffset, true); + }; + + var setter = function (that, index, value) { + var data = getInternalState(that); + if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; + data.view[SETTER](index * BYTES + data.byteOffset, value, true); + }; + + var addElement = function (that, index) { + nativeDefineProperty(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + TypedArrayConstructor = wrapper(function (that, data, offset, $length) { + anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME); + var index = 0; + var byteOffset = 0; + var buffer, byteLength, length; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new ArrayBuffer(byteLength); + } else if (isArrayBuffer(data)) { + buffer = data; + byteOffset = toOffset(offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw RangeError(WRONG_LENGTH); + byteLength = $len - byteOffset; + if (byteLength < 0) throw RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (isTypedArray(data)) { + return fromList(TypedArrayConstructor, data); + } else { + return typedArrayFrom.call(TypedArrayConstructor, data); + } + setInternalState(that, { + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength, + length: length, + view: new DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype); + } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME); + return inheritIfRequired(function () { + if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data)); + if (isArrayBuffer(data)) return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); + if (isTypedArray(data)) return fromList(TypedArrayConstructor, data); + return typedArrayFrom.call(TypedArrayConstructor, data); + }(), dummy, TypedArrayConstructor); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { + if (!(key in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + } + }); + TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; + } + + if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + } + + if (TYPED_ARRAY_TAG) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + } + + exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; + + $({ + global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS + }, exported); + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + } + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + } + + setSpecies(CONSTRUCTOR_NAME); + }; +} else module.exports = function () { /* empty */ }; + + +/***/ }), + +/***/ 3832: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_112503__) { + +/* eslint-disable no-new -- required for testing */ +var global = __nested_webpack_require_112503__(7854); +var fails = __nested_webpack_require_112503__(7293); +var checkCorrectnessOfIteration = __nested_webpack_require_112503__(7072); +var NATIVE_ARRAY_BUFFER_VIEWS = __nested_webpack_require_112503__(260).NATIVE_ARRAY_BUFFER_VIEWS; + +var ArrayBuffer = global.ArrayBuffer; +var Int8Array = global.Int8Array; + +module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () { + Int8Array(1); +}) || !fails(function () { + new Int8Array(-1); +}) || !checkCorrectnessOfIteration(function (iterable) { + new Int8Array(); + new Int8Array(null); + new Int8Array(1.5); + new Int8Array(iterable); +}, true) || fails(function () { + // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill + return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1; +}); + + +/***/ }), + +/***/ 3074: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_113426__) { + +var aTypedArrayConstructor = __nested_webpack_require_113426__(260).aTypedArrayConstructor; +var speciesConstructor = __nested_webpack_require_113426__(6707); + +module.exports = function (instance, list) { + var C = speciesConstructor(instance, instance.constructor); + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor(C))(length); + while (length > index) result[index] = list[index++]; + return result; +}; + + +/***/ }), + +/***/ 7321: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_113940__) { + +var toObject = __nested_webpack_require_113940__(7908); +var toLength = __nested_webpack_require_113940__(7466); +var getIteratorMethod = __nested_webpack_require_113940__(1246); +var isArrayIteratorMethod = __nested_webpack_require_113940__(7659); +var bind = __nested_webpack_require_113940__(9974); +var aTypedArrayConstructor = __nested_webpack_require_113940__(260).aTypedArrayConstructor; + +module.exports = function from(source /* , mapfn, thisArg */) { + var O = toObject(source); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod(O); + var i, length, result, step, iterator, next; + if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) { + iterator = iteratorMethod.call(O); + next = iterator.next; + O = []; + while (!(step = next.call(iterator)).done) { + O.push(step.value); + } + } + if (mapping && argumentsLength > 2) { + mapfn = bind(mapfn, arguments[2], 2); + } + length = toLength(O.length); + result = new (aTypedArrayConstructor(this))(length); + for (i = 0; length > i; i++) { + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; +}; + + +/***/ }), + +/***/ 9711: +/***/ (function(module) { + +var id = 0; +var postfix = Math.random(); + +module.exports = function (key) { + return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); +}; + + +/***/ }), + +/***/ 3307: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_115419__) { + +var NATIVE_SYMBOL = __nested_webpack_require_115419__(133); + +module.exports = NATIVE_SYMBOL + /* global Symbol -- safe */ + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + +/***/ }), + +/***/ 5112: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_115685__) { + +var global = __nested_webpack_require_115685__(7854); +var shared = __nested_webpack_require_115685__(2309); +var has = __nested_webpack_require_115685__(6656); +var uid = __nested_webpack_require_115685__(9711); +var NATIVE_SYMBOL = __nested_webpack_require_115685__(133); +var USE_SYMBOL_AS_UID = __nested_webpack_require_115685__(3307); + +var WellKnownSymbolsStore = shared('wks'); +var Symbol = global.Symbol; +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; + +module.exports = function (name) { + if (!has(WellKnownSymbolsStore, name)) { + if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name]; + else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; +}; + + +/***/ }), + +/***/ 1361: +/***/ (function(module) { + +// a string of all valid unicode whitespaces +module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + +/***/ }), + +/***/ 8264: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_116785__) { + +"use strict"; + +var $ = __nested_webpack_require_116785__(2109); +var global = __nested_webpack_require_116785__(7854); +var arrayBufferModule = __nested_webpack_require_116785__(3331); +var setSpecies = __nested_webpack_require_116785__(6340); + +var ARRAY_BUFFER = 'ArrayBuffer'; +var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER]; +var NativeArrayBuffer = global[ARRAY_BUFFER]; + +// `ArrayBuffer` constructor +// https://tc39.es/ecma262/#sec-arraybuffer-constructor +$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, { + ArrayBuffer: ArrayBuffer +}); + +setSpecies(ARRAY_BUFFER); + + +/***/ }), + +/***/ 2222: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_117427__) { + +"use strict"; + +var $ = __nested_webpack_require_117427__(2109); +var fails = __nested_webpack_require_117427__(7293); +var isArray = __nested_webpack_require_117427__(3157); +var isObject = __nested_webpack_require_117427__(111); +var toObject = __nested_webpack_require_117427__(7908); +var toLength = __nested_webpack_require_117427__(7466); +var createProperty = __nested_webpack_require_117427__(6135); +var arraySpeciesCreate = __nested_webpack_require_117427__(5417); +var arrayMethodHasSpeciesSupport = __nested_webpack_require_117427__(1194); +var wellKnownSymbol = __nested_webpack_require_117427__(5112); +var V8_VERSION = __nested_webpack_require_117427__(7392); + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; +var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; + +// We can't use this feature detection in V8 since it causes +// deoptimization and serious performance degradation +// https://github.com/zloirock/core-js/issues/679 +var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); + +var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); + +var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; + +// `Array.prototype.concat` method +// https://tc39.es/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species +$({ target: 'Array', proto: true, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = toLength(E.length); + if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } +}); + + +/***/ }), + +/***/ 7327: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_119834__) { + +"use strict"; + +var $ = __nested_webpack_require_119834__(2109); +var $filter = __nested_webpack_require_119834__(2092).filter; +var arrayMethodHasSpeciesSupport = __nested_webpack_require_119834__(1194); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); + +// `Array.prototype.filter` method +// https://tc39.es/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ 2772: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_120523__) { + +"use strict"; + +var $ = __nested_webpack_require_120523__(2109); +var $indexOf = __nested_webpack_require_120523__(1318).indexOf; +var arrayMethodIsStrict = __nested_webpack_require_120523__(9341); + +var nativeIndexOf = [].indexOf; + +var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; +var STRICT_METHOD = arrayMethodIsStrict('indexOf'); + +// `Array.prototype.indexOf` method +// https://tc39.es/ecma262/#sec-array.prototype.indexof +$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, { + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? nativeIndexOf.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ 6992: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_121364__) { + +"use strict"; + +var toIndexedObject = __nested_webpack_require_121364__(5656); +var addToUnscopables = __nested_webpack_require_121364__(1223); +var Iterators = __nested_webpack_require_121364__(7497); +var InternalStateModule = __nested_webpack_require_121364__(9909); +var defineIterator = __nested_webpack_require_121364__(654); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.es/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.es/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.es/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.es/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { value: undefined, done: true }; + } + if (kind == 'keys') return { value: index, done: false }; + if (kind == 'values') return { value: target[index], done: false }; + return { value: [index, target[index]], done: false }; +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.es/ecma262/#sec-createunmappedargumentsobject +// https://tc39.es/ecma262/#sec-createmappedargumentsobject +Iterators.Arguments = Iterators.Array; + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + + +/***/ }), + +/***/ 1249: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_123565__) { + +"use strict"; + +var $ = __nested_webpack_require_123565__(2109); +var $map = __nested_webpack_require_123565__(2092).map; +var arrayMethodHasSpeciesSupport = __nested_webpack_require_123565__(1194); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); + +// `Array.prototype.map` method +// https://tc39.es/ecma262/#sec-array.prototype.map +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ 7042: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_124230__) { + +"use strict"; + +var $ = __nested_webpack_require_124230__(2109); +var isObject = __nested_webpack_require_124230__(111); +var isArray = __nested_webpack_require_124230__(3157); +var toAbsoluteIndex = __nested_webpack_require_124230__(1400); +var toLength = __nested_webpack_require_124230__(7466); +var toIndexedObject = __nested_webpack_require_124230__(5656); +var createProperty = __nested_webpack_require_124230__(6135); +var wellKnownSymbol = __nested_webpack_require_124230__(5112); +var arrayMethodHasSpeciesSupport = __nested_webpack_require_124230__(1194); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); + +var SPECIES = wellKnownSymbol('species'); +var nativeSlice = [].slice; +var max = Math.max; + +// `Array.prototype.slice` method +// https://tc39.es/ecma262/#sec-array.prototype.slice +// fallback for not array-like ES3 strings and DOM objects +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = toLength(O.length); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === Array || Constructor === undefined) { + return nativeSlice.call(O, k, fin); + } + } + result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); + result.length = n; + return result; + } +}); + + +/***/ }), + +/***/ 561: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_126211__) { + +"use strict"; + +var $ = __nested_webpack_require_126211__(2109); +var toAbsoluteIndex = __nested_webpack_require_126211__(1400); +var toInteger = __nested_webpack_require_126211__(9958); +var toLength = __nested_webpack_require_126211__(7466); +var toObject = __nested_webpack_require_126211__(7908); +var arraySpeciesCreate = __nested_webpack_require_126211__(5417); +var createProperty = __nested_webpack_require_126211__(6135); +var arrayMethodHasSpeciesSupport = __nested_webpack_require_126211__(1194); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); + +var max = Math.max; +var min = Math.min; +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; +var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; + +// `Array.prototype.splice` method +// https://tc39.es/ecma262/#sec-array.prototype.splice +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject(this); + var len = toLength(O.length); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart); + } + if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) { + throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); + } + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + O.length = len - actualDeleteCount + insertCount; + return A; + } +}); + + +/***/ }), + +/***/ 8309: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_128857__) { + +var DESCRIPTORS = __nested_webpack_require_128857__(9781); +var defineProperty = __nested_webpack_require_128857__(3070).f; + +var FunctionPrototype = Function.prototype; +var FunctionPrototypeToString = FunctionPrototype.toString; +var nameRE = /^\s*function ([^ (]*)/; +var NAME = 'name'; + +// Function instances `.name` property +// https://tc39.es/ecma262/#sec-function-instances-name +if (DESCRIPTORS && !(NAME in FunctionPrototype)) { + defineProperty(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return FunctionPrototypeToString.call(this).match(nameRE)[1]; + } catch (error) { + return ''; + } + } + }); +} + + +/***/ }), + +/***/ 489: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_129614__) { + +var $ = __nested_webpack_require_129614__(2109); +var fails = __nested_webpack_require_129614__(7293); +var toObject = __nested_webpack_require_129614__(7908); +var nativeGetPrototypeOf = __nested_webpack_require_129614__(9518); +var CORRECT_PROTOTYPE_GETTER = __nested_webpack_require_129614__(8544); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); }); + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { + getPrototypeOf: function getPrototypeOf(it) { + return nativeGetPrototypeOf(toObject(it)); + } +}); + + + +/***/ }), + +/***/ 1539: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_130327__) { + +var TO_STRING_TAG_SUPPORT = __nested_webpack_require_130327__(1694); +var redefine = __nested_webpack_require_130327__(1320); +var toString = __nested_webpack_require_130327__(288); + +// `Object.prototype.toString` method +// https://tc39.es/ecma262/#sec-object.prototype.tostring +if (!TO_STRING_TAG_SUPPORT) { + redefine(Object.prototype, 'toString', toString, { unsafe: true }); +} + + +/***/ }), + +/***/ 4916: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_130780__) { + +"use strict"; + +var $ = __nested_webpack_require_130780__(2109); +var exec = __nested_webpack_require_130780__(2261); + +// `RegExp.prototype.exec` method +// https://tc39.es/ecma262/#sec-regexp.prototype.exec +$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { + exec: exec +}); + + +/***/ }), + +/***/ 9714: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_131156__) { + +"use strict"; + +var redefine = __nested_webpack_require_131156__(1320); +var anObject = __nested_webpack_require_131156__(9670); +var fails = __nested_webpack_require_131156__(7293); +var flags = __nested_webpack_require_131156__(7066); + +var TO_STRING = 'toString'; +var RegExpPrototype = RegExp.prototype; +var nativeToString = RegExpPrototype[TO_STRING]; + +var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); +// FF44- RegExp#toString has a wrong name +var INCORRECT_NAME = nativeToString.name != TO_STRING; + +// `RegExp.prototype.toString` method +// https://tc39.es/ecma262/#sec-regexp.prototype.tostring +if (NOT_GENERIC || INCORRECT_NAME) { + redefine(RegExp.prototype, TO_STRING, function toString() { + var R = anObject(this); + var p = String(R.source); + var rf = R.flags; + var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf); + return '/' + p + '/' + f; + }, { unsafe: true }); +} + + +/***/ }), + +/***/ 8783: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_132221__) { + +"use strict"; + +var charAt = __nested_webpack_require_132221__(8710).charAt; +var InternalStateModule = __nested_webpack_require_132221__(9909); +var defineIterator = __nested_webpack_require_132221__(654); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: point, done: false }; +}); + + +/***/ }), + +/***/ 4723: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_133333__) { + +"use strict"; + +var fixRegExpWellKnownSymbolLogic = __nested_webpack_require_133333__(7007); +var anObject = __nested_webpack_require_133333__(9670); +var toLength = __nested_webpack_require_133333__(7466); +var requireObjectCoercible = __nested_webpack_require_133333__(4488); +var advanceStringIndex = __nested_webpack_require_133333__(1530); +var regExpExec = __nested_webpack_require_133333__(7651); + +// @@match logic +fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.es/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible(this); + var matcher = regexp == undefined ? undefined : regexp[MATCH]; + return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative(nativeMatch, regexp, this); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + + if (!rx.global) return regExpExec(rx, S); + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + + +/***/ }), + +/***/ 5306: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_134975__) { + +"use strict"; + +var fixRegExpWellKnownSymbolLogic = __nested_webpack_require_134975__(7007); +var anObject = __nested_webpack_require_134975__(9670); +var toLength = __nested_webpack_require_134975__(7466); +var toInteger = __nested_webpack_require_134975__(9958); +var requireObjectCoercible = __nested_webpack_require_134975__(4488); +var advanceStringIndex = __nested_webpack_require_134975__(1530); +var getSubstitution = __nested_webpack_require_134975__(647); +var regExpExec = __nested_webpack_require_134975__(7651); + +var max = Math.max; +var min = Math.min; + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// @@replace logic +fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; + var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.es/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; + return replacer !== undefined + ? replacer.call(searchValue, O, replaceValue) + : nativeReplace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + if ( + (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) || + (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) + ) { + var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); + if (res.done) return res.value; + } + + var rx = anObject(regexp); + var S = String(this); + + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + + results.push(result); + if (!global) break; + + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = String(result[0]); + var position = max(min(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; +}); + + +/***/ }), + +/***/ 3123: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_139010__) { + +"use strict"; + +var fixRegExpWellKnownSymbolLogic = __nested_webpack_require_139010__(7007); +var isRegExp = __nested_webpack_require_139010__(7850); +var anObject = __nested_webpack_require_139010__(9670); +var requireObjectCoercible = __nested_webpack_require_139010__(4488); +var speciesConstructor = __nested_webpack_require_139010__(6707); +var advanceStringIndex = __nested_webpack_require_139010__(1530); +var toLength = __nested_webpack_require_139010__(7466); +var callRegExpExec = __nested_webpack_require_139010__(7651); +var regexpExec = __nested_webpack_require_139010__(2261); +var fails = __nested_webpack_require_139010__(7293); + +var arrayPush = [].push; +var min = Math.min; +var MAX_UINT32 = 0xFFFFFFFF; + +// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError +var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); }); + +// @@split logic +fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit; + if ( + 'abbc'.split(/(b)*/)[1] == 'c' || + // eslint-disable-next-line regexp/no-empty-group -- required for testing + 'test'.split(/(?:)/, -1).length != 4 || + 'ab'.split(/(?:ab)*/).length != 2 || + '.'.split(/(.?)(.?)/).length != 4 || + // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(requireObjectCoercible(this)); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (separator === undefined) return [string]; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) { + return nativeSplit.call(string, separator, lim); + } + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy.lastIndex; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= lim) break; + } + if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop + } + if (lastLastIndex === string.length) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output.length > lim ? output.slice(0, lim) : output; + }; + // Chakra, V8 + } else if ('0'.split(undefined, 0).length) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); + }; + } else internalSplit = nativeSplit; + + return [ + // `String.prototype.split` method + // https://tc39.es/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; +}, !SUPPORTS_Y); + + +/***/ }), + +/***/ 3210: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_144619__) { + +"use strict"; + +var $ = __nested_webpack_require_144619__(2109); +var $trim = __nested_webpack_require_144619__(3111).trim; +var forcedStringTrimMethod = __nested_webpack_require_144619__(6091); + +// `String.prototype.trim` method +// https://tc39.es/ecma262/#sec-string.prototype.trim +$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + trim: function trim() { + return $trim(this); + } +}); + + +/***/ }), + +/***/ 2990: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_145111__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_145111__(260); +var $copyWithin = __nested_webpack_require_145111__(1048); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.copyWithin` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin +exportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) { + return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined); +}); + + +/***/ }), + +/***/ 8927: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_145777__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_145777__(260); +var $every = __nested_webpack_require_145777__(2092).every; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.every` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every +exportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) { + return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 3105: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_146412__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_146412__(260); +var $fill = __nested_webpack_require_146412__(1285); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.fill` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill +// eslint-disable-next-line no-unused-vars -- required for `.length` +exportTypedArrayMethod('fill', function fill(value /* , start, end */) { + return $fill.apply(aTypedArray(this), arguments); +}); + + +/***/ }), + +/***/ 5035: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_147058__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_147058__(260); +var $filter = __nested_webpack_require_147058__(2092).filter; +var fromSpeciesAndList = __nested_webpack_require_147058__(3074); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.filter` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter +exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) { + var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return fromSpeciesAndList(this, list); +}); + + +/***/ }), + +/***/ 7174: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_147797__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_147797__(260); +var $findIndex = __nested_webpack_require_147797__(2092).findIndex; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.findIndex` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex +exportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) { + return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 4345: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_148458__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_148458__(260); +var $find = __nested_webpack_require_148458__(2092).find; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.find` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find +exportTypedArrayMethod('find', function find(predicate /* , thisArg */) { + return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 2846: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_149084__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_149084__(260); +var $forEach = __nested_webpack_require_149084__(2092).forEach; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.forEach` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach +exportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) { + $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 4731: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_149726__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_149726__(260); +var $includes = __nested_webpack_require_149726__(1318).includes; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.includes` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes +exportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) { + return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 7209: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_150390__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_150390__(260); +var $indexOf = __nested_webpack_require_150390__(1318).indexOf; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.indexOf` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof +exportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) { + return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 6319: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_151047__) { + +"use strict"; + +var global = __nested_webpack_require_151047__(7854); +var ArrayBufferViewCore = __nested_webpack_require_151047__(260); +var ArrayIterators = __nested_webpack_require_151047__(6992); +var wellKnownSymbol = __nested_webpack_require_151047__(5112); + +var ITERATOR = wellKnownSymbol('iterator'); +var Uint8Array = global.Uint8Array; +var arrayValues = ArrayIterators.values; +var arrayKeys = ArrayIterators.keys; +var arrayEntries = ArrayIterators.entries; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR]; + +var CORRECT_ITER_NAME = !!nativeTypedArrayIterator + && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined); + +var typedArrayValues = function values() { + return arrayValues.call(aTypedArray(this)); +}; + +// `%TypedArray%.prototype.entries` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries +exportTypedArrayMethod('entries', function entries() { + return arrayEntries.call(aTypedArray(this)); +}); +// `%TypedArray%.prototype.keys` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys +exportTypedArrayMethod('keys', function keys() { + return arrayKeys.call(aTypedArray(this)); +}); +// `%TypedArray%.prototype.values` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values +exportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME); +// `%TypedArray%.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator +exportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME); + + +/***/ }), + +/***/ 8867: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_152782__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_152782__(260); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $join = [].join; + +// `%TypedArray%.prototype.join` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join +// eslint-disable-next-line no-unused-vars -- required for `.length` +exportTypedArrayMethod('join', function join(separator) { + return $join.apply(aTypedArray(this), arguments); +}); + + +/***/ }), + +/***/ 7789: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_153395__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_153395__(260); +var $lastIndexOf = __nested_webpack_require_153395__(6583); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.lastIndexOf` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof +// eslint-disable-next-line no-unused-vars -- required for `.length` +exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { + return $lastIndexOf.apply(aTypedArray(this), arguments); +}); + + +/***/ }), + +/***/ 3739: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_154090__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_154090__(260); +var $map = __nested_webpack_require_154090__(2092).map; +var speciesConstructor = __nested_webpack_require_154090__(6707); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.map` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map +exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) { + return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { + return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length); + }); +}); + + +/***/ }), + +/***/ 4483: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_154941__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_154941__(260); +var $reduceRight = __nested_webpack_require_154941__(3671).right; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.reduceRicht` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright +exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) { + return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 9368: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_155635__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_155635__(260); +var $reduce = __nested_webpack_require_155635__(3671).left; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.reduce` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce +exportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) { + return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 2056: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_156298__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_156298__(260); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var floor = Math.floor; + +// `%TypedArray%.prototype.reverse` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse +exportTypedArrayMethod('reverse', function reverse() { + var that = this; + var length = aTypedArray(that).length; + var middle = floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; +}); + + +/***/ }), + +/***/ 3462: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_157051__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_157051__(260); +var toLength = __nested_webpack_require_157051__(7466); +var toOffset = __nested_webpack_require_157051__(4590); +var toObject = __nested_webpack_require_157051__(7908); +var fails = __nested_webpack_require_157051__(7293); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +var FORCED = fails(function () { + /* global Int8Array -- safe */ + new Int8Array(1).set({}); +}); + +// `%TypedArray%.prototype.set` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set +exportTypedArrayMethod('set', function set(arrayLike /* , offset */) { + aTypedArray(this); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); + var length = this.length; + var src = toObject(arrayLike); + var len = toLength(src.length); + var index = 0; + if (len + offset > length) throw RangeError('Wrong length'); + while (index < len) this[offset + index] = src[index++]; +}, FORCED); + + +/***/ }), + +/***/ 678: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_158136__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_158136__(260); +var speciesConstructor = __nested_webpack_require_158136__(6707); +var fails = __nested_webpack_require_158136__(7293); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $slice = [].slice; + +var FORCED = fails(function () { + /* global Int8Array -- safe */ + new Int8Array(1).slice(); +}); + +// `%TypedArray%.prototype.slice` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice +exportTypedArrayMethod('slice', function slice(start, end) { + var list = $slice.call(aTypedArray(this), start, end); + var C = speciesConstructor(this, this.constructor); + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor(C))(length); + while (length > index) result[index] = list[index++]; + return result; +}, FORCED); + + +/***/ }), + +/***/ 7462: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_159191__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_159191__(260); +var $some = __nested_webpack_require_159191__(2092).some; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.some` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some +exportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) { + return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ 3824: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_159819__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_159819__(260); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $sort = [].sort; + +// `%TypedArray%.prototype.sort` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort +exportTypedArrayMethod('sort', function sort(comparefn) { + return $sort.call(aTypedArray(this), comparefn); +}); + + +/***/ }), + +/***/ 5021: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_160362__) { + +"use strict"; + +var ArrayBufferViewCore = __nested_webpack_require_160362__(260); +var toLength = __nested_webpack_require_160362__(7466); +var toAbsoluteIndex = __nested_webpack_require_160362__(1400); +var speciesConstructor = __nested_webpack_require_160362__(6707); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.subarray` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray +exportTypedArrayMethod('subarray', function subarray(begin, end) { + var O = aTypedArray(this); + var length = O.length; + var beginIndex = toAbsoluteIndex(begin, length); + return new (speciesConstructor(O, O.constructor))( + O.buffer, + O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex) + ); +}); + + +/***/ }), + +/***/ 2974: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_161310__) { + +"use strict"; + +var global = __nested_webpack_require_161310__(7854); +var ArrayBufferViewCore = __nested_webpack_require_161310__(260); +var fails = __nested_webpack_require_161310__(7293); + +var Int8Array = global.Int8Array; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $toLocaleString = [].toLocaleString; +var $slice = [].slice; + +// iOS Safari 6.x fails here +var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () { + $toLocaleString.call(new Int8Array(1)); +}); + +var FORCED = fails(function () { + return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString(); +}) || !fails(function () { + Int8Array.prototype.toLocaleString.call([1, 2]); +}); + +// `%TypedArray%.prototype.toLocaleString` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring +exportTypedArrayMethod('toLocaleString', function toLocaleString() { + return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments); +}, FORCED); + + +/***/ }), + +/***/ 5016: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_162445__) { + +"use strict"; + +var exportTypedArrayMethod = __nested_webpack_require_162445__(260).exportTypedArrayMethod; +var fails = __nested_webpack_require_162445__(7293); +var global = __nested_webpack_require_162445__(7854); + +var Uint8Array = global.Uint8Array; +var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {}; +var arrayToString = [].toString; +var arrayJoin = [].join; + +if (fails(function () { arrayToString.call({}); })) { + arrayToString = function toString() { + return arrayJoin.call(this); + }; +} + +var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString; + +// `%TypedArray%.prototype.toString` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring +exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD); + + +/***/ }), + +/***/ 2472: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_163286__) { + +var createTypedArrayConstructor = __nested_webpack_require_163286__(9843); + +// `Uint8Array` constructor +// https://tc39.es/ecma262/#sec-typedarray-objects +createTypedArrayConstructor('Uint8', function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), + +/***/ 4747: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_163713__) { + +var global = __nested_webpack_require_163713__(7854); +var DOMIterables = __nested_webpack_require_163713__(8324); +var forEach = __nested_webpack_require_163713__(8533); +var createNonEnumerableProperty = __nested_webpack_require_163713__(8880); + +for (var COLLECTION_NAME in DOMIterables) { + var Collection = global[COLLECTION_NAME]; + var CollectionPrototype = Collection && Collection.prototype; + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { + createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); + } catch (error) { + CollectionPrototype.forEach = forEach; + } +} + + +/***/ }), + +/***/ 3948: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_164461__) { + +var global = __nested_webpack_require_164461__(7854); +var DOMIterables = __nested_webpack_require_164461__(8324); +var ArrayIteratorMethods = __nested_webpack_require_164461__(6992); +var createNonEnumerableProperty = __nested_webpack_require_164461__(8880); +var wellKnownSymbol = __nested_webpack_require_164461__(5112); + +var ITERATOR = wellKnownSymbol('iterator'); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var ArrayValues = ArrayIteratorMethods.values; + +for (var COLLECTION_NAME in DOMIterables) { + var Collection = global[COLLECTION_NAME]; + var CollectionPrototype = Collection && Collection.prototype; + if (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[ITERATOR] !== ArrayValues) try { + createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); + } catch (error) { + CollectionPrototype[ITERATOR] = ArrayValues; + } + if (!CollectionPrototype[TO_STRING_TAG]) { + createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); + } + if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { + createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); + } catch (error) { + CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; + } + } + } +} + + +/***/ }), + +/***/ 1637: +/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_166049__) { + +"use strict"; + +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +__nested_webpack_require_166049__(6992); +var $ = __nested_webpack_require_166049__(2109); +var getBuiltIn = __nested_webpack_require_166049__(5005); +var USE_NATIVE_URL = __nested_webpack_require_166049__(590); +var redefine = __nested_webpack_require_166049__(1320); +var redefineAll = __nested_webpack_require_166049__(2248); +var setToStringTag = __nested_webpack_require_166049__(8003); +var createIteratorConstructor = __nested_webpack_require_166049__(4994); +var InternalStateModule = __nested_webpack_require_166049__(9909); +var anInstance = __nested_webpack_require_166049__(5787); +var hasOwn = __nested_webpack_require_166049__(6656); +var bind = __nested_webpack_require_166049__(9974); +var classof = __nested_webpack_require_166049__(648); +var anObject = __nested_webpack_require_166049__(9670); +var isObject = __nested_webpack_require_166049__(111); +var create = __nested_webpack_require_166049__(30); +var createPropertyDescriptor = __nested_webpack_require_166049__(9114); +var getIterator = __nested_webpack_require_166049__(8554); +var getIteratorMethod = __nested_webpack_require_166049__(1246); +var wellKnownSymbol = __nested_webpack_require_166049__(5112); + +var $fetch = getBuiltIn('fetch'); +var Headers = getBuiltIn('Headers'); +var ITERATOR = wellKnownSymbol('iterator'); +var URL_SEARCH_PARAMS = 'URLSearchParams'; +var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); +var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); + +var plus = /\+/g; +var sequences = Array(4); + +var percentSequence = function (bytes) { + return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); +}; + +var percentDecode = function (sequence) { + try { + return decodeURIComponent(sequence); + } catch (error) { + return sequence; + } +}; + +var deserialize = function (it) { + var result = it.replace(plus, ' '); + var bytes = 4; + try { + return decodeURIComponent(result); + } catch (error) { + while (bytes) { + result = result.replace(percentSequence(bytes--), percentDecode); + } + return result; + } +}; + +var find = /[!'()~]|%20/g; + +var replace = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+' +}; + +var replacer = function (match) { + return replace[match]; +}; + +var serialize = function (it) { + return encodeURIComponent(it).replace(find, replacer); +}; + +var parseSearchParams = function (result, query) { + if (query) { + var attributes = query.split('&'); + var index = 0; + var attribute, entry; + while (index < attributes.length) { + attribute = attributes[index++]; + if (attribute.length) { + entry = attribute.split('='); + result.push({ + key: deserialize(entry.shift()), + value: deserialize(entry.join('=')) + }); + } + } + } +}; + +var updateSearchParams = function (query) { + this.entries.length = 0; + parseSearchParams(this.entries, query); +}; + +var validateArgumentsLength = function (passed, required) { + if (passed < required) throw TypeError('Not enough arguments'); +}; + +var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { + setInternalState(this, { + type: URL_SEARCH_PARAMS_ITERATOR, + iterator: getIterator(getInternalParamsState(params).entries), + kind: kind + }); +}, 'Iterator', function next() { + var state = getInternalIteratorState(this); + var kind = state.kind; + var step = state.iterator.next(); + var entry = step.value; + if (!step.done) { + step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value]; + } return step; +}); + +// `URLSearchParams` constructor +// https://url.spec.whatwg.org/#interface-urlsearchparams +var URLSearchParamsConstructor = function URLSearchParams(/* init */) { + anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS); + var init = arguments.length > 0 ? arguments[0] : undefined; + var that = this; + var entries = []; + var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key; + + setInternalState(that, { + type: URL_SEARCH_PARAMS, + entries: entries, + updateURL: function () { /* empty */ }, + updateSearchParams: updateSearchParams + }); + + if (init !== undefined) { + if (isObject(init)) { + iteratorMethod = getIteratorMethod(init); + if (typeof iteratorMethod === 'function') { + iterator = iteratorMethod.call(init); + next = iterator.next; + while (!(step = next.call(iterator)).done) { + entryIterator = getIterator(anObject(step.value)); + entryNext = entryIterator.next; + if ( + (first = entryNext.call(entryIterator)).done || + (second = entryNext.call(entryIterator)).done || + !entryNext.call(entryIterator).done + ) throw TypeError('Expected sequence with length 2'); + entries.push({ key: first.value + '', value: second.value + '' }); + } + } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' }); + } else { + parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + ''); + } + } +}; + +var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; + +redefineAll(URLSearchParamsPrototype, { + // `URLSearchParams.prototype.append` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function append(name, value) { + validateArgumentsLength(arguments.length, 2); + var state = getInternalParamsState(this); + state.entries.push({ key: name + '', value: value + '' }); + state.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + 'delete': function (name) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index].key === key) entries.splice(index, 1); + else index++; + } + state.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function get(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) return entries[index].value; + } + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function getAll(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var result = []; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) result.push(entries[index].value); + } + return result; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function has(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index++].key === key) return true; + } + return false; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function set(name, value) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var found = false; + var key = name + ''; + var val = value + ''; + var index = 0; + var entry; + for (; index < entries.length; index++) { + entry = entries[index]; + if (entry.key === key) { + if (found) entries.splice(index--, 1); + else { + found = true; + entry.value = val; + } + } + } + if (!found) entries.push({ key: key, value: val }); + state.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function sort() { + var state = getInternalParamsState(this); + var entries = state.entries; + // Array#sort is not stable in some engines + var slice = entries.slice(); + var entry, entriesIndex, sliceIndex; + entries.length = 0; + for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) { + entry = slice[sliceIndex]; + for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) { + if (entries[entriesIndex].key > entry.key) { + entries.splice(entriesIndex, 0, entry); + break; + } + } + if (entriesIndex === sliceIndex) entries.push(entry); + } + state.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function forEach(callback /* , thisArg */) { + var entries = getInternalParamsState(this).entries; + var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3); + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + boundFunction(entry.value, entry.key, this); + } + }, + // `URLSearchParams.prototype.keys` method + keys: function keys() { + return new URLSearchParamsIterator(this, 'keys'); + }, + // `URLSearchParams.prototype.values` method + values: function values() { + return new URLSearchParamsIterator(this, 'values'); + }, + // `URLSearchParams.prototype.entries` method + entries: function entries() { + return new URLSearchParamsIterator(this, 'entries'); + } +}, { enumerable: true }); + +// `URLSearchParams.prototype[@@iterator]` method +redefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries); + +// `URLSearchParams.prototype.toString` method +// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior +redefine(URLSearchParamsPrototype, 'toString', function toString() { + var entries = getInternalParamsState(this).entries; + var result = []; + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + result.push(serialize(entry.key) + '=' + serialize(entry.value)); + } return result.join('&'); +}, { enumerable: true }); + +setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); + +$({ global: true, forced: !USE_NATIVE_URL }, { + URLSearchParams: URLSearchParamsConstructor +}); + +// Wrap `fetch` for correct work with polyfilled `URLSearchParams` +// https://github.com/zloirock/core-js/issues/674 +if (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') { + $({ global: true, enumerable: true, forced: true }, { + fetch: function fetch(input /* , init */) { + var args = [input]; + var init, body, headers; + if (arguments.length > 1) { + init = arguments[1]; + if (isObject(init)) { + body = init.body; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers(init.headers) : new Headers(); + if (!headers.has('content-type')) { + headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + init = create(init, { + body: createPropertyDescriptor(0, String(body)), + headers: createPropertyDescriptor(0, headers) + }); + } + } + args.push(init); + } return $fetch.apply(this, args); + } + }); +} + +module.exports = { + URLSearchParams: URLSearchParamsConstructor, + getState: getInternalParamsState +}; + + +/***/ }), + +/***/ 285: +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_177789__) { + +"use strict"; + +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +__nested_webpack_require_177789__(8783); +var $ = __nested_webpack_require_177789__(2109); +var DESCRIPTORS = __nested_webpack_require_177789__(9781); +var USE_NATIVE_URL = __nested_webpack_require_177789__(590); +var global = __nested_webpack_require_177789__(7854); +var defineProperties = __nested_webpack_require_177789__(6048); +var redefine = __nested_webpack_require_177789__(1320); +var anInstance = __nested_webpack_require_177789__(5787); +var has = __nested_webpack_require_177789__(6656); +var assign = __nested_webpack_require_177789__(1574); +var arrayFrom = __nested_webpack_require_177789__(8457); +var codeAt = __nested_webpack_require_177789__(8710).codeAt; +var toASCII = __nested_webpack_require_177789__(3197); +var setToStringTag = __nested_webpack_require_177789__(8003); +var URLSearchParamsModule = __nested_webpack_require_177789__(1637); +var InternalStateModule = __nested_webpack_require_177789__(9909); + +var NativeURL = global.URL; +var URLSearchParams = URLSearchParamsModule.URLSearchParams; +var getInternalSearchParamsState = URLSearchParamsModule.getState; +var setInternalState = InternalStateModule.set; +var getInternalURLState = InternalStateModule.getterFor('URL'); +var floor = Math.floor; +var pow = Math.pow; + +var INVALID_AUTHORITY = 'Invalid authority'; +var INVALID_SCHEME = 'Invalid scheme'; +var INVALID_HOST = 'Invalid host'; +var INVALID_PORT = 'Invalid port'; + +var ALPHA = /[A-Za-z]/; +var ALPHANUMERIC = /[\d+-.A-Za-z]/; +var DIGIT = /\d/; +var HEX_START = /^(0x|0X)/; +var OCT = /^[0-7]+$/; +var DEC = /^\d+$/; +var HEX = /^[\dA-Fa-f]+$/; +/* eslint-disable no-control-regex -- safe */ +var FORBIDDEN_HOST_CODE_POINT = /[\u0000\t\u000A\u000D #%/:?@[\\]]/; +var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\u0000\t\u000A\u000D #/:?@[\\]]/; +var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g; +var TAB_AND_NEW_LINE = /[\t\u000A\u000D]/g; +/* eslint-enable no-control-regex -- safe */ +var EOF; + +var parseHost = function (url, input) { + var result, codePoints, index; + if (input.charAt(0) == '[') { + if (input.charAt(input.length - 1) != ']') return INVALID_HOST; + result = parseIPv6(input.slice(1, -1)); + if (!result) return INVALID_HOST; + url.host = result; + // opaque host + } else if (!isSpecial(url)) { + if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST; + result = ''; + codePoints = arrayFrom(input); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } + url.host = result; + } else { + input = toASCII(input); + if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST; + result = parseIPv4(input); + if (result === null) return INVALID_HOST; + url.host = result; + } +}; + +var parseIPv4 = function (input) { + var parts = input.split('.'); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] == '') { + parts.pop(); + } + partsLength = parts.length; + if (partsLength > 4) return input; + numbers = []; + for (index = 0; index < partsLength; index++) { + part = parts[index]; + if (part == '') return input; + radix = 10; + if (part.length > 1 && part.charAt(0) == '0') { + radix = HEX_START.test(part) ? 16 : 8; + part = part.slice(radix == 8 ? 1 : 2); + } + if (part === '') { + number = 0; + } else { + if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input; + number = parseInt(part, radix); + } + numbers.push(number); + } + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index == partsLength - 1) { + if (number >= pow(256, 5 - partsLength)) return null; + } else if (number > 255) return null; + } + ipv4 = numbers.pop(); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow(256, 3 - index); + } + return ipv4; +}; + +// eslint-disable-next-line max-statements -- TODO +var parseIPv6 = function (input) { + var address = [0, 0, 0, 0, 0, 0, 0, 0]; + var pieceIndex = 0; + var compress = null; + var pointer = 0; + var value, length, numbersSeen, ipv4Piece, number, swaps, swap; + + var char = function () { + return input.charAt(pointer); + }; + + if (char() == ':') { + if (input.charAt(1) != ':') return; + pointer += 2; + pieceIndex++; + compress = pieceIndex; + } + while (char()) { + if (pieceIndex == 8) return; + if (char() == ':') { + if (compress !== null) return; + pointer++; + pieceIndex++; + compress = pieceIndex; + continue; + } + value = length = 0; + while (length < 4 && HEX.test(char())) { + value = value * 16 + parseInt(char(), 16); + pointer++; + length++; + } + if (char() == '.') { + if (length == 0) return; + pointer -= length; + if (pieceIndex > 6) return; + numbersSeen = 0; + while (char()) { + ipv4Piece = null; + if (numbersSeen > 0) { + if (char() == '.' && numbersSeen < 4) pointer++; + else return; + } + if (!DIGIT.test(char())) return; + while (DIGIT.test(char())) { + number = parseInt(char(), 10); + if (ipv4Piece === null) ipv4Piece = number; + else if (ipv4Piece == 0) return; + else ipv4Piece = ipv4Piece * 10 + number; + if (ipv4Piece > 255) return; + pointer++; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + numbersSeen++; + if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++; + } + if (numbersSeen != 4) return; + break; + } else if (char() == ':') { + pointer++; + if (!char()) return; + } else if (char()) return; + address[pieceIndex++] = value; + } + if (compress !== null) { + swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex != 0 && swaps > 0) { + swap = address[pieceIndex]; + address[pieceIndex--] = address[compress + swaps - 1]; + address[compress + --swaps] = swap; + } + } else if (pieceIndex != 8) return; + return address; +}; + +var findLongestZeroSequence = function (ipv6) { + var maxIndex = null; + var maxLength = 1; + var currStart = null; + var currLength = 0; + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + currStart = null; + currLength = 0; + } else { + if (currStart === null) currStart = index; + ++currLength; + } + } + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + return maxIndex; +}; + +var serializeHost = function (host) { + var result, index, compress, ignore0; + // ipv4 + if (typeof host == 'number') { + result = []; + for (index = 0; index < 4; index++) { + result.unshift(host % 256); + host = floor(host / 256); + } return result.join('.'); + // ipv6 + } else if (typeof host == 'object') { + result = ''; + compress = findLongestZeroSequence(host); + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) continue; + if (ignore0) ignore0 = false; + if (compress === index) { + result += index ? ':' : '::'; + ignore0 = true; + } else { + result += host[index].toString(16); + if (index < 7) result += ':'; + } + } + return '[' + result + ']'; + } return host; +}; + +var C0ControlPercentEncodeSet = {}; +var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, { + ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 +}); +var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, { + '#': 1, '?': 1, '{': 1, '}': 1 +}); +var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, { + '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 +}); + +var percentEncode = function (char, set) { + var code = codeAt(char, 0); + return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char); +}; + +var specialSchemes = { + ftp: 21, + file: null, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; + +var isSpecial = function (url) { + return has(specialSchemes, url.scheme); +}; + +var includesCredentials = function (url) { + return url.username != '' || url.password != ''; +}; + +var cannotHaveUsernamePasswordPort = function (url) { + return !url.host || url.cannotBeABaseURL || url.scheme == 'file'; +}; + +var isWindowsDriveLetter = function (string, normalized) { + var second; + return string.length == 2 && ALPHA.test(string.charAt(0)) + && ((second = string.charAt(1)) == ':' || (!normalized && second == '|')); +}; + +var startsWithWindowsDriveLetter = function (string) { + var third; + return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && ( + string.length == 2 || + ((third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#') + ); +}; + +var shortenURLsPath = function (url) { + var path = url.path; + var pathSize = path.length; + if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) { + path.pop(); + } +}; + +var isSingleDot = function (segment) { + return segment === '.' || segment.toLowerCase() === '%2e'; +}; + +var isDoubleDot = function (segment) { + segment = segment.toLowerCase(); + return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; +}; + +// States: +var SCHEME_START = {}; +var SCHEME = {}; +var NO_SCHEME = {}; +var SPECIAL_RELATIVE_OR_AUTHORITY = {}; +var PATH_OR_AUTHORITY = {}; +var RELATIVE = {}; +var RELATIVE_SLASH = {}; +var SPECIAL_AUTHORITY_SLASHES = {}; +var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; +var AUTHORITY = {}; +var HOST = {}; +var HOSTNAME = {}; +var PORT = {}; +var FILE = {}; +var FILE_SLASH = {}; +var FILE_HOST = {}; +var PATH_START = {}; +var PATH = {}; +var CANNOT_BE_A_BASE_URL_PATH = {}; +var QUERY = {}; +var FRAGMENT = {}; + +// eslint-disable-next-line max-statements -- TODO +var parseURL = function (url, input, stateOverride, base) { + var state = stateOverride || SCHEME_START; + var pointer = 0; + var buffer = ''; + var seenAt = false; + var seenBracket = false; + var seenPasswordToken = false; + var codePoints, char, bufferCodePoints, failure; + + if (!stateOverride) { + url.scheme = ''; + url.username = ''; + url.password = ''; + url.host = null; + url.port = null; + url.path = []; + url.query = null; + url.fragment = null; + url.cannotBeABaseURL = false; + input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, ''); + } + + input = input.replace(TAB_AND_NEW_LINE, ''); + + codePoints = arrayFrom(input); + + while (pointer <= codePoints.length) { + char = codePoints[pointer]; + switch (state) { + case SCHEME_START: + if (char && ALPHA.test(char)) { + buffer += char.toLowerCase(); + state = SCHEME; + } else if (!stateOverride) { + state = NO_SCHEME; + continue; + } else return INVALID_SCHEME; + break; + + case SCHEME: + if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) { + buffer += char.toLowerCase(); + } else if (char == ':') { + if (stateOverride && ( + (isSpecial(url) != has(specialSchemes, buffer)) || + (buffer == 'file' && (includesCredentials(url) || url.port !== null)) || + (url.scheme == 'file' && !url.host) + )) return; + url.scheme = buffer; + if (stateOverride) { + if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null; + return; + } + buffer = ''; + if (url.scheme == 'file') { + state = FILE; + } else if (isSpecial(url) && base && base.scheme == url.scheme) { + state = SPECIAL_RELATIVE_OR_AUTHORITY; + } else if (isSpecial(url)) { + state = SPECIAL_AUTHORITY_SLASHES; + } else if (codePoints[pointer + 1] == '/') { + state = PATH_OR_AUTHORITY; + pointer++; + } else { + url.cannotBeABaseURL = true; + url.path.push(''); + state = CANNOT_BE_A_BASE_URL_PATH; + } + } else if (!stateOverride) { + buffer = ''; + state = NO_SCHEME; + pointer = 0; + continue; + } else return INVALID_SCHEME; + break; + + case NO_SCHEME: + if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME; + if (base.cannotBeABaseURL && char == '#') { + url.scheme = base.scheme; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + url.cannotBeABaseURL = true; + state = FRAGMENT; + break; + } + state = base.scheme == 'file' ? FILE : RELATIVE; + continue; + + case SPECIAL_RELATIVE_OR_AUTHORITY: + if (char == '/' && codePoints[pointer + 1] == '/') { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + pointer++; + } else { + state = RELATIVE; + continue; + } break; + + case PATH_OR_AUTHORITY: + if (char == '/') { + state = AUTHORITY; + break; + } else { + state = PATH; + continue; + } + + case RELATIVE: + url.scheme = base.scheme; + if (char == EOF) { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '/' || (char == '\\' && isSpecial(url))) { + state = RELATIVE_SLASH; + } else if (char == '?') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.path.pop(); + state = PATH; + continue; + } break; + + case RELATIVE_SLASH: + if (isSpecial(url) && (char == '/' || char == '\\')) { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + } else if (char == '/') { + state = AUTHORITY; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + state = PATH; + continue; + } break; + + case SPECIAL_AUTHORITY_SLASHES: + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + if (char != '/' || buffer.charAt(pointer + 1) != '/') continue; + pointer++; + break; + + case SPECIAL_AUTHORITY_IGNORE_SLASHES: + if (char != '/' && char != '\\') { + state = AUTHORITY; + continue; + } break; + + case AUTHORITY: + if (char == '@') { + if (seenAt) buffer = '%40' + buffer; + seenAt = true; + bufferCodePoints = arrayFrom(buffer); + for (var i = 0; i < bufferCodePoints.length; i++) { + var codePoint = bufferCodePoints[i]; + if (codePoint == ':' && !seenPasswordToken) { + seenPasswordToken = true; + continue; + } + var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); + if (seenPasswordToken) url.password += encodedCodePoints; + else url.username += encodedCodePoints; + } + buffer = ''; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (seenAt && buffer == '') return INVALID_AUTHORITY; + pointer -= arrayFrom(buffer).length + 1; + buffer = ''; + state = HOST; + } else buffer += char; + break; + + case HOST: + case HOSTNAME: + if (stateOverride && url.scheme == 'file') { + state = FILE_HOST; + continue; + } else if (char == ':' && !seenBracket) { + if (buffer == '') return INVALID_HOST; + failure = parseHost(url, buffer); + if (failure) return failure; + buffer = ''; + state = PORT; + if (stateOverride == HOSTNAME) return; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (isSpecial(url) && buffer == '') return INVALID_HOST; + if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return; + failure = parseHost(url, buffer); + if (failure) return failure; + buffer = ''; + state = PATH_START; + if (stateOverride) return; + continue; + } else { + if (char == '[') seenBracket = true; + else if (char == ']') seenBracket = false; + buffer += char; + } break; + + case PORT: + if (DIGIT.test(char)) { + buffer += char; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) || + stateOverride + ) { + if (buffer != '') { + var port = parseInt(buffer, 10); + if (port > 0xFFFF) return INVALID_PORT; + url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port; + buffer = ''; + } + if (stateOverride) return; + state = PATH_START; + continue; + } else return INVALID_PORT; + break; + + case FILE: + url.scheme = 'file'; + if (char == '/' || char == '\\') state = FILE_SLASH; + else if (base && base.scheme == 'file') { + if (char == EOF) { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '?') { + url.host = base.host; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + url.host = base.host; + url.path = base.path.slice(); + shortenURLsPath(url); + } + state = PATH; + continue; + } + } else { + state = PATH; + continue; + } break; + + case FILE_SLASH: + if (char == '/' || char == '\\') { + state = FILE_HOST; + break; + } + if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]); + else url.host = base.host; + } + state = PATH; + continue; + + case FILE_HOST: + if (char == EOF || char == '/' || char == '\\' || char == '?' || char == '#') { + if (!stateOverride && isWindowsDriveLetter(buffer)) { + state = PATH; + } else if (buffer == '') { + url.host = ''; + if (stateOverride) return; + state = PATH_START; + } else { + failure = parseHost(url, buffer); + if (failure) return failure; + if (url.host == 'localhost') url.host = ''; + if (stateOverride) return; + buffer = ''; + state = PATH_START; + } continue; + } else buffer += char; + break; + + case PATH_START: + if (isSpecial(url)) { + state = PATH; + if (char != '/' && char != '\\') continue; + } else if (!stateOverride && char == '?') { + url.query = ''; + state = QUERY; + } else if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + state = PATH; + if (char != '/') continue; + } break; + + case PATH: + if ( + char == EOF || char == '/' || + (char == '\\' && isSpecial(url)) || + (!stateOverride && (char == '?' || char == '#')) + ) { + if (isDoubleDot(buffer)) { + shortenURLsPath(url); + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else if (isSingleDot(buffer)) { + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else { + if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { + if (url.host) url.host = ''; + buffer = buffer.charAt(0) + ':'; // normalize windows drive letter + } + url.path.push(buffer); + } + buffer = ''; + if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) { + while (url.path.length > 1 && url.path[0] === '') { + url.path.shift(); + } + } + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } + } else { + buffer += percentEncode(char, pathPercentEncodeSet); + } break; + + case CANNOT_BE_A_BASE_URL_PATH: + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + url.path[0] += percentEncode(char, C0ControlPercentEncodeSet); + } break; + + case QUERY: + if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + if (char == "'" && isSpecial(url)) url.query += '%27'; + else if (char == '#') url.query += '%23'; + else url.query += percentEncode(char, C0ControlPercentEncodeSet); + } break; + + case FRAGMENT: + if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet); + break; + } + + pointer++; + } +}; + +// `URL` constructor +// https://url.spec.whatwg.org/#url-class +var URLConstructor = function URL(url /* , base */) { + var that = anInstance(this, URLConstructor, 'URL'); + var base = arguments.length > 1 ? arguments[1] : undefined; + var urlString = String(url); + var state = setInternalState(that, { type: 'URL' }); + var baseState, failure; + if (base !== undefined) { + if (base instanceof URLConstructor) baseState = getInternalURLState(base); + else { + failure = parseURL(baseState = {}, String(base)); + if (failure) throw TypeError(failure); + } + } + failure = parseURL(state, urlString, null, baseState); + if (failure) throw TypeError(failure); + var searchParams = state.searchParams = new URLSearchParams(); + var searchParamsState = getInternalSearchParamsState(searchParams); + searchParamsState.updateSearchParams(state.query); + searchParamsState.updateURL = function () { + state.query = String(searchParams) || null; + }; + if (!DESCRIPTORS) { + that.href = serializeURL.call(that); + that.origin = getOrigin.call(that); + that.protocol = getProtocol.call(that); + that.username = getUsername.call(that); + that.password = getPassword.call(that); + that.host = getHost.call(that); + that.hostname = getHostname.call(that); + that.port = getPort.call(that); + that.pathname = getPathname.call(that); + that.search = getSearch.call(that); + that.searchParams = getSearchParams.call(that); + that.hash = getHash.call(that); + } +}; + +var URLPrototype = URLConstructor.prototype; + +var serializeURL = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var username = url.username; + var password = url.password; + var host = url.host; + var port = url.port; + var path = url.path; + var query = url.query; + var fragment = url.fragment; + var output = scheme + ':'; + if (host !== null) { + output += '//'; + if (includesCredentials(url)) { + output += username + (password ? ':' + password : '') + '@'; + } + output += serializeHost(host); + if (port !== null) output += ':' + port; + } else if (scheme == 'file') output += '//'; + output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; + if (query !== null) output += '?' + query; + if (fragment !== null) output += '#' + fragment; + return output; +}; + +var getOrigin = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var port = url.port; + if (scheme == 'blob') try { + return new URL(scheme.path[0]).origin; + } catch (error) { + return 'null'; + } + if (scheme == 'file' || !isSpecial(url)) return 'null'; + return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : ''); +}; + +var getProtocol = function () { + return getInternalURLState(this).scheme + ':'; +}; + +var getUsername = function () { + return getInternalURLState(this).username; +}; + +var getPassword = function () { + return getInternalURLState(this).password; +}; + +var getHost = function () { + var url = getInternalURLState(this); + var host = url.host; + var port = url.port; + return host === null ? '' + : port === null ? serializeHost(host) + : serializeHost(host) + ':' + port; +}; + +var getHostname = function () { + var host = getInternalURLState(this).host; + return host === null ? '' : serializeHost(host); +}; + +var getPort = function () { + var port = getInternalURLState(this).port; + return port === null ? '' : String(port); +}; + +var getPathname = function () { + var url = getInternalURLState(this); + var path = url.path; + return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; +}; + +var getSearch = function () { + var query = getInternalURLState(this).query; + return query ? '?' + query : ''; +}; + +var getSearchParams = function () { + return getInternalURLState(this).searchParams; +}; + +var getHash = function () { + var fragment = getInternalURLState(this).fragment; + return fragment ? '#' + fragment : ''; +}; + +var accessorDescriptor = function (getter, setter) { + return { get: getter, set: setter, configurable: true, enumerable: true }; +}; + +if (DESCRIPTORS) { + defineProperties(URLPrototype, { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + href: accessorDescriptor(serializeURL, function (href) { + var url = getInternalURLState(this); + var urlString = String(href); + var failure = parseURL(url, urlString); + if (failure) throw TypeError(failure); + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + origin: accessorDescriptor(getOrigin), + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + protocol: accessorDescriptor(getProtocol, function (protocol) { + var url = getInternalURLState(this); + parseURL(url, String(protocol) + ':', SCHEME_START); + }), + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + username: accessorDescriptor(getUsername, function (username) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(username)); + if (cannotHaveUsernamePasswordPort(url)) return; + url.username = ''; + for (var i = 0; i < codePoints.length; i++) { + url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + password: accessorDescriptor(getPassword, function (password) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(password)); + if (cannotHaveUsernamePasswordPort(url)) return; + url.password = ''; + for (var i = 0; i < codePoints.length; i++) { + url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + host: accessorDescriptor(getHost, function (host) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + parseURL(url, String(host), HOST); + }), + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + hostname: accessorDescriptor(getHostname, function (hostname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + parseURL(url, String(hostname), HOSTNAME); + }), + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + port: accessorDescriptor(getPort, function (port) { + var url = getInternalURLState(this); + if (cannotHaveUsernamePasswordPort(url)) return; + port = String(port); + if (port == '') url.port = null; + else parseURL(url, port, PORT); + }), + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + pathname: accessorDescriptor(getPathname, function (pathname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + url.path = []; + parseURL(url, pathname + '', PATH_START); + }), + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + search: accessorDescriptor(getSearch, function (search) { + var url = getInternalURLState(this); + search = String(search); + if (search == '') { + url.query = null; + } else { + if ('?' == search.charAt(0)) search = search.slice(1); + url.query = ''; + parseURL(url, search, QUERY); + } + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + searchParams: accessorDescriptor(getSearchParams), + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + hash: accessorDescriptor(getHash, function (hash) { + var url = getInternalURLState(this); + hash = String(hash); + if (hash == '') { + url.fragment = null; + return; + } + if ('#' == hash.charAt(0)) hash = hash.slice(1); + url.fragment = ''; + parseURL(url, hash, FRAGMENT); + }) + }); +} + +// `URL.prototype.toJSON` method +// https://url.spec.whatwg.org/#dom-url-tojson +redefine(URLPrototype, 'toJSON', function toJSON() { + return serializeURL.call(this); +}, { enumerable: true }); + +// `URL.prototype.toString` method +// https://url.spec.whatwg.org/#URL-stringification-behavior +redefine(URLPrototype, 'toString', function toString() { + return serializeURL.call(this); +}, { enumerable: true }); + +if (NativeURL) { + var nativeCreateObjectURL = NativeURL.createObjectURL; + var nativeRevokeObjectURL = NativeURL.revokeObjectURL; + // `URL.createObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL + // eslint-disable-next-line no-unused-vars -- required for `.length` + if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) { + return nativeCreateObjectURL.apply(NativeURL, arguments); + }); + // `URL.revokeObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL + // eslint-disable-next-line no-unused-vars -- required for `.length` + if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) { + return nativeRevokeObjectURL.apply(NativeURL, arguments); + }); +} + +setToStringTag(URLConstructor, 'URL'); + +$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, { + URL: URLConstructor +}); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nested_webpack_require_210484__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_210484__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ !function() { +/******/ // define getter functions for harmony exports +/******/ __nested_webpack_require_210484__.d = function(exports, definition) { +/******/ for(var key in definition) { +/******/ if(__nested_webpack_require_210484__.o(definition, key) && !__nested_webpack_require_210484__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/global */ +/******/ !function() { +/******/ __nested_webpack_require_210484__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ }(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ !function() { +/******/ __nested_webpack_require_210484__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } +/******/ }(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ !function() { +/******/ // define __esModule on exports +/******/ __nested_webpack_require_210484__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ }(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +!function() { +"use strict"; +// ESM COMPAT FLAG +__nested_webpack_require_210484__.r(__webpack_exports__); + +// EXPORTS +__nested_webpack_require_210484__.d(__webpack_exports__, { + "Dropzone": function() { return /* reexport */ Dropzone; }, + "default": function() { return /* binding */ dropzone_dist; } +}); + +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js +var es_array_concat = __nested_webpack_require_210484__(2222); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js +var es_array_filter = __nested_webpack_require_210484__(7327); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js +var es_array_index_of = __nested_webpack_require_210484__(2772); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js +var es_array_iterator = __nested_webpack_require_210484__(6992); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js +var es_array_map = __nested_webpack_require_210484__(1249); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js +var es_array_slice = __nested_webpack_require_210484__(7042); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js +var es_array_splice = __nested_webpack_require_210484__(561); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.constructor.js +var es_array_buffer_constructor = __nested_webpack_require_210484__(8264); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js +var es_function_name = __nested_webpack_require_210484__(8309); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-prototype-of.js +var es_object_get_prototype_of = __nested_webpack_require_210484__(489); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js +var es_object_to_string = __nested_webpack_require_210484__(1539); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js +var es_regexp_exec = __nested_webpack_require_210484__(4916); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js +var es_regexp_to_string = __nested_webpack_require_210484__(9714); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js +var es_string_iterator = __nested_webpack_require_210484__(8783); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js +var es_string_match = __nested_webpack_require_210484__(4723); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js +var es_string_replace = __nested_webpack_require_210484__(5306); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js +var es_string_split = __nested_webpack_require_210484__(3123); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js +var es_string_trim = __nested_webpack_require_210484__(3210); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.uint8-array.js +var es_typed_array_uint8_array = __nested_webpack_require_210484__(2472); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.copy-within.js +var es_typed_array_copy_within = __nested_webpack_require_210484__(2990); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.every.js +var es_typed_array_every = __nested_webpack_require_210484__(8927); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.fill.js +var es_typed_array_fill = __nested_webpack_require_210484__(3105); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.filter.js +var es_typed_array_filter = __nested_webpack_require_210484__(5035); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find.js +var es_typed_array_find = __nested_webpack_require_210484__(4345); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find-index.js +var es_typed_array_find_index = __nested_webpack_require_210484__(7174); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.for-each.js +var es_typed_array_for_each = __nested_webpack_require_210484__(2846); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.includes.js +var es_typed_array_includes = __nested_webpack_require_210484__(4731); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.index-of.js +var es_typed_array_index_of = __nested_webpack_require_210484__(7209); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.iterator.js +var es_typed_array_iterator = __nested_webpack_require_210484__(6319); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.join.js +var es_typed_array_join = __nested_webpack_require_210484__(8867); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.last-index-of.js +var es_typed_array_last_index_of = __nested_webpack_require_210484__(7789); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.map.js +var es_typed_array_map = __nested_webpack_require_210484__(3739); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce.js +var es_typed_array_reduce = __nested_webpack_require_210484__(9368); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce-right.js +var es_typed_array_reduce_right = __nested_webpack_require_210484__(4483); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reverse.js +var es_typed_array_reverse = __nested_webpack_require_210484__(2056); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.set.js +var es_typed_array_set = __nested_webpack_require_210484__(3462); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.slice.js +var es_typed_array_slice = __nested_webpack_require_210484__(678); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.some.js +var es_typed_array_some = __nested_webpack_require_210484__(7462); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.sort.js +var es_typed_array_sort = __nested_webpack_require_210484__(3824); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.subarray.js +var es_typed_array_subarray = __nested_webpack_require_210484__(5021); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-locale-string.js +var es_typed_array_to_locale_string = __nested_webpack_require_210484__(2974); +// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-string.js +var es_typed_array_to_string = __nested_webpack_require_210484__(5016); +// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js +var web_dom_collections_for_each = __nested_webpack_require_210484__(4747); +// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js +var web_dom_collections_iterator = __nested_webpack_require_210484__(3948); +// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.js +var web_url = __nested_webpack_require_210484__(285); +;// CONCATENATED MODULE: ./src/emitter.js + + +function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// The Emitter class provides the ability to call `.on()` on Dropzone to listen +// to events. +// It is strongly based on component's emitter class, and I removed the +// functionality because of the dependency hell with different frameworks. +var Emitter = /*#__PURE__*/function () { + function Emitter() { + _classCallCheck(this, Emitter); + } + + _createClass(Emitter, [{ + key: "on", + value: // Add an event listener for given event + function on(event, fn) { + this._callbacks = this._callbacks || {}; // Create namespace for this event + + if (!this._callbacks[event]) { + this._callbacks[event] = []; + } + + this._callbacks[event].push(fn); + + return this; + } + }, { + key: "emit", + value: function emit(event) { + this._callbacks = this._callbacks || {}; + var callbacks = this._callbacks[event]; + + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (callbacks) { + var _iterator = _createForOfIteratorHelper(callbacks, true), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var callback = _step.value; + callback.apply(this, args); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } // trigger a corresponding DOM event + + + if (this.element) { + this.element.dispatchEvent(this.makeEvent("dropzone:" + event, { + args: args + })); + } + + return this; + } + }, { + key: "makeEvent", + value: function makeEvent(eventName, detail) { + var params = { + bubbles: true, + cancelable: true, + detail: detail + }; + + if (typeof window.CustomEvent === "function") { + return new CustomEvent(eventName, params); + } else { + // IE 11 support + // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent + var evt = document.createEvent("CustomEvent"); + evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail); + return evt; + } + } // Remove event listener for given event. If fn is not provided, all event + // listeners for that event will be removed. If neither is provided, all + // event listeners will be removed. + + }, { + key: "off", + value: function off(event, fn) { + if (!this._callbacks || arguments.length === 0) { + this._callbacks = {}; + return this; + } // specific event + + + var callbacks = this._callbacks[event]; + + if (!callbacks) { + return this; + } // remove all handlers + + + if (arguments.length === 1) { + delete this._callbacks[event]; + return this; + } // remove specific handler + + + for (var i = 0; i < callbacks.length; i++) { + var callback = callbacks[i]; + + if (callback === fn) { + callbacks.splice(i, 1); + break; + } + } + + return this; + } + }]); + + return Emitter; +}(); + + +;// CONCATENATED MODULE: ./src/preview-template.html +// Module +var code = "
Check
Error
"; +// Exports +/* harmony default export */ var preview_template = (code); +;// CONCATENATED MODULE: ./src/options.js + + + + + +function options_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = options_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function options_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return options_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return options_arrayLikeToArray(o, minLen); } + +function options_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + + + +var defaultOptions = { + /** + * Has to be specified on elements other than form (or when the form + * doesn't have an `action` attribute). You can also + * provide a function that will be called with `files` and + * must return the url (since `v3.12.0`) + */ + url: null, + + /** + * Can be changed to `"put"` if necessary. You can also provide a function + * that will be called with `files` and must return the method (since `v3.12.0`). + */ + method: "post", + + /** + * Will be set on the XHRequest. + */ + withCredentials: false, + + /** + * The timeout for the XHR requests in milliseconds (since `v4.4.0`). + * If set to null or 0, no timeout is going to be set. + */ + timeout: null, + + /** + * How many file uploads to process in parallel (See the + * Enqueuing file uploads documentation section for more info) + */ + parallelUploads: 2, + + /** + * Whether to send multiple files in one request. If + * this it set to true, then the fallback file input element will + * have the `multiple` attribute as well. This option will + * also trigger additional events (like `processingmultiple`). See the events + * documentation section for more information. + */ + uploadMultiple: false, + + /** + * Whether you want files to be uploaded in chunks to your server. This can't be + * used in combination with `uploadMultiple`. + * + * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload. + */ + chunking: false, + + /** + * If `chunking` is enabled, this defines whether **every** file should be chunked, + * even if the file size is below chunkSize. This means, that the additional chunk + * form data will be submitted and the `chunksUploaded` callback will be invoked. + */ + forceChunking: false, + + /** + * If `chunking` is `true`, then this defines the chunk size in bytes. + */ + chunkSize: 2000000, + + /** + * If `true`, the individual chunks of a file are being uploaded simultaneously. + */ + parallelChunkUploads: false, + + /** + * Whether a chunk should be retried if it fails. + */ + retryChunks: false, + + /** + * If `retryChunks` is true, how many times should it be retried. + */ + retryChunksLimit: 3, + + /** + * The maximum filesize (in bytes) that is allowed to be uploaded. + */ + maxFilesize: 256, + + /** + * The name of the file param that gets transferred. + * **NOTE**: If you have the option `uploadMultiple` set to `true`, then + * Dropzone will append `[]` to the name. + */ + paramName: "file", + + /** + * Whether thumbnails for images should be generated + */ + createImageThumbnails: true, + + /** + * In MB. When the filename exceeds this limit, the thumbnail will not be generated. + */ + maxThumbnailFilesize: 10, + + /** + * If `null`, the ratio of the image will be used to calculate it. + */ + thumbnailWidth: 120, + + /** + * The same as `thumbnailWidth`. If both are null, images will not be resized. + */ + thumbnailHeight: 120, + + /** + * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided. + * Can be either `contain` or `crop`. + */ + thumbnailMethod: "crop", + + /** + * If set, images will be resized to these dimensions before being **uploaded**. + * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect + * ratio of the file will be preserved. + * + * The `options.transformFile` function uses these options, so if the `transformFile` function + * is overridden, these options don't do anything. + */ + resizeWidth: null, + + /** + * See `resizeWidth`. + */ + resizeHeight: null, + + /** + * The mime type of the resized image (before it gets uploaded to the server). + * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`. + * See `resizeWidth` for more information. + */ + resizeMimeType: null, + + /** + * The quality of the resized images. See `resizeWidth`. + */ + resizeQuality: 0.8, + + /** + * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided. + * Can be either `contain` or `crop`. + */ + resizeMethod: "contain", + + /** + * The base that is used to calculate the **displayed** filesize. You can + * change this to 1024 if you would rather display kibibytes, mebibytes, + * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` + * not `1 kilobyte`. You can change this to `1024` if you don't care about + * validity. + */ + filesizeBase: 1000, + + /** + * If not `null` defines how many files this Dropzone handles. If it exceeds, + * the event `maxfilesexceeded` will be called. The dropzone element gets the + * class `dz-max-files-reached` accordingly so you can provide visual + * feedback. + */ + maxFiles: null, + + /** + * An optional object to send additional headers to the server. Eg: + * `{ "My-Awesome-Header": "header value" }` + */ + headers: null, + + /** + * If `true`, the dropzone element itself will be clickable, if `false` + * nothing will be clickable. + * + * You can also pass an HTML element, a CSS selector (for multiple elements) + * or an array of those. In that case, all of those elements will trigger an + * upload when clicked. + */ + clickable: true, + + /** + * Whether hidden files in directories should be ignored. + */ + ignoreHiddenFiles: true, + + /** + * The default implementation of `accept` checks the file's mime type or + * extension against this list. This is a comma separated list of mime + * types or file extensions. + * + * Eg.: `image/*,application/pdf,.psd` + * + * If the Dropzone is `clickable` this option will also be used as + * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept) + * parameter on the hidden file input as well. + */ + acceptedFiles: null, + + /** + * **Deprecated!** + * Use acceptedFiles instead. + */ + acceptedMimeTypes: null, + + /** + * If false, files will be added to the queue but the queue will not be + * processed automatically. + * This can be useful if you need some additional user input before sending + * files (or if you want want all files sent at once). + * If you're ready to send the file simply call `myDropzone.processQueue()`. + * + * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation + * section for more information. + */ + autoProcessQueue: true, + + /** + * If false, files added to the dropzone will not be queued by default. + * You'll have to call `enqueueFile(file)` manually. + */ + autoQueue: true, + + /** + * If `true`, this will add a link to every file preview to remove or cancel (if + * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation` + * and `dictRemoveFile` options are used for the wording. + */ + addRemoveLinks: false, + + /** + * Defines where to display the file previews – if `null` the + * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS + * selector. The element should have the `dropzone-previews` class so + * the previews are displayed properly. + */ + previewsContainer: null, + + /** + * Set this to `true` if you don't want previews to be shown. + */ + disablePreviews: false, + + /** + * This is the element the hidden input field (which is used when clicking on the + * dropzone to trigger file selection) will be appended to. This might + * be important in case you use frameworks to switch the content of your page. + * + * Can be a selector string, or an element directly. + */ + hiddenInputContainer: "body", + + /** + * If null, no capture type will be specified + * If camera, mobile devices will skip the file selection and choose camera + * If microphone, mobile devices will skip the file selection and choose the microphone + * If camcorder, mobile devices will skip the file selection and choose the camera in video mode + * On apple devices multiple must be set to false. AcceptedFiles may need to + * be set to an appropriate mime type (e.g. "image/*", "audio/*", or "video/*"). + */ + capture: null, + + /** + * **Deprecated**. Use `renameFile` instead. + */ + renameFilename: null, + + /** + * A function that is invoked before the file is uploaded to the server and renames the file. + * This function gets the `File` as argument and can use the `file.name`. The actual name of the + * file that gets used during the upload can be accessed through `file.upload.filename`. + */ + renameFile: null, + + /** + * If `true` the fallback will be forced. This is very useful to test your server + * implementations first and make sure that everything works as + * expected without dropzone if you experience problems, and to test + * how your fallbacks will look. + */ + forceFallback: false, + + /** + * The text used before any files are dropped. + */ + dictDefaultMessage: "Drop files here to upload", + + /** + * The text that replaces the default message text it the browser is not supported. + */ + dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.", + + /** + * The text that will be added before the fallback form. + * If you provide a fallback element yourself, or if this option is `null` this will + * be ignored. + */ + dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.", + + /** + * If the filesize is too big. + * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values. + */ + dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.", + + /** + * If the file doesn't match the file type. + */ + dictInvalidFileType: "You can't upload files of this type.", + + /** + * If the server response was invalid. + * `{{statusCode}}` will be replaced with the servers status code. + */ + dictResponseError: "Server responded with {{statusCode}} code.", + + /** + * If `addRemoveLinks` is true, the text to be used for the cancel upload link. + */ + dictCancelUpload: "Cancel upload", + + /** + * The text that is displayed if an upload was manually canceled + */ + dictUploadCanceled: "Upload canceled.", + + /** + * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload. + */ + dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?", + + /** + * If `addRemoveLinks` is true, the text to be used to remove a file. + */ + dictRemoveFile: "Remove file", + + /** + * If this is not null, then the user will be prompted before removing a file. + */ + dictRemoveFileConfirmation: null, + + /** + * Displayed if `maxFiles` is st and exceeded. + * The string `{{maxFiles}}` will be replaced by the configuration value. + */ + dictMaxFilesExceeded: "You can not upload any more files.", + + /** + * Allows you to translate the different units. Starting with `tb` for terabytes and going down to + * `b` for bytes. + */ + dictFileSizeUnits: { + tb: "TB", + gb: "GB", + mb: "MB", + kb: "KB", + b: "b" + }, + + /** + * Called when dropzone initialized + * You can add event listeners here + */ + init: function init() {}, + + /** + * Can be an **object** of additional parameters to transfer to the server, **or** a `Function` + * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case + * of a function, this needs to return a map. + * + * The default implementation does nothing for normal uploads, but adds relevant information for + * chunked uploads. + * + * This is the same as adding hidden input fields in the form element. + */ + params: function params(files, xhr, chunk) { + if (chunk) { + return { + dzuuid: chunk.file.upload.uuid, + dzchunkindex: chunk.index, + dztotalfilesize: chunk.file.size, + dzchunksize: this.options.chunkSize, + dztotalchunkcount: chunk.file.upload.totalChunkCount, + dzchunkbyteoffset: chunk.index * this.options.chunkSize + }; + } + }, + + /** + * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File) + * and a `done` function as parameters. + * + * If the done function is invoked without arguments, the file is "accepted" and will + * be processed. If you pass an error message, the file is rejected, and the error + * message will be displayed. + * This function will not be called if the file is too big or doesn't match the mime types. + */ + accept: function accept(file, done) { + return done(); + }, + + /** + * The callback that will be invoked when all chunks have been uploaded for a file. + * It gets the file for which the chunks have been uploaded as the first parameter, + * and the `done` function as second. `done()` needs to be invoked when everything + * needed to finish the upload process is done. + */ + chunksUploaded: function chunksUploaded(file, done) { + done(); + }, + + /** + * Gets called when the browser is not supported. + * The default implementation shows the fallback input field and adds + * a text. + */ + fallback: function fallback() { + // This code should pass in IE7... :( + var messageElement; + this.element.className = "".concat(this.element.className, " dz-browser-not-supported"); + + var _iterator = options_createForOfIteratorHelper(this.element.getElementsByTagName("div"), true), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var child = _step.value; + + if (/(^| )dz-message($| )/.test(child.className)) { + messageElement = child; + child.className = "dz-message"; // Removes the 'dz-default' class + + break; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (!messageElement) { + messageElement = Dropzone.createElement('
'); + this.element.appendChild(messageElement); + } + + var span = messageElement.getElementsByTagName("span")[0]; + + if (span) { + if (span.textContent != null) { + span.textContent = this.options.dictFallbackMessage; + } else if (span.innerText != null) { + span.innerText = this.options.dictFallbackMessage; + } + } + + return this.element.appendChild(this.getFallbackForm()); + }, + + /** + * Gets called to calculate the thumbnail dimensions. + * + * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing: + * + * - `srcWidth` & `srcHeight` (required) + * - `trgWidth` & `trgHeight` (required) + * - `srcX` & `srcY` (optional, default `0`) + * - `trgX` & `trgY` (optional, default `0`) + * + * Those values are going to be used by `ctx.drawImage()`. + */ + resize: function resize(file, width, height, resizeMethod) { + var info = { + srcX: 0, + srcY: 0, + srcWidth: file.width, + srcHeight: file.height + }; + var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified + + if (width == null && height == null) { + width = info.srcWidth; + height = info.srcHeight; + } else if (width == null) { + width = height * srcRatio; + } else if (height == null) { + height = width / srcRatio; + } // Make sure images aren't upscaled + + + width = Math.min(width, info.srcWidth); + height = Math.min(height, info.srcHeight); + var trgRatio = width / height; + + if (info.srcWidth > width || info.srcHeight > height) { + // Image is bigger and needs rescaling + if (resizeMethod === "crop") { + if (srcRatio > trgRatio) { + info.srcHeight = file.height; + info.srcWidth = info.srcHeight * trgRatio; + } else { + info.srcWidth = file.width; + info.srcHeight = info.srcWidth / trgRatio; + } + } else if (resizeMethod === "contain") { + // Method 'contain' + if (srcRatio > trgRatio) { + height = width / srcRatio; + } else { + width = height * srcRatio; + } + } else { + throw new Error("Unknown resizeMethod '".concat(resizeMethod, "'")); + } + } + + info.srcX = (file.width - info.srcWidth) / 2; + info.srcY = (file.height - info.srcHeight) / 2; + info.trgWidth = width; + info.trgHeight = height; + return info; + }, + + /** + * Can be used to transform the file (for example, resize an image if necessary). + * + * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes + * images according to those dimensions. + * + * Gets the `file` as the first parameter, and a `done()` function as the second, that needs + * to be invoked with the file when the transformation is done. + */ + transformFile: function transformFile(file, done) { + if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) { + return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done); + } else { + return done(file); + } + }, + + /** + * A string that contains the template used for each dropped + * file. Change it to fulfill your needs but make sure to properly + * provide all elements. + * + * If you want to use an actual HTML element instead of providing a String + * as a config option, you could create a div with the id `tpl`, + * put the template inside it and provide the element like this: + * + * document + * .querySelector('#tpl') + * .innerHTML + * + */ + previewTemplate: preview_template, + + /* + Those functions register themselves to the events on init and handle all + the user interface specific stuff. Overwriting them won't break the upload + but can break the way it's displayed. + You can overwrite them if you don't like the default behavior. If you just + want to add an additional event handler, register it on the dropzone object + and don't overwrite those options. + */ + // Those are self explanatory and simply concern the DragnDrop. + drop: function drop(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragstart: function dragstart(e) {}, + dragend: function dragend(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragenter: function dragenter(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragover: function dragover(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragleave: function dragleave(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + paste: function paste(e) {}, + // Called whenever there are no files left in the dropzone anymore, and the + // dropzone should be displayed as if in the initial state. + reset: function reset() { + return this.element.classList.remove("dz-started"); + }, + // Called when a file is added to the queue + // Receives `file` + addedfile: function addedfile(file) { + var _this = this; + + if (this.element === this.previewsContainer) { + this.element.classList.add("dz-started"); + } + + if (this.previewsContainer && !this.options.disablePreviews) { + file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim()); + file.previewTemplate = file.previewElement; // Backwards compatibility + + this.previewsContainer.appendChild(file.previewElement); + + var _iterator2 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-name]"), true), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var node = _step2.value; + node.textContent = file.name; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + + var _iterator3 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-size]"), true), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + node = _step3.value; + node.innerHTML = this.filesize(file.size); + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + + if (this.options.addRemoveLinks) { + file._removeLink = Dropzone.createElement("
".concat(this.options.dictRemoveFile, "")); + file.previewElement.appendChild(file._removeLink); + } + + var removeFileEvent = function removeFileEvent(e) { + e.preventDefault(); + e.stopPropagation(); + + if (file.status === Dropzone.UPLOADING) { + return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () { + return _this.removeFile(file); + }); + } else { + if (_this.options.dictRemoveFileConfirmation) { + return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () { + return _this.removeFile(file); + }); + } else { + return _this.removeFile(file); + } + } + }; + + var _iterator4 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-remove]"), true), + _step4; + + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var removeLink = _step4.value; + removeLink.addEventListener("click", removeFileEvent); + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } + }, + // Called whenever a file is removed. + removedfile: function removedfile(file) { + if (file.previewElement != null && file.previewElement.parentNode != null) { + file.previewElement.parentNode.removeChild(file.previewElement); + } + + return this._updateMaxFilesReachedClass(); + }, + // Called when a thumbnail has been generated + // Receives `file` and `dataUrl` + thumbnail: function thumbnail(file, dataUrl) { + if (file.previewElement) { + file.previewElement.classList.remove("dz-file-preview"); + + var _iterator5 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-thumbnail]"), true), + _step5; + + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var thumbnailElement = _step5.value; + thumbnailElement.alt = file.name; + thumbnailElement.src = dataUrl; + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + + return setTimeout(function () { + return file.previewElement.classList.add("dz-image-preview"); + }, 1); + } + }, + // Called whenever an error occurs + // Receives `file` and `message` + error: function error(file, message) { + if (file.previewElement) { + file.previewElement.classList.add("dz-error"); + + if (typeof message !== "string" && message.error) { + message = message.error; + } + + var _iterator6 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-errormessage]"), true), + _step6; + + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var node = _step6.value; + node.textContent = message; + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + } + }, + errormultiple: function errormultiple() {}, + // Called when a file gets processed. Since there is a cue, not all added + // files are processed immediately. + // Receives `file` + processing: function processing(file) { + if (file.previewElement) { + file.previewElement.classList.add("dz-processing"); + + if (file._removeLink) { + return file._removeLink.innerHTML = this.options.dictCancelUpload; + } + } + }, + processingmultiple: function processingmultiple() {}, + // Called whenever the upload progress gets updated. + // Receives `file`, `progress` (percentage 0-100) and `bytesSent`. + // To get the total number of bytes of the file, use `file.size` + uploadprogress: function uploadprogress(file, progress, bytesSent) { + if (file.previewElement) { + var _iterator7 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-uploadprogress]"), true), + _step7; + + try { + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + var node = _step7.value; + node.nodeName === "PROGRESS" ? node.value = progress : node.style.width = "".concat(progress, "%"); + } + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } + } + }, + // Called whenever the total upload progress gets updated. + // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent + totaluploadprogress: function totaluploadprogress() {}, + // Called just before the file is sent. Gets the `xhr` object as second + // parameter, so you can modify it (for example to add a CSRF token) and a + // `formData` object to add additional information. + sending: function sending() {}, + sendingmultiple: function sendingmultiple() {}, + // When the complete upload is finished and successful + // Receives `file` + success: function success(file) { + if (file.previewElement) { + return file.previewElement.classList.add("dz-success"); + } + }, + successmultiple: function successmultiple() {}, + // When the upload is canceled. + canceled: function canceled(file) { + return this.emit("error", file, this.options.dictUploadCanceled); + }, + canceledmultiple: function canceledmultiple() {}, + // When the upload is finished, either with success or an error. + // Receives `file` + complete: function complete(file) { + if (file._removeLink) { + file._removeLink.innerHTML = this.options.dictRemoveFile; + } + + if (file.previewElement) { + return file.previewElement.classList.add("dz-complete"); + } + }, + completemultiple: function completemultiple() {}, + maxfilesexceeded: function maxfilesexceeded() {}, + maxfilesreached: function maxfilesreached() {}, + queuecomplete: function queuecomplete() {}, + addedfiles: function addedfiles() {} +}; +/* harmony default export */ var src_options = (defaultOptions); +;// CONCATENATED MODULE: ./src/dropzone.js +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +function dropzone_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = dropzone_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function dropzone_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return dropzone_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dropzone_arrayLikeToArray(o, minLen); } + +function dropzone_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropzone_defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + + + + +var Dropzone = /*#__PURE__*/function (_Emitter) { + _inherits(Dropzone, _Emitter); + + var _super = _createSuper(Dropzone); + + function Dropzone(el, options) { + var _this; + + dropzone_classCallCheck(this, Dropzone); + + _this = _super.call(this); + var fallback, left; + _this.element = el; // For backwards compatibility since the version was in the prototype previously + + _this.version = Dropzone.version; + _this.clickableElements = []; + _this.listeners = []; + _this.files = []; // All files + + if (typeof _this.element === "string") { + _this.element = document.querySelector(_this.element); + } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird. + + + if (!_this.element || _this.element.nodeType == null) { + throw new Error("Invalid dropzone element."); + } + + if (_this.element.dropzone) { + throw new Error("Dropzone already attached."); + } // Now add this dropzone to the instances. + + + Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself. + + _this.element.dropzone = _assertThisInitialized(_this); + var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {}; + _this.options = Dropzone.extend({}, src_options, elementOptions, options != null ? options : {}); + _this.options.previewTemplate = _this.options.previewTemplate.replace(/\n*/g, ""); // If the browser failed, just call the fallback and leave + + if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) { + return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this))); + } // @options.url = @element.getAttribute "action" unless @options.url? + + + if (_this.options.url == null) { + _this.options.url = _this.element.getAttribute("action"); + } + + if (!_this.options.url) { + throw new Error("No URL provided."); + } + + if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) { + throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated."); + } + + if (_this.options.uploadMultiple && _this.options.chunking) { + throw new Error("You cannot set both: uploadMultiple and chunking."); + } // Backwards compatibility + + + if (_this.options.acceptedMimeTypes) { + _this.options.acceptedFiles = _this.options.acceptedMimeTypes; + delete _this.options.acceptedMimeTypes; + } // Backwards compatibility + + + if (_this.options.renameFilename != null) { + _this.options.renameFile = function (file) { + return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file); + }; + } + + if (typeof _this.options.method === "string") { + _this.options.method = _this.options.method.toUpperCase(); + } + + if ((fallback = _this.getExistingFallback()) && fallback.parentNode) { + // Remove the fallback + fallback.parentNode.removeChild(fallback); + } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false + + + if (_this.options.previewsContainer !== false) { + if (_this.options.previewsContainer) { + _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, "previewsContainer"); + } else { + _this.previewsContainer = _this.element; + } + } + + if (_this.options.clickable) { + if (_this.options.clickable === true) { + _this.clickableElements = [_this.element]; + } else { + _this.clickableElements = Dropzone.getElements(_this.options.clickable, "clickable"); + } + } + + _this.init(); + + return _this; + } // Returns all files that have been accepted + + + dropzone_createClass(Dropzone, [{ + key: "getAcceptedFiles", + value: function getAcceptedFiles() { + return this.files.filter(function (file) { + return file.accepted; + }).map(function (file) { + return file; + }); + } // Returns all files that have been rejected + // Not sure when that's going to be useful, but added for completeness. + + }, { + key: "getRejectedFiles", + value: function getRejectedFiles() { + return this.files.filter(function (file) { + return !file.accepted; + }).map(function (file) { + return file; + }); + } + }, { + key: "getFilesWithStatus", + value: function getFilesWithStatus(status) { + return this.files.filter(function (file) { + return file.status === status; + }).map(function (file) { + return file; + }); + } // Returns all files that are in the queue + + }, { + key: "getQueuedFiles", + value: function getQueuedFiles() { + return this.getFilesWithStatus(Dropzone.QUEUED); + } + }, { + key: "getUploadingFiles", + value: function getUploadingFiles() { + return this.getFilesWithStatus(Dropzone.UPLOADING); + } + }, { + key: "getAddedFiles", + value: function getAddedFiles() { + return this.getFilesWithStatus(Dropzone.ADDED); + } // Files that are either queued or uploading + + }, { + key: "getActiveFiles", + value: function getActiveFiles() { + return this.files.filter(function (file) { + return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED; + }).map(function (file) { + return file; + }); + } // The function that gets called when Dropzone is initialized. You + // can (and should) setup event listeners inside this function. + + }, { + key: "init", + value: function init() { + var _this2 = this; + + // In case it isn't set already + if (this.element.tagName === "form") { + this.element.setAttribute("enctype", "multipart/form-data"); + } + + if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) { + this.element.appendChild(Dropzone.createElement("
"))); + } + + if (this.clickableElements.length) { + var setupHiddenFileInput = function setupHiddenFileInput() { + if (_this2.hiddenFileInput) { + _this2.hiddenFileInput.parentNode.removeChild(_this2.hiddenFileInput); + } + + _this2.hiddenFileInput = document.createElement("input"); + + _this2.hiddenFileInput.setAttribute("type", "file"); + + if (_this2.options.maxFiles === null || _this2.options.maxFiles > 1) { + _this2.hiddenFileInput.setAttribute("multiple", "multiple"); + } + + _this2.hiddenFileInput.className = "dz-hidden-input"; + + if (_this2.options.acceptedFiles !== null) { + _this2.hiddenFileInput.setAttribute("accept", _this2.options.acceptedFiles); + } + + if (_this2.options.capture !== null) { + _this2.hiddenFileInput.setAttribute("capture", _this2.options.capture); + } // Making sure that no one can "tab" into this field. + + + _this2.hiddenFileInput.setAttribute("tabindex", "-1"); // Not setting `display="none"` because some browsers don't accept clicks + // on elements that aren't displayed. + + + _this2.hiddenFileInput.style.visibility = "hidden"; + _this2.hiddenFileInput.style.position = "absolute"; + _this2.hiddenFileInput.style.top = "0"; + _this2.hiddenFileInput.style.left = "0"; + _this2.hiddenFileInput.style.height = "0"; + _this2.hiddenFileInput.style.width = "0"; + Dropzone.getElement(_this2.options.hiddenInputContainer, "hiddenInputContainer").appendChild(_this2.hiddenFileInput); + + _this2.hiddenFileInput.addEventListener("change", function () { + var files = _this2.hiddenFileInput.files; + + if (files.length) { + var _iterator = dropzone_createForOfIteratorHelper(files, true), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var file = _step.value; + + _this2.addFile(file); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + + _this2.emit("addedfiles", files); + + setupHiddenFileInput(); + }); + }; + + setupHiddenFileInput(); + } + + this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself. + // They're not in @setupEventListeners() because they shouldn't be removed + // again when the dropzone gets disabled. + + var _iterator2 = dropzone_createForOfIteratorHelper(this.events, true), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var eventName = _step2.value; + this.on(eventName, this.options[eventName]); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + + this.on("uploadprogress", function () { + return _this2.updateTotalUploadProgress(); + }); + this.on("removedfile", function () { + return _this2.updateTotalUploadProgress(); + }); + this.on("canceled", function (file) { + return _this2.emit("complete", file); + }); // Emit a `queuecomplete` event if all files finished uploading. + + this.on("complete", function (file) { + if (_this2.getAddedFiles().length === 0 && _this2.getUploadingFiles().length === 0 && _this2.getQueuedFiles().length === 0) { + // This needs to be deferred so that `queuecomplete` really triggers after `complete` + return setTimeout(function () { + return _this2.emit("queuecomplete"); + }, 0); + } + }); + + var containsFiles = function containsFiles(e) { + if (e.dataTransfer.types) { + // Because e.dataTransfer.types is an Object in + // IE, we need to iterate like this instead of + // using e.dataTransfer.types.some() + for (var i = 0; i < e.dataTransfer.types.length; i++) { + if (e.dataTransfer.types[i] === "Files") return true; + } + } + + return false; + }; + + var noPropagation = function noPropagation(e) { + // If there are no files, we don't want to stop + // propagation so we don't interfere with other + // drag and drop behaviour. + if (!containsFiles(e)) return; + e.stopPropagation(); + + if (e.preventDefault) { + return e.preventDefault(); + } else { + return e.returnValue = false; + } + }; // Create the listeners + + + this.listeners = [{ + element: this.element, + events: { + dragstart: function dragstart(e) { + return _this2.emit("dragstart", e); + }, + dragenter: function dragenter(e) { + noPropagation(e); + return _this2.emit("dragenter", e); + }, + dragover: function dragover(e) { + // Makes it possible to drag files from chrome's download bar + // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar + // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception) + var efct; + + try { + efct = e.dataTransfer.effectAllowed; + } catch (error) {} + + e.dataTransfer.dropEffect = "move" === efct || "linkMove" === efct ? "move" : "copy"; + noPropagation(e); + return _this2.emit("dragover", e); + }, + dragleave: function dragleave(e) { + return _this2.emit("dragleave", e); + }, + drop: function drop(e) { + noPropagation(e); + return _this2.drop(e); + }, + dragend: function dragend(e) { + return _this2.emit("dragend", e); + } + } // This is disabled right now, because the browsers don't implement it properly. + // "paste": (e) => + // noPropagation e + // @paste e + + }]; + this.clickableElements.forEach(function (clickableElement) { + return _this2.listeners.push({ + element: clickableElement, + events: { + click: function click(evt) { + // Only the actual dropzone or the message element should trigger file selection + if (clickableElement !== _this2.element || evt.target === _this2.element || Dropzone.elementInside(evt.target, _this2.element.querySelector(".dz-message"))) { + _this2.hiddenFileInput.click(); // Forward the click + + } + + return true; + } + } + }); + }); + this.enable(); + return this.options.init.call(this); + } // Not fully tested yet + + }, { + key: "destroy", + value: function destroy() { + this.disable(); + this.removeAllFiles(true); + + if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) { + this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput); + this.hiddenFileInput = null; + } + + delete this.element.dropzone; + return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1); + } + }, { + key: "updateTotalUploadProgress", + value: function updateTotalUploadProgress() { + var totalUploadProgress; + var totalBytesSent = 0; + var totalBytes = 0; + var activeFiles = this.getActiveFiles(); + + if (activeFiles.length) { + var _iterator3 = dropzone_createForOfIteratorHelper(this.getActiveFiles(), true), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var file = _step3.value; + totalBytesSent += file.upload.bytesSent; + totalBytes += file.upload.total; + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + + totalUploadProgress = 100 * totalBytesSent / totalBytes; + } else { + totalUploadProgress = 100; + } + + return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent); + } // @options.paramName can be a function taking one parameter rather than a string. + // A parameter name for a file is obtained simply by calling this with an index number. + + }, { + key: "_getParamName", + value: function _getParamName(n) { + if (typeof this.options.paramName === "function") { + return this.options.paramName(n); + } else { + return "".concat(this.options.paramName).concat(this.options.uploadMultiple ? "[".concat(n, "]") : ""); + } + } // If @options.renameFile is a function, + // the function will be used to rename the file.name before appending it to the formData + + }, { + key: "_renameFile", + value: function _renameFile(file) { + if (typeof this.options.renameFile !== "function") { + return file.name; + } + + return this.options.renameFile(file); + } // Returns a form that can be used as fallback if the browser does not support DragnDrop + // + // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided. + // This code has to pass in IE7 :( + + }, { + key: "getFallbackForm", + value: function getFallbackForm() { + var existingFallback, form; + + if (existingFallback = this.getExistingFallback()) { + return existingFallback; + } + + var fieldsString = '
'; + + if (this.options.dictFallbackText) { + fieldsString += "

".concat(this.options.dictFallbackText, "

"); + } + + fieldsString += "
"); + var fields = Dropzone.createElement(fieldsString); + + if (this.element.tagName !== "FORM") { + form = Dropzone.createElement("
")); + form.appendChild(fields); + } else { + // Make sure that the enctype and method attributes are set properly + this.element.setAttribute("enctype", "multipart/form-data"); + this.element.setAttribute("method", this.options.method); + } + + return form != null ? form : fields; + } // Returns the fallback elements if they exist already + // + // This code has to pass in IE7 :( + + }, { + key: "getExistingFallback", + value: function getExistingFallback() { + var getFallback = function getFallback(elements) { + var _iterator4 = dropzone_createForOfIteratorHelper(elements, true), + _step4; + + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var el = _step4.value; + + if (/(^| )fallback($| )/.test(el.className)) { + return el; + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + }; + + for (var _i = 0, _arr = ["div", "form"]; _i < _arr.length; _i++) { + var tagName = _arr[_i]; + var fallback; + + if (fallback = getFallback(this.element.getElementsByTagName(tagName))) { + return fallback; + } + } + } // Activates all listeners stored in @listeners + + }, { + key: "setupEventListeners", + value: function setupEventListeners() { + return this.listeners.map(function (elementListeners) { + return function () { + var result = []; + + for (var event in elementListeners.events) { + var listener = elementListeners.events[event]; + result.push(elementListeners.element.addEventListener(event, listener, false)); + } + + return result; + }(); + }); + } // Deactivates all listeners stored in @listeners + + }, { + key: "removeEventListeners", + value: function removeEventListeners() { + return this.listeners.map(function (elementListeners) { + return function () { + var result = []; + + for (var event in elementListeners.events) { + var listener = elementListeners.events[event]; + result.push(elementListeners.element.removeEventListener(event, listener, false)); + } + + return result; + }(); + }); + } // Removes all event listeners and cancels all files in the queue or being processed. + + }, { + key: "disable", + value: function disable() { + var _this3 = this; + + this.clickableElements.forEach(function (element) { + return element.classList.remove("dz-clickable"); + }); + this.removeEventListeners(); + this.disabled = true; + return this.files.map(function (file) { + return _this3.cancelUpload(file); + }); + } + }, { + key: "enable", + value: function enable() { + delete this.disabled; + this.clickableElements.forEach(function (element) { + return element.classList.add("dz-clickable"); + }); + return this.setupEventListeners(); + } // Returns a nicely formatted filesize + + }, { + key: "filesize", + value: function filesize(size) { + var selectedSize = 0; + var selectedUnit = "b"; + + if (size > 0) { + var units = ["tb", "gb", "mb", "kb", "b"]; + + for (var i = 0; i < units.length; i++) { + var unit = units[i]; + var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10; + + if (size >= cutoff) { + selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i); + selectedUnit = unit; + break; + } + } + + selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits + } + + return "".concat(selectedSize, " ").concat(this.options.dictFileSizeUnits[selectedUnit]); + } // Adds or removes the `dz-max-files-reached` class from the form. + + }, { + key: "_updateMaxFilesReachedClass", + value: function _updateMaxFilesReachedClass() { + if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) { + if (this.getAcceptedFiles().length === this.options.maxFiles) { + this.emit("maxfilesreached", this.files); + } + + return this.element.classList.add("dz-max-files-reached"); + } else { + return this.element.classList.remove("dz-max-files-reached"); + } + } + }, { + key: "drop", + value: function drop(e) { + if (!e.dataTransfer) { + return; + } + + this.emit("drop", e); // Convert the FileList to an Array + // This is necessary for IE11 + + var files = []; + + for (var i = 0; i < e.dataTransfer.files.length; i++) { + files[i] = e.dataTransfer.files[i]; + } // Even if it's a folder, files.length will contain the folders. + + + if (files.length) { + var items = e.dataTransfer.items; + + if (items && items.length && items[0].webkitGetAsEntry != null) { + // The browser supports dropping of folders, so handle items instead of files + this._addFilesFromItems(items); + } else { + this.handleFiles(files); + } + } + + this.emit("addedfiles", files); + } + }, { + key: "paste", + value: function paste(e) { + if (__guard__(e != null ? e.clipboardData : undefined, function (x) { + return x.items; + }) == null) { + return; + } + + this.emit("paste", e); + var items = e.clipboardData.items; + + if (items.length) { + return this._addFilesFromItems(items); + } + } + }, { + key: "handleFiles", + value: function handleFiles(files) { + var _iterator5 = dropzone_createForOfIteratorHelper(files, true), + _step5; + + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var file = _step5.value; + this.addFile(file); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + } // When a folder is dropped (or files are pasted), items must be handled + // instead of files. + + }, { + key: "_addFilesFromItems", + value: function _addFilesFromItems(items) { + var _this4 = this; + + return function () { + var result = []; + + var _iterator6 = dropzone_createForOfIteratorHelper(items, true), + _step6; + + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var item = _step6.value; + var entry; + + if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) { + if (entry.isFile) { + result.push(_this4.addFile(item.getAsFile())); + } else if (entry.isDirectory) { + // Append all files from that directory to files + result.push(_this4._addFilesFromDirectory(entry, entry.name)); + } else { + result.push(undefined); + } + } else if (item.getAsFile != null) { + if (item.kind == null || item.kind === "file") { + result.push(_this4.addFile(item.getAsFile())); + } else { + result.push(undefined); + } + } else { + result.push(undefined); + } + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + + return result; + }(); + } // Goes through the directory, and adds each file it finds recursively + + }, { + key: "_addFilesFromDirectory", + value: function _addFilesFromDirectory(directory, path) { + var _this5 = this; + + var dirReader = directory.createReader(); + + var errorHandler = function errorHandler(error) { + return __guardMethod__(console, "log", function (o) { + return o.log(error); + }); + }; + + var readEntries = function readEntries() { + return dirReader.readEntries(function (entries) { + if (entries.length > 0) { + var _iterator7 = dropzone_createForOfIteratorHelper(entries, true), + _step7; + + try { + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + var entry = _step7.value; + + if (entry.isFile) { + entry.file(function (file) { + if (_this5.options.ignoreHiddenFiles && file.name.substring(0, 1) === ".") { + return; + } + + file.fullPath = "".concat(path, "/").concat(file.name); + return _this5.addFile(file); + }); + } else if (entry.isDirectory) { + _this5._addFilesFromDirectory(entry, "".concat(path, "/").concat(entry.name)); + } + } // Recursively call readEntries() again, since browser only handle + // the first 100 entries. + // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries + + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } + + readEntries(); + } + + return null; + }, errorHandler); + }; + + return readEntries(); + } // If `done()` is called without argument the file is accepted + // If you call it with an error message, the file is rejected + // (This allows for asynchronous validation) + // + // This function checks the filesize, and if the file.type passes the + // `acceptedFiles` check. + + }, { + key: "accept", + value: function accept(file, done) { + if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) { + done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize)); + } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) { + done(this.options.dictInvalidFileType); + } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) { + done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles)); + this.emit("maxfilesexceeded", file); + } else { + this.options.accept.call(this, file, done); + } + } + }, { + key: "addFile", + value: function addFile(file) { + var _this6 = this; + + file.upload = { + uuid: Dropzone.uuidv4(), + progress: 0, + // Setting the total upload size to file.size for the beginning + // It's actual different than the size to be transmitted. + total: file.size, + bytesSent: 0, + filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and + // thus the chunks — might change if `options.transformFile` is set + // and does something to the data. + + }; + this.files.push(file); + file.status = Dropzone.ADDED; + this.emit("addedfile", file); + + this._enqueueThumbnail(file); + + this.accept(file, function (error) { + if (error) { + file.accepted = false; + + _this6._errorProcessing([file], error); // Will set the file.status + + } else { + file.accepted = true; + + if (_this6.options.autoQueue) { + _this6.enqueueFile(file); + } // Will set .accepted = true + + } + + _this6._updateMaxFilesReachedClass(); + }); + } // Wrapper for enqueueFile + + }, { + key: "enqueueFiles", + value: function enqueueFiles(files) { + var _iterator8 = dropzone_createForOfIteratorHelper(files, true), + _step8; + + try { + for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { + var file = _step8.value; + this.enqueueFile(file); + } + } catch (err) { + _iterator8.e(err); + } finally { + _iterator8.f(); + } + + return null; + } + }, { + key: "enqueueFile", + value: function enqueueFile(file) { + var _this7 = this; + + if (file.status === Dropzone.ADDED && file.accepted === true) { + file.status = Dropzone.QUEUED; + + if (this.options.autoProcessQueue) { + return setTimeout(function () { + return _this7.processQueue(); + }, 0); // Deferring the call + } + } else { + throw new Error("This file can't be queued because it has already been processed or was rejected."); + } + } + }, { + key: "_enqueueThumbnail", + value: function _enqueueThumbnail(file) { + var _this8 = this; + + if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) { + this._thumbnailQueue.push(file); + + return setTimeout(function () { + return _this8._processThumbnailQueue(); + }, 0); // Deferring the call + } + } + }, { + key: "_processThumbnailQueue", + value: function _processThumbnailQueue() { + var _this9 = this; + + if (this._processingThumbnail || this._thumbnailQueue.length === 0) { + return; + } + + this._processingThumbnail = true; + + var file = this._thumbnailQueue.shift(); + + return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) { + _this9.emit("thumbnail", file, dataUrl); + + _this9._processingThumbnail = false; + return _this9._processThumbnailQueue(); + }); + } // Can be called by the user to remove a file + + }, { + key: "removeFile", + value: function removeFile(file) { + if (file.status === Dropzone.UPLOADING) { + this.cancelUpload(file); + } + + this.files = without(this.files, file); + this.emit("removedfile", file); + + if (this.files.length === 0) { + return this.emit("reset"); + } + } // Removes all files that aren't currently processed from the list + + }, { + key: "removeAllFiles", + value: function removeAllFiles(cancelIfNecessary) { + // Create a copy of files since removeFile() changes the @files array. + if (cancelIfNecessary == null) { + cancelIfNecessary = false; + } + + var _iterator9 = dropzone_createForOfIteratorHelper(this.files.slice(), true), + _step9; + + try { + for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { + var file = _step9.value; + + if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) { + this.removeFile(file); + } + } + } catch (err) { + _iterator9.e(err); + } finally { + _iterator9.f(); + } + + return null; + } // Resizes an image before it gets sent to the server. This function is the default behavior of + // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with + // the resized blob. + + }, { + key: "resizeImage", + value: function resizeImage(file, width, height, resizeMethod, callback) { + var _this10 = this; + + return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) { + if (canvas == null) { + // The image has not been resized + return callback(file); + } else { + var resizeMimeType = _this10.options.resizeMimeType; + + if (resizeMimeType == null) { + resizeMimeType = file.type; + } + + var resizedDataURL = canvas.toDataURL(resizeMimeType, _this10.options.resizeQuality); + + if (resizeMimeType === "image/jpeg" || resizeMimeType === "image/jpg") { + // Now add the original EXIF information + resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL); + } + + return callback(Dropzone.dataURItoBlob(resizedDataURL)); + } + }); + } + }, { + key: "createThumbnail", + value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) { + var _this11 = this; + + var fileReader = new FileReader(); + + fileReader.onload = function () { + file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector + + if (file.type === "image/svg+xml") { + if (callback != null) { + callback(fileReader.result); + } + + return; + } + + _this11.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback); + }; + + fileReader.readAsDataURL(file); + } // `mockFile` needs to have these attributes: + // + // { name: 'name', size: 12345, imageUrl: '' } + // + // `callback` will be invoked when the image has been downloaded and displayed. + // `crossOrigin` will be added to the `img` tag when accessing the file. + + }, { + key: "displayExistingFile", + value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) { + var _this12 = this; + + var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + this.emit("addedfile", mockFile); + this.emit("complete", mockFile); + + if (!resizeThumbnail) { + this.emit("thumbnail", mockFile, imageUrl); + if (callback) callback(); + } else { + var onDone = function onDone(thumbnail) { + _this12.emit("thumbnail", mockFile, thumbnail); + + if (callback) callback(); + }; + + mockFile.dataURL = imageUrl; + this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin); + } + } + }, { + key: "createThumbnailFromUrl", + value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) { + var _this13 = this; + + // Not using `new Image` here because of a bug in latest Chrome versions. + // See https://github.com/enyo/dropzone/pull/226 + var img = document.createElement("img"); + + if (crossOrigin) { + img.crossOrigin = crossOrigin; + } // fixOrientation is not needed anymore with browsers handling imageOrientation + + + fixOrientation = getComputedStyle(document.body)["imageOrientation"] == "from-image" ? false : fixOrientation; + + img.onload = function () { + var loadExif = function loadExif(callback) { + return callback(1); + }; + + if (typeof EXIF !== "undefined" && EXIF !== null && fixOrientation) { + loadExif = function loadExif(callback) { + return EXIF.getData(img, function () { + return callback(EXIF.getTag(this, "Orientation")); + }); + }; + } + + return loadExif(function (orientation) { + file.width = img.width; + file.height = img.height; + + var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod); + + var canvas = document.createElement("canvas"); + var ctx = canvas.getContext("2d"); + canvas.width = resizeInfo.trgWidth; + canvas.height = resizeInfo.trgHeight; + + if (orientation > 4) { + canvas.width = resizeInfo.trgHeight; + canvas.height = resizeInfo.trgWidth; + } + + switch (orientation) { + case 2: + // horizontal flip + ctx.translate(canvas.width, 0); + ctx.scale(-1, 1); + break; + + case 3: + // 180° rotate left + ctx.translate(canvas.width, canvas.height); + ctx.rotate(Math.PI); + break; + + case 4: + // vertical flip + ctx.translate(0, canvas.height); + ctx.scale(1, -1); + break; + + case 5: + // vertical flip + 90 rotate right + ctx.rotate(0.5 * Math.PI); + ctx.scale(1, -1); + break; + + case 6: + // 90° rotate right + ctx.rotate(0.5 * Math.PI); + ctx.translate(0, -canvas.width); + break; + + case 7: + // horizontal flip + 90 rotate right + ctx.rotate(0.5 * Math.PI); + ctx.translate(canvas.height, -canvas.width); + ctx.scale(-1, 1); + break; + + case 8: + // 90° rotate left + ctx.rotate(-0.5 * Math.PI); + ctx.translate(-canvas.height, 0); + break; + } // This is a bugfix for iOS' scaling bug. + + + drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight); + var thumbnail = canvas.toDataURL("image/png"); + + if (callback != null) { + return callback(thumbnail, canvas); + } + }); + }; + + if (callback != null) { + img.onerror = callback; + } + + return img.src = file.dataURL; + } // Goes through the queue and processes files if there aren't too many already. + + }, { + key: "processQueue", + value: function processQueue() { + var parallelUploads = this.options.parallelUploads; + var processingLength = this.getUploadingFiles().length; + var i = processingLength; // There are already at least as many files uploading than should be + + if (processingLength >= parallelUploads) { + return; + } + + var queuedFiles = this.getQueuedFiles(); + + if (!(queuedFiles.length > 0)) { + return; + } + + if (this.options.uploadMultiple) { + // The files should be uploaded in one request + return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength)); + } else { + while (i < parallelUploads) { + if (!queuedFiles.length) { + return; + } // Nothing left to process + + + this.processFile(queuedFiles.shift()); + i++; + } + } + } // Wrapper for `processFiles` + + }, { + key: "processFile", + value: function processFile(file) { + return this.processFiles([file]); + } // Loads the file, then calls finishedLoading() + + }, { + key: "processFiles", + value: function processFiles(files) { + var _iterator10 = dropzone_createForOfIteratorHelper(files, true), + _step10; + + try { + for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { + var file = _step10.value; + file.processing = true; // Backwards compatibility + + file.status = Dropzone.UPLOADING; + this.emit("processing", file); + } + } catch (err) { + _iterator10.e(err); + } finally { + _iterator10.f(); + } + + if (this.options.uploadMultiple) { + this.emit("processingmultiple", files); + } + + return this.uploadFiles(files); + } + }, { + key: "_getFilesWithXhr", + value: function _getFilesWithXhr(xhr) { + var files; + return files = this.files.filter(function (file) { + return file.xhr === xhr; + }).map(function (file) { + return file; + }); + } // Cancels the file upload and sets the status to CANCELED + // **if** the file is actually being uploaded. + // If it's still in the queue, the file is being removed from it and the status + // set to CANCELED. + + }, { + key: "cancelUpload", + value: function cancelUpload(file) { + if (file.status === Dropzone.UPLOADING) { + var groupedFiles = this._getFilesWithXhr(file.xhr); + + var _iterator11 = dropzone_createForOfIteratorHelper(groupedFiles, true), + _step11; + + try { + for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { + var groupedFile = _step11.value; + groupedFile.status = Dropzone.CANCELED; + } + } catch (err) { + _iterator11.e(err); + } finally { + _iterator11.f(); + } + + if (typeof file.xhr !== "undefined") { + file.xhr.abort(); + } + + var _iterator12 = dropzone_createForOfIteratorHelper(groupedFiles, true), + _step12; + + try { + for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { + var _groupedFile = _step12.value; + this.emit("canceled", _groupedFile); + } + } catch (err) { + _iterator12.e(err); + } finally { + _iterator12.f(); + } + + if (this.options.uploadMultiple) { + this.emit("canceledmultiple", groupedFiles); + } + } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) { + file.status = Dropzone.CANCELED; + this.emit("canceled", file); + + if (this.options.uploadMultiple) { + this.emit("canceledmultiple", [file]); + } + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } + }, { + key: "resolveOption", + value: function resolveOption(option) { + if (typeof option === "function") { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return option.apply(this, args); + } + + return option; + } + }, { + key: "uploadFile", + value: function uploadFile(file) { + return this.uploadFiles([file]); + } + }, { + key: "uploadFiles", + value: function uploadFiles(files) { + var _this14 = this; + + this._transformFiles(files, function (transformedFiles) { + if (_this14.options.chunking) { + // Chunking is not allowed to be used with `uploadMultiple` so we know + // that there is only __one__file. + var transformedFile = transformedFiles[0]; + files[0].upload.chunked = _this14.options.chunking && (_this14.options.forceChunking || transformedFile.size > _this14.options.chunkSize); + files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this14.options.chunkSize); + } + + if (files[0].upload.chunked) { + // This file should be sent in chunks! + // If the chunking option is set, we **know** that there can only be **one** file, since + // uploadMultiple is not allowed with this option. + var file = files[0]; + var _transformedFile = transformedFiles[0]; + var startedChunkCount = 0; + file.upload.chunks = []; + + var handleNextChunk = function handleNextChunk() { + var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet. + + while (file.upload.chunks[chunkIndex] !== undefined) { + chunkIndex++; + } // This means, that all chunks have already been started. + + + if (chunkIndex >= file.upload.totalChunkCount) return; + startedChunkCount++; + var start = chunkIndex * _this14.options.chunkSize; + var end = Math.min(start + _this14.options.chunkSize, _transformedFile.size); + var dataBlock = { + name: _this14._getParamName(0), + data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end), + filename: file.upload.filename, + chunkIndex: chunkIndex + }; + file.upload.chunks[chunkIndex] = { + file: file, + index: chunkIndex, + dataBlock: dataBlock, + // In case we want to retry. + status: Dropzone.UPLOADING, + progress: 0, + retries: 0 // The number of times this block has been retried. + + }; + + _this14._uploadData(files, [dataBlock]); + }; + + file.upload.finishedChunkUpload = function (chunk, response) { + var allFinished = true; + chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk + + chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers + + chunk.xhr = null; + + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] === undefined) { + return handleNextChunk(); + } + + if (file.upload.chunks[i].status !== Dropzone.SUCCESS) { + allFinished = false; + } + } + + if (allFinished) { + _this14.options.chunksUploaded(file, function () { + _this14._finished(files, response, null); + }); + } + }; + + if (_this14.options.parallelChunkUploads) { + for (var i = 0; i < file.upload.totalChunkCount; i++) { + handleNextChunk(); + } + } else { + handleNextChunk(); + } + } else { + var dataBlocks = []; + + for (var _i2 = 0; _i2 < files.length; _i2++) { + dataBlocks[_i2] = { + name: _this14._getParamName(_i2), + data: transformedFiles[_i2], + filename: files[_i2].upload.filename + }; + } + + _this14._uploadData(files, dataBlocks); + } + }); + } /// Returns the right chunk for given file and xhr + + }, { + key: "_getChunk", + value: function _getChunk(file, xhr) { + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) { + return file.upload.chunks[i]; + } + } + } // This function actually uploads the file(s) to the server. + // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed + // files, or individual chunks for chunked upload). + + }, { + key: "_uploadData", + value: function _uploadData(files, dataBlocks) { + var _this15 = this; + + var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later. + + var _iterator13 = dropzone_createForOfIteratorHelper(files, true), + _step13; + + try { + for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { + var file = _step13.value; + file.xhr = xhr; + } + } catch (err) { + _iterator13.e(err); + } finally { + _iterator13.f(); + } + + if (files[0].upload.chunked) { + // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk + files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr; + } + + var method = this.resolveOption(this.options.method, files); + var url = this.resolveOption(this.options.url, files); + xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8 + + var timeout = this.resolveOption(this.options.timeout, files); + if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179 + + xhr.withCredentials = !!this.options.withCredentials; + + xhr.onload = function (e) { + _this15._finishedUploading(files, xhr, e); + }; + + xhr.ontimeout = function () { + _this15._handleUploadError(files, xhr, "Request timedout after ".concat(_this15.options.timeout / 1000, " seconds")); + }; + + xhr.onerror = function () { + _this15._handleUploadError(files, xhr); + }; // Some browsers do not have the .upload property + + + var progressObj = xhr.upload != null ? xhr.upload : xhr; + + progressObj.onprogress = function (e) { + return _this15._updateFilesUploadProgress(files, xhr, e); + }; + + var headers = { + Accept: "application/json", + "Cache-Control": "no-cache", + "X-Requested-With": "XMLHttpRequest" + }; + + if (this.options.headers) { + Dropzone.extend(headers, this.options.headers); + } + + for (var headerName in headers) { + var headerValue = headers[headerName]; + + if (headerValue) { + xhr.setRequestHeader(headerName, headerValue); + } + } + + var formData = new FormData(); // Adding all @options parameters + + if (this.options.params) { + var additionalParams = this.options.params; + + if (typeof additionalParams === "function") { + additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null); + } + + for (var key in additionalParams) { + var value = additionalParams[key]; + + if (Array.isArray(value)) { + // The additional parameter contains an array, + // so lets iterate over it to attach each value + // individually. + for (var i = 0; i < value.length; i++) { + formData.append(key, value[i]); + } + } else { + formData.append(key, value); + } + } + } // Let the user add additional data if necessary + + + var _iterator14 = dropzone_createForOfIteratorHelper(files, true), + _step14; + + try { + for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) { + var _file = _step14.value; + this.emit("sending", _file, xhr, formData); + } + } catch (err) { + _iterator14.e(err); + } finally { + _iterator14.f(); + } + + if (this.options.uploadMultiple) { + this.emit("sendingmultiple", files, xhr, formData); + } + + this._addFormElementData(formData); // Finally add the files + // Has to be last because some servers (eg: S3) expect the file to be the last parameter + + + for (var _i3 = 0; _i3 < dataBlocks.length; _i3++) { + var dataBlock = dataBlocks[_i3]; + formData.append(dataBlock.name, dataBlock.data, dataBlock.filename); + } + + this.submitRequest(xhr, formData, files); + } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done. + + }, { + key: "_transformFiles", + value: function _transformFiles(files, done) { + var _this16 = this; + + var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library. + + var doneCounter = 0; + + var _loop = function _loop(i) { + _this16.options.transformFile.call(_this16, files[i], function (transformedFile) { + transformedFiles[i] = transformedFile; + + if (++doneCounter === files.length) { + done(transformedFiles); + } + }); + }; + + for (var i = 0; i < files.length; i++) { + _loop(i); + } + } // Takes care of adding other input elements of the form to the AJAX request + + }, { + key: "_addFormElementData", + value: function _addFormElementData(formData) { + // Take care of other input elements + if (this.element.tagName === "FORM") { + var _iterator15 = dropzone_createForOfIteratorHelper(this.element.querySelectorAll("input, textarea, select, button"), true), + _step15; + + try { + for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) { + var input = _step15.value; + var inputName = input.getAttribute("name"); + var inputType = input.getAttribute("type"); + if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it. + + if (typeof inputName === "undefined" || inputName === null) continue; + + if (input.tagName === "SELECT" && input.hasAttribute("multiple")) { + // Possibly multiple values + var _iterator16 = dropzone_createForOfIteratorHelper(input.options, true), + _step16; + + try { + for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) { + var option = _step16.value; + + if (option.selected) { + formData.append(inputName, option.value); + } + } + } catch (err) { + _iterator16.e(err); + } finally { + _iterator16.f(); + } + } else if (!inputType || inputType !== "checkbox" && inputType !== "radio" || input.checked) { + formData.append(inputName, input.value); + } + } + } catch (err) { + _iterator15.e(err); + } finally { + _iterator15.f(); + } + } + } // Invoked when there is new progress information about given files. + // If e is not provided, it is assumed that the upload is finished. + + }, { + key: "_updateFilesUploadProgress", + value: function _updateFilesUploadProgress(files, xhr, e) { + if (!files[0].upload.chunked) { + // Handle file uploads without chunking + var _iterator17 = dropzone_createForOfIteratorHelper(files, true), + _step17; + + try { + for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) { + var file = _step17.value; + + if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) { + // If both, the `total` and `bytesSent` have already been set, and + // they are equal (meaning progress is at 100%), we can skip this + // file, since an upload progress shouldn't go down. + continue; + } + + if (e) { + file.upload.progress = 100 * e.loaded / e.total; + file.upload.total = e.total; + file.upload.bytesSent = e.loaded; + } else { + // No event, so we're at 100% + file.upload.progress = 100; + file.upload.bytesSent = file.upload.total; + } + + this.emit("uploadprogress", file, file.upload.progress, file.upload.bytesSent); + } + } catch (err) { + _iterator17.e(err); + } finally { + _iterator17.f(); + } + } else { + // Handle chunked file uploads + // Chunked upload is not compatible with uploading multiple files in one + // request, so we know there's only one file. + var _file2 = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk + // progress. + + var chunk = this._getChunk(_file2, xhr); + + if (e) { + chunk.progress = 100 * e.loaded / e.total; + chunk.total = e.total; + chunk.bytesSent = e.loaded; + } else { + // No event, so we're at 100% + chunk.progress = 100; + chunk.bytesSent = chunk.total; + } // Now tally the *file* upload progress from its individual chunks + + + _file2.upload.progress = 0; + _file2.upload.total = 0; + _file2.upload.bytesSent = 0; + + for (var i = 0; i < _file2.upload.totalChunkCount; i++) { + if (_file2.upload.chunks[i] && typeof _file2.upload.chunks[i].progress !== "undefined") { + _file2.upload.progress += _file2.upload.chunks[i].progress; + _file2.upload.total += _file2.upload.chunks[i].total; + _file2.upload.bytesSent += _file2.upload.chunks[i].bytesSent; + } + } // Since the process is a percentage, we need to divide by the amount of + // chunks we've used. + + + _file2.upload.progress = _file2.upload.progress / _file2.upload.totalChunkCount; + this.emit("uploadprogress", _file2, _file2.upload.progress, _file2.upload.bytesSent); + } + } + }, { + key: "_finishedUploading", + value: function _finishedUploading(files, xhr, e) { + var response; + + if (files[0].status === Dropzone.CANCELED) { + return; + } + + if (xhr.readyState !== 4) { + return; + } + + if (xhr.responseType !== "arraybuffer" && xhr.responseType !== "blob") { + response = xhr.responseText; + + if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) { + try { + response = JSON.parse(response); + } catch (error) { + e = error; + response = "Invalid JSON response from server."; + } + } + } + + this._updateFilesUploadProgress(files, xhr); + + if (!(200 <= xhr.status && xhr.status < 300)) { + this._handleUploadError(files, xhr, response); + } else { + if (files[0].upload.chunked) { + files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response); + } else { + this._finished(files, response, e); + } + } + } + }, { + key: "_handleUploadError", + value: function _handleUploadError(files, xhr, response) { + if (files[0].status === Dropzone.CANCELED) { + return; + } + + if (files[0].upload.chunked && this.options.retryChunks) { + var chunk = this._getChunk(files[0], xhr); + + if (chunk.retries++ < this.options.retryChunksLimit) { + this._uploadData(files, [chunk.dataBlock]); + + return; + } else { + console.warn("Retried this chunk too often. Giving up."); + } + } + + this._errorProcessing(files, response || this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr); + } + }, { + key: "submitRequest", + value: function submitRequest(xhr, formData, files) { + if (xhr.readyState != 1) { + console.warn("Cannot send this request because the XMLHttpRequest.readyState is not OPENED."); + return; + } + + xhr.send(formData); + } // Called internally when processing is finished. + // Individual callbacks have to be called in the appropriate sections. + + }, { + key: "_finished", + value: function _finished(files, responseText, e) { + var _iterator18 = dropzone_createForOfIteratorHelper(files, true), + _step18; + + try { + for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) { + var file = _step18.value; + file.status = Dropzone.SUCCESS; + this.emit("success", file, responseText, e); + this.emit("complete", file); + } + } catch (err) { + _iterator18.e(err); + } finally { + _iterator18.f(); + } + + if (this.options.uploadMultiple) { + this.emit("successmultiple", files, responseText, e); + this.emit("completemultiple", files); + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } // Called internally when processing is finished. + // Individual callbacks have to be called in the appropriate sections. + + }, { + key: "_errorProcessing", + value: function _errorProcessing(files, message, xhr) { + var _iterator19 = dropzone_createForOfIteratorHelper(files, true), + _step19; + + try { + for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) { + var file = _step19.value; + file.status = Dropzone.ERROR; + this.emit("error", file, message, xhr); + this.emit("complete", file); + } + } catch (err) { + _iterator19.e(err); + } finally { + _iterator19.f(); + } + + if (this.options.uploadMultiple) { + this.emit("errormultiple", files, message, xhr); + this.emit("completemultiple", files); + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } + }], [{ + key: "initClass", + value: function initClass() { + // Exposing the emitter class, mainly for tests + this.prototype.Emitter = Emitter; + /* + This is a list of all available events you can register on a dropzone object. + You can register an event handler like this: + dropzone.on("dragEnter", function() { }); + */ + + this.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"]; + this.prototype._thumbnailQueue = []; + this.prototype._processingThumbnail = false; + } // global utility + + }, { + key: "extend", + value: function extend(target) { + for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + objects[_key2 - 1] = arguments[_key2]; + } + + for (var _i4 = 0, _objects = objects; _i4 < _objects.length; _i4++) { + var object = _objects[_i4]; + + for (var key in object) { + var val = object[key]; + target[key] = val; + } + } + + return target; + } + }, { + key: "uuidv4", + value: function uuidv4() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === "x" ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } + }]); + + return Dropzone; +}(Emitter); + + +Dropzone.initClass(); +Dropzone.version = "5.9.3"; // This is a map of options for your different dropzones. Add configurations +// to this object for your different dropzone elemens. +// +// Example: +// +// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 }; +// +// To disable autoDiscover for a specific element, you can set `false` as an option: +// +// Dropzone.options.myDisabledElementId = false; +// +// And in html: +// +//
+ +Dropzone.options = {}; // Returns the options for an element or undefined if none available. + +Dropzone.optionsForElement = function (element) { + // Get the `Dropzone.options.elementId` for this element if it exists + if (element.getAttribute("id")) { + return Dropzone.options[camelize(element.getAttribute("id"))]; + } else { + return undefined; + } +}; // Holds a list of all dropzone instances + + +Dropzone.instances = []; // Returns the dropzone for given element if any + +Dropzone.forElement = function (element) { + if (typeof element === "string") { + element = document.querySelector(element); + } + + if ((element != null ? element.dropzone : undefined) == null) { + throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone."); + } + + return element.dropzone; +}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements. + + +Dropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them + +Dropzone.discover = function () { + var dropzones; + + if (document.querySelectorAll) { + dropzones = document.querySelectorAll(".dropzone"); + } else { + dropzones = []; // IE :( + + var checkElements = function checkElements(elements) { + return function () { + var result = []; + + var _iterator20 = dropzone_createForOfIteratorHelper(elements, true), + _step20; + + try { + for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) { + var el = _step20.value; + + if (/(^| )dropzone($| )/.test(el.className)) { + result.push(dropzones.push(el)); + } else { + result.push(undefined); + } + } + } catch (err) { + _iterator20.e(err); + } finally { + _iterator20.f(); + } + + return result; + }(); + }; + + checkElements(document.getElementsByTagName("div")); + checkElements(document.getElementsByTagName("form")); + } + + return function () { + var result = []; + + var _iterator21 = dropzone_createForOfIteratorHelper(dropzones, true), + _step21; + + try { + for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) { + var dropzone = _step21.value; + + // Create a dropzone unless auto discover has been disabled for specific element + if (Dropzone.optionsForElement(dropzone) !== false) { + result.push(new Dropzone(dropzone)); + } else { + result.push(undefined); + } + } + } catch (err) { + _iterator21.e(err); + } finally { + _iterator21.f(); + } + + return result; + }(); +}; // Some browsers support drag and drog functionality, but not correctly. +// +// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know. +// But what to do when browsers *theoretically* support an API, but crash +// when using it. +// +// This is a list of regular expressions tested against navigator.userAgent +// +// ** It should only be used on browser that *do* support the API, but +// incorrectly ** + + +Dropzone.blockedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API. +/opera.*(Macintosh|Windows Phone).*version\/12/i]; // Checks if the browser is supported + +Dropzone.isBrowserSupported = function () { + var capableBrowser = true; + + if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) { + if (!("classList" in document.createElement("a"))) { + capableBrowser = false; + } else { + if (Dropzone.blacklistedBrowsers !== undefined) { + // Since this has been renamed, this makes sure we don't break older + // configuration. + Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers; + } // The browser supports the API, but may be blocked. + + + var _iterator22 = dropzone_createForOfIteratorHelper(Dropzone.blockedBrowsers, true), + _step22; + + try { + for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) { + var regex = _step22.value; + + if (regex.test(navigator.userAgent)) { + capableBrowser = false; + continue; + } + } + } catch (err) { + _iterator22.e(err); + } finally { + _iterator22.f(); + } + } + } else { + capableBrowser = false; + } + + return capableBrowser; +}; + +Dropzone.dataURItoBlob = function (dataURI) { + // convert base64 to raw binary data held in a string + // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this + var byteString = atob(dataURI.split(",")[1]); // separate out the mime component + + var mimeString = dataURI.split(",")[0].split(":")[1].split(";")[0]; // write the bytes of the string to an ArrayBuffer + + var ab = new ArrayBuffer(byteString.length); + var ia = new Uint8Array(ab); + + for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) { + ia[i] = byteString.charCodeAt(i); + } // write the ArrayBuffer to a blob + + + return new Blob([ab], { + type: mimeString + }); +}; // Returns an array without the rejected item + + +var without = function without(list, rejectedItem) { + return list.filter(function (item) { + return item !== rejectedItem; + }).map(function (item) { + return item; + }); +}; // abc-def_ghi -> abcDefGhi + + +var camelize = function camelize(str) { + return str.replace(/[\-_](\w)/g, function (match) { + return match.charAt(1).toUpperCase(); + }); +}; // Creates an element from string + + +Dropzone.createElement = function (string) { + var div = document.createElement("div"); + div.innerHTML = string; + return div.childNodes[0]; +}; // Tests if given element is inside (or simply is) the container + + +Dropzone.elementInside = function (element, container) { + if (element === container) { + return true; + } // Coffeescript doesn't support do/while loops + + + while (element = element.parentNode) { + if (element === container) { + return true; + } + } + + return false; +}; + +Dropzone.getElement = function (el, name) { + var element; + + if (typeof el === "string") { + element = document.querySelector(el); + } else if (el.nodeType != null) { + element = el; + } + + if (element == null) { + throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector or a plain HTML element.")); + } + + return element; +}; + +Dropzone.getElements = function (els, name) { + var el, elements; + + if (els instanceof Array) { + elements = []; + + try { + var _iterator23 = dropzone_createForOfIteratorHelper(els, true), + _step23; + + try { + for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) { + el = _step23.value; + elements.push(this.getElement(el, name)); + } + } catch (err) { + _iterator23.e(err); + } finally { + _iterator23.f(); + } + } catch (e) { + elements = null; + } + } else if (typeof els === "string") { + elements = []; + + var _iterator24 = dropzone_createForOfIteratorHelper(document.querySelectorAll(els), true), + _step24; + + try { + for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) { + el = _step24.value; + elements.push(el); + } + } catch (err) { + _iterator24.e(err); + } finally { + _iterator24.f(); + } + } else if (els.nodeType != null) { + elements = [els]; + } + + if (elements == null || !elements.length) { + throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector, a plain HTML element or a list of those.")); + } + + return elements; +}; // Asks the user the question and calls accepted or rejected accordingly +// +// The default implementation just uses `window.confirm` and then calls the +// appropriate callback. + + +Dropzone.confirm = function (question, accepted, rejected) { + if (window.confirm(question)) { + return accepted(); + } else if (rejected != null) { + return rejected(); + } +}; // Validates the mime type like this: +// +// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept + + +Dropzone.isValidFile = function (file, acceptedFiles) { + if (!acceptedFiles) { + return true; + } // If there are no accepted mime types, it's OK + + + acceptedFiles = acceptedFiles.split(","); + var mimeType = file.type; + var baseMimeType = mimeType.replace(/\/.*$/, ""); + + var _iterator25 = dropzone_createForOfIteratorHelper(acceptedFiles, true), + _step25; + + try { + for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) { + var validType = _step25.value; + validType = validType.trim(); + + if (validType.charAt(0) === ".") { + if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) { + return true; + } + } else if (/\/\*$/.test(validType)) { + // This is something like a image/* mime type + if (baseMimeType === validType.replace(/\/.*$/, "")) { + return true; + } + } else { + if (mimeType === validType) { + return true; + } + } + } + } catch (err) { + _iterator25.e(err); + } finally { + _iterator25.f(); + } + + return false; +}; // Augment jQuery + + +if (typeof jQuery !== "undefined" && jQuery !== null) { + jQuery.fn.dropzone = function (options) { + return this.each(function () { + return new Dropzone(this, options); + }); + }; +} // Dropzone file status codes + + +Dropzone.ADDED = "added"; +Dropzone.QUEUED = "queued"; // For backwards compatibility. Now, if a file is accepted, it's either queued +// or uploading. + +Dropzone.ACCEPTED = Dropzone.QUEUED; +Dropzone.UPLOADING = "uploading"; +Dropzone.PROCESSING = Dropzone.UPLOADING; // alias + +Dropzone.CANCELED = "canceled"; +Dropzone.ERROR = "error"; +Dropzone.SUCCESS = "success"; +/* + + Bugfix for iOS 6 and 7 + Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios + based on the work of https://github.com/stomita/ios-imagefile-megapixel + + */ +// Detecting vertical squash in loaded image. +// Fixes a bug which squash image vertically while drawing into canvas for some images. +// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel + +var detectVerticalSquash = function detectVerticalSquash(img) { + var iw = img.naturalWidth; + var ih = img.naturalHeight; + var canvas = document.createElement("canvas"); + canvas.width = 1; + canvas.height = ih; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + + var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih), + data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically. + + + var sy = 0; + var ey = ih; + var py = ih; + + while (py > sy) { + var alpha = data[(py - 1) * 4 + 3]; + + if (alpha === 0) { + ey = py; + } else { + sy = py; + } + + py = ey + sy >> 1; + } + + var ratio = py / ih; + + if (ratio === 0) { + return 1; + } else { + return ratio; + } +}; // A replacement for context.drawImage +// (args are for source and destination). + + +var drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) { + var vertSquashRatio = detectVerticalSquash(img); + return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio); +}; // Based on MinifyJpeg +// Source: http://www.perry.cz/files/ExifRestorer.js +// http://elicon.blog57.fc2.com/blog-entry-206.html + + +var ExifRestore = /*#__PURE__*/function () { + function ExifRestore() { + dropzone_classCallCheck(this, ExifRestore); + } + + dropzone_createClass(ExifRestore, null, [{ + key: "initClass", + value: function initClass() { + this.KEY_STR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + } + }, { + key: "encode64", + value: function encode64(input) { + var output = ""; + var chr1 = undefined; + var chr2 = undefined; + var chr3 = ""; + var enc1 = undefined; + var enc2 = undefined; + var enc3 = undefined; + var enc4 = ""; + var i = 0; + + while (true) { + chr1 = input[i++]; + chr2 = input[i++]; + chr3 = input[i++]; + enc1 = chr1 >> 2; + enc2 = (chr1 & 3) << 4 | chr2 >> 4; + enc3 = (chr2 & 15) << 2 | chr3 >> 6; + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4); + chr1 = chr2 = chr3 = ""; + enc1 = enc2 = enc3 = enc4 = ""; + + if (!(i < input.length)) { + break; + } + } + + return output; + } + }, { + key: "restore", + value: function restore(origFileBase64, resizedFileBase64) { + if (!origFileBase64.match("data:image/jpeg;base64,")) { + return resizedFileBase64; + } + + var rawImage = this.decode64(origFileBase64.replace("data:image/jpeg;base64,", "")); + var segments = this.slice2Segments(rawImage); + var image = this.exifManipulation(resizedFileBase64, segments); + return "data:image/jpeg;base64,".concat(this.encode64(image)); + } + }, { + key: "exifManipulation", + value: function exifManipulation(resizedFileBase64, segments) { + var exifArray = this.getExifArray(segments); + var newImageArray = this.insertExif(resizedFileBase64, exifArray); + var aBuffer = new Uint8Array(newImageArray); + return aBuffer; + } + }, { + key: "getExifArray", + value: function getExifArray(segments) { + var seg = undefined; + var x = 0; + + while (x < segments.length) { + seg = segments[x]; + + if (seg[0] === 255 & seg[1] === 225) { + return seg; + } + + x++; + } + + return []; + } + }, { + key: "insertExif", + value: function insertExif(resizedFileBase64, exifArray) { + var imageData = resizedFileBase64.replace("data:image/jpeg;base64,", ""); + var buf = this.decode64(imageData); + var separatePoint = buf.indexOf(255, 3); + var mae = buf.slice(0, separatePoint); + var ato = buf.slice(separatePoint); + var array = mae; + array = array.concat(exifArray); + array = array.concat(ato); + return array; + } + }, { + key: "slice2Segments", + value: function slice2Segments(rawImageArray) { + var head = 0; + var segments = []; + + while (true) { + var length; + + if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) { + break; + } + + if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) { + head += 2; + } else { + length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3]; + var endPoint = head + length + 2; + var seg = rawImageArray.slice(head, endPoint); + segments.push(seg); + head = endPoint; + } + + if (head > rawImageArray.length) { + break; + } + } + + return segments; + } + }, { + key: "decode64", + value: function decode64(input) { + var output = ""; + var chr1 = undefined; + var chr2 = undefined; + var chr3 = ""; + var enc1 = undefined; + var enc2 = undefined; + var enc3 = undefined; + var enc4 = ""; + var i = 0; + var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = + + var base64test = /[^A-Za-z0-9\+\/\=]/g; + + if (base64test.exec(input)) { + console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."); + } + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + while (true) { + enc1 = this.KEY_STR.indexOf(input.charAt(i++)); + enc2 = this.KEY_STR.indexOf(input.charAt(i++)); + enc3 = this.KEY_STR.indexOf(input.charAt(i++)); + enc4 = this.KEY_STR.indexOf(input.charAt(i++)); + chr1 = enc1 << 2 | enc2 >> 4; + chr2 = (enc2 & 15) << 4 | enc3 >> 2; + chr3 = (enc3 & 3) << 6 | enc4; + buf.push(chr1); + + if (enc3 !== 64) { + buf.push(chr2); + } + + if (enc4 !== 64) { + buf.push(chr3); + } + + chr1 = chr2 = chr3 = ""; + enc1 = enc2 = enc3 = enc4 = ""; + + if (!(i < input.length)) { + break; + } + } + + return buf; + } + }]); + + return ExifRestore; +}(); + +ExifRestore.initClass(); +/* + * contentloaded.js + * + * Author: Diego Perini (diego.perini at gmail.com) + * Summary: cross-browser wrapper for DOMContentLoaded + * Updated: 20101020 + * License: MIT + * Version: 1.2 + * + * URL: + * http://javascript.nwbox.com/ContentLoaded/ + * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE + */ +// @win window reference +// @fn function reference + +var contentLoaded = function contentLoaded(win, fn) { + var done = false; + var top = true; + var doc = win.document; + var root = doc.documentElement; + var add = doc.addEventListener ? "addEventListener" : "attachEvent"; + var rem = doc.addEventListener ? "removeEventListener" : "detachEvent"; + var pre = doc.addEventListener ? "" : "on"; + + var init = function init(e) { + if (e.type === "readystatechange" && doc.readyState !== "complete") { + return; + } + + (e.type === "load" ? win : doc)[rem](pre + e.type, init, false); + + if (!done && (done = true)) { + return fn.call(win, e.type || e); + } + }; + + var poll = function poll() { + try { + root.doScroll("left"); + } catch (e) { + setTimeout(poll, 50); + return; + } + + return init("poll"); + }; + + if (doc.readyState !== "complete") { + if (doc.createEventObject && root.doScroll) { + try { + top = !win.frameElement; + } catch (error) {} + + if (top) { + poll(); + } + } + + doc[add](pre + "DOMContentLoaded", init, false); + doc[add](pre + "readystatechange", init, false); + return win[add](pre + "load", init, false); + } +}; // As a single function to be able to write tests. + + +Dropzone._autoDiscoverFunction = function () { + if (Dropzone.autoDiscover) { + return Dropzone.discover(); + } +}; + +contentLoaded(window, Dropzone._autoDiscoverFunction); + +function __guard__(value, transform) { + return typeof value !== "undefined" && value !== null ? transform(value) : undefined; +} + +function __guardMethod__(obj, methodName, transform) { + if (typeof obj !== "undefined" && obj !== null && typeof obj[methodName] === "function") { + return transform(obj, methodName); + } else { + return undefined; + } +} + + +;// CONCATENATED MODULE: ./tool/dropzone.dist.js + /// Make Dropzone a global variable. + +window.Dropzone = Dropzone; +/* harmony default export */ var dropzone_dist = (Dropzone); + +}(); +/******/ return __webpack_exports__; +/******/ })() +; +}); + +/***/ }), + +/***/ "./node_modules/highlight.js/lib/core.js": +/*!***********************************************!*\ + !*** ./node_modules/highlight.js/lib/core.js ***! + \***********************************************/ +/***/ ((module) => { + +function deepFreeze(obj) { + if (obj instanceof Map) { + obj.clear = obj.delete = obj.set = function () { + throw new Error('map is read-only'); + }; + } else if (obj instanceof Set) { + obj.add = obj.clear = obj.delete = function () { + throw new Error('set is read-only'); + }; + } + + // Freeze self + Object.freeze(obj); + + Object.getOwnPropertyNames(obj).forEach(function (name) { + var prop = obj[name]; + + // Freeze prop if it is an object + if (typeof prop == 'object' && !Object.isFrozen(prop)) { + deepFreeze(prop); + } + }); + + return obj; +} + +var deepFreezeEs6 = deepFreeze; +var _default = deepFreeze; +deepFreezeEs6.default = _default; + +/** @implements CallbackResponse */ +class Response { + /** + * @param {CompiledMode} mode + */ + constructor(mode) { + // eslint-disable-next-line no-undefined + if (mode.data === undefined) mode.data = {}; + + this.data = mode.data; + this.isMatchIgnored = false; + } + + ignoreMatch() { + this.isMatchIgnored = true; + } +} + +/** + * @param {string} value + * @returns {string} + */ +function escapeHTML(value) { + return value + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +/** + * performs a shallow merge of multiple objects into one + * + * @template T + * @param {T} original + * @param {Record[]} objects + * @returns {T} a single new object + */ +function inherit(original, ...objects) { + /** @type Record */ + const result = Object.create(null); + + for (const key in original) { + result[key] = original[key]; + } + objects.forEach(function(obj) { + for (const key in obj) { + result[key] = obj[key]; + } + }); + return /** @type {T} */ (result); +} + +/** + * @typedef {object} Renderer + * @property {(text: string) => void} addText + * @property {(node: Node) => void} openNode + * @property {(node: Node) => void} closeNode + * @property {() => string} value + */ + +/** @typedef {{kind?: string, sublanguage?: boolean}} Node */ +/** @typedef {{walk: (r: Renderer) => void}} Tree */ +/** */ + +const SPAN_CLOSE = ''; + +/** + * Determines if a node needs to be wrapped in + * + * @param {Node} node */ +const emitsWrappingTags = (node) => { + return !!node.kind; +}; + +/** @type {Renderer} */ +class HTMLRenderer { + /** + * Creates a new HTMLRenderer + * + * @param {Tree} parseTree - the parse tree (must support `walk` API) + * @param {{classPrefix: string}} options + */ + constructor(parseTree, options) { + this.buffer = ""; + this.classPrefix = options.classPrefix; + parseTree.walk(this); + } + + /** + * Adds texts to the output stream + * + * @param {string} text */ + addText(text) { + this.buffer += escapeHTML(text); + } + + /** + * Adds a node open to the output stream (if needed) + * + * @param {Node} node */ + openNode(node) { + if (!emitsWrappingTags(node)) return; + + let className = node.kind; + if (!node.sublanguage) { + className = `${this.classPrefix}${className}`; + } + this.span(className); + } + + /** + * Adds a node close to the output stream (if needed) + * + * @param {Node} node */ + closeNode(node) { + if (!emitsWrappingTags(node)) return; + + this.buffer += SPAN_CLOSE; + } + + /** + * returns the accumulated buffer + */ + value() { + return this.buffer; + } + + // helpers + + /** + * Builds a span element + * + * @param {string} className */ + span(className) { + this.buffer += ``; + } +} + +/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} | string} Node */ +/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} } DataNode */ +/** */ + +class TokenTree { + constructor() { + /** @type DataNode */ + this.rootNode = { children: [] }; + this.stack = [this.rootNode]; + } + + get top() { + return this.stack[this.stack.length - 1]; + } + + get root() { return this.rootNode; } + + /** @param {Node} node */ + add(node) { + this.top.children.push(node); + } + + /** @param {string} kind */ + openNode(kind) { + /** @type Node */ + const node = { kind, children: [] }; + this.add(node); + this.stack.push(node); + } + + closeNode() { + if (this.stack.length > 1) { + return this.stack.pop(); + } + // eslint-disable-next-line no-undefined + return undefined; + } + + closeAllNodes() { + while (this.closeNode()); + } + + toJSON() { + return JSON.stringify(this.rootNode, null, 4); + } + + /** + * @typedef { import("./html_renderer").Renderer } Renderer + * @param {Renderer} builder + */ + walk(builder) { + // this does not + return this.constructor._walk(builder, this.rootNode); + // this works + // return TokenTree._walk(builder, this.rootNode); + } + + /** + * @param {Renderer} builder + * @param {Node} node + */ + static _walk(builder, node) { + if (typeof node === "string") { + builder.addText(node); + } else if (node.children) { + builder.openNode(node); + node.children.forEach((child) => this._walk(builder, child)); + builder.closeNode(node); + } + return builder; + } + + /** + * @param {Node} node + */ + static _collapse(node) { + if (typeof node === "string") return; + if (!node.children) return; + + if (node.children.every(el => typeof el === "string")) { + // node.text = node.children.join(""); + // delete node.children; + node.children = [node.children.join("")]; + } else { + node.children.forEach((child) => { + TokenTree._collapse(child); + }); + } + } +} + +/** + Currently this is all private API, but this is the minimal API necessary + that an Emitter must implement to fully support the parser. + + Minimal interface: + + - addKeyword(text, kind) + - addText(text) + - addSublanguage(emitter, subLanguageName) + - finalize() + - openNode(kind) + - closeNode() + - closeAllNodes() + - toHTML() + +*/ + +/** + * @implements {Emitter} + */ +class TokenTreeEmitter extends TokenTree { + /** + * @param {*} options + */ + constructor(options) { + super(); + this.options = options; + } + + /** + * @param {string} text + * @param {string} kind + */ + addKeyword(text, kind) { + if (text === "") { return; } + + this.openNode(kind); + this.addText(text); + this.closeNode(); + } + + /** + * @param {string} text + */ + addText(text) { + if (text === "") { return; } + + this.add(text); + } + + /** + * @param {Emitter & {root: DataNode}} emitter + * @param {string} name + */ + addSublanguage(emitter, name) { + /** @type DataNode */ + const node = emitter.root; + node.kind = name; + node.sublanguage = true; + this.add(node); + } + + toHTML() { + const renderer = new HTMLRenderer(this, this.options); + return renderer.value(); + } + + finalize() { + return true; + } +} + +/** + * @param {string} value + * @returns {RegExp} + * */ +function escape(value) { + return new RegExp(value.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'm'); +} + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function source(re) { + if (!re) return null; + if (typeof re === "string") return re; + + return re.source; +} + +/** + * @param {...(RegExp | string) } args + * @returns {string} + */ +function concat(...args) { + const joined = args.map((x) => source(x)).join(""); + return joined; +} + +/** + * Any of the passed expresssions may match + * + * Creates a huge this | this | that | that match + * @param {(RegExp | string)[] } args + * @returns {string} + */ +function either(...args) { + const joined = '(' + args.map((x) => source(x)).join("|") + ")"; + return joined; +} + +/** + * @param {RegExp} re + * @returns {number} + */ +function countMatchGroups(re) { + return (new RegExp(re.toString() + '|')).exec('').length - 1; +} + +/** + * Does lexeme start with a regular expression match at the beginning + * @param {RegExp} re + * @param {string} lexeme + */ +function startsWith(re, lexeme) { + const match = re && re.exec(lexeme); + return match && match.index === 0; +} + +// BACKREF_RE matches an open parenthesis or backreference. To avoid +// an incorrect parse, it additionally matches the following: +// - [...] elements, where the meaning of parentheses and escapes change +// - other escape sequences, so we do not misparse escape sequences as +// interesting elements +// - non-matching or lookahead parentheses, which do not capture. These +// follow the '(' with a '?'. +const BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; + +// join logically computes regexps.join(separator), but fixes the +// backreferences so they continue to match. +// it also places each individual regular expression into it's own +// match group, keeping track of the sequencing of those match groups +// is currently an exercise for the caller. :-) +/** + * @param {(string | RegExp)[]} regexps + * @param {string} separator + * @returns {string} + */ +function join(regexps, separator = "|") { + let numCaptures = 0; + + return regexps.map((regex) => { + numCaptures += 1; + const offset = numCaptures; + let re = source(regex); + let out = ''; + + while (re.length > 0) { + const match = BACKREF_RE.exec(re); + if (!match) { + out += re; + break; + } + out += re.substring(0, match.index); + re = re.substring(match.index + match[0].length); + if (match[0][0] === '\\' && match[1]) { + // Adjust the backreference. + out += '\\' + String(Number(match[1]) + offset); + } else { + out += match[0]; + if (match[0] === '(') { + numCaptures++; + } + } + } + return out; + }).map(re => `(${re})`).join(separator); +} + +// Common regexps +const MATCH_NOTHING_RE = /\b\B/; +const IDENT_RE = '[a-zA-Z]\\w*'; +const UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*'; +const NUMBER_RE = '\\b\\d+(\\.\\d+)?'; +const C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float +const BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b... +const RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~'; + +/** +* @param { Partial & {binary?: string | RegExp} } opts +*/ +const SHEBANG = (opts = {}) => { + const beginShebang = /^#![ ]*\//; + if (opts.binary) { + opts.begin = concat( + beginShebang, + /.*\b/, + opts.binary, + /\b.*/); + } + return inherit({ + className: 'meta', + begin: beginShebang, + end: /$/, + relevance: 0, + /** @type {ModeCallback} */ + "on:begin": (m, resp) => { + if (m.index !== 0) resp.ignoreMatch(); + } + }, opts); +}; + +// Common modes +const BACKSLASH_ESCAPE = { + begin: '\\\\[\\s\\S]', relevance: 0 +}; +const APOS_STRING_MODE = { + className: 'string', + begin: '\'', + end: '\'', + illegal: '\\n', + contains: [BACKSLASH_ESCAPE] +}; +const QUOTE_STRING_MODE = { + className: 'string', + begin: '"', + end: '"', + illegal: '\\n', + contains: [BACKSLASH_ESCAPE] +}; +const PHRASAL_WORDS_MODE = { + begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +}; +/** + * Creates a comment mode + * + * @param {string | RegExp} begin + * @param {string | RegExp} end + * @param {Mode | {}} [modeOptions] + * @returns {Partial} + */ +const COMMENT = function(begin, end, modeOptions = {}) { + const mode = inherit( + { + className: 'comment', + begin, + end, + contains: [] + }, + modeOptions + ); + mode.contains.push(PHRASAL_WORDS_MODE); + mode.contains.push({ + className: 'doctag', + begin: '(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):', + relevance: 0 + }); + return mode; +}; +const C_LINE_COMMENT_MODE = COMMENT('//', '$'); +const C_BLOCK_COMMENT_MODE = COMMENT('/\\*', '\\*/'); +const HASH_COMMENT_MODE = COMMENT('#', '$'); +const NUMBER_MODE = { + className: 'number', + begin: NUMBER_RE, + relevance: 0 +}; +const C_NUMBER_MODE = { + className: 'number', + begin: C_NUMBER_RE, + relevance: 0 +}; +const BINARY_NUMBER_MODE = { + className: 'number', + begin: BINARY_NUMBER_RE, + relevance: 0 +}; +const CSS_NUMBER_MODE = { + className: 'number', + begin: NUMBER_RE + '(' + + '%|em|ex|ch|rem' + + '|vw|vh|vmin|vmax' + + '|cm|mm|in|pt|pc|px' + + '|deg|grad|rad|turn' + + '|s|ms' + + '|Hz|kHz' + + '|dpi|dpcm|dppx' + + ')?', + relevance: 0 +}; +const REGEXP_MODE = { + // this outer rule makes sure we actually have a WHOLE regex and not simply + // an expression such as: + // + // 3 / something + // + // (which will then blow up when regex's `illegal` sees the newline) + begin: /(?=\/[^/\n]*\/)/, + contains: [{ + className: 'regexp', + begin: /\//, + end: /\/[gimuy]*/, + illegal: /\n/, + contains: [ + BACKSLASH_ESCAPE, + { + begin: /\[/, + end: /\]/, + relevance: 0, + contains: [BACKSLASH_ESCAPE] + } + ] + }] +}; +const TITLE_MODE = { + className: 'title', + begin: IDENT_RE, + relevance: 0 +}; +const UNDERSCORE_TITLE_MODE = { + className: 'title', + begin: UNDERSCORE_IDENT_RE, + relevance: 0 +}; +const METHOD_GUARD = { + // excludes method names from keyword processing + begin: '\\.\\s*' + UNDERSCORE_IDENT_RE, + relevance: 0 +}; + +/** + * Adds end same as begin mechanics to a mode + * + * Your mode must include at least a single () match group as that first match + * group is what is used for comparison + * @param {Partial} mode + */ +const END_SAME_AS_BEGIN = function(mode) { + return Object.assign(mode, + { + /** @type {ModeCallback} */ + 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; }, + /** @type {ModeCallback} */ + 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); } + }); +}; + +var MODES = /*#__PURE__*/Object.freeze({ + __proto__: null, + MATCH_NOTHING_RE: MATCH_NOTHING_RE, + IDENT_RE: IDENT_RE, + UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE, + NUMBER_RE: NUMBER_RE, + C_NUMBER_RE: C_NUMBER_RE, + BINARY_NUMBER_RE: BINARY_NUMBER_RE, + RE_STARTERS_RE: RE_STARTERS_RE, + SHEBANG: SHEBANG, + BACKSLASH_ESCAPE: BACKSLASH_ESCAPE, + APOS_STRING_MODE: APOS_STRING_MODE, + QUOTE_STRING_MODE: QUOTE_STRING_MODE, + PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE, + COMMENT: COMMENT, + C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE, + C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE, + HASH_COMMENT_MODE: HASH_COMMENT_MODE, + NUMBER_MODE: NUMBER_MODE, + C_NUMBER_MODE: C_NUMBER_MODE, + BINARY_NUMBER_MODE: BINARY_NUMBER_MODE, + CSS_NUMBER_MODE: CSS_NUMBER_MODE, + REGEXP_MODE: REGEXP_MODE, + TITLE_MODE: TITLE_MODE, + UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE, + METHOD_GUARD: METHOD_GUARD, + END_SAME_AS_BEGIN: END_SAME_AS_BEGIN +}); + +// Grammar extensions / plugins +// See: https://github.com/highlightjs/highlight.js/issues/2833 + +// Grammar extensions allow "syntactic sugar" to be added to the grammar modes +// without requiring any underlying changes to the compiler internals. + +// `compileMatch` being the perfect small example of now allowing a grammar +// author to write `match` when they desire to match a single expression rather +// than being forced to use `begin`. The extension then just moves `match` into +// `begin` when it runs. Ie, no features have been added, but we've just made +// the experience of writing (and reading grammars) a little bit nicer. + +// ------ + +// TODO: We need negative look-behind support to do this properly +/** + * Skip a match if it has a preceding dot + * + * This is used for `beginKeywords` to prevent matching expressions such as + * `bob.keyword.do()`. The mode compiler automatically wires this up as a + * special _internal_ 'on:begin' callback for modes with `beginKeywords` + * @param {RegExpMatchArray} match + * @param {CallbackResponse} response + */ +function skipIfhasPrecedingDot(match, response) { + const before = match.input[match.index - 1]; + if (before === ".") { + response.ignoreMatch(); + } +} + + +/** + * `beginKeywords` syntactic sugar + * @type {CompilerExt} + */ +function beginKeywords(mode, parent) { + if (!parent) return; + if (!mode.beginKeywords) return; + + // for languages with keywords that include non-word characters checking for + // a word boundary is not sufficient, so instead we check for a word boundary + // or whitespace - this does no harm in any case since our keyword engine + // doesn't allow spaces in keywords anyways and we still check for the boundary + // first + mode.begin = '\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\.)(?=\\b|\\s)'; + mode.__beforeBegin = skipIfhasPrecedingDot; + mode.keywords = mode.keywords || mode.beginKeywords; + delete mode.beginKeywords; + + // prevents double relevance, the keywords themselves provide + // relevance, the mode doesn't need to double it + // eslint-disable-next-line no-undefined + if (mode.relevance === undefined) mode.relevance = 0; +} + +/** + * Allow `illegal` to contain an array of illegal values + * @type {CompilerExt} + */ +function compileIllegal(mode, _parent) { + if (!Array.isArray(mode.illegal)) return; + + mode.illegal = either(...mode.illegal); +} + +/** + * `match` to match a single expression for readability + * @type {CompilerExt} + */ +function compileMatch(mode, _parent) { + if (!mode.match) return; + if (mode.begin || mode.end) throw new Error("begin & end are not supported with match"); + + mode.begin = mode.match; + delete mode.match; +} + +/** + * provides the default 1 relevance to all modes + * @type {CompilerExt} + */ +function compileRelevance(mode, _parent) { + // eslint-disable-next-line no-undefined + if (mode.relevance === undefined) mode.relevance = 1; +} + +// keywords that should have no default relevance value +const COMMON_KEYWORDS = [ + 'of', + 'and', + 'for', + 'in', + 'not', + 'or', + 'if', + 'then', + 'parent', // common variable name + 'list', // common variable name + 'value' // common variable name +]; + +const DEFAULT_KEYWORD_CLASSNAME = "keyword"; + +/** + * Given raw keywords from a language definition, compile them. + * + * @param {string | Record | Array} rawKeywords + * @param {boolean} caseInsensitive + */ +function compileKeywords(rawKeywords, caseInsensitive, className = DEFAULT_KEYWORD_CLASSNAME) { + /** @type KeywordDict */ + const compiledKeywords = {}; + + // input can be a string of keywords, an array of keywords, or a object with + // named keys representing className (which can then point to a string or array) + if (typeof rawKeywords === 'string') { + compileList(className, rawKeywords.split(" ")); + } else if (Array.isArray(rawKeywords)) { + compileList(className, rawKeywords); + } else { + Object.keys(rawKeywords).forEach(function(className) { + // collapse all our objects back into the parent object + Object.assign( + compiledKeywords, + compileKeywords(rawKeywords[className], caseInsensitive, className) + ); + }); + } + return compiledKeywords; + + // --- + + /** + * Compiles an individual list of keywords + * + * Ex: "for if when while|5" + * + * @param {string} className + * @param {Array} keywordList + */ + function compileList(className, keywordList) { + if (caseInsensitive) { + keywordList = keywordList.map(x => x.toLowerCase()); + } + keywordList.forEach(function(keyword) { + const pair = keyword.split('|'); + compiledKeywords[pair[0]] = [className, scoreForKeyword(pair[0], pair[1])]; + }); + } +} + +/** + * Returns the proper score for a given keyword + * + * Also takes into account comment keywords, which will be scored 0 UNLESS + * another score has been manually assigned. + * @param {string} keyword + * @param {string} [providedScore] + */ +function scoreForKeyword(keyword, providedScore) { + // manual scores always win over common keywords + // so you can force a score of 1 if you really insist + if (providedScore) { + return Number(providedScore); + } + + return commonKeyword(keyword) ? 0 : 1; +} + +/** + * Determines if a given keyword is common or not + * + * @param {string} keyword */ +function commonKeyword(keyword) { + return COMMON_KEYWORDS.includes(keyword.toLowerCase()); +} + +// compilation + +/** + * Compiles a language definition result + * + * Given the raw result of a language definition (Language), compiles this so + * that it is ready for highlighting code. + * @param {Language} language + * @param {{plugins: HLJSPlugin[]}} opts + * @returns {CompiledLanguage} + */ +function compileLanguage(language, { plugins }) { + /** + * Builds a regex with the case sensativility of the current language + * + * @param {RegExp | string} value + * @param {boolean} [global] + */ + function langRe(value, global) { + return new RegExp( + source(value), + 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') + ); + } + + /** + Stores multiple regular expressions and allows you to quickly search for + them all in a string simultaneously - returning the first match. It does + this by creating a huge (a|b|c) regex - each individual item wrapped with () + and joined by `|` - using match groups to track position. When a match is + found checking which position in the array has content allows us to figure + out which of the original regexes / match groups triggered the match. + + The match object itself (the result of `Regex.exec`) is returned but also + enhanced by merging in any meta-data that was registered with the regex. + This is how we keep track of which mode matched, and what type of rule + (`illegal`, `begin`, end, etc). + */ + class MultiRegex { + constructor() { + this.matchIndexes = {}; + // @ts-ignore + this.regexes = []; + this.matchAt = 1; + this.position = 0; + } + + // @ts-ignore + addRule(re, opts) { + opts.position = this.position++; + // @ts-ignore + this.matchIndexes[this.matchAt] = opts; + this.regexes.push([opts, re]); + this.matchAt += countMatchGroups(re) + 1; + } + + compile() { + if (this.regexes.length === 0) { + // avoids the need to check length every time exec is called + // @ts-ignore + this.exec = () => null; + } + const terminators = this.regexes.map(el => el[1]); + this.matcherRe = langRe(join(terminators), true); + this.lastIndex = 0; + } + + /** @param {string} s */ + exec(s) { + this.matcherRe.lastIndex = this.lastIndex; + const match = this.matcherRe.exec(s); + if (!match) { return null; } + + // eslint-disable-next-line no-undefined + const i = match.findIndex((el, i) => i > 0 && el !== undefined); + // @ts-ignore + const matchData = this.matchIndexes[i]; + // trim off any earlier non-relevant match groups (ie, the other regex + // match groups that make up the multi-matcher) + match.splice(0, i); + + return Object.assign(match, matchData); + } + } + + /* + Created to solve the key deficiently with MultiRegex - there is no way to + test for multiple matches at a single location. Why would we need to do + that? In the future a more dynamic engine will allow certain matches to be + ignored. An example: if we matched say the 3rd regex in a large group but + decided to ignore it - we'd need to started testing again at the 4th + regex... but MultiRegex itself gives us no real way to do that. + + So what this class creates MultiRegexs on the fly for whatever search + position they are needed. + + NOTE: These additional MultiRegex objects are created dynamically. For most + grammars most of the time we will never actually need anything more than the + first MultiRegex - so this shouldn't have too much overhead. + + Say this is our search group, and we match regex3, but wish to ignore it. + + regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0 + + What we need is a new MultiRegex that only includes the remaining + possibilities: + + regex4 | regex5 ' ie, startAt = 3 + + This class wraps all that complexity up in a simple API... `startAt` decides + where in the array of expressions to start doing the matching. It + auto-increments, so if a match is found at position 2, then startAt will be + set to 3. If the end is reached startAt will return to 0. + + MOST of the time the parser will be setting startAt manually to 0. + */ + class ResumableMultiRegex { + constructor() { + // @ts-ignore + this.rules = []; + // @ts-ignore + this.multiRegexes = []; + this.count = 0; + + this.lastIndex = 0; + this.regexIndex = 0; + } + + // @ts-ignore + getMatcher(index) { + if (this.multiRegexes[index]) return this.multiRegexes[index]; + + const matcher = new MultiRegex(); + this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts)); + matcher.compile(); + this.multiRegexes[index] = matcher; + return matcher; + } + + resumingScanAtSamePosition() { + return this.regexIndex !== 0; + } + + considerAll() { + this.regexIndex = 0; + } + + // @ts-ignore + addRule(re, opts) { + this.rules.push([re, opts]); + if (opts.type === "begin") this.count++; + } + + /** @param {string} s */ + exec(s) { + const m = this.getMatcher(this.regexIndex); + m.lastIndex = this.lastIndex; + let result = m.exec(s); + + // The following is because we have no easy way to say "resume scanning at the + // existing position but also skip the current rule ONLY". What happens is + // all prior rules are also skipped which can result in matching the wrong + // thing. Example of matching "booger": + + // our matcher is [string, "booger", number] + // + // ....booger.... + + // if "booger" is ignored then we'd really need a regex to scan from the + // SAME position for only: [string, number] but ignoring "booger" (if it + // was the first match), a simple resume would scan ahead who knows how + // far looking only for "number", ignoring potential string matches (or + // future "booger" matches that might be valid.) + + // So what we do: We execute two matchers, one resuming at the same + // position, but the second full matcher starting at the position after: + + // /--- resume first regex match here (for [number]) + // |/---- full match here for [string, "booger", number] + // vv + // ....booger.... + + // Which ever results in a match first is then used. So this 3-4 step + // process essentially allows us to say "match at this position, excluding + // a prior rule that was ignored". + // + // 1. Match "booger" first, ignore. Also proves that [string] does non match. + // 2. Resume matching for [number] + // 3. Match at index + 1 for [string, "booger", number] + // 4. If #2 and #3 result in matches, which came first? + if (this.resumingScanAtSamePosition()) { + if (result && result.index === this.lastIndex) ; else { // use the second matcher result + const m2 = this.getMatcher(0); + m2.lastIndex = this.lastIndex + 1; + result = m2.exec(s); + } + } + + if (result) { + this.regexIndex += result.position + 1; + if (this.regexIndex === this.count) { + // wrap-around to considering all matches again + this.considerAll(); + } + } + + return result; + } + } + + /** + * Given a mode, builds a huge ResumableMultiRegex that can be used to walk + * the content and find matches. + * + * @param {CompiledMode} mode + * @returns {ResumableMultiRegex} + */ + function buildModeRegex(mode) { + const mm = new ResumableMultiRegex(); + + mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: "begin" })); + + if (mode.terminatorEnd) { + mm.addRule(mode.terminatorEnd, { type: "end" }); + } + if (mode.illegal) { + mm.addRule(mode.illegal, { type: "illegal" }); + } + + return mm; + } + + /** skip vs abort vs ignore + * + * @skip - The mode is still entered and exited normally (and contains rules apply), + * but all content is held and added to the parent buffer rather than being + * output when the mode ends. Mostly used with `sublanguage` to build up + * a single large buffer than can be parsed by sublanguage. + * + * - The mode begin ands ends normally. + * - Content matched is added to the parent mode buffer. + * - The parser cursor is moved forward normally. + * + * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it + * never matched) but DOES NOT continue to match subsequent `contains` + * modes. Abort is bad/suboptimal because it can result in modes + * farther down not getting applied because an earlier rule eats the + * content but then aborts. + * + * - The mode does not begin. + * - Content matched by `begin` is added to the mode buffer. + * - The parser cursor is moved forward accordingly. + * + * @ignore - Ignores the mode (as if it never matched) and continues to match any + * subsequent `contains` modes. Ignore isn't technically possible with + * the current parser implementation. + * + * - The mode does not begin. + * - Content matched by `begin` is ignored. + * - The parser cursor is not moved forward. + */ + + /** + * Compiles an individual mode + * + * This can raise an error if the mode contains certain detectable known logic + * issues. + * @param {Mode} mode + * @param {CompiledMode | null} [parent] + * @returns {CompiledMode | never} + */ + function compileMode(mode, parent) { + const cmode = /** @type CompiledMode */ (mode); + if (mode.isCompiled) return cmode; + + [ + // do this early so compiler extensions generally don't have to worry about + // the distinction between match/begin + compileMatch + ].forEach(ext => ext(mode, parent)); + + language.compilerExtensions.forEach(ext => ext(mode, parent)); + + // __beforeBegin is considered private API, internal use only + mode.__beforeBegin = null; + + [ + beginKeywords, + // do this later so compiler extensions that come earlier have access to the + // raw array if they wanted to perhaps manipulate it, etc. + compileIllegal, + // default to 1 relevance if not specified + compileRelevance + ].forEach(ext => ext(mode, parent)); + + mode.isCompiled = true; + + let keywordPattern = null; + if (typeof mode.keywords === "object") { + keywordPattern = mode.keywords.$pattern; + delete mode.keywords.$pattern; + } + + if (mode.keywords) { + mode.keywords = compileKeywords(mode.keywords, language.case_insensitive); + } + + // both are not allowed + if (mode.lexemes && keywordPattern) { + throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) "); + } + + // `mode.lexemes` was the old standard before we added and now recommend + // using `keywords.$pattern` to pass the keyword pattern + keywordPattern = keywordPattern || mode.lexemes || /\w+/; + cmode.keywordPatternRe = langRe(keywordPattern, true); + + if (parent) { + if (!mode.begin) mode.begin = /\B|\b/; + cmode.beginRe = langRe(mode.begin); + if (mode.endSameAsBegin) mode.end = mode.begin; + if (!mode.end && !mode.endsWithParent) mode.end = /\B|\b/; + if (mode.end) cmode.endRe = langRe(mode.end); + cmode.terminatorEnd = source(mode.end) || ''; + if (mode.endsWithParent && parent.terminatorEnd) { + cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd; + } + } + if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal)); + if (!mode.contains) mode.contains = []; + + mode.contains = [].concat(...mode.contains.map(function(c) { + return expandOrCloneMode(c === 'self' ? mode : c); + })); + mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); }); + + if (mode.starts) { + compileMode(mode.starts, parent); + } + + cmode.matcher = buildModeRegex(cmode); + return cmode; + } + + if (!language.compilerExtensions) language.compilerExtensions = []; + + // self is not valid at the top-level + if (language.contains && language.contains.includes('self')) { + throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation."); + } + + // we need a null object, which inherit will guarantee + language.classNameAliases = inherit(language.classNameAliases || {}); + + return compileMode(/** @type Mode */ (language)); +} + +/** + * Determines if a mode has a dependency on it's parent or not + * + * If a mode does have a parent dependency then often we need to clone it if + * it's used in multiple places so that each copy points to the correct parent, + * where-as modes without a parent can often safely be re-used at the bottom of + * a mode chain. + * + * @param {Mode | null} mode + * @returns {boolean} - is there a dependency on the parent? + * */ +function dependencyOnParent(mode) { + if (!mode) return false; + + return mode.endsWithParent || dependencyOnParent(mode.starts); +} + +/** + * Expands a mode or clones it if necessary + * + * This is necessary for modes with parental dependenceis (see notes on + * `dependencyOnParent`) and for nodes that have `variants` - which must then be + * exploded into their own individual modes at compile time. + * + * @param {Mode} mode + * @returns {Mode | Mode[]} + * */ +function expandOrCloneMode(mode) { + if (mode.variants && !mode.cachedVariants) { + mode.cachedVariants = mode.variants.map(function(variant) { + return inherit(mode, { variants: null }, variant); + }); + } + + // EXPAND + // if we have variants then essentially "replace" the mode with the variants + // this happens in compileMode, where this function is called from + if (mode.cachedVariants) { + return mode.cachedVariants; + } + + // CLONE + // if we have dependencies on parents then we need a unique + // instance of ourselves, so we can be reused with many + // different parents without issue + if (dependencyOnParent(mode)) { + return inherit(mode, { starts: mode.starts ? inherit(mode.starts) : null }); + } + + if (Object.isFrozen(mode)) { + return inherit(mode); + } + + // no special dependency issues, just return ourselves + return mode; +} + +var version = "10.7.3"; + +// @ts-nocheck + +function hasValueOrEmptyAttribute(value) { + return Boolean(value || value === ""); +} + +function BuildVuePlugin(hljs) { + const Component = { + props: ["language", "code", "autodetect"], + data: function() { + return { + detectedLanguage: "", + unknownLanguage: false + }; + }, + computed: { + className() { + if (this.unknownLanguage) return ""; + + return "hljs " + this.detectedLanguage; + }, + highlighted() { + // no idea what language to use, return raw code + if (!this.autoDetect && !hljs.getLanguage(this.language)) { + console.warn(`The language "${this.language}" you specified could not be found.`); + this.unknownLanguage = true; + return escapeHTML(this.code); + } + + let result = {}; + if (this.autoDetect) { + result = hljs.highlightAuto(this.code); + this.detectedLanguage = result.language; + } else { + result = hljs.highlight(this.language, this.code, this.ignoreIllegals); + this.detectedLanguage = this.language; + } + return result.value; + }, + autoDetect() { + return !this.language || hasValueOrEmptyAttribute(this.autodetect); + }, + ignoreIllegals() { + return true; + } + }, + // this avoids needing to use a whole Vue compilation pipeline just + // to build Highlight.js + render(createElement) { + return createElement("pre", {}, [ + createElement("code", { + class: this.className, + domProps: { innerHTML: this.highlighted } + }) + ]); + } + // template: `
` + }; + + const VuePlugin = { + install(Vue) { + Vue.component('highlightjs', Component); + } + }; + + return { Component, VuePlugin }; +} + +/* plugin itself */ + +/** @type {HLJSPlugin} */ +const mergeHTMLPlugin = { + "after:highlightElement": ({ el, result, text }) => { + const originalStream = nodeStream(el); + if (!originalStream.length) return; + + const resultNode = document.createElement('div'); + resultNode.innerHTML = result.value; + result.value = mergeStreams(originalStream, nodeStream(resultNode), text); + } +}; + +/* Stream merging support functions */ + +/** + * @typedef Event + * @property {'start'|'stop'} event + * @property {number} offset + * @property {Node} node + */ + +/** + * @param {Node} node + */ +function tag(node) { + return node.nodeName.toLowerCase(); +} + +/** + * @param {Node} node + */ +function nodeStream(node) { + /** @type Event[] */ + const result = []; + (function _nodeStream(node, offset) { + for (let child = node.firstChild; child; child = child.nextSibling) { + if (child.nodeType === 3) { + offset += child.nodeValue.length; + } else if (child.nodeType === 1) { + result.push({ + event: 'start', + offset: offset, + node: child + }); + offset = _nodeStream(child, offset); + // Prevent void elements from having an end tag that would actually + // double them in the output. There are more void elements in HTML + // but we list only those realistically expected in code display. + if (!tag(child).match(/br|hr|img|input/)) { + result.push({ + event: 'stop', + offset: offset, + node: child + }); + } + } + } + return offset; + })(node, 0); + return result; +} + +/** + * @param {any} original - the original stream + * @param {any} highlighted - stream of the highlighted source + * @param {string} value - the original source itself + */ +function mergeStreams(original, highlighted, value) { + let processed = 0; + let result = ''; + const nodeStack = []; + + function selectStream() { + if (!original.length || !highlighted.length) { + return original.length ? original : highlighted; + } + if (original[0].offset !== highlighted[0].offset) { + return (original[0].offset < highlighted[0].offset) ? original : highlighted; + } + + /* + To avoid starting the stream just before it should stop the order is + ensured that original always starts first and closes last: + + if (event1 == 'start' && event2 == 'start') + return original; + if (event1 == 'start' && event2 == 'stop') + return highlighted; + if (event1 == 'stop' && event2 == 'start') + return original; + if (event1 == 'stop' && event2 == 'stop') + return highlighted; + + ... which is collapsed to: + */ + return highlighted[0].event === 'start' ? original : highlighted; + } + + /** + * @param {Node} node + */ + function open(node) { + /** @param {Attr} attr */ + function attributeString(attr) { + return ' ' + attr.nodeName + '="' + escapeHTML(attr.value) + '"'; + } + // @ts-ignore + result += '<' + tag(node) + [].map.call(node.attributes, attributeString).join('') + '>'; + } + + /** + * @param {Node} node + */ + function close(node) { + result += ''; + } + + /** + * @param {Event} event + */ + function render(event) { + (event.event === 'start' ? open : close)(event.node); + } + + while (original.length || highlighted.length) { + let stream = selectStream(); + result += escapeHTML(value.substring(processed, stream[0].offset)); + processed = stream[0].offset; + if (stream === original) { + /* + On any opening or closing tag of the original markup we first close + the entire highlighted node stack, then render the original tag along + with all the following original tags at the same offset and then + reopen all the tags on the highlighted stack. + */ + nodeStack.reverse().forEach(close); + do { + render(stream.splice(0, 1)[0]); + stream = selectStream(); + } while (stream === original && stream.length && stream[0].offset === processed); + nodeStack.reverse().forEach(open); + } else { + if (stream[0].event === 'start') { + nodeStack.push(stream[0].node); + } else { + nodeStack.pop(); + } + render(stream.splice(0, 1)[0]); + } + } + return result + escapeHTML(value.substr(processed)); +} + +/* + +For the reasoning behind this please see: +https://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419 + +*/ + +/** + * @type {Record} + */ +const seenDeprecations = {}; + +/** + * @param {string} message + */ +const error = (message) => { + console.error(message); +}; + +/** + * @param {string} message + * @param {any} args + */ +const warn = (message, ...args) => { + console.log(`WARN: ${message}`, ...args); +}; + +/** + * @param {string} version + * @param {string} message + */ +const deprecated = (version, message) => { + if (seenDeprecations[`${version}/${message}`]) return; + + console.log(`Deprecated as of ${version}. ${message}`); + seenDeprecations[`${version}/${message}`] = true; +}; + +/* +Syntax highlighting with language autodetection. +https://highlightjs.org/ +*/ + +const escape$1 = escapeHTML; +const inherit$1 = inherit; +const NO_MATCH = Symbol("nomatch"); + +/** + * @param {any} hljs - object that is extended (legacy) + * @returns {HLJSApi} + */ +const HLJS = function(hljs) { + // Global internal variables used within the highlight.js library. + /** @type {Record} */ + const languages = Object.create(null); + /** @type {Record} */ + const aliases = Object.create(null); + /** @type {HLJSPlugin[]} */ + const plugins = []; + + // safe/production mode - swallows more errors, tries to keep running + // even if a single syntax or parse hits a fatal error + let SAFE_MODE = true; + const fixMarkupRe = /(^(<[^>]+>|\t|)+|\n)/gm; + const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?"; + /** @type {Language} */ + const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] }; + + // Global options used when within external APIs. This is modified when + // calling the `hljs.configure` function. + /** @type HLJSOptions */ + let options = { + noHighlightRe: /^(no-?highlight)$/i, + languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i, + classPrefix: 'hljs-', + tabReplace: null, + useBR: false, + languages: null, + // beta configuration options, subject to change, welcome to discuss + // https://github.com/highlightjs/highlight.js/issues/1086 + __emitter: TokenTreeEmitter + }; + + /* Utility functions */ + + /** + * Tests a language name to see if highlighting should be skipped + * @param {string} languageName + */ + function shouldNotHighlight(languageName) { + return options.noHighlightRe.test(languageName); + } + + /** + * @param {HighlightedHTMLElement} block - the HTML element to determine language for + */ + function blockLanguage(block) { + let classes = block.className + ' '; + + classes += block.parentNode ? block.parentNode.className : ''; + + // language-* takes precedence over non-prefixed class names. + const match = options.languageDetectRe.exec(classes); + if (match) { + const language = getLanguage(match[1]); + if (!language) { + warn(LANGUAGE_NOT_FOUND.replace("{}", match[1])); + warn("Falling back to no-highlight mode for this block.", block); + } + return language ? match[1] : 'no-highlight'; + } + + return classes + .split(/\s+/) + .find((_class) => shouldNotHighlight(_class) || getLanguage(_class)); + } + + /** + * Core highlighting function. + * + * OLD API + * highlight(lang, code, ignoreIllegals, continuation) + * + * NEW API + * highlight(code, {lang, ignoreIllegals}) + * + * @param {string} codeOrlanguageName - the language to use for highlighting + * @param {string | HighlightOptions} optionsOrCode - the code to highlight + * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail + * @param {CompiledMode} [continuation] - current continuation mode, if any + * + * @returns {HighlightResult} Result - an object that represents the result + * @property {string} language - the language name + * @property {number} relevance - the relevance score + * @property {string} value - the highlighted HTML code + * @property {string} code - the original raw code + * @property {CompiledMode} top - top of the current mode stack + * @property {boolean} illegal - indicates whether any illegal matches were found + */ + function highlight(codeOrlanguageName, optionsOrCode, ignoreIllegals, continuation) { + let code = ""; + let languageName = ""; + if (typeof optionsOrCode === "object") { + code = codeOrlanguageName; + ignoreIllegals = optionsOrCode.ignoreIllegals; + languageName = optionsOrCode.language; + // continuation not supported at all via the new API + // eslint-disable-next-line no-undefined + continuation = undefined; + } else { + // old API + deprecated("10.7.0", "highlight(lang, code, ...args) has been deprecated."); + deprecated("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"); + languageName = codeOrlanguageName; + code = optionsOrCode; + } + + /** @type {BeforeHighlightContext} */ + const context = { + code, + language: languageName + }; + // the plugin can change the desired language or the code to be highlighted + // just be changing the object it was passed + fire("before:highlight", context); + + // a before plugin can usurp the result completely by providing it's own + // in which case we don't even need to call highlight + const result = context.result + ? context.result + : _highlight(context.language, context.code, ignoreIllegals, continuation); + + result.code = context.code; + // the plugin can change anything in result to suite it + fire("after:highlight", result); + + return result; + } + + /** + * private highlight that's used internally and does not fire callbacks + * + * @param {string} languageName - the language to use for highlighting + * @param {string} codeToHighlight - the code to highlight + * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail + * @param {CompiledMode?} [continuation] - current continuation mode, if any + * @returns {HighlightResult} - result of the highlight operation + */ + function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) { + /** + * Return keyword data if a match is a keyword + * @param {CompiledMode} mode - current mode + * @param {RegExpMatchArray} match - regexp match data + * @returns {KeywordData | false} + */ + function keywordData(mode, match) { + const matchText = language.case_insensitive ? match[0].toLowerCase() : match[0]; + return Object.prototype.hasOwnProperty.call(mode.keywords, matchText) && mode.keywords[matchText]; + } + + function processKeywords() { + if (!top.keywords) { + emitter.addText(modeBuffer); + return; + } + + let lastIndex = 0; + top.keywordPatternRe.lastIndex = 0; + let match = top.keywordPatternRe.exec(modeBuffer); + let buf = ""; + + while (match) { + buf += modeBuffer.substring(lastIndex, match.index); + const data = keywordData(top, match); + if (data) { + const [kind, keywordRelevance] = data; + emitter.addText(buf); + buf = ""; + + relevance += keywordRelevance; + if (kind.startsWith("_")) { + // _ implied for relevance only, do not highlight + // by applying a class name + buf += match[0]; + } else { + const cssClass = language.classNameAliases[kind] || kind; + emitter.addKeyword(match[0], cssClass); + } + } else { + buf += match[0]; + } + lastIndex = top.keywordPatternRe.lastIndex; + match = top.keywordPatternRe.exec(modeBuffer); + } + buf += modeBuffer.substr(lastIndex); + emitter.addText(buf); + } + + function processSubLanguage() { + if (modeBuffer === "") return; + /** @type HighlightResult */ + let result = null; + + if (typeof top.subLanguage === 'string') { + if (!languages[top.subLanguage]) { + emitter.addText(modeBuffer); + return; + } + result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]); + continuations[top.subLanguage] = /** @type {CompiledMode} */ (result.top); + } else { + result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null); + } + + // Counting embedded language score towards the host language may be disabled + // with zeroing the containing mode relevance. Use case in point is Markdown that + // allows XML everywhere and makes every XML snippet to have a much larger Markdown + // score. + if (top.relevance > 0) { + relevance += result.relevance; + } + emitter.addSublanguage(result.emitter, result.language); + } + + function processBuffer() { + if (top.subLanguage != null) { + processSubLanguage(); + } else { + processKeywords(); + } + modeBuffer = ''; + } + + /** + * @param {Mode} mode - new mode to start + */ + function startNewMode(mode) { + if (mode.className) { + emitter.openNode(language.classNameAliases[mode.className] || mode.className); + } + top = Object.create(mode, { parent: { value: top } }); + return top; + } + + /** + * @param {CompiledMode } mode - the mode to potentially end + * @param {RegExpMatchArray} match - the latest match + * @param {string} matchPlusRemainder - match plus remainder of content + * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode + */ + function endOfMode(mode, match, matchPlusRemainder) { + let matched = startsWith(mode.endRe, matchPlusRemainder); + + if (matched) { + if (mode["on:end"]) { + const resp = new Response(mode); + mode["on:end"](match, resp); + if (resp.isMatchIgnored) matched = false; + } + + if (matched) { + while (mode.endsParent && mode.parent) { + mode = mode.parent; + } + return mode; + } + } + // even if on:end fires an `ignore` it's still possible + // that we might trigger the end node because of a parent mode + if (mode.endsWithParent) { + return endOfMode(mode.parent, match, matchPlusRemainder); + } + } + + /** + * Handle matching but then ignoring a sequence of text + * + * @param {string} lexeme - string containing full match text + */ + function doIgnore(lexeme) { + if (top.matcher.regexIndex === 0) { + // no more regexs to potentially match here, so we move the cursor forward one + // space + modeBuffer += lexeme[0]; + return 1; + } else { + // no need to move the cursor, we still have additional regexes to try and + // match at this very spot + resumeScanAtSamePosition = true; + return 0; + } + } + + /** + * Handle the start of a new potential mode match + * + * @param {EnhancedMatch} match - the current match + * @returns {number} how far to advance the parse cursor + */ + function doBeginMatch(match) { + const lexeme = match[0]; + const newMode = match.rule; + + const resp = new Response(newMode); + // first internal before callbacks, then the public ones + const beforeCallbacks = [newMode.__beforeBegin, newMode["on:begin"]]; + for (const cb of beforeCallbacks) { + if (!cb) continue; + cb(match, resp); + if (resp.isMatchIgnored) return doIgnore(lexeme); + } + + if (newMode && newMode.endSameAsBegin) { + newMode.endRe = escape(lexeme); + } + + if (newMode.skip) { + modeBuffer += lexeme; + } else { + if (newMode.excludeBegin) { + modeBuffer += lexeme; + } + processBuffer(); + if (!newMode.returnBegin && !newMode.excludeBegin) { + modeBuffer = lexeme; + } + } + startNewMode(newMode); + // if (mode["after:begin"]) { + // let resp = new Response(mode); + // mode["after:begin"](match, resp); + // } + return newMode.returnBegin ? 0 : lexeme.length; + } + + /** + * Handle the potential end of mode + * + * @param {RegExpMatchArray} match - the current match + */ + function doEndMatch(match) { + const lexeme = match[0]; + const matchPlusRemainder = codeToHighlight.substr(match.index); + + const endMode = endOfMode(top, match, matchPlusRemainder); + if (!endMode) { return NO_MATCH; } + + const origin = top; + if (origin.skip) { + modeBuffer += lexeme; + } else { + if (!(origin.returnEnd || origin.excludeEnd)) { + modeBuffer += lexeme; + } + processBuffer(); + if (origin.excludeEnd) { + modeBuffer = lexeme; + } + } + do { + if (top.className) { + emitter.closeNode(); + } + if (!top.skip && !top.subLanguage) { + relevance += top.relevance; + } + top = top.parent; + } while (top !== endMode.parent); + if (endMode.starts) { + if (endMode.endSameAsBegin) { + endMode.starts.endRe = endMode.endRe; + } + startNewMode(endMode.starts); + } + return origin.returnEnd ? 0 : lexeme.length; + } + + function processContinuations() { + const list = []; + for (let current = top; current !== language; current = current.parent) { + if (current.className) { + list.unshift(current.className); + } + } + list.forEach(item => emitter.openNode(item)); + } + + /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */ + let lastMatch = {}; + + /** + * Process an individual match + * + * @param {string} textBeforeMatch - text preceeding the match (since the last match) + * @param {EnhancedMatch} [match] - the match itself + */ + function processLexeme(textBeforeMatch, match) { + const lexeme = match && match[0]; + + // add non-matched text to the current mode buffer + modeBuffer += textBeforeMatch; + + if (lexeme == null) { + processBuffer(); + return 0; + } + + // we've found a 0 width match and we're stuck, so we need to advance + // this happens when we have badly behaved rules that have optional matchers to the degree that + // sometimes they can end up matching nothing at all + // Ref: https://github.com/highlightjs/highlight.js/issues/2140 + if (lastMatch.type === "begin" && match.type === "end" && lastMatch.index === match.index && lexeme === "") { + // spit the "skipped" character that our regex choked on back into the output sequence + modeBuffer += codeToHighlight.slice(match.index, match.index + 1); + if (!SAFE_MODE) { + /** @type {AnnotatedError} */ + const err = new Error('0 width match regex'); + err.languageName = languageName; + err.badRule = lastMatch.rule; + throw err; + } + return 1; + } + lastMatch = match; + + if (match.type === "begin") { + return doBeginMatch(match); + } else if (match.type === "illegal" && !ignoreIllegals) { + // illegal match, we do not continue processing + /** @type {AnnotatedError} */ + const err = new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.className || '') + '"'); + err.mode = top; + throw err; + } else if (match.type === "end") { + const processed = doEndMatch(match); + if (processed !== NO_MATCH) { + return processed; + } + } + + // edge case for when illegal matches $ (end of line) which is technically + // a 0 width match but not a begin/end match so it's not caught by the + // first handler (when ignoreIllegals is true) + if (match.type === "illegal" && lexeme === "") { + // advance so we aren't stuck in an infinite loop + return 1; + } + + // infinite loops are BAD, this is a last ditch catch all. if we have a + // decent number of iterations yet our index (cursor position in our + // parsing) still 3x behind our index then something is very wrong + // so we bail + if (iterations > 100000 && iterations > match.index * 3) { + const err = new Error('potential infinite loop, way more iterations than matches'); + throw err; + } + + /* + Why might be find ourselves here? Only one occasion now. An end match that was + triggered but could not be completed. When might this happen? When an `endSameasBegin` + rule sets the end rule to a specific match. Since the overall mode termination rule that's + being used to scan the text isn't recompiled that means that any match that LOOKS like + the end (but is not, because it is not an exact match to the beginning) will + end up here. A definite end match, but when `doEndMatch` tries to "reapply" + the end rule and fails to match, we wind up here, and just silently ignore the end. + + This causes no real harm other than stopping a few times too many. + */ + + modeBuffer += lexeme; + return lexeme.length; + } + + const language = getLanguage(languageName); + if (!language) { + error(LANGUAGE_NOT_FOUND.replace("{}", languageName)); + throw new Error('Unknown language: "' + languageName + '"'); + } + + const md = compileLanguage(language, { plugins }); + let result = ''; + /** @type {CompiledMode} */ + let top = continuation || md; + /** @type Record */ + const continuations = {}; // keep continuations for sub-languages + const emitter = new options.__emitter(options); + processContinuations(); + let modeBuffer = ''; + let relevance = 0; + let index = 0; + let iterations = 0; + let resumeScanAtSamePosition = false; + + try { + top.matcher.considerAll(); + + for (;;) { + iterations++; + if (resumeScanAtSamePosition) { + // only regexes not matched previously will now be + // considered for a potential match + resumeScanAtSamePosition = false; + } else { + top.matcher.considerAll(); + } + top.matcher.lastIndex = index; + + const match = top.matcher.exec(codeToHighlight); + // console.log("match", match[0], match.rule && match.rule.begin) + + if (!match) break; + + const beforeMatch = codeToHighlight.substring(index, match.index); + const processedCount = processLexeme(beforeMatch, match); + index = match.index + processedCount; + } + processLexeme(codeToHighlight.substr(index)); + emitter.closeAllNodes(); + emitter.finalize(); + result = emitter.toHTML(); + + return { + // avoid possible breakage with v10 clients expecting + // this to always be an integer + relevance: Math.floor(relevance), + value: result, + language: languageName, + illegal: false, + emitter: emitter, + top: top + }; + } catch (err) { + if (err.message && err.message.includes('Illegal')) { + return { + illegal: true, + illegalBy: { + msg: err.message, + context: codeToHighlight.slice(index - 100, index + 100), + mode: err.mode + }, + sofar: result, + relevance: 0, + value: escape$1(codeToHighlight), + emitter: emitter + }; + } else if (SAFE_MODE) { + return { + illegal: false, + relevance: 0, + value: escape$1(codeToHighlight), + emitter: emitter, + language: languageName, + top: top, + errorRaised: err + }; + } else { + throw err; + } + } + } + + /** + * returns a valid highlight result, without actually doing any actual work, + * auto highlight starts with this and it's possible for small snippets that + * auto-detection may not find a better match + * @param {string} code + * @returns {HighlightResult} + */ + function justTextHighlightResult(code) { + const result = { + relevance: 0, + emitter: new options.__emitter(options), + value: escape$1(code), + illegal: false, + top: PLAINTEXT_LANGUAGE + }; + result.emitter.addText(code); + return result; + } + + /** + Highlighting with language detection. Accepts a string with the code to + highlight. Returns an object with the following properties: + + - language (detected language) + - relevance (int) + - value (an HTML string with highlighting markup) + - second_best (object with the same structure for second-best heuristically + detected language, may be absent) + + @param {string} code + @param {Array} [languageSubset] + @returns {AutoHighlightResult} + */ + function highlightAuto(code, languageSubset) { + languageSubset = languageSubset || options.languages || Object.keys(languages); + const plaintext = justTextHighlightResult(code); + + const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name => + _highlight(name, code, false) + ); + results.unshift(plaintext); // plaintext is always an option + + const sorted = results.sort((a, b) => { + // sort base on relevance + if (a.relevance !== b.relevance) return b.relevance - a.relevance; + + // always award the tie to the base language + // ie if C++ and Arduino are tied, it's more likely to be C++ + if (a.language && b.language) { + if (getLanguage(a.language).supersetOf === b.language) { + return 1; + } else if (getLanguage(b.language).supersetOf === a.language) { + return -1; + } + } + + // otherwise say they are equal, which has the effect of sorting on + // relevance while preserving the original ordering - which is how ties + // have historically been settled, ie the language that comes first always + // wins in the case of a tie + return 0; + }); + + const [best, secondBest] = sorted; + + /** @type {AutoHighlightResult} */ + const result = best; + result.second_best = secondBest; + + return result; + } + + /** + Post-processing of the highlighted markup: + + - replace TABs with something more useful + - replace real line-breaks with '
' for non-pre containers + + @param {string} html + @returns {string} + */ + function fixMarkup(html) { + if (!(options.tabReplace || options.useBR)) { + return html; + } + + return html.replace(fixMarkupRe, match => { + if (match === '\n') { + return options.useBR ? '
' : match; + } else if (options.tabReplace) { + return match.replace(/\t/g, options.tabReplace); + } + return match; + }); + } + + /** + * Builds new class name for block given the language name + * + * @param {HTMLElement} element + * @param {string} [currentLang] + * @param {string} [resultLang] + */ + function updateClassName(element, currentLang, resultLang) { + const language = currentLang ? aliases[currentLang] : resultLang; + + element.classList.add("hljs"); + if (language) element.classList.add(language); + } + + /** @type {HLJSPlugin} */ + const brPlugin = { + "before:highlightElement": ({ el }) => { + if (options.useBR) { + el.innerHTML = el.innerHTML.replace(/\n/g, '').replace(//g, '\n'); + } + }, + "after:highlightElement": ({ result }) => { + if (options.useBR) { + result.value = result.value.replace(/\n/g, "
"); + } + } + }; + + const TAB_REPLACE_RE = /^(<[^>]+>|\t)+/gm; + /** @type {HLJSPlugin} */ + const tabReplacePlugin = { + "after:highlightElement": ({ result }) => { + if (options.tabReplace) { + result.value = result.value.replace(TAB_REPLACE_RE, (m) => + m.replace(/\t/g, options.tabReplace) + ); + } + } + }; + + /** + * Applies highlighting to a DOM node containing code. Accepts a DOM node and + * two optional parameters for fixMarkup. + * + * @param {HighlightedHTMLElement} element - the HTML element to highlight + */ + function highlightElement(element) { + /** @type HTMLElement */ + let node = null; + const language = blockLanguage(element); + + if (shouldNotHighlight(language)) return; + + // support for v10 API + fire("before:highlightElement", + { el: element, language: language }); + + node = element; + const text = node.textContent; + const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text); + + // support for v10 API + fire("after:highlightElement", { el: element, result, text }); + + element.innerHTML = result.value; + updateClassName(element, language, result.language); + element.result = { + language: result.language, + // TODO: remove with version 11.0 + re: result.relevance, + relavance: result.relevance + }; + if (result.second_best) { + element.second_best = { + language: result.second_best.language, + // TODO: remove with version 11.0 + re: result.second_best.relevance, + relavance: result.second_best.relevance + }; + } + } + + /** + * Updates highlight.js global options with the passed options + * + * @param {Partial} userOptions + */ + function configure(userOptions) { + if (userOptions.useBR) { + deprecated("10.3.0", "'useBR' will be removed entirely in v11.0"); + deprecated("10.3.0", "Please see https://github.com/highlightjs/highlight.js/issues/2559"); + } + options = inherit$1(options, userOptions); + } + + /** + * Highlights to all
 blocks on a page
+   *
+   * @type {Function & {called?: boolean}}
+   */
+  // TODO: remove v12, deprecated
+  const initHighlighting = () => {
+    if (initHighlighting.called) return;
+    initHighlighting.called = true;
+
+    deprecated("10.6.0", "initHighlighting() is deprecated.  Use highlightAll() instead.");
+
+    const blocks = document.querySelectorAll('pre code');
+    blocks.forEach(highlightElement);
+  };
+
+  // Higlights all when DOMContentLoaded fires
+  // TODO: remove v12, deprecated
+  function initHighlightingOnLoad() {
+    deprecated("10.6.0", "initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.");
+    wantsHighlight = true;
+  }
+
+  let wantsHighlight = false;
+
+  /**
+   * auto-highlights all pre>code elements on the page
+   */
+  function highlightAll() {
+    // if we are called too early in the loading process
+    if (document.readyState === "loading") {
+      wantsHighlight = true;
+      return;
+    }
+
+    const blocks = document.querySelectorAll('pre code');
+    blocks.forEach(highlightElement);
+  }
+
+  function boot() {
+    // if a highlight was requested before DOM was loaded, do now
+    if (wantsHighlight) highlightAll();
+  }
+
+  // make sure we are in the browser environment
+  if (typeof window !== 'undefined' && window.addEventListener) {
+    window.addEventListener('DOMContentLoaded', boot, false);
+  }
+
+  /**
+   * Register a language grammar module
+   *
+   * @param {string} languageName
+   * @param {LanguageFn} languageDefinition
+   */
+  function registerLanguage(languageName, languageDefinition) {
+    let lang = null;
+    try {
+      lang = languageDefinition(hljs);
+    } catch (error$1) {
+      error("Language definition for '{}' could not be registered.".replace("{}", languageName));
+      // hard or soft error
+      if (!SAFE_MODE) { throw error$1; } else { error(error$1); }
+      // languages that have serious errors are replaced with essentially a
+      // "plaintext" stand-in so that the code blocks will still get normal
+      // css classes applied to them - and one bad language won't break the
+      // entire highlighter
+      lang = PLAINTEXT_LANGUAGE;
+    }
+    // give it a temporary name if it doesn't have one in the meta-data
+    if (!lang.name) lang.name = languageName;
+    languages[languageName] = lang;
+    lang.rawDefinition = languageDefinition.bind(null, hljs);
+
+    if (lang.aliases) {
+      registerAliases(lang.aliases, { languageName });
+    }
+  }
+
+  /**
+   * Remove a language grammar module
+   *
+   * @param {string} languageName
+   */
+  function unregisterLanguage(languageName) {
+    delete languages[languageName];
+    for (const alias of Object.keys(aliases)) {
+      if (aliases[alias] === languageName) {
+        delete aliases[alias];
+      }
+    }
+  }
+
+  /**
+   * @returns {string[]} List of language internal names
+   */
+  function listLanguages() {
+    return Object.keys(languages);
+  }
+
+  /**
+    intended usage: When one language truly requires another
+
+    Unlike `getLanguage`, this will throw when the requested language
+    is not available.
+
+    @param {string} name - name of the language to fetch/require
+    @returns {Language | never}
+  */
+  function requireLanguage(name) {
+    deprecated("10.4.0", "requireLanguage will be removed entirely in v11.");
+    deprecated("10.4.0", "Please see https://github.com/highlightjs/highlight.js/pull/2844");
+
+    const lang = getLanguage(name);
+    if (lang) { return lang; }
+
+    const err = new Error('The \'{}\' language is required, but not loaded.'.replace('{}', name));
+    throw err;
+  }
+
+  /**
+   * @param {string} name - name of the language to retrieve
+   * @returns {Language | undefined}
+   */
+  function getLanguage(name) {
+    name = (name || '').toLowerCase();
+    return languages[name] || languages[aliases[name]];
+  }
+
+  /**
+   *
+   * @param {string|string[]} aliasList - single alias or list of aliases
+   * @param {{languageName: string}} opts
+   */
+  function registerAliases(aliasList, { languageName }) {
+    if (typeof aliasList === 'string') {
+      aliasList = [aliasList];
+    }
+    aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });
+  }
+
+  /**
+   * Determines if a given language has auto-detection enabled
+   * @param {string} name - name of the language
+   */
+  function autoDetection(name) {
+    const lang = getLanguage(name);
+    return lang && !lang.disableAutodetect;
+  }
+
+  /**
+   * Upgrades the old highlightBlock plugins to the new
+   * highlightElement API
+   * @param {HLJSPlugin} plugin
+   */
+  function upgradePluginAPI(plugin) {
+    // TODO: remove with v12
+    if (plugin["before:highlightBlock"] && !plugin["before:highlightElement"]) {
+      plugin["before:highlightElement"] = (data) => {
+        plugin["before:highlightBlock"](
+          Object.assign({ block: data.el }, data)
+        );
+      };
+    }
+    if (plugin["after:highlightBlock"] && !plugin["after:highlightElement"]) {
+      plugin["after:highlightElement"] = (data) => {
+        plugin["after:highlightBlock"](
+          Object.assign({ block: data.el }, data)
+        );
+      };
+    }
+  }
+
+  /**
+   * @param {HLJSPlugin} plugin
+   */
+  function addPlugin(plugin) {
+    upgradePluginAPI(plugin);
+    plugins.push(plugin);
+  }
+
+  /**
+   *
+   * @param {PluginEvent} event
+   * @param {any} args
+   */
+  function fire(event, args) {
+    const cb = event;
+    plugins.forEach(function(plugin) {
+      if (plugin[cb]) {
+        plugin[cb](args);
+      }
+    });
+  }
+
+  /**
+  Note: fixMarkup is deprecated and will be removed entirely in v11
+
+  @param {string} arg
+  @returns {string}
+  */
+  function deprecateFixMarkup(arg) {
+    deprecated("10.2.0", "fixMarkup will be removed entirely in v11.0");
+    deprecated("10.2.0", "Please see https://github.com/highlightjs/highlight.js/issues/2534");
+
+    return fixMarkup(arg);
+  }
+
+  /**
+   *
+   * @param {HighlightedHTMLElement} el
+   */
+  function deprecateHighlightBlock(el) {
+    deprecated("10.7.0", "highlightBlock will be removed entirely in v12.0");
+    deprecated("10.7.0", "Please use highlightElement now.");
+
+    return highlightElement(el);
+  }
+
+  /* Interface definition */
+  Object.assign(hljs, {
+    highlight,
+    highlightAuto,
+    highlightAll,
+    fixMarkup: deprecateFixMarkup,
+    highlightElement,
+    // TODO: Remove with v12 API
+    highlightBlock: deprecateHighlightBlock,
+    configure,
+    initHighlighting,
+    initHighlightingOnLoad,
+    registerLanguage,
+    unregisterLanguage,
+    listLanguages,
+    getLanguage,
+    registerAliases,
+    requireLanguage,
+    autoDetection,
+    inherit: inherit$1,
+    addPlugin,
+    // plugins for frameworks
+    vuePlugin: BuildVuePlugin(hljs).VuePlugin
+  });
+
+  hljs.debugMode = function() { SAFE_MODE = false; };
+  hljs.safeMode = function() { SAFE_MODE = true; };
+  hljs.versionString = version;
+
+  for (const key in MODES) {
+    // @ts-ignore
+    if (typeof MODES[key] === "object") {
+      // @ts-ignore
+      deepFreezeEs6(MODES[key]);
+    }
+  }
+
+  // merge all the modes/regexs into our main object
+  Object.assign(hljs, MODES);
+
+  // built-in plugins, likely to be moved out of core in the future
+  hljs.addPlugin(brPlugin); // slated to be removed in v11
+  hljs.addPlugin(mergeHTMLPlugin);
+  hljs.addPlugin(tabReplacePlugin);
+  return hljs;
+};
+
+// export an "instance" of the highlighter
+var highlight = HLJS({});
+
+module.exports = highlight;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/index.js":
+/*!************************************************!*\
+  !*** ./node_modules/highlight.js/lib/index.js ***!
+  \************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var hljs = __webpack_require__(/*! ./core */ "./node_modules/highlight.js/lib/core.js");
+
+hljs.registerLanguage('1c', __webpack_require__(/*! ./languages/1c */ "./node_modules/highlight.js/lib/languages/1c.js"));
+hljs.registerLanguage('abnf', __webpack_require__(/*! ./languages/abnf */ "./node_modules/highlight.js/lib/languages/abnf.js"));
+hljs.registerLanguage('accesslog', __webpack_require__(/*! ./languages/accesslog */ "./node_modules/highlight.js/lib/languages/accesslog.js"));
+hljs.registerLanguage('actionscript', __webpack_require__(/*! ./languages/actionscript */ "./node_modules/highlight.js/lib/languages/actionscript.js"));
+hljs.registerLanguage('ada', __webpack_require__(/*! ./languages/ada */ "./node_modules/highlight.js/lib/languages/ada.js"));
+hljs.registerLanguage('angelscript', __webpack_require__(/*! ./languages/angelscript */ "./node_modules/highlight.js/lib/languages/angelscript.js"));
+hljs.registerLanguage('apache', __webpack_require__(/*! ./languages/apache */ "./node_modules/highlight.js/lib/languages/apache.js"));
+hljs.registerLanguage('applescript', __webpack_require__(/*! ./languages/applescript */ "./node_modules/highlight.js/lib/languages/applescript.js"));
+hljs.registerLanguage('arcade', __webpack_require__(/*! ./languages/arcade */ "./node_modules/highlight.js/lib/languages/arcade.js"));
+hljs.registerLanguage('arduino', __webpack_require__(/*! ./languages/arduino */ "./node_modules/highlight.js/lib/languages/arduino.js"));
+hljs.registerLanguage('armasm', __webpack_require__(/*! ./languages/armasm */ "./node_modules/highlight.js/lib/languages/armasm.js"));
+hljs.registerLanguage('xml', __webpack_require__(/*! ./languages/xml */ "./node_modules/highlight.js/lib/languages/xml.js"));
+hljs.registerLanguage('asciidoc', __webpack_require__(/*! ./languages/asciidoc */ "./node_modules/highlight.js/lib/languages/asciidoc.js"));
+hljs.registerLanguage('aspectj', __webpack_require__(/*! ./languages/aspectj */ "./node_modules/highlight.js/lib/languages/aspectj.js"));
+hljs.registerLanguage('autohotkey', __webpack_require__(/*! ./languages/autohotkey */ "./node_modules/highlight.js/lib/languages/autohotkey.js"));
+hljs.registerLanguage('autoit', __webpack_require__(/*! ./languages/autoit */ "./node_modules/highlight.js/lib/languages/autoit.js"));
+hljs.registerLanguage('avrasm', __webpack_require__(/*! ./languages/avrasm */ "./node_modules/highlight.js/lib/languages/avrasm.js"));
+hljs.registerLanguage('awk', __webpack_require__(/*! ./languages/awk */ "./node_modules/highlight.js/lib/languages/awk.js"));
+hljs.registerLanguage('axapta', __webpack_require__(/*! ./languages/axapta */ "./node_modules/highlight.js/lib/languages/axapta.js"));
+hljs.registerLanguage('bash', __webpack_require__(/*! ./languages/bash */ "./node_modules/highlight.js/lib/languages/bash.js"));
+hljs.registerLanguage('basic', __webpack_require__(/*! ./languages/basic */ "./node_modules/highlight.js/lib/languages/basic.js"));
+hljs.registerLanguage('bnf', __webpack_require__(/*! ./languages/bnf */ "./node_modules/highlight.js/lib/languages/bnf.js"));
+hljs.registerLanguage('brainfuck', __webpack_require__(/*! ./languages/brainfuck */ "./node_modules/highlight.js/lib/languages/brainfuck.js"));
+hljs.registerLanguage('c-like', __webpack_require__(/*! ./languages/c-like */ "./node_modules/highlight.js/lib/languages/c-like.js"));
+hljs.registerLanguage('c', __webpack_require__(/*! ./languages/c */ "./node_modules/highlight.js/lib/languages/c.js"));
+hljs.registerLanguage('cal', __webpack_require__(/*! ./languages/cal */ "./node_modules/highlight.js/lib/languages/cal.js"));
+hljs.registerLanguage('capnproto', __webpack_require__(/*! ./languages/capnproto */ "./node_modules/highlight.js/lib/languages/capnproto.js"));
+hljs.registerLanguage('ceylon', __webpack_require__(/*! ./languages/ceylon */ "./node_modules/highlight.js/lib/languages/ceylon.js"));
+hljs.registerLanguage('clean', __webpack_require__(/*! ./languages/clean */ "./node_modules/highlight.js/lib/languages/clean.js"));
+hljs.registerLanguage('clojure', __webpack_require__(/*! ./languages/clojure */ "./node_modules/highlight.js/lib/languages/clojure.js"));
+hljs.registerLanguage('clojure-repl', __webpack_require__(/*! ./languages/clojure-repl */ "./node_modules/highlight.js/lib/languages/clojure-repl.js"));
+hljs.registerLanguage('cmake', __webpack_require__(/*! ./languages/cmake */ "./node_modules/highlight.js/lib/languages/cmake.js"));
+hljs.registerLanguage('coffeescript', __webpack_require__(/*! ./languages/coffeescript */ "./node_modules/highlight.js/lib/languages/coffeescript.js"));
+hljs.registerLanguage('coq', __webpack_require__(/*! ./languages/coq */ "./node_modules/highlight.js/lib/languages/coq.js"));
+hljs.registerLanguage('cos', __webpack_require__(/*! ./languages/cos */ "./node_modules/highlight.js/lib/languages/cos.js"));
+hljs.registerLanguage('cpp', __webpack_require__(/*! ./languages/cpp */ "./node_modules/highlight.js/lib/languages/cpp.js"));
+hljs.registerLanguage('crmsh', __webpack_require__(/*! ./languages/crmsh */ "./node_modules/highlight.js/lib/languages/crmsh.js"));
+hljs.registerLanguage('crystal', __webpack_require__(/*! ./languages/crystal */ "./node_modules/highlight.js/lib/languages/crystal.js"));
+hljs.registerLanguage('csharp', __webpack_require__(/*! ./languages/csharp */ "./node_modules/highlight.js/lib/languages/csharp.js"));
+hljs.registerLanguage('csp', __webpack_require__(/*! ./languages/csp */ "./node_modules/highlight.js/lib/languages/csp.js"));
+hljs.registerLanguage('css', __webpack_require__(/*! ./languages/css */ "./node_modules/highlight.js/lib/languages/css.js"));
+hljs.registerLanguage('d', __webpack_require__(/*! ./languages/d */ "./node_modules/highlight.js/lib/languages/d.js"));
+hljs.registerLanguage('markdown', __webpack_require__(/*! ./languages/markdown */ "./node_modules/highlight.js/lib/languages/markdown.js"));
+hljs.registerLanguage('dart', __webpack_require__(/*! ./languages/dart */ "./node_modules/highlight.js/lib/languages/dart.js"));
+hljs.registerLanguage('delphi', __webpack_require__(/*! ./languages/delphi */ "./node_modules/highlight.js/lib/languages/delphi.js"));
+hljs.registerLanguage('diff', __webpack_require__(/*! ./languages/diff */ "./node_modules/highlight.js/lib/languages/diff.js"));
+hljs.registerLanguage('django', __webpack_require__(/*! ./languages/django */ "./node_modules/highlight.js/lib/languages/django.js"));
+hljs.registerLanguage('dns', __webpack_require__(/*! ./languages/dns */ "./node_modules/highlight.js/lib/languages/dns.js"));
+hljs.registerLanguage('dockerfile', __webpack_require__(/*! ./languages/dockerfile */ "./node_modules/highlight.js/lib/languages/dockerfile.js"));
+hljs.registerLanguage('dos', __webpack_require__(/*! ./languages/dos */ "./node_modules/highlight.js/lib/languages/dos.js"));
+hljs.registerLanguage('dsconfig', __webpack_require__(/*! ./languages/dsconfig */ "./node_modules/highlight.js/lib/languages/dsconfig.js"));
+hljs.registerLanguage('dts', __webpack_require__(/*! ./languages/dts */ "./node_modules/highlight.js/lib/languages/dts.js"));
+hljs.registerLanguage('dust', __webpack_require__(/*! ./languages/dust */ "./node_modules/highlight.js/lib/languages/dust.js"));
+hljs.registerLanguage('ebnf', __webpack_require__(/*! ./languages/ebnf */ "./node_modules/highlight.js/lib/languages/ebnf.js"));
+hljs.registerLanguage('elixir', __webpack_require__(/*! ./languages/elixir */ "./node_modules/highlight.js/lib/languages/elixir.js"));
+hljs.registerLanguage('elm', __webpack_require__(/*! ./languages/elm */ "./node_modules/highlight.js/lib/languages/elm.js"));
+hljs.registerLanguage('ruby', __webpack_require__(/*! ./languages/ruby */ "./node_modules/highlight.js/lib/languages/ruby.js"));
+hljs.registerLanguage('erb', __webpack_require__(/*! ./languages/erb */ "./node_modules/highlight.js/lib/languages/erb.js"));
+hljs.registerLanguage('erlang-repl', __webpack_require__(/*! ./languages/erlang-repl */ "./node_modules/highlight.js/lib/languages/erlang-repl.js"));
+hljs.registerLanguage('erlang', __webpack_require__(/*! ./languages/erlang */ "./node_modules/highlight.js/lib/languages/erlang.js"));
+hljs.registerLanguage('excel', __webpack_require__(/*! ./languages/excel */ "./node_modules/highlight.js/lib/languages/excel.js"));
+hljs.registerLanguage('fix', __webpack_require__(/*! ./languages/fix */ "./node_modules/highlight.js/lib/languages/fix.js"));
+hljs.registerLanguage('flix', __webpack_require__(/*! ./languages/flix */ "./node_modules/highlight.js/lib/languages/flix.js"));
+hljs.registerLanguage('fortran', __webpack_require__(/*! ./languages/fortran */ "./node_modules/highlight.js/lib/languages/fortran.js"));
+hljs.registerLanguage('fsharp', __webpack_require__(/*! ./languages/fsharp */ "./node_modules/highlight.js/lib/languages/fsharp.js"));
+hljs.registerLanguage('gams', __webpack_require__(/*! ./languages/gams */ "./node_modules/highlight.js/lib/languages/gams.js"));
+hljs.registerLanguage('gauss', __webpack_require__(/*! ./languages/gauss */ "./node_modules/highlight.js/lib/languages/gauss.js"));
+hljs.registerLanguage('gcode', __webpack_require__(/*! ./languages/gcode */ "./node_modules/highlight.js/lib/languages/gcode.js"));
+hljs.registerLanguage('gherkin', __webpack_require__(/*! ./languages/gherkin */ "./node_modules/highlight.js/lib/languages/gherkin.js"));
+hljs.registerLanguage('glsl', __webpack_require__(/*! ./languages/glsl */ "./node_modules/highlight.js/lib/languages/glsl.js"));
+hljs.registerLanguage('gml', __webpack_require__(/*! ./languages/gml */ "./node_modules/highlight.js/lib/languages/gml.js"));
+hljs.registerLanguage('go', __webpack_require__(/*! ./languages/go */ "./node_modules/highlight.js/lib/languages/go.js"));
+hljs.registerLanguage('golo', __webpack_require__(/*! ./languages/golo */ "./node_modules/highlight.js/lib/languages/golo.js"));
+hljs.registerLanguage('gradle', __webpack_require__(/*! ./languages/gradle */ "./node_modules/highlight.js/lib/languages/gradle.js"));
+hljs.registerLanguage('groovy', __webpack_require__(/*! ./languages/groovy */ "./node_modules/highlight.js/lib/languages/groovy.js"));
+hljs.registerLanguage('haml', __webpack_require__(/*! ./languages/haml */ "./node_modules/highlight.js/lib/languages/haml.js"));
+hljs.registerLanguage('handlebars', __webpack_require__(/*! ./languages/handlebars */ "./node_modules/highlight.js/lib/languages/handlebars.js"));
+hljs.registerLanguage('haskell', __webpack_require__(/*! ./languages/haskell */ "./node_modules/highlight.js/lib/languages/haskell.js"));
+hljs.registerLanguage('haxe', __webpack_require__(/*! ./languages/haxe */ "./node_modules/highlight.js/lib/languages/haxe.js"));
+hljs.registerLanguage('hsp', __webpack_require__(/*! ./languages/hsp */ "./node_modules/highlight.js/lib/languages/hsp.js"));
+hljs.registerLanguage('htmlbars', __webpack_require__(/*! ./languages/htmlbars */ "./node_modules/highlight.js/lib/languages/htmlbars.js"));
+hljs.registerLanguage('http', __webpack_require__(/*! ./languages/http */ "./node_modules/highlight.js/lib/languages/http.js"));
+hljs.registerLanguage('hy', __webpack_require__(/*! ./languages/hy */ "./node_modules/highlight.js/lib/languages/hy.js"));
+hljs.registerLanguage('inform7', __webpack_require__(/*! ./languages/inform7 */ "./node_modules/highlight.js/lib/languages/inform7.js"));
+hljs.registerLanguage('ini', __webpack_require__(/*! ./languages/ini */ "./node_modules/highlight.js/lib/languages/ini.js"));
+hljs.registerLanguage('irpf90', __webpack_require__(/*! ./languages/irpf90 */ "./node_modules/highlight.js/lib/languages/irpf90.js"));
+hljs.registerLanguage('isbl', __webpack_require__(/*! ./languages/isbl */ "./node_modules/highlight.js/lib/languages/isbl.js"));
+hljs.registerLanguage('java', __webpack_require__(/*! ./languages/java */ "./node_modules/highlight.js/lib/languages/java.js"));
+hljs.registerLanguage('javascript', __webpack_require__(/*! ./languages/javascript */ "./node_modules/highlight.js/lib/languages/javascript.js"));
+hljs.registerLanguage('jboss-cli', __webpack_require__(/*! ./languages/jboss-cli */ "./node_modules/highlight.js/lib/languages/jboss-cli.js"));
+hljs.registerLanguage('json', __webpack_require__(/*! ./languages/json */ "./node_modules/highlight.js/lib/languages/json.js"));
+hljs.registerLanguage('julia', __webpack_require__(/*! ./languages/julia */ "./node_modules/highlight.js/lib/languages/julia.js"));
+hljs.registerLanguage('julia-repl', __webpack_require__(/*! ./languages/julia-repl */ "./node_modules/highlight.js/lib/languages/julia-repl.js"));
+hljs.registerLanguage('kotlin', __webpack_require__(/*! ./languages/kotlin */ "./node_modules/highlight.js/lib/languages/kotlin.js"));
+hljs.registerLanguage('lasso', __webpack_require__(/*! ./languages/lasso */ "./node_modules/highlight.js/lib/languages/lasso.js"));
+hljs.registerLanguage('latex', __webpack_require__(/*! ./languages/latex */ "./node_modules/highlight.js/lib/languages/latex.js"));
+hljs.registerLanguage('ldif', __webpack_require__(/*! ./languages/ldif */ "./node_modules/highlight.js/lib/languages/ldif.js"));
+hljs.registerLanguage('leaf', __webpack_require__(/*! ./languages/leaf */ "./node_modules/highlight.js/lib/languages/leaf.js"));
+hljs.registerLanguage('less', __webpack_require__(/*! ./languages/less */ "./node_modules/highlight.js/lib/languages/less.js"));
+hljs.registerLanguage('lisp', __webpack_require__(/*! ./languages/lisp */ "./node_modules/highlight.js/lib/languages/lisp.js"));
+hljs.registerLanguage('livecodeserver', __webpack_require__(/*! ./languages/livecodeserver */ "./node_modules/highlight.js/lib/languages/livecodeserver.js"));
+hljs.registerLanguage('livescript', __webpack_require__(/*! ./languages/livescript */ "./node_modules/highlight.js/lib/languages/livescript.js"));
+hljs.registerLanguage('llvm', __webpack_require__(/*! ./languages/llvm */ "./node_modules/highlight.js/lib/languages/llvm.js"));
+hljs.registerLanguage('lsl', __webpack_require__(/*! ./languages/lsl */ "./node_modules/highlight.js/lib/languages/lsl.js"));
+hljs.registerLanguage('lua', __webpack_require__(/*! ./languages/lua */ "./node_modules/highlight.js/lib/languages/lua.js"));
+hljs.registerLanguage('makefile', __webpack_require__(/*! ./languages/makefile */ "./node_modules/highlight.js/lib/languages/makefile.js"));
+hljs.registerLanguage('mathematica', __webpack_require__(/*! ./languages/mathematica */ "./node_modules/highlight.js/lib/languages/mathematica.js"));
+hljs.registerLanguage('matlab', __webpack_require__(/*! ./languages/matlab */ "./node_modules/highlight.js/lib/languages/matlab.js"));
+hljs.registerLanguage('maxima', __webpack_require__(/*! ./languages/maxima */ "./node_modules/highlight.js/lib/languages/maxima.js"));
+hljs.registerLanguage('mel', __webpack_require__(/*! ./languages/mel */ "./node_modules/highlight.js/lib/languages/mel.js"));
+hljs.registerLanguage('mercury', __webpack_require__(/*! ./languages/mercury */ "./node_modules/highlight.js/lib/languages/mercury.js"));
+hljs.registerLanguage('mipsasm', __webpack_require__(/*! ./languages/mipsasm */ "./node_modules/highlight.js/lib/languages/mipsasm.js"));
+hljs.registerLanguage('mizar', __webpack_require__(/*! ./languages/mizar */ "./node_modules/highlight.js/lib/languages/mizar.js"));
+hljs.registerLanguage('perl', __webpack_require__(/*! ./languages/perl */ "./node_modules/highlight.js/lib/languages/perl.js"));
+hljs.registerLanguage('mojolicious', __webpack_require__(/*! ./languages/mojolicious */ "./node_modules/highlight.js/lib/languages/mojolicious.js"));
+hljs.registerLanguage('monkey', __webpack_require__(/*! ./languages/monkey */ "./node_modules/highlight.js/lib/languages/monkey.js"));
+hljs.registerLanguage('moonscript', __webpack_require__(/*! ./languages/moonscript */ "./node_modules/highlight.js/lib/languages/moonscript.js"));
+hljs.registerLanguage('n1ql', __webpack_require__(/*! ./languages/n1ql */ "./node_modules/highlight.js/lib/languages/n1ql.js"));
+hljs.registerLanguage('nginx', __webpack_require__(/*! ./languages/nginx */ "./node_modules/highlight.js/lib/languages/nginx.js"));
+hljs.registerLanguage('nim', __webpack_require__(/*! ./languages/nim */ "./node_modules/highlight.js/lib/languages/nim.js"));
+hljs.registerLanguage('nix', __webpack_require__(/*! ./languages/nix */ "./node_modules/highlight.js/lib/languages/nix.js"));
+hljs.registerLanguage('node-repl', __webpack_require__(/*! ./languages/node-repl */ "./node_modules/highlight.js/lib/languages/node-repl.js"));
+hljs.registerLanguage('nsis', __webpack_require__(/*! ./languages/nsis */ "./node_modules/highlight.js/lib/languages/nsis.js"));
+hljs.registerLanguage('objectivec', __webpack_require__(/*! ./languages/objectivec */ "./node_modules/highlight.js/lib/languages/objectivec.js"));
+hljs.registerLanguage('ocaml', __webpack_require__(/*! ./languages/ocaml */ "./node_modules/highlight.js/lib/languages/ocaml.js"));
+hljs.registerLanguage('openscad', __webpack_require__(/*! ./languages/openscad */ "./node_modules/highlight.js/lib/languages/openscad.js"));
+hljs.registerLanguage('oxygene', __webpack_require__(/*! ./languages/oxygene */ "./node_modules/highlight.js/lib/languages/oxygene.js"));
+hljs.registerLanguage('parser3', __webpack_require__(/*! ./languages/parser3 */ "./node_modules/highlight.js/lib/languages/parser3.js"));
+hljs.registerLanguage('pf', __webpack_require__(/*! ./languages/pf */ "./node_modules/highlight.js/lib/languages/pf.js"));
+hljs.registerLanguage('pgsql', __webpack_require__(/*! ./languages/pgsql */ "./node_modules/highlight.js/lib/languages/pgsql.js"));
+hljs.registerLanguage('php', __webpack_require__(/*! ./languages/php */ "./node_modules/highlight.js/lib/languages/php.js"));
+hljs.registerLanguage('php-template', __webpack_require__(/*! ./languages/php-template */ "./node_modules/highlight.js/lib/languages/php-template.js"));
+hljs.registerLanguage('plaintext', __webpack_require__(/*! ./languages/plaintext */ "./node_modules/highlight.js/lib/languages/plaintext.js"));
+hljs.registerLanguage('pony', __webpack_require__(/*! ./languages/pony */ "./node_modules/highlight.js/lib/languages/pony.js"));
+hljs.registerLanguage('powershell', __webpack_require__(/*! ./languages/powershell */ "./node_modules/highlight.js/lib/languages/powershell.js"));
+hljs.registerLanguage('processing', __webpack_require__(/*! ./languages/processing */ "./node_modules/highlight.js/lib/languages/processing.js"));
+hljs.registerLanguage('profile', __webpack_require__(/*! ./languages/profile */ "./node_modules/highlight.js/lib/languages/profile.js"));
+hljs.registerLanguage('prolog', __webpack_require__(/*! ./languages/prolog */ "./node_modules/highlight.js/lib/languages/prolog.js"));
+hljs.registerLanguage('properties', __webpack_require__(/*! ./languages/properties */ "./node_modules/highlight.js/lib/languages/properties.js"));
+hljs.registerLanguage('protobuf', __webpack_require__(/*! ./languages/protobuf */ "./node_modules/highlight.js/lib/languages/protobuf.js"));
+hljs.registerLanguage('puppet', __webpack_require__(/*! ./languages/puppet */ "./node_modules/highlight.js/lib/languages/puppet.js"));
+hljs.registerLanguage('purebasic', __webpack_require__(/*! ./languages/purebasic */ "./node_modules/highlight.js/lib/languages/purebasic.js"));
+hljs.registerLanguage('python', __webpack_require__(/*! ./languages/python */ "./node_modules/highlight.js/lib/languages/python.js"));
+hljs.registerLanguage('python-repl', __webpack_require__(/*! ./languages/python-repl */ "./node_modules/highlight.js/lib/languages/python-repl.js"));
+hljs.registerLanguage('q', __webpack_require__(/*! ./languages/q */ "./node_modules/highlight.js/lib/languages/q.js"));
+hljs.registerLanguage('qml', __webpack_require__(/*! ./languages/qml */ "./node_modules/highlight.js/lib/languages/qml.js"));
+hljs.registerLanguage('r', __webpack_require__(/*! ./languages/r */ "./node_modules/highlight.js/lib/languages/r.js"));
+hljs.registerLanguage('reasonml', __webpack_require__(/*! ./languages/reasonml */ "./node_modules/highlight.js/lib/languages/reasonml.js"));
+hljs.registerLanguage('rib', __webpack_require__(/*! ./languages/rib */ "./node_modules/highlight.js/lib/languages/rib.js"));
+hljs.registerLanguage('roboconf', __webpack_require__(/*! ./languages/roboconf */ "./node_modules/highlight.js/lib/languages/roboconf.js"));
+hljs.registerLanguage('routeros', __webpack_require__(/*! ./languages/routeros */ "./node_modules/highlight.js/lib/languages/routeros.js"));
+hljs.registerLanguage('rsl', __webpack_require__(/*! ./languages/rsl */ "./node_modules/highlight.js/lib/languages/rsl.js"));
+hljs.registerLanguage('ruleslanguage', __webpack_require__(/*! ./languages/ruleslanguage */ "./node_modules/highlight.js/lib/languages/ruleslanguage.js"));
+hljs.registerLanguage('rust', __webpack_require__(/*! ./languages/rust */ "./node_modules/highlight.js/lib/languages/rust.js"));
+hljs.registerLanguage('sas', __webpack_require__(/*! ./languages/sas */ "./node_modules/highlight.js/lib/languages/sas.js"));
+hljs.registerLanguage('scala', __webpack_require__(/*! ./languages/scala */ "./node_modules/highlight.js/lib/languages/scala.js"));
+hljs.registerLanguage('scheme', __webpack_require__(/*! ./languages/scheme */ "./node_modules/highlight.js/lib/languages/scheme.js"));
+hljs.registerLanguage('scilab', __webpack_require__(/*! ./languages/scilab */ "./node_modules/highlight.js/lib/languages/scilab.js"));
+hljs.registerLanguage('scss', __webpack_require__(/*! ./languages/scss */ "./node_modules/highlight.js/lib/languages/scss.js"));
+hljs.registerLanguage('shell', __webpack_require__(/*! ./languages/shell */ "./node_modules/highlight.js/lib/languages/shell.js"));
+hljs.registerLanguage('smali', __webpack_require__(/*! ./languages/smali */ "./node_modules/highlight.js/lib/languages/smali.js"));
+hljs.registerLanguage('smalltalk', __webpack_require__(/*! ./languages/smalltalk */ "./node_modules/highlight.js/lib/languages/smalltalk.js"));
+hljs.registerLanguage('sml', __webpack_require__(/*! ./languages/sml */ "./node_modules/highlight.js/lib/languages/sml.js"));
+hljs.registerLanguage('sqf', __webpack_require__(/*! ./languages/sqf */ "./node_modules/highlight.js/lib/languages/sqf.js"));
+hljs.registerLanguage('sql_more', __webpack_require__(/*! ./languages/sql_more */ "./node_modules/highlight.js/lib/languages/sql_more.js"));
+hljs.registerLanguage('sql', __webpack_require__(/*! ./languages/sql */ "./node_modules/highlight.js/lib/languages/sql.js"));
+hljs.registerLanguage('stan', __webpack_require__(/*! ./languages/stan */ "./node_modules/highlight.js/lib/languages/stan.js"));
+hljs.registerLanguage('stata', __webpack_require__(/*! ./languages/stata */ "./node_modules/highlight.js/lib/languages/stata.js"));
+hljs.registerLanguage('step21', __webpack_require__(/*! ./languages/step21 */ "./node_modules/highlight.js/lib/languages/step21.js"));
+hljs.registerLanguage('stylus', __webpack_require__(/*! ./languages/stylus */ "./node_modules/highlight.js/lib/languages/stylus.js"));
+hljs.registerLanguage('subunit', __webpack_require__(/*! ./languages/subunit */ "./node_modules/highlight.js/lib/languages/subunit.js"));
+hljs.registerLanguage('swift', __webpack_require__(/*! ./languages/swift */ "./node_modules/highlight.js/lib/languages/swift.js"));
+hljs.registerLanguage('taggerscript', __webpack_require__(/*! ./languages/taggerscript */ "./node_modules/highlight.js/lib/languages/taggerscript.js"));
+hljs.registerLanguage('yaml', __webpack_require__(/*! ./languages/yaml */ "./node_modules/highlight.js/lib/languages/yaml.js"));
+hljs.registerLanguage('tap', __webpack_require__(/*! ./languages/tap */ "./node_modules/highlight.js/lib/languages/tap.js"));
+hljs.registerLanguage('tcl', __webpack_require__(/*! ./languages/tcl */ "./node_modules/highlight.js/lib/languages/tcl.js"));
+hljs.registerLanguage('thrift', __webpack_require__(/*! ./languages/thrift */ "./node_modules/highlight.js/lib/languages/thrift.js"));
+hljs.registerLanguage('tp', __webpack_require__(/*! ./languages/tp */ "./node_modules/highlight.js/lib/languages/tp.js"));
+hljs.registerLanguage('twig', __webpack_require__(/*! ./languages/twig */ "./node_modules/highlight.js/lib/languages/twig.js"));
+hljs.registerLanguage('typescript', __webpack_require__(/*! ./languages/typescript */ "./node_modules/highlight.js/lib/languages/typescript.js"));
+hljs.registerLanguage('vala', __webpack_require__(/*! ./languages/vala */ "./node_modules/highlight.js/lib/languages/vala.js"));
+hljs.registerLanguage('vbnet', __webpack_require__(/*! ./languages/vbnet */ "./node_modules/highlight.js/lib/languages/vbnet.js"));
+hljs.registerLanguage('vbscript', __webpack_require__(/*! ./languages/vbscript */ "./node_modules/highlight.js/lib/languages/vbscript.js"));
+hljs.registerLanguage('vbscript-html', __webpack_require__(/*! ./languages/vbscript-html */ "./node_modules/highlight.js/lib/languages/vbscript-html.js"));
+hljs.registerLanguage('verilog', __webpack_require__(/*! ./languages/verilog */ "./node_modules/highlight.js/lib/languages/verilog.js"));
+hljs.registerLanguage('vhdl', __webpack_require__(/*! ./languages/vhdl */ "./node_modules/highlight.js/lib/languages/vhdl.js"));
+hljs.registerLanguage('vim', __webpack_require__(/*! ./languages/vim */ "./node_modules/highlight.js/lib/languages/vim.js"));
+hljs.registerLanguage('x86asm', __webpack_require__(/*! ./languages/x86asm */ "./node_modules/highlight.js/lib/languages/x86asm.js"));
+hljs.registerLanguage('xl', __webpack_require__(/*! ./languages/xl */ "./node_modules/highlight.js/lib/languages/xl.js"));
+hljs.registerLanguage('xquery', __webpack_require__(/*! ./languages/xquery */ "./node_modules/highlight.js/lib/languages/xquery.js"));
+hljs.registerLanguage('zephir', __webpack_require__(/*! ./languages/zephir */ "./node_modules/highlight.js/lib/languages/zephir.js"));
+
+module.exports = hljs;
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/1c.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/1c.js ***!
+  \*******************************************************/
+/***/ ((module) => {
+
+/*
+Language: 1C:Enterprise
+Author: Stanislav Belov 
+Description: built-in language 1C:Enterprise (v7, v8)
+Category: enterprise
+*/
+
+function _1c(hljs) {
+
+  // общий паттерн для определения идентификаторов
+  var UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+';
+
+  // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword
+  var v7_keywords =
+  'далее ';
+
+  // v8 ключевые слова ==> keyword
+  var v8_keywords =
+  'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' +
+  'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ';
+
+  // keyword : ключевые слова
+  var KEYWORD = v7_keywords + v8_keywords;
+
+  // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword
+  var v7_meta_keywords =
+  'загрузитьизфайла ';
+
+  // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword
+  var v8_meta_keywords =
+  'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' +
+  'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' +
+  'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ';
+
+  // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях
+  var METAKEYWORD = v7_meta_keywords + v8_meta_keywords;
+
+  // v7 системные константы ==> built_in
+  var v7_system_constants =
+  'разделительстраниц разделительстрок символтабуляции ';
+
+  // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in
+  var v7_global_context_methods =
+  'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' +
+  'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' +
+  'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' +
+  'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' +
+  'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' +
+  'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' +
+  'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' +
+  'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' +
+  'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' +
+  'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' +
+  'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ';
+
+  // v8 методы глобального контекста ==> built_in
+  var v8_global_context_methods =
+  'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' +
+  'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' +
+  'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' +
+  'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' +
+  'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' +
+  'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' +
+  'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' +
+  'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' +
+  'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' +
+  'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' +
+  'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' +
+  'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' +
+  'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' +
+  'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' +
+  'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' +
+  'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' +
+  'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' +
+  'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' +
+  'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' +
+  'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' +
+  'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' +
+  'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' +
+  'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' +
+  'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' +
+  'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' +
+  'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' +
+  'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' +
+  'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' +
+  'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' +
+  'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' +
+  'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' +
+  'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' +
+  'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' +
+  'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' +
+  'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' +
+  'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' +
+  'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' +
+  'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' +
+  'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' +
+  'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' +
+  'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' +
+  'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' +
+  'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' +
+  'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' +
+  'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' +
+  'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' +
+  'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' +
+  'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' +
+  'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' +
+  'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' +
+  'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' +
+  'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' +
+  'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' +
+  'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' +
+  'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' +
+  'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' +
+  'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений '+
+  'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' +
+  'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' +
+  'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' +
+  'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' +
+  'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' +
+  'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' +
+  'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' +
+  'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' +
+  'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' +
+  'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' +
+  'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' +
+  'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' +
+  'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' +
+  'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' +
+  'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ';
+
+  // v8 свойства глобального контекста ==> built_in
+  var v8_global_context_property =
+  'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' +
+  'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' +
+  'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' +
+  'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' +
+  'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' +
+  'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' +
+  'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' +
+  'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' +
+  'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' +
+  'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' +
+  'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ';
+
+  // built_in : встроенные или библиотечные объекты (константы, классы, функции)
+  var BUILTIN =
+  v7_system_constants +
+  v7_global_context_methods + v8_global_context_methods +
+  v8_global_context_property;
+
+  // v8 системные наборы значений ==> class
+  var v8_system_sets_of_values =
+  'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ';
+
+  // v8 системные перечисления - интерфейсные ==> class
+  var v8_system_enums_interface =
+  'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' +
+  'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' +
+  'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' +
+  'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' +
+  'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' +
+  'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' +
+  'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' +
+  'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' +
+  'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' +
+  'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' +
+  'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' +
+  'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' +
+  'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' +
+  'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' +
+  'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' +
+  'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' +
+  'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' +
+  'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' +
+  'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' +
+  'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' +
+  'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' +
+  'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' +
+  'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' +
+  'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' +
+  'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' +
+  'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' +
+  'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' +
+  'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' +
+  'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' +
+  'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' +
+  'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' +
+  'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' +
+  'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' +
+  'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' +
+  'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' +
+  'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' +
+  'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' +
+  'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' +
+  'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' +
+  'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' +
+  'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' +
+  'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' +
+  'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' +
+  'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' +
+  'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' +
+  'форматкартинки ширинаподчиненныхэлементовформы ';
+
+  // v8 системные перечисления - свойства прикладных объектов ==> class
+  var v8_system_enums_objects_properties =
+  'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' +
+  'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' +
+  'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ';
+
+  // v8 системные перечисления - планы обмена ==> class
+  var v8_system_enums_exchange_plans =
+  'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ';
+
+  // v8 системные перечисления - табличный документ ==> class
+  var v8_system_enums_tabular_document =
+  'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' +
+  'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' +
+  'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' +
+  'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' +
+  'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' +
+  'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' +
+  'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ';
+
+  // v8 системные перечисления - планировщик ==> class
+  var v8_system_enums_sheduler =
+  'отображениевремениэлементовпланировщика ';
+
+  // v8 системные перечисления - форматированный документ ==> class
+  var v8_system_enums_formatted_document =
+  'типфайлаформатированногодокумента ';
+
+  // v8 системные перечисления - запрос ==> class
+  var v8_system_enums_query =
+  'обходрезультатазапроса типзаписизапроса ';
+
+  // v8 системные перечисления - построитель отчета ==> class
+  var v8_system_enums_report_builder =
+  'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ';
+
+  // v8 системные перечисления - работа с файлами ==> class
+  var v8_system_enums_files =
+  'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ';
+
+  // v8 системные перечисления - построитель запроса ==> class
+  var v8_system_enums_query_builder =
+  'типизмеренияпостроителязапроса ';
+
+  // v8 системные перечисления - анализ данных ==> class
+  var v8_system_enums_data_analysis =
+  'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' +
+  'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' +
+  'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' +
+  'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' +
+  'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' +
+  'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ';
+
+  // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class
+  var v8_system_enums_xml_json_xs_dom_xdto_ws =
+  'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' +
+  'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' +
+  'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' +
+  'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' +
+  'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' +
+  'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' +
+  'форматдатыjson экранированиесимволовjson ';
+
+  // v8 системные перечисления - система компоновки данных ==> class
+  var v8_system_enums_data_composition_system =
+  'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' +
+  'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' +
+  'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' +
+  'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' +
+  'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' +
+  'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' +
+  'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' +
+  'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' +
+  'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' +
+  'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных '+
+  'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' +
+  'использованиеусловногооформлениякомпоновкиданных ';
+
+  // v8 системные перечисления - почта ==> class
+  var v8_system_enums_email =
+  'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' +
+  'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' +
+  'статусразборапочтовогосообщения ';
+
+  // v8 системные перечисления - журнал регистрации ==> class
+  var v8_system_enums_logbook =
+  'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ';
+
+  // v8 системные перечисления - криптография ==> class
+  var v8_system_enums_cryptography =
+  'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' +
+  'типхранилищасертификатовкриптографии ';
+
+  // v8 системные перечисления - ZIP ==> class
+  var v8_system_enums_zip =
+  'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' +
+  'режимсохраненияпутейzip уровеньсжатияzip ';
+
+  // v8 системные перечисления -
+  // Блокировка данных, Фоновые задания, Автоматизированное тестирование,
+  // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class
+  var v8_system_enums_other =
+  'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' +
+  'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ';
+
+  // v8 системные перечисления - схема запроса ==> class
+  var v8_system_enums_request_schema =
+  'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' +
+  'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ';
+
+  // v8 системные перечисления - свойства объектов метаданных ==> class
+  var v8_system_enums_properties_of_metadata_objects =
+  'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' +
+  'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' +
+  'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' +
+  'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' +
+  'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' +
+  'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' +
+  'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' +
+  'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' +
+  'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' +
+  'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита '+
+  'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' +
+  'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' +
+  'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' +
+  'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' +
+  'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' +
+  'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' +
+  'типномерадокумента типномеразадачи типформы удалениедвижений ';
+
+  // v8 системные перечисления - разные ==> class
+  var v8_system_enums_differents =
+  'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' +
+  'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' +
+  'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' +
+  'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' +
+  'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' +
+  'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' +
+  'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' +
+  'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' +
+  'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты';
+
+  // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование)
+  var CLASS =
+  v8_system_sets_of_values +
+  v8_system_enums_interface +
+  v8_system_enums_objects_properties +
+  v8_system_enums_exchange_plans +
+  v8_system_enums_tabular_document +
+  v8_system_enums_sheduler +
+  v8_system_enums_formatted_document +
+  v8_system_enums_query +
+  v8_system_enums_report_builder +
+  v8_system_enums_files +
+  v8_system_enums_query_builder +
+  v8_system_enums_data_analysis +
+  v8_system_enums_xml_json_xs_dom_xdto_ws +
+  v8_system_enums_data_composition_system +
+  v8_system_enums_email +
+  v8_system_enums_logbook +
+  v8_system_enums_cryptography +
+  v8_system_enums_zip +
+  v8_system_enums_other +
+  v8_system_enums_request_schema +
+  v8_system_enums_properties_of_metadata_objects +
+  v8_system_enums_differents;
+
+  // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type
+  var v8_shared_object =
+  'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' +
+  'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' +
+  'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' +
+  'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' +
+  'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' +
+  'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' +
+  'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' +
+  'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' +
+  'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' +
+  'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' +
+  'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' +
+  'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' +
+  'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' +
+  'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' +
+  'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' +
+  'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' +
+  'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' +
+  'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' +
+  'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' +
+  'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' +
+  'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' +
+  'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' +
+  'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' +
+  'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' +
+  'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' +
+  'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' +
+  'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' +
+  'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' +
+  'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' +
+  'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' +
+  'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' +
+  'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' +
+  'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' +
+  'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' +
+  'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ';
+
+  // v8 универсальные коллекции значений ==> type
+  var v8_universal_collection =
+  'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' +
+  'фиксированноесоответствие фиксированныймассив ';
+
+  // type : встроенные типы
+  var TYPE =
+  v8_shared_object +
+  v8_universal_collection;
+
+  // literal : примитивные типы
+  var LITERAL = 'null истина ложь неопределено';
+
+  // number : числа
+  var NUMBERS = hljs.inherit(hljs.NUMBER_MODE);
+
+  // string : строки
+  var STRINGS = {
+    className: 'string',
+    begin: '"|\\|', end: '"|$',
+    contains: [{begin: '""'}]
+  };
+
+  // number : даты
+  var DATE = {
+    begin: "'", end: "'", excludeBegin: true, excludeEnd: true,
+    contains: [
+      {
+        className: 'number',
+        begin: '\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}'
+      }
+    ]
+  };
+
+  // comment : комментарии
+  var COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE);
+
+  // meta : инструкции препроцессора, директивы компиляции
+  var META = {
+    className: 'meta',
+
+    begin: '#|&', end: '$',
+    keywords: {
+      $pattern: UNDERSCORE_IDENT_RE,
+      'meta-keyword': KEYWORD + METAKEYWORD
+    },
+    contains: [
+      COMMENTS
+    ]
+  };
+
+  // symbol : метка goto
+  var SYMBOL = {
+    className: 'symbol',
+    begin: '~', end: ';|:', excludeEnd: true
+  };
+
+  // function : объявление процедур и функций
+  var FUNCTION = {
+    className: 'function',
+    variants: [
+      {begin: 'процедура|функция', end: '\\)', keywords: 'процедура функция'},
+      {begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции'}
+    ],
+    contains: [
+      {
+        begin: '\\(', end: '\\)', endsParent : true,
+        contains: [
+          {
+            className: 'params',
+            begin: UNDERSCORE_IDENT_RE, end: ',', excludeEnd: true, endsWithParent: true,
+            keywords: {
+              $pattern: UNDERSCORE_IDENT_RE,
+              keyword: 'знач',
+              literal: LITERAL
+            },
+            contains: [
+              NUMBERS,
+              STRINGS,
+              DATE
+            ]
+          },
+          COMMENTS
+        ]
+      },
+      hljs.inherit(hljs.TITLE_MODE, {begin: UNDERSCORE_IDENT_RE})
+    ]
+  };
+
+  return {
+    name: '1C:Enterprise',
+    case_insensitive: true,
+    keywords: {
+      $pattern: UNDERSCORE_IDENT_RE,
+      keyword: KEYWORD,
+      built_in: BUILTIN,
+      class: CLASS,
+      type: TYPE,
+      literal: LITERAL
+    },
+    contains: [
+      META,
+      FUNCTION,
+      COMMENTS,
+      SYMBOL,
+      NUMBERS,
+      STRINGS,
+      DATE
+    ]
+  };
+}
+
+module.exports = _1c;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/abnf.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/abnf.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Augmented Backus-Naur Form
+Author: Alex McKibben 
+Website: https://tools.ietf.org/html/rfc5234
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function abnf(hljs) {
+  const regexes = {
+    ruleDeclaration: /^[a-zA-Z][a-zA-Z0-9-]*/,
+    unexpectedChars: /[!@#$^&',?+~`|:]/
+  };
+
+  const keywords = [
+    "ALPHA",
+    "BIT",
+    "CHAR",
+    "CR",
+    "CRLF",
+    "CTL",
+    "DIGIT",
+    "DQUOTE",
+    "HEXDIG",
+    "HTAB",
+    "LF",
+    "LWSP",
+    "OCTET",
+    "SP",
+    "VCHAR",
+    "WSP"
+  ];
+
+  const commentMode = hljs.COMMENT(/;/, /$/);
+
+  const terminalBinaryMode = {
+    className: "symbol",
+    begin: /%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/
+  };
+
+  const terminalDecimalMode = {
+    className: "symbol",
+    begin: /%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/
+  };
+
+  const terminalHexadecimalMode = {
+    className: "symbol",
+    begin: /%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/
+  };
+
+  const caseSensitivityIndicatorMode = {
+    className: "symbol",
+    begin: /%[si]/
+  };
+
+  const ruleDeclarationMode = {
+    className: "attribute",
+    begin: concat(regexes.ruleDeclaration, /(?=\s*=)/)
+  };
+
+  return {
+    name: 'Augmented Backus-Naur Form',
+    illegal: regexes.unexpectedChars,
+    keywords: keywords,
+    contains: [
+      ruleDeclarationMode,
+      commentMode,
+      terminalBinaryMode,
+      terminalDecimalMode,
+      terminalHexadecimalMode,
+      caseSensitivityIndicatorMode,
+      hljs.QUOTE_STRING_MODE,
+      hljs.NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = abnf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/accesslog.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/accesslog.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+ Language: Apache Access Log
+ Author: Oleg Efimov 
+ Description: Apache/Nginx Access Logs
+ Website: https://httpd.apache.org/docs/2.4/logs.html#accesslog
+ Audit: 2020
+ */
+
+/** @type LanguageFn */
+function accesslog(_hljs) {
+  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
+  const HTTP_VERBS = [
+    "GET",
+    "POST",
+    "HEAD",
+    "PUT",
+    "DELETE",
+    "CONNECT",
+    "OPTIONS",
+    "PATCH",
+    "TRACE"
+  ];
+  return {
+    name: 'Apache Access Log',
+    contains: [
+      // IP
+      {
+        className: 'number',
+        begin: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,
+        relevance: 5
+      },
+      // Other numbers
+      {
+        className: 'number',
+        begin: /\b\d+\b/,
+        relevance: 0
+      },
+      // Requests
+      {
+        className: 'string',
+        begin: concat(/"/, either(...HTTP_VERBS)),
+        end: /"/,
+        keywords: HTTP_VERBS,
+        illegal: /\n/,
+        relevance: 5,
+        contains: [
+          {
+            begin: /HTTP\/[12]\.\d'/,
+            relevance: 5
+          }
+        ]
+      },
+      // Dates
+      {
+        className: 'string',
+        // dates must have a certain length, this prevents matching
+        // simple array accesses a[123] and [] and other common patterns
+        // found in other languages
+        begin: /\[\d[^\]\n]{8,}\]/,
+        illegal: /\n/,
+        relevance: 1
+      },
+      {
+        className: 'string',
+        begin: /\[/,
+        end: /\]/,
+        illegal: /\n/,
+        relevance: 0
+      },
+      // User agent / relevance boost
+      {
+        className: 'string',
+        begin: /"Mozilla\/\d\.\d \(/,
+        end: /"/,
+        illegal: /\n/,
+        relevance: 3
+      },
+      // Strings
+      {
+        className: 'string',
+        begin: /"/,
+        end: /"/,
+        illegal: /\n/,
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = accesslog;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/actionscript.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/actionscript.js ***!
+  \*****************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: ActionScript
+Author: Alexander Myadzel 
+Category: scripting
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function actionscript(hljs) {
+  const IDENT_RE = /[a-zA-Z_$][a-zA-Z0-9_$]*/;
+  const IDENT_FUNC_RETURN_TYPE_RE = /([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/;
+
+  const AS3_REST_ARG_MODE = {
+    className: 'rest_arg',
+    begin: /[.]{3}/,
+    end: IDENT_RE,
+    relevance: 10
+  };
+
+  return {
+    name: 'ActionScript',
+    aliases: [ 'as' ],
+    keywords: {
+      keyword: 'as break case catch class const continue default delete do dynamic each ' +
+        'else extends final finally for function get if implements import in include ' +
+        'instanceof interface internal is namespace native new override package private ' +
+        'protected public return set static super switch this throw try typeof use var void ' +
+        'while with',
+      literal: 'true false null undefined'
+    },
+    contains: [
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'class',
+        beginKeywords: 'package',
+        end: /\{/,
+        contains: [ hljs.TITLE_MODE ]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class interface',
+        end: /\{/,
+        excludeEnd: true,
+        contains: [
+          { beginKeywords: 'extends implements' },
+          hljs.TITLE_MODE
+        ]
+      },
+      {
+        className: 'meta',
+        beginKeywords: 'import include',
+        end: /;/,
+        keywords: { 'meta-keyword': 'import include' }
+      },
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: /[{;]/,
+        excludeEnd: true,
+        illegal: /\S/,
+        contains: [
+          hljs.TITLE_MODE,
+          {
+            className: 'params',
+            begin: /\(/,
+            end: /\)/,
+            contains: [
+              hljs.APOS_STRING_MODE,
+              hljs.QUOTE_STRING_MODE,
+              hljs.C_LINE_COMMENT_MODE,
+              hljs.C_BLOCK_COMMENT_MODE,
+              AS3_REST_ARG_MODE
+            ]
+          },
+          { begin: concat(/:\s*/, IDENT_FUNC_RETURN_TYPE_RE) }
+        ]
+      },
+      hljs.METHOD_GUARD
+    ],
+    illegal: /#/
+  };
+}
+
+module.exports = actionscript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/ada.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/ada.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Ada
+Author: Lars Schulna 
+Description: Ada is a general-purpose programming language that has great support for saftey critical and real-time applications.
+             It has been developed by the DoD and thus has been used in military and safety-critical applications (like civil aviation).
+             The first version appeared in the 80s, but it's still actively developed today with
+             the newest standard being Ada2012.
+*/
+
+// We try to support full Ada2012
+//
+// We highlight all appearances of types, keywords, literals (string, char, number, bool)
+// and titles (user defined function/procedure/package)
+// CSS classes are set accordingly
+//
+// Languages causing problems for language detection:
+// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword)
+// sql (ada default.txt has a lot of sql keywords)
+
+/** @type LanguageFn */
+function ada(hljs) {
+  // Regular expression for Ada numeric literals.
+  // stolen form the VHDL highlighter
+
+  // Decimal literal:
+  const INTEGER_RE = '\\d(_|\\d)*';
+  const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;
+  const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';
+
+  // Based literal:
+  const BASED_INTEGER_RE = '\\w+';
+  const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';
+
+  const NUMBER_RE = '\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';
+
+  // Identifier regex
+  const ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*';
+
+  // bad chars, only allowed in literals
+  const BAD_CHARS = `[]\\{\\}%#'"`;
+
+  // Ada doesn't have block comments, only line comments
+  const COMMENTS = hljs.COMMENT('--', '$');
+
+  // variable declarations of the form
+  // Foo : Bar := Baz;
+  // where only Bar will be highlighted
+  const VAR_DECLS = {
+    // TODO: These spaces are not required by the Ada syntax
+    // however, I have yet to see handwritten Ada code where
+    // someone does not put spaces around :
+    begin: '\\s+:\\s+',
+    end: '\\s*(:=|;|\\)|=>|$)',
+    // endsWithParent: true,
+    // returnBegin: true,
+    illegal: BAD_CHARS,
+    contains: [
+      {
+        // workaround to avoid highlighting
+        // named loops and declare blocks
+        beginKeywords: 'loop for declare others',
+        endsParent: true
+      },
+      {
+        // properly highlight all modifiers
+        className: 'keyword',
+        beginKeywords: 'not null constant access function procedure in out aliased exception'
+      },
+      {
+        className: 'type',
+        begin: ID_REGEX,
+        endsParent: true,
+        relevance: 0
+      }
+    ]
+  };
+
+  return {
+    name: 'Ada',
+    case_insensitive: true,
+    keywords: {
+      keyword:
+                'abort else new return abs elsif not reverse abstract end ' +
+                'accept entry select access exception of separate aliased exit or some ' +
+                'all others subtype and for out synchronized array function overriding ' +
+                'at tagged generic package task begin goto pragma terminate ' +
+                'body private then if procedure type case in protected constant interface ' +
+                'is raise use declare range delay limited record when delta loop rem while ' +
+                'digits renames with do mod requeue xor',
+      literal:
+                'True False'
+    },
+    contains: [
+      COMMENTS,
+      // strings "foobar"
+      {
+        className: 'string',
+        begin: /"/,
+        end: /"/,
+        contains: [{
+          begin: /""/,
+          relevance: 0
+        }]
+      },
+      // characters ''
+      {
+        // character literals always contain one char
+        className: 'string',
+        begin: /'.'/
+      },
+      {
+        // number literals
+        className: 'number',
+        begin: NUMBER_RE,
+        relevance: 0
+      },
+      {
+        // Attributes
+        className: 'symbol',
+        begin: "'" + ID_REGEX
+      },
+      {
+        // package definition, maybe inside generic
+        className: 'title',
+        begin: '(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?',
+        end: '(is|$)',
+        keywords: 'package body',
+        excludeBegin: true,
+        excludeEnd: true,
+        illegal: BAD_CHARS
+      },
+      {
+        // function/procedure declaration/definition
+        // maybe inside generic
+        begin: '(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+',
+        end: '(\\bis|\\bwith|\\brenames|\\)\\s*;)',
+        keywords: 'overriding function procedure with is renames return',
+        // we need to re-match the 'function' keyword, so that
+        // the title mode below matches only exactly once
+        returnBegin: true,
+        contains:
+                [
+                  COMMENTS,
+                  {
+                    // name of the function/procedure
+                    className: 'title',
+                    begin: '(\\bwith\\s+)?\\b(function|procedure)\\s+',
+                    end: '(\\(|\\s+|$)',
+                    excludeBegin: true,
+                    excludeEnd: true,
+                    illegal: BAD_CHARS
+                  },
+                  // 'self'
+                  // // parameter types
+                  VAR_DECLS,
+                  {
+                    // return type
+                    className: 'type',
+                    begin: '\\breturn\\s+',
+                    end: '(\\s+|;|$)',
+                    keywords: 'return',
+                    excludeBegin: true,
+                    excludeEnd: true,
+                    // we are done with functions
+                    endsParent: true,
+                    illegal: BAD_CHARS
+
+                  }
+                ]
+      },
+      {
+        // new type declarations
+        // maybe inside generic
+        className: 'type',
+        begin: '\\b(sub)?type\\s+',
+        end: '\\s+',
+        keywords: 'type',
+        excludeBegin: true,
+        illegal: BAD_CHARS
+      },
+
+      // see comment above the definition
+      VAR_DECLS
+
+      // no markup
+      // relevance boosters for small snippets
+      // {begin: '\\s*=>\\s*'},
+      // {begin: '\\s*:=\\s*'},
+      // {begin: '\\s+:=\\s+'},
+    ]
+  };
+}
+
+module.exports = ada;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/angelscript.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/angelscript.js ***!
+  \****************************************************************/
+/***/ ((module) => {
+
+/*
+Language: AngelScript
+Author: Melissa Geels 
+Category: scripting
+Website: https://www.angelcode.com/angelscript/
+*/
+
+/** @type LanguageFn */
+function angelscript(hljs) {
+  var builtInTypeMode = {
+    className: 'built_in',
+    begin: '\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)'
+  };
+
+  var objectHandleMode = {
+    className: 'symbol',
+    begin: '[a-zA-Z0-9_]+@'
+  };
+
+  var genericMode = {
+    className: 'keyword',
+    begin: '<', end: '>',
+    contains: [ builtInTypeMode, objectHandleMode ]
+  };
+
+  builtInTypeMode.contains = [ genericMode ];
+  objectHandleMode.contains = [ genericMode ];
+
+  return {
+    name: 'AngelScript',
+    aliases: ['asc'],
+
+    keywords:
+      'for in|0 break continue while do|0 return if else case switch namespace is cast ' +
+      'or and xor not get|0 in inout|10 out override set|0 private public const default|0 ' +
+      'final shared external mixin|10 enum typedef funcdef this super import from interface ' +
+      'abstract|0 try catch protected explicit property',
+
+    // avoid close detection with C# and JS
+    illegal: '(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])',
+
+    contains: [
+      { // 'strings'
+        className: 'string',
+        begin: '\'', end: '\'',
+        illegal: '\\n',
+        contains: [ hljs.BACKSLASH_ESCAPE ],
+        relevance: 0
+      },
+
+      // """heredoc strings"""
+      {
+        className: 'string',
+        begin: '"""', end: '"""'
+      },
+
+      { // "strings"
+        className: 'string',
+        begin: '"', end: '"',
+        illegal: '\\n',
+        contains: [ hljs.BACKSLASH_ESCAPE ],
+        relevance: 0
+      },
+
+      hljs.C_LINE_COMMENT_MODE, // single-line comments
+      hljs.C_BLOCK_COMMENT_MODE, // comment blocks
+
+      { // metadata
+        className: 'string',
+        begin: '^\\s*\\[', end: '\\]',
+      },
+
+      { // interface or namespace declaration
+        beginKeywords: 'interface namespace', end: /\{/,
+        illegal: '[;.\\-]',
+        contains: [
+          { // interface or namespace name
+            className: 'symbol',
+            begin: '[a-zA-Z0-9_]+'
+          }
+        ]
+      },
+
+      { // class declaration
+        beginKeywords: 'class', end: /\{/,
+        illegal: '[;.\\-]',
+        contains: [
+          { // class name
+            className: 'symbol',
+            begin: '[a-zA-Z0-9_]+',
+            contains: [
+              {
+                begin: '[:,]\\s*',
+                contains: [
+                  {
+                    className: 'symbol',
+                    begin: '[a-zA-Z0-9_]+'
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      },
+
+      builtInTypeMode, // built-in types
+      objectHandleMode, // object handles
+
+      { // literals
+        className: 'literal',
+        begin: '\\b(null|true|false)'
+      },
+
+      { // numbers
+        className: 'number',
+        relevance: 0,
+        begin: '(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)'
+      }
+    ]
+  };
+}
+
+module.exports = angelscript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/apache.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/apache.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Apache config
+Author: Ruslan Keba 
+Contributors: Ivan Sagalaev 
+Website: https://httpd.apache.org
+Description: language definition for Apache configuration files (httpd.conf & .htaccess)
+Category: common, config
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function apache(hljs) {
+  const NUMBER_REF = {
+    className: 'number',
+    begin: /[$%]\d+/
+  };
+  const NUMBER = {
+    className: 'number',
+    begin: /\d+/
+  };
+  const IP_ADDRESS = {
+    className: "number",
+    begin: /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/
+  };
+  const PORT_NUMBER = {
+    className: "number",
+    begin: /:\d{1,5}/
+  };
+  return {
+    name: 'Apache config',
+    aliases: [ 'apacheconf' ],
+    case_insensitive: true,
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      {
+        className: 'section',
+        begin: /<\/?/,
+        end: />/,
+        contains: [
+          IP_ADDRESS,
+          PORT_NUMBER,
+          // low relevance prevents us from claming XML/HTML where this rule would
+          // match strings inside of XML tags
+          hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 })
+        ]
+      },
+      {
+        className: 'attribute',
+        begin: /\w+/,
+        relevance: 0,
+        // keywords aren’t needed for highlighting per se, they only boost relevance
+        // for a very generally defined mode (starts with a word, ends with line-end
+        keywords: {
+          nomarkup:
+            'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +
+            'sethandler errordocument loadmodule options header listen serverroot ' +
+            'servername'
+        },
+        starts: {
+          end: /$/,
+          relevance: 0,
+          keywords: { literal: 'on off all deny allow' },
+          contains: [
+            {
+              className: 'meta',
+              begin: /\s\[/,
+              end: /\]$/
+            },
+            {
+              className: 'variable',
+              begin: /[\$%]\{/,
+              end: /\}/,
+              contains: [
+                'self',
+                NUMBER_REF
+              ]
+            },
+            IP_ADDRESS,
+            NUMBER,
+            hljs.QUOTE_STRING_MODE
+          ]
+        }
+      }
+    ],
+    illegal: /\S/
+  };
+}
+
+module.exports = apache;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/applescript.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/applescript.js ***!
+  \****************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: AppleScript
+Authors: Nathan Grigg , Dr. Drang 
+Category: scripting
+Website: https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function applescript(hljs) {
+  const STRING = hljs.inherit(
+    hljs.QUOTE_STRING_MODE, {
+      illegal: null
+    });
+  const PARAMS = {
+    className: 'params',
+    begin: /\(/,
+    end: /\)/,
+    contains: [
+      'self',
+      hljs.C_NUMBER_MODE,
+      STRING
+    ]
+  };
+  const COMMENT_MODE_1 = hljs.COMMENT(/--/, /$/);
+  const COMMENT_MODE_2 = hljs.COMMENT(
+    /\(\*/,
+    /\*\)/,
+    {
+      contains: [
+        'self', // allow nesting
+        COMMENT_MODE_1
+      ]
+    }
+  );
+  const COMMENTS = [
+    COMMENT_MODE_1,
+    COMMENT_MODE_2,
+    hljs.HASH_COMMENT_MODE
+  ];
+
+  const KEYWORD_PATTERNS = [
+    /apart from/,
+    /aside from/,
+    /instead of/,
+    /out of/,
+    /greater than/,
+    /isn't|(doesn't|does not) (equal|come before|come after|contain)/,
+    /(greater|less) than( or equal)?/,
+    /(starts?|ends|begins?) with/,
+    /contained by/,
+    /comes (before|after)/,
+    /a (ref|reference)/,
+    /POSIX (file|path)/,
+    /(date|time) string/,
+    /quoted form/
+  ];
+
+  const BUILT_IN_PATTERNS = [
+    /clipboard info/,
+    /the clipboard/,
+    /info for/,
+    /list (disks|folder)/,
+    /mount volume/,
+    /path to/,
+    /(close|open for) access/,
+    /(get|set) eof/,
+    /current date/,
+    /do shell script/,
+    /get volume settings/,
+    /random number/,
+    /set volume/,
+    /system attribute/,
+    /system info/,
+    /time to GMT/,
+    /(load|run|store) script/,
+    /scripting components/,
+    /ASCII (character|number)/,
+    /localized string/,
+    /choose (application|color|file|file name|folder|from list|remote application|URL)/,
+    /display (alert|dialog)/
+  ];
+
+  return {
+    name: 'AppleScript',
+    aliases: [ 'osascript' ],
+    keywords: {
+      keyword:
+        'about above after against and around as at back before beginning ' +
+        'behind below beneath beside between but by considering ' +
+        'contain contains continue copy div does eighth else end equal ' +
+        'equals error every exit fifth first for fourth from front ' +
+        'get given global if ignoring in into is it its last local me ' +
+        'middle mod my ninth not of on onto or over prop property put ref ' +
+        'reference repeat returning script second set seventh since ' +
+        'sixth some tell tenth that the|0 then third through thru ' +
+        'timeout times to transaction try until where while whose with ' +
+        'without',
+      literal:
+        'AppleScript false linefeed return pi quote result space tab true',
+      built_in:
+        'alias application boolean class constant date file integer list ' +
+        'number real record string text ' +
+        'activate beep count delay launch log offset read round ' +
+        'run say summarize write ' +
+        'character characters contents day frontmost id item length ' +
+        'month name paragraph paragraphs rest reverse running time version ' +
+        'weekday word words year'
+    },
+    contains: [
+      STRING,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'built_in',
+        begin: concat(
+          /\b/,
+          either(...BUILT_IN_PATTERNS),
+          /\b/
+        )
+      },
+      {
+        className: 'built_in',
+        begin: /^\s*return\b/
+      },
+      {
+        className: 'literal',
+        begin:
+          /\b(text item delimiters|current application|missing value)\b/
+      },
+      {
+        className: 'keyword',
+        begin: concat(
+          /\b/,
+          either(...KEYWORD_PATTERNS),
+          /\b/
+        )
+      },
+      {
+        beginKeywords: 'on',
+        illegal: /[${=;\n]/,
+        contains: [
+          hljs.UNDERSCORE_TITLE_MODE,
+          PARAMS
+        ]
+      },
+      ...COMMENTS
+    ],
+    illegal: /\/\/|->|=>|\[\[/
+  };
+}
+
+module.exports = applescript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/arcade.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/arcade.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+ Language: ArcGIS Arcade
+ Category: scripting
+ Author: John Foster 
+ Website: https://developers.arcgis.com/arcade/
+ Description: ArcGIS Arcade is an expression language used in many Esri ArcGIS products such as Pro, Online, Server, Runtime, JavaScript, and Python
+*/
+
+/** @type LanguageFn */
+function arcade(hljs) {
+  const IDENT_RE = '[A-Za-z_][0-9A-Za-z_]*';
+  const KEYWORDS = {
+    keyword:
+      'if for while var new function do return void else break',
+    literal:
+      'BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined',
+    built_in:
+      'Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic ' +
+      'Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd ' +
+      'DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct ' +
+      'DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem ' +
+      'FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf ' +
+      'Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month ' +
+      'MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon ' +
+      'Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum ' +
+      'SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime ' +
+      'TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance ' +
+      'Weekday When Within Year '
+  };
+  const SYMBOL = {
+    className: 'symbol',
+    begin: '\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+'
+  };
+  const NUMBER = {
+    className: 'number',
+    variants: [
+      {
+        begin: '\\b(0[bB][01]+)'
+      },
+      {
+        begin: '\\b(0[oO][0-7]+)'
+      },
+      {
+        begin: hljs.C_NUMBER_RE
+      }
+    ],
+    relevance: 0
+  };
+  const SUBST = {
+    className: 'subst',
+    begin: '\\$\\{',
+    end: '\\}',
+    keywords: KEYWORDS,
+    contains: [] // defined later
+  };
+  const TEMPLATE_STRING = {
+    className: 'string',
+    begin: '`',
+    end: '`',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      SUBST
+    ]
+  };
+  SUBST.contains = [
+    hljs.APOS_STRING_MODE,
+    hljs.QUOTE_STRING_MODE,
+    TEMPLATE_STRING,
+    NUMBER,
+    hljs.REGEXP_MODE
+  ];
+  const PARAMS_CONTAINS = SUBST.contains.concat([
+    hljs.C_BLOCK_COMMENT_MODE,
+    hljs.C_LINE_COMMENT_MODE
+  ]);
+
+  return {
+    name: 'ArcGIS Arcade',
+    keywords: KEYWORDS,
+    contains: [
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      TEMPLATE_STRING,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      SYMBOL,
+      NUMBER,
+      { // object attr container
+        begin: /[{,]\s*/,
+        relevance: 0,
+        contains: [{
+          begin: IDENT_RE + '\\s*:',
+          returnBegin: true,
+          relevance: 0,
+          contains: [{
+            className: 'attr',
+            begin: IDENT_RE,
+            relevance: 0
+          }]
+        }]
+      },
+      { // "value" container
+        begin: '(' + hljs.RE_STARTERS_RE + '|\\b(return)\\b)\\s*',
+        keywords: 'return',
+        contains: [
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          hljs.REGEXP_MODE,
+          {
+            className: 'function',
+            begin: '(\\(.*?\\)|' + IDENT_RE + ')\\s*=>',
+            returnBegin: true,
+            end: '\\s*=>',
+            contains: [{
+              className: 'params',
+              variants: [
+                {
+                  begin: IDENT_RE
+                },
+                {
+                  begin: /\(\s*\)/
+                },
+                {
+                  begin: /\(/,
+                  end: /\)/,
+                  excludeBegin: true,
+                  excludeEnd: true,
+                  keywords: KEYWORDS,
+                  contains: PARAMS_CONTAINS
+                }
+              ]
+            }]
+          }
+        ],
+        relevance: 0
+      },
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: /\{/,
+        excludeEnd: true,
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, {
+            begin: IDENT_RE
+          }),
+          {
+            className: 'params',
+            begin: /\(/,
+            end: /\)/,
+            excludeBegin: true,
+            excludeEnd: true,
+            contains: PARAMS_CONTAINS
+          }
+        ],
+        illegal: /\[|%/
+      },
+      {
+        begin: /\$[(.]/
+      }
+    ],
+    illegal: /#(?!!)/
+  };
+}
+
+module.exports = arcade;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/arduino.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/arduino.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: C++
+Category: common, system
+Website: https://isocpp.org
+*/
+
+/** @type LanguageFn */
+function cPlusPlus(hljs) {
+  // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does
+  // not include such support nor can we be sure all the grammars depending
+  // on it would desire this behavior
+  const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {
+    contains: [
+      {
+        begin: /\\\n/
+      }
+    ]
+  });
+  const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)';
+  const NAMESPACE_RE = '[a-zA-Z_]\\w*::';
+  const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';
+  const FUNCTION_TYPE_RE = '(' +
+    DECLTYPE_AUTO_RE + '|' +
+    optional(NAMESPACE_RE) +
+    '[a-zA-Z_]\\w*' + optional(TEMPLATE_ARGUMENT_RE) +
+  ')';
+  const CPP_PRIMITIVE_TYPES = {
+    className: 'keyword',
+    begin: '\\b[a-z\\d_]*_t\\b'
+  };
+
+  // https://en.cppreference.com/w/cpp/language/escape
+  // \\ \x \xFF \u2837 \u00323747 \374
+  const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)';
+  const STRINGS = {
+    className: 'string',
+    variants: [
+      {
+        begin: '(u8?|U|L)?"',
+        end: '"',
+        illegal: '\\n',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + "|.)",
+        end: '\'',
+        illegal: '.'
+      },
+      hljs.END_SAME_AS_BEGIN({
+        begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
+        end: /\)([^()\\ ]{0,16})"/
+      })
+    ]
+  };
+
+  const NUMBERS = {
+    className: 'number',
+    variants: [
+      {
+        begin: '\\b(0b[01\']+)'
+      },
+      {
+        begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'
+      },
+      {
+        begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)'
+      }
+    ],
+    relevance: 0
+  };
+
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: /#\s*[a-z]+\b/,
+    end: /$/,
+    keywords: {
+      'meta-keyword':
+        'if else elif endif define undef warning error line ' +
+        'pragma _Pragma ifdef ifndef include'
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      hljs.inherit(STRINGS, {
+        className: 'meta-string'
+      }),
+      {
+        className: 'meta-string',
+        begin: /<.*?>/
+      },
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  const TITLE_MODE = {
+    className: 'title',
+    begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,
+    relevance: 0
+  };
+
+  const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\(';
+
+  const COMMON_CPP_HINTS = [
+    'asin',
+    'atan2',
+    'atan',
+    'calloc',
+    'ceil',
+    'cosh',
+    'cos',
+    'exit',
+    'exp',
+    'fabs',
+    'floor',
+    'fmod',
+    'fprintf',
+    'fputs',
+    'free',
+    'frexp',
+    'auto_ptr',
+    'deque',
+    'list',
+    'queue',
+    'stack',
+    'vector',
+    'map',
+    'set',
+    'pair',
+    'bitset',
+    'multiset',
+    'multimap',
+    'unordered_set',
+    'fscanf',
+    'future',
+    'isalnum',
+    'isalpha',
+    'iscntrl',
+    'isdigit',
+    'isgraph',
+    'islower',
+    'isprint',
+    'ispunct',
+    'isspace',
+    'isupper',
+    'isxdigit',
+    'tolower',
+    'toupper',
+    'labs',
+    'ldexp',
+    'log10',
+    'log',
+    'malloc',
+    'realloc',
+    'memchr',
+    'memcmp',
+    'memcpy',
+    'memset',
+    'modf',
+    'pow',
+    'printf',
+    'putchar',
+    'puts',
+    'scanf',
+    'sinh',
+    'sin',
+    'snprintf',
+    'sprintf',
+    'sqrt',
+    'sscanf',
+    'strcat',
+    'strchr',
+    'strcmp',
+    'strcpy',
+    'strcspn',
+    'strlen',
+    'strncat',
+    'strncmp',
+    'strncpy',
+    'strpbrk',
+    'strrchr',
+    'strspn',
+    'strstr',
+    'tanh',
+    'tan',
+    'unordered_map',
+    'unordered_multiset',
+    'unordered_multimap',
+    'priority_queue',
+    'make_pair',
+    'array',
+    'shared_ptr',
+    'abort',
+    'terminate',
+    'abs',
+    'acos',
+    'vfprintf',
+    'vprintf',
+    'vsprintf',
+    'endl',
+    'initializer_list',
+    'unique_ptr',
+    'complex',
+    'imaginary',
+    'std',
+    'string',
+    'wstring',
+    'cin',
+    'cout',
+    'cerr',
+    'clog',
+    'stdin',
+    'stdout',
+    'stderr',
+    'stringstream',
+    'istringstream',
+    'ostringstream'
+  ];
+
+  const CPP_KEYWORDS = {
+    keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +
+      'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +
+      'unsigned long volatile static protected bool template mutable if public friend ' +
+      'do goto auto void enum else break extern using asm case typeid wchar_t ' +
+      'short reinterpret_cast|10 default double register explicit signed typename try this ' +
+      'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +
+      'concept co_await co_return co_yield requires ' +
+      'noexcept static_assert thread_local restrict final override ' +
+      'atomic_bool atomic_char atomic_schar ' +
+      'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +
+      'atomic_ullong new throw return ' +
+      'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',
+    built_in: '_Bool _Complex _Imaginary',
+    _relevance_hints: COMMON_CPP_HINTS,
+    literal: 'true false nullptr NULL'
+  };
+
+  const FUNCTION_DISPATCH = {
+    className: "function.dispatch",
+    relevance: 0,
+    keywords: CPP_KEYWORDS,
+    begin: concat(
+      /\b/,
+      /(?!decltype)/,
+      /(?!if)/,
+      /(?!for)/,
+      /(?!while)/,
+      hljs.IDENT_RE,
+      lookahead(/\s*\(/))
+  };
+
+  const EXPRESSION_CONTAINS = [
+    FUNCTION_DISPATCH,
+    PREPROCESSOR,
+    CPP_PRIMITIVE_TYPES,
+    C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    NUMBERS,
+    STRINGS
+  ];
+
+
+  const EXPRESSION_CONTEXT = {
+    // This mode covers expression context where we can't expect a function
+    // definition and shouldn't highlight anything that looks like one:
+    // `return some()`, `else if()`, `(x*sum(1, 2))`
+    variants: [
+      {
+        begin: /=/,
+        end: /;/
+      },
+      {
+        begin: /\(/,
+        end: /\)/
+      },
+      {
+        beginKeywords: 'new throw return else',
+        end: /;/
+      }
+    ],
+    keywords: CPP_KEYWORDS,
+    contains: EXPRESSION_CONTAINS.concat([
+      {
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        contains: EXPRESSION_CONTAINS.concat([ 'self' ]),
+        relevance: 0
+      }
+    ]),
+    relevance: 0
+  };
+
+  const FUNCTION_DECLARATION = {
+    className: 'function',
+    begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE,
+    returnBegin: true,
+    end: /[{;=]/,
+    excludeEnd: true,
+    keywords: CPP_KEYWORDS,
+    illegal: /[^\w\s\*&:<>.]/,
+    contains: [
+      { // to prevent it from being confused as the function title
+        begin: DECLTYPE_AUTO_RE,
+        keywords: CPP_KEYWORDS,
+        relevance: 0
+      },
+      {
+        begin: FUNCTION_TITLE,
+        returnBegin: true,
+        contains: [ TITLE_MODE ],
+        relevance: 0
+      },
+      // needed because we do not have look-behind on the below rule
+      // to prevent it from grabbing the final : in a :: pair
+      {
+        begin: /::/,
+        relevance: 0
+      },
+      // initializers
+      {
+        begin: /:/,
+        endsWithParent: true,
+        contains: [
+          STRINGS,
+          NUMBERS
+        ]
+      },
+      {
+        className: 'params',
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        relevance: 0,
+        contains: [
+          C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          STRINGS,
+          NUMBERS,
+          CPP_PRIMITIVE_TYPES,
+          // Count matching parentheses.
+          {
+            begin: /\(/,
+            end: /\)/,
+            keywords: CPP_KEYWORDS,
+            relevance: 0,
+            contains: [
+              'self',
+              C_LINE_COMMENT_MODE,
+              hljs.C_BLOCK_COMMENT_MODE,
+              STRINGS,
+              NUMBERS,
+              CPP_PRIMITIVE_TYPES
+            ]
+          }
+        ]
+      },
+      CPP_PRIMITIVE_TYPES,
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      PREPROCESSOR
+    ]
+  };
+
+  return {
+    name: 'C++',
+    aliases: [
+      'cc',
+      'c++',
+      'h++',
+      'hpp',
+      'hh',
+      'hxx',
+      'cxx'
+    ],
+    keywords: CPP_KEYWORDS,
+    illegal: ' rooms (9);`
+          begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<',
+          end: '>',
+          keywords: CPP_KEYWORDS,
+          contains: [
+            'self',
+            CPP_PRIMITIVE_TYPES
+          ]
+        },
+        {
+          begin: hljs.IDENT_RE + '::',
+          keywords: CPP_KEYWORDS
+        },
+        {
+          className: 'class',
+          beginKeywords: 'enum class struct union',
+          end: /[{;:<>=]/,
+          contains: [
+            {
+              beginKeywords: "final class struct"
+            },
+            hljs.TITLE_MODE
+          ]
+        }
+      ]),
+    exports: {
+      preprocessor: PREPROCESSOR,
+      strings: STRINGS,
+      keywords: CPP_KEYWORDS
+    }
+  };
+}
+
+/*
+Language: Arduino
+Author: Stefania Mellai 
+Description: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc.
+Website: https://www.arduino.cc
+*/
+
+/** @type LanguageFn */
+function arduino(hljs) {
+  const ARDUINO_KW = {
+    keyword:
+      'boolean byte word String',
+    built_in:
+      'KeyboardController MouseController SoftwareSerial ' +
+      'EthernetServer EthernetClient LiquidCrystal ' +
+      'RobotControl GSMVoiceCall EthernetUDP EsploraTFT ' +
+      'HttpClient RobotMotor WiFiClient GSMScanner ' +
+      'FileSystem Scheduler GSMServer YunClient YunServer ' +
+      'IPAddress GSMClient GSMModem Keyboard Ethernet ' +
+      'Console GSMBand Esplora Stepper Process ' +
+      'WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage ' +
+      'Client Server GSMPIN FileIO Bridge Serial ' +
+      'EEPROM Stream Mouse Audio Servo File Task ' +
+      'GPRS WiFi Wire TFT GSM SPI SD ',
+    _:
+      'setup loop ' +
+      'runShellCommandAsynchronously analogWriteResolution ' +
+      'retrieveCallingNumber printFirmwareVersion ' +
+      'analogReadResolution sendDigitalPortPair ' +
+      'noListenOnLocalhost readJoystickButton setFirmwareVersion ' +
+      'readJoystickSwitch scrollDisplayRight getVoiceCallStatus ' +
+      'scrollDisplayLeft writeMicroseconds delayMicroseconds ' +
+      'beginTransmission getSignalStrength runAsynchronously ' +
+      'getAsynchronously listenOnLocalhost getCurrentCarrier ' +
+      'readAccelerometer messageAvailable sendDigitalPorts ' +
+      'lineFollowConfig countryNameWrite runShellCommand ' +
+      'readStringUntil rewindDirectory readTemperature ' +
+      'setClockDivider readLightSensor endTransmission ' +
+      'analogReference detachInterrupt countryNameRead ' +
+      'attachInterrupt encryptionType readBytesUntil ' +
+      'robotNameWrite readMicrophone robotNameRead cityNameWrite ' +
+      'userNameWrite readJoystickY readJoystickX mouseReleased ' +
+      'openNextFile scanNetworks noInterrupts digitalWrite ' +
+      'beginSpeaker mousePressed isActionDone mouseDragged ' +
+      'displayLogos noAutoscroll addParameter remoteNumber ' +
+      'getModifiers keyboardRead userNameRead waitContinue ' +
+      'processInput parseCommand printVersion readNetworks ' +
+      'writeMessage blinkVersion cityNameRead readMessage ' +
+      'setDataMode parsePacket isListening setBitOrder ' +
+      'beginPacket isDirectory motorsWrite drawCompass ' +
+      'digitalRead clearScreen serialEvent rightToLeft ' +
+      'setTextSize leftToRight requestFrom keyReleased ' +
+      'compassRead analogWrite interrupts WiFiServer ' +
+      'disconnect playMelody parseFloat autoscroll ' +
+      'getPINUsed setPINUsed setTimeout sendAnalog ' +
+      'readSlider analogRead beginWrite createChar ' +
+      'motorsStop keyPressed tempoWrite readButton ' +
+      'subnetMask debugPrint macAddress writeGreen ' +
+      'randomSeed attachGPRS readString sendString ' +
+      'remotePort releaseAll mouseMoved background ' +
+      'getXChange getYChange answerCall getResult ' +
+      'voiceCall endPacket constrain getSocket writeJSON ' +
+      'getButton available connected findUntil readBytes ' +
+      'exitValue readGreen writeBlue startLoop IPAddress ' +
+      'isPressed sendSysex pauseMode gatewayIP setCursor ' +
+      'getOemKey tuneWrite noDisplay loadImage switchPIN ' +
+      'onRequest onReceive changePIN playFile noBuffer ' +
+      'parseInt overflow checkPIN knobRead beginTFT ' +
+      'bitClear updateIR bitWrite position writeRGB ' +
+      'highByte writeRed setSpeed readBlue noStroke ' +
+      'remoteIP transfer shutdown hangCall beginSMS ' +
+      'endWrite attached maintain noCursor checkReg ' +
+      'checkPUK shiftOut isValid shiftIn pulseIn ' +
+      'connect println localIP pinMode getIMEI ' +
+      'display noBlink process getBand running beginSD ' +
+      'drawBMP lowByte setBand release bitRead prepare ' +
+      'pointTo readRed setMode noFill remove listen ' +
+      'stroke detach attach noTone exists buffer ' +
+      'height bitSet circle config cursor random ' +
+      'IRread setDNS endSMS getKey micros ' +
+      'millis begin print write ready flush width ' +
+      'isPIN blink clear press mkdir rmdir close ' +
+      'point yield image BSSID click delay ' +
+      'read text move peek beep rect line open ' +
+      'seek fill size turn stop home find ' +
+      'step tone sqrt RSSI SSID ' +
+      'end bit tan cos sin pow map abs max ' +
+      'min get run put',
+    literal:
+      'DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE ' +
+      'REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP ' +
+      'SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN ' +
+      'INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL ' +
+      'DEFAULT OUTPUT INPUT HIGH LOW'
+  };
+
+  const ARDUINO = cPlusPlus(hljs);
+
+  const kws = /** @type {Record} */ (ARDUINO.keywords);
+
+  kws.keyword += ' ' + ARDUINO_KW.keyword;
+  kws.literal += ' ' + ARDUINO_KW.literal;
+  kws.built_in += ' ' + ARDUINO_KW.built_in;
+  kws._ += ' ' + ARDUINO_KW._;
+
+  ARDUINO.name = 'Arduino';
+  ARDUINO.aliases = ['ino'];
+  ARDUINO.supersetOf = "cpp";
+
+  return ARDUINO;
+}
+
+module.exports = arduino;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/armasm.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/armasm.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: ARM Assembly
+Author: Dan Panzarella 
+Description: ARM Assembly including Thumb and Thumb2 instructions
+Category: assembler
+*/
+
+/** @type LanguageFn */
+function armasm(hljs) {
+  // local labels: %?[FB]?[AT]?\d{1,2}\w+
+
+  const COMMENT = {
+    variants: [
+      hljs.COMMENT('^[ \\t]*(?=#)', '$', {
+        relevance: 0,
+        excludeBegin: true
+      }),
+      hljs.COMMENT('[;@]', '$', {
+        relevance: 0
+      }),
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  return {
+    name: 'ARM Assembly',
+    case_insensitive: true,
+    aliases: ['arm'],
+    keywords: {
+      $pattern: '\\.?' + hljs.IDENT_RE,
+      meta:
+        // GNU preprocs
+        '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ' +
+        // ARM directives
+        'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',
+      built_in:
+        'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 ' + // standard registers
+        'pc lr sp ip sl sb fp ' + // typical regs plus backward compatibility
+        'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 ' + // more regs and fp
+        'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 ' + // coprocessor regs
+        'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 ' + // more coproc
+        'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 ' + // advanced SIMD NEON regs
+
+        // program status registers
+        'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf ' +
+        'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf ' +
+
+        // NEON and VFP registers
+        's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 ' +
+        's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 ' +
+        'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 ' +
+        'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' +
+
+        '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'
+    },
+    contains: [
+      {
+        className: 'keyword',
+        begin: '\\b(' + // mnemonics
+            'adc|' +
+            '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|' +
+            'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|' +
+            'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|' +
+            'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|' +
+            'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|' +
+            'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|' +
+            'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|' +
+            'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|' +
+            'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|' +
+            'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|' +
+            '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|' +
+            'wfe|wfi|yield' +
+        ')' +
+        '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?' + // condition codes
+        '[sptrx]?' + // legal postfixes
+        '(?=\\s)' // followed by space
+      },
+      COMMENT,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        begin: '\'',
+        end: '[^\\\\]\'',
+        relevance: 0
+      },
+      {
+        className: 'title',
+        begin: '\\|',
+        end: '\\|',
+        illegal: '\\n',
+        relevance: 0
+      },
+      {
+        className: 'number',
+        variants: [
+          { // hex
+            begin: '[#$=]?0x[0-9a-f]+'
+          },
+          { // bin
+            begin: '[#$=]?0b[01]+'
+          },
+          { // literal
+            begin: '[#$=]\\d+'
+          },
+          { // bare number
+            begin: '\\b\\d+'
+          }
+        ],
+        relevance: 0
+      },
+      {
+        className: 'symbol',
+        variants: [
+          { // GNU ARM syntax
+            begin: '^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:'
+          },
+          { // ARM syntax
+            begin: '^[a-z_\\.\\$][a-z0-9_\\.\\$]+'
+          },
+          { // label reference
+            begin: '[=#]\\w+'
+          }
+        ],
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = armasm;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/asciidoc.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/asciidoc.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: AsciiDoc
+Requires: xml.js
+Author: Dan Allen 
+Website: http://asciidoc.org
+Description: A semantic, text-based document format that can be exported to HTML, DocBook and other backends.
+Category: markup
+*/
+
+/** @type LanguageFn */
+function asciidoc(hljs) {
+  const HORIZONTAL_RULE = {
+    begin: '^\'{3,}[ \\t]*$',
+    relevance: 10
+  };
+  const ESCAPED_FORMATTING = [
+    // escaped constrained formatting marks (i.e., \* \_ or \`)
+    {
+      begin: /\\[*_`]/
+    },
+    // escaped unconstrained formatting marks (i.e., \\** \\__ or \\``)
+    // must ignore until the next formatting marks
+    // this rule might not be 100% compliant with Asciidoctor 2.0 but we are entering undefined behavior territory...
+    {
+      begin: /\\\\\*{2}[^\n]*?\*{2}/
+    },
+    {
+      begin: /\\\\_{2}[^\n]*_{2}/
+    },
+    {
+      begin: /\\\\`{2}[^\n]*`{2}/
+    },
+    // guard: constrained formatting mark may not be preceded by ":", ";" or
+    // "}". match these so the constrained rule doesn't see them
+    {
+      begin: /[:;}][*_`](?![*_`])/
+    }
+  ];
+  const STRONG = [
+    // inline unconstrained strong (single line)
+    {
+      className: 'strong',
+      begin: /\*{2}([^\n]+?)\*{2}/
+    },
+    // inline unconstrained strong (multi-line)
+    {
+      className: 'strong',
+      begin: concat(
+        /\*\*/,
+        /((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,
+        /(\*(?!\*)|\\[^\n]|[^*\n\\])*/,
+        /\*\*/
+      ),
+      relevance: 0
+    },
+    // inline constrained strong (single line)
+    {
+      className: 'strong',
+      // must not precede or follow a word character
+      begin: /\B\*(\S|\S[^\n]*?\S)\*(?!\w)/
+    },
+    // inline constrained strong (multi-line)
+    {
+      className: 'strong',
+      // must not precede or follow a word character
+      begin: /\*[^\s]([^\n]+\n)+([^\n]+)\*/
+    }
+  ];
+  const EMPHASIS = [
+    // inline unconstrained emphasis (single line)
+    {
+      className: 'emphasis',
+      begin: /_{2}([^\n]+?)_{2}/
+    },
+    // inline unconstrained emphasis (multi-line)
+    {
+      className: 'emphasis',
+      begin: concat(
+        /__/,
+        /((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,
+        /(_(?!_)|\\[^\n]|[^_\n\\])*/,
+        /__/
+      ),
+      relevance: 0
+    },
+    // inline constrained emphasis (single line)
+    {
+      className: 'emphasis',
+      // must not precede or follow a word character
+      begin: /\b_(\S|\S[^\n]*?\S)_(?!\w)/
+    },
+    // inline constrained emphasis (multi-line)
+    {
+      className: 'emphasis',
+      // must not precede or follow a word character
+      begin: /_[^\s]([^\n]+\n)+([^\n]+)_/
+    },
+    // inline constrained emphasis using single quote (legacy)
+    {
+      className: 'emphasis',
+      // must not follow a word character or be followed by a single quote or space
+      begin: '\\B\'(?![\'\\s])',
+      end: '(\\n{2}|\')',
+      // allow escaped single quote followed by word char
+      contains: [{
+        begin: '\\\\\'\\w',
+        relevance: 0
+      }],
+      relevance: 0
+    }
+  ];
+  const ADMONITION = {
+    className: 'symbol',
+    begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+',
+    relevance: 10
+  };
+  const BULLET_LIST = {
+    className: 'bullet',
+    begin: '^(\\*+|-+|\\.+|[^\\n]+?::)\\s+'
+  };
+
+  return {
+    name: 'AsciiDoc',
+    aliases: ['adoc'],
+    contains: [
+      // block comment
+      hljs.COMMENT(
+        '^/{4,}\\n',
+        '\\n/{4,}$',
+        // can also be done as...
+        // '^/{4,}$',
+        // '^/{4,}$',
+        {
+          relevance: 10
+        }
+      ),
+      // line comment
+      hljs.COMMENT(
+        '^//',
+        '$',
+        {
+          relevance: 0
+        }
+      ),
+      // title
+      {
+        className: 'title',
+        begin: '^\\.\\w.*$'
+      },
+      // example, admonition & sidebar blocks
+      {
+        begin: '^[=\\*]{4,}\\n',
+        end: '\\n^[=\\*]{4,}$',
+        relevance: 10
+      },
+      // headings
+      {
+        className: 'section',
+        relevance: 10,
+        variants: [
+          {
+            begin: '^(={1,6})[ \t].+?([ \t]\\1)?$'
+          },
+          {
+            begin: '^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$'
+          }
+        ]
+      },
+      // document attributes
+      {
+        className: 'meta',
+        begin: '^:.+?:',
+        end: '\\s',
+        excludeEnd: true,
+        relevance: 10
+      },
+      // block attributes
+      {
+        className: 'meta',
+        begin: '^\\[.+?\\]$',
+        relevance: 0
+      },
+      // quoteblocks
+      {
+        className: 'quote',
+        begin: '^_{4,}\\n',
+        end: '\\n_{4,}$',
+        relevance: 10
+      },
+      // listing and literal blocks
+      {
+        className: 'code',
+        begin: '^[\\-\\.]{4,}\\n',
+        end: '\\n[\\-\\.]{4,}$',
+        relevance: 10
+      },
+      // passthrough blocks
+      {
+        begin: '^\\+{4,}\\n',
+        end: '\\n\\+{4,}$',
+        contains: [{
+          begin: '<',
+          end: '>',
+          subLanguage: 'xml',
+          relevance: 0
+        }],
+        relevance: 10
+      },
+
+      BULLET_LIST,
+      ADMONITION,
+      ...ESCAPED_FORMATTING,
+      ...STRONG,
+      ...EMPHASIS,
+
+      // inline smart quotes
+      {
+        className: 'string',
+        variants: [
+          {
+            begin: "``.+?''"
+          },
+          {
+            begin: "`.+?'"
+          }
+        ]
+      },
+      // inline unconstrained emphasis
+      {
+        className: 'code',
+        begin: /`{2}/,
+        end: /(\n{2}|`{2})/
+      },
+      // inline code snippets (TODO should get same treatment as strong and emphasis)
+      {
+        className: 'code',
+        begin: '(`.+?`|\\+.+?\\+)',
+        relevance: 0
+      },
+      // indented literal block
+      {
+        className: 'code',
+        begin: '^[ \\t]',
+        end: '$',
+        relevance: 0
+      },
+      HORIZONTAL_RULE,
+      // images and links
+      {
+        begin: '(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]',
+        returnBegin: true,
+        contains: [
+          {
+            begin: '(link|image:?):',
+            relevance: 0
+          },
+          {
+            className: 'link',
+            begin: '\\w',
+            end: '[^\\[]+',
+            relevance: 0
+          },
+          {
+            className: 'string',
+            begin: '\\[',
+            end: '\\]',
+            excludeBegin: true,
+            excludeEnd: true,
+            relevance: 0
+          }
+        ],
+        relevance: 10
+      }
+    ]
+  };
+}
+
+module.exports = asciidoc;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/aspectj.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/aspectj.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: AspectJ
+Author: Hakan Ozler 
+Website: https://www.eclipse.org/aspectj/
+Description: Syntax Highlighting for the AspectJ Language which is a general-purpose aspect-oriented extension to the Java programming language.
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function aspectj(hljs) {
+  const KEYWORDS =
+    'false synchronized int abstract float private char boolean static null if const ' +
+    'for true while long throw strictfp finally protected import native final return void ' +
+    'enum else extends implements break transient new catch instanceof byte super volatile case ' +
+    'assert short package default double public try this switch continue throws privileged ' +
+    'aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization ' +
+    'staticinitialization withincode target within execution getWithinTypeName handler ' +
+    'thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents ' +
+    'warning error soft precedence thisAspectInstance';
+  const SHORTKEYS = 'get set args call';
+
+  return {
+    name: 'AspectJ',
+    keywords: KEYWORDS,
+    illegal: /<\/|#/,
+    contains: [
+      hljs.COMMENT(
+        /\/\*\*/,
+        /\*\//,
+        {
+          relevance: 0,
+          contains: [
+            {
+              // eat up @'s in emails to prevent them to be recognized as doctags
+              begin: /\w+@/,
+              relevance: 0
+            },
+            {
+              className: 'doctag',
+              begin: /@[A-Za-z]+/
+            }
+          ]
+        }
+      ),
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'class',
+        beginKeywords: 'aspect',
+        end: /[{;=]/,
+        excludeEnd: true,
+        illegal: /[:;"\[\]]/,
+        contains: [
+          {
+            beginKeywords: 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton'
+          },
+          hljs.UNDERSCORE_TITLE_MODE,
+          {
+            begin: /\([^\)]*/,
+            end: /[)]+/,
+            keywords: KEYWORDS + ' ' + SHORTKEYS,
+            excludeEnd: false
+          }
+        ]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class interface',
+        end: /[{;=]/,
+        excludeEnd: true,
+        relevance: 0,
+        keywords: 'class interface',
+        illegal: /[:"\[\]]/,
+        contains: [
+          {
+            beginKeywords: 'extends implements'
+          },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      {
+        // AspectJ Constructs
+        beginKeywords: 'pointcut after before around throwing returning',
+        end: /[)]/,
+        excludeEnd: false,
+        illegal: /["\[\]]/,
+        contains: [
+          {
+            begin: concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/),
+            returnBegin: true,
+            contains: [ hljs.UNDERSCORE_TITLE_MODE ]
+          }
+        ]
+      },
+      {
+        begin: /[:]/,
+        returnBegin: true,
+        end: /[{;]/,
+        relevance: 0,
+        excludeEnd: false,
+        keywords: KEYWORDS,
+        illegal: /["\[\]]/,
+        contains: [
+          {
+            begin: concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/),
+            keywords: KEYWORDS + ' ' + SHORTKEYS,
+            relevance: 0
+          },
+          hljs.QUOTE_STRING_MODE
+        ]
+      },
+      {
+        // this prevents 'new Name(...), or throw ...' from being recognized as a function definition
+        beginKeywords: 'new throw',
+        relevance: 0
+      },
+      {
+        // the function class is a bit different for AspectJ compared to the Java language
+        className: 'function',
+        begin: /\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,
+        returnBegin: true,
+        end: /[{;=]/,
+        keywords: KEYWORDS,
+        excludeEnd: true,
+        contains: [
+          {
+            begin: concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/),
+            returnBegin: true,
+            relevance: 0,
+            contains: [ hljs.UNDERSCORE_TITLE_MODE ]
+          },
+          {
+            className: 'params',
+            begin: /\(/,
+            end: /\)/,
+            relevance: 0,
+            keywords: KEYWORDS,
+            contains: [
+              hljs.APOS_STRING_MODE,
+              hljs.QUOTE_STRING_MODE,
+              hljs.C_NUMBER_MODE,
+              hljs.C_BLOCK_COMMENT_MODE
+            ]
+          },
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      hljs.C_NUMBER_MODE,
+      {
+        // annotation is also used in this language
+        className: 'meta',
+        begin: /@[A-Za-z]+/
+      }
+    ]
+  };
+}
+
+module.exports = aspectj;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/autohotkey.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/autohotkey.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: AutoHotkey
+Author: Seongwon Lee 
+Description: AutoHotkey language definition
+Category: scripting
+*/
+
+/** @type LanguageFn */
+function autohotkey(hljs) {
+  const BACKTICK_ESCAPE = {
+    begin: '`[\\s\\S]'
+  };
+
+  return {
+    name: 'AutoHotkey',
+    case_insensitive: true,
+    aliases: ['ahk'],
+    keywords: {
+      keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',
+      literal: 'true false NOT AND OR',
+      built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel'
+    },
+    contains: [
+      BACKTICK_ESCAPE,
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {
+        contains: [BACKTICK_ESCAPE]
+      }),
+      hljs.COMMENT(';', '$', {
+        relevance: 0
+      }),
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'number',
+        begin: hljs.NUMBER_RE,
+        relevance: 0
+      },
+      {
+        // subst would be the most accurate however fails the point of
+        // highlighting. variable is comparably the most accurate that actually
+        // has some effect
+        className: 'variable',
+        begin: '%[a-zA-Z0-9#_$@]+%'
+      },
+      {
+        className: 'built_in',
+        begin: '^\\s*\\w+\\s*(,|%)'
+        // I don't really know if this is totally relevant
+      },
+      {
+        // symbol would be most accurate however is highlighted just like
+        // built_in and that makes up a lot of AutoHotkey code meaning that it
+        // would fail to highlight anything
+        className: 'title',
+        variants: [
+          {
+            begin: '^[^\\n";]+::(?!=)'
+          },
+          {
+            begin: '^[^\\n";]+:(?!=)',
+            // zero relevance as it catches a lot of things
+            // followed by a single ':' in many languages
+            relevance: 0
+          }
+        ]
+      },
+      {
+        className: 'meta',
+        begin: '^\\s*#\\w+',
+        end: '$',
+        relevance: 0
+      },
+      {
+        className: 'built_in',
+        begin: 'A_[a-zA-Z0-9]+'
+      },
+      {
+        // consecutive commas, not for highlighting but just for relevance
+        begin: ',\\s*,'
+      }
+    ]
+  };
+}
+
+module.exports = autohotkey;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/autoit.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/autoit.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: AutoIt
+Author: Manh Tuan 
+Description: AutoIt language definition
+Category: scripting
+*/
+
+/** @type LanguageFn */
+function autoit(hljs) {
+  const KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' +
+        'Dim Do Else ElseIf EndFunc EndIf EndSelect ' +
+        'EndSwitch EndWith Enum Exit ExitLoop For Func ' +
+        'Global If In Local Next ReDim Return Select Static ' +
+        'Step Switch Then To Until Volatile WEnd While With';
+
+  const DIRECTIVES = [
+    "EndRegion",
+    "forcedef",
+    "forceref",
+    "ignorefunc",
+    "include",
+    "include-once",
+    "NoTrayIcon",
+    "OnAutoItStartRegister",
+    "pragma",
+    "Region",
+    "RequireAdmin",
+    "Tidy_Off",
+    "Tidy_On",
+    "Tidy_Parameters"
+  ];
+
+  const LITERAL = 'True False And Null Not Or Default';
+
+  const BUILT_IN
+          = 'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive WinWaitClose WinWaitNotActive';
+
+  const COMMENT = {
+    variants: [
+      hljs.COMMENT(';', '$', {
+        relevance: 0
+      }),
+      hljs.COMMENT('#cs', '#ce'),
+      hljs.COMMENT('#comments-start', '#comments-end')
+    ]
+  };
+
+  const VARIABLE = {
+    begin: '\\$[A-z0-9_]+'
+  };
+
+  const STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: /"/,
+        end: /"/,
+        contains: [{
+          begin: /""/,
+          relevance: 0
+        }]
+      },
+      {
+        begin: /'/,
+        end: /'/,
+        contains: [{
+          begin: /''/,
+          relevance: 0
+        }]
+      }
+    ]
+  };
+
+  const NUMBER = {
+    variants: [
+      hljs.BINARY_NUMBER_MODE,
+      hljs.C_NUMBER_MODE
+    ]
+  };
+
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: '#',
+    end: '$',
+    keywords: {
+      'meta-keyword': DIRECTIVES
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      {
+        beginKeywords: 'include',
+        keywords: {
+          'meta-keyword': 'include'
+        },
+        end: '$',
+        contains: [
+          STRING,
+          {
+            className: 'meta-string',
+            variants: [
+              {
+                begin: '<',
+                end: '>'
+              },
+              {
+                begin: /"/,
+                end: /"/,
+                contains: [{
+                  begin: /""/,
+                  relevance: 0
+                }]
+              },
+              {
+                begin: /'/,
+                end: /'/,
+                contains: [{
+                  begin: /''/,
+                  relevance: 0
+                }]
+              }
+            ]
+          }
+        ]
+      },
+      STRING,
+      COMMENT
+    ]
+  };
+
+  const CONSTANT = {
+    className: 'symbol',
+    // begin: '@',
+    // end: '$',
+    // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR',
+    // relevance: 5
+    begin: '@[A-z0-9_]+'
+  };
+
+  const FUNCTION = {
+    className: 'function',
+    beginKeywords: 'Func',
+    end: '$',
+    illegal: '\\$|\\[|%',
+    contains: [
+      hljs.UNDERSCORE_TITLE_MODE,
+      {
+        className: 'params',
+        begin: '\\(',
+        end: '\\)',
+        contains: [
+          VARIABLE,
+          STRING,
+          NUMBER
+        ]
+      }
+    ]
+  };
+
+  return {
+    name: 'AutoIt',
+    case_insensitive: true,
+    illegal: /\/\*/,
+    keywords: {
+      keyword: KEYWORDS,
+      built_in: BUILT_IN,
+      literal: LITERAL
+    },
+    contains: [
+      COMMENT,
+      VARIABLE,
+      STRING,
+      NUMBER,
+      PREPROCESSOR,
+      CONSTANT,
+      FUNCTION
+    ]
+  };
+}
+
+module.exports = autoit;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/avrasm.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/avrasm.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: AVR Assembly
+Author: Vladimir Ermakov 
+Category: assembler
+Website: https://www.microchip.com/webdoc/avrassembler/avrassembler.wb_instruction_list.html
+*/
+
+/** @type LanguageFn */
+function avrasm(hljs) {
+  return {
+    name: 'AVR Assembly',
+    case_insensitive: true,
+    keywords: {
+      $pattern: '\\.?' + hljs.IDENT_RE,
+      keyword:
+        /* mnemonic */
+        'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' +
+        'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' +
+        'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' +
+        'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' +
+        'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' +
+        'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' +
+        'subi swap tst wdr',
+      built_in:
+        /* general purpose registers */
+        'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' +
+        'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' +
+        /* IO Registers (ATMega128) */
+        'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' +
+        'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' +
+        'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' +
+        'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' +
+        'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' +
+        'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' +
+        'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' +
+        'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf',
+      meta:
+        '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' +
+        '.listmac .macro .nolist .org .set'
+    },
+    contains: [
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.COMMENT(
+        ';',
+        '$',
+        {
+          relevance: 0
+        }
+      ),
+      hljs.C_NUMBER_MODE, // 0x..., decimal, float
+      hljs.BINARY_NUMBER_MODE, // 0b...
+      {
+        className: 'number',
+        begin: '\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o...
+      },
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        begin: '\'',
+        end: '[^\\\\]\'',
+        illegal: '[^\\\\][^\']'
+      },
+      {
+        className: 'symbol',
+        begin: '^[A-Za-z0-9_.$]+:'
+      },
+      {
+        className: 'meta',
+        begin: '#',
+        end: '$'
+      },
+      { // substitution within a macro
+        className: 'subst',
+        begin: '@[0-9]+'
+      }
+    ]
+  };
+}
+
+module.exports = avrasm;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/awk.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/awk.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Awk
+Author: Matthew Daly 
+Website: https://www.gnu.org/software/gawk/manual/gawk.html
+Description: language definition for Awk scripts
+*/
+
+/** @type LanguageFn */
+function awk(hljs) {
+  const VARIABLE = {
+    className: 'variable',
+    variants: [
+      {
+        begin: /\$[\w\d#@][\w\d_]*/
+      },
+      {
+        begin: /\$\{(.*?)\}/
+      }
+    ]
+  };
+  const KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';
+  const STRING = {
+    className: 'string',
+    contains: [hljs.BACKSLASH_ESCAPE],
+    variants: [
+      {
+        begin: /(u|b)?r?'''/,
+        end: /'''/,
+        relevance: 10
+      },
+      {
+        begin: /(u|b)?r?"""/,
+        end: /"""/,
+        relevance: 10
+      },
+      {
+        begin: /(u|r|ur)'/,
+        end: /'/,
+        relevance: 10
+      },
+      {
+        begin: /(u|r|ur)"/,
+        end: /"/,
+        relevance: 10
+      },
+      {
+        begin: /(b|br)'/,
+        end: /'/
+      },
+      {
+        begin: /(b|br)"/,
+        end: /"/
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE
+    ]
+  };
+  return {
+    name: 'Awk',
+    keywords: {
+      keyword: KEYWORDS
+    },
+    contains: [
+      VARIABLE,
+      STRING,
+      hljs.REGEXP_MODE,
+      hljs.HASH_COMMENT_MODE,
+      hljs.NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = awk;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/axapta.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/axapta.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Microsoft X++
+Description: X++ is a language used in Microsoft Dynamics 365, Dynamics AX, and Axapta.
+Author: Dmitri Roudakov 
+Website: https://dynamics.microsoft.com/en-us/ax-overview/
+Category: enterprise
+*/
+
+/** @type LanguageFn */
+function axapta(hljs) {
+  const BUILT_IN_KEYWORDS = [
+    'anytype',
+    'boolean',
+    'byte',
+    'char',
+    'container',
+    'date',
+    'double',
+    'enum',
+    'guid',
+    'int',
+    'int64',
+    'long',
+    'real',
+    'short',
+    'str',
+    'utcdatetime',
+    'var'
+  ];
+
+  const LITERAL_KEYWORDS = [
+    'default',
+    'false',
+    'null',
+    'true'
+  ];
+
+  const NORMAL_KEYWORDS = [
+    'abstract',
+    'as',
+    'asc',
+    'avg',
+    'break',
+    'breakpoint',
+    'by',
+    'byref',
+    'case',
+    'catch',
+    'changecompany',
+    'class',
+    'client',
+    'client',
+    'common',
+    'const',
+    'continue',
+    'count',
+    'crosscompany',
+    'delegate',
+    'delete_from',
+    'desc',
+    'display',
+    'div',
+    'do',
+    'edit',
+    'else',
+    'eventhandler',
+    'exists',
+    'extends',
+    'final',
+    'finally',
+    'firstfast',
+    'firstonly',
+    'firstonly1',
+    'firstonly10',
+    'firstonly100',
+    'firstonly1000',
+    'flush',
+    'for',
+    'forceliterals',
+    'forcenestedloop',
+    'forceplaceholders',
+    'forceselectorder',
+    'forupdate',
+    'from',
+    'generateonly',
+    'group',
+    'hint',
+    'if',
+    'implements',
+    'in',
+    'index',
+    'insert_recordset',
+    'interface',
+    'internal',
+    'is',
+    'join',
+    'like',
+    'maxof',
+    'minof',
+    'mod',
+    'namespace',
+    'new',
+    'next',
+    'nofetch',
+    'notexists',
+    'optimisticlock',
+    'order',
+    'outer',
+    'pessimisticlock',
+    'print',
+    'private',
+    'protected',
+    'public',
+    'readonly',
+    'repeatableread',
+    'retry',
+    'return',
+    'reverse',
+    'select',
+    'server',
+    'setting',
+    'static',
+    'sum',
+    'super',
+    'switch',
+    'this',
+    'throw',
+    'try',
+    'ttsabort',
+    'ttsbegin',
+    'ttscommit',
+    'unchecked',
+    'update_recordset',
+    'using',
+    'validtimestate',
+    'void',
+    'where',
+    'while'
+  ];
+
+  const KEYWORDS = {
+    keyword: NORMAL_KEYWORDS,
+    built_in: BUILT_IN_KEYWORDS,
+    literal: LITERAL_KEYWORDS
+  };
+
+  return {
+    name: 'X++',
+    aliases: ['x++'],
+    keywords: KEYWORDS,
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'meta',
+        begin: '#',
+        end: '$'
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class interface',
+        end: /\{/,
+        excludeEnd: true,
+        illegal: ':',
+        contains: [
+          {
+            beginKeywords: 'extends implements'
+          },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = axapta;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/bash.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/bash.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Bash
+Author: vah 
+Contributrors: Benjamin Pannell 
+Website: https://www.gnu.org/software/bash/
+Category: common
+*/
+
+/** @type LanguageFn */
+function bash(hljs) {
+  const VAR = {};
+  const BRACED_VAR = {
+    begin: /\$\{/,
+    end:/\}/,
+    contains: [
+      "self",
+      {
+        begin: /:-/,
+        contains: [ VAR ]
+      } // default values
+    ]
+  };
+  Object.assign(VAR,{
+    className: 'variable',
+    variants: [
+      {begin: concat(/\$[\w\d#@][\w\d_]*/,
+        // negative look-ahead tries to avoid matching patterns that are not
+        // Perl at all like $ident$, @ident@, etc.
+        `(?![\\w\\d])(?![$])`) },
+      BRACED_VAR
+    ]
+  });
+
+  const SUBST = {
+    className: 'subst',
+    begin: /\$\(/, end: /\)/,
+    contains: [hljs.BACKSLASH_ESCAPE]
+  };
+  const HERE_DOC = {
+    begin: /<<-?\s*(?=\w+)/,
+    starts: {
+      contains: [
+        hljs.END_SAME_AS_BEGIN({
+          begin: /(\w+)/,
+          end: /(\w+)/,
+          className: 'string'
+        })
+      ]
+    }
+  };
+  const QUOTE_STRING = {
+    className: 'string',
+    begin: /"/, end: /"/,
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      VAR,
+      SUBST
+    ]
+  };
+  SUBST.contains.push(QUOTE_STRING);
+  const ESCAPED_QUOTE = {
+    className: '',
+    begin: /\\"/
+
+  };
+  const APOS_STRING = {
+    className: 'string',
+    begin: /'/, end: /'/
+  };
+  const ARITHMETIC = {
+    begin: /\$\(\(/,
+    end: /\)\)/,
+    contains: [
+      { begin: /\d+#[0-9a-f]+/, className: "number" },
+      hljs.NUMBER_MODE,
+      VAR
+    ]
+  };
+  const SH_LIKE_SHELLS = [
+    "fish",
+    "bash",
+    "zsh",
+    "sh",
+    "csh",
+    "ksh",
+    "tcsh",
+    "dash",
+    "scsh",
+  ];
+  const KNOWN_SHEBANG = hljs.SHEBANG({
+    binary: `(${SH_LIKE_SHELLS.join("|")})`,
+    relevance: 10
+  });
+  const FUNCTION = {
+    className: 'function',
+    begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
+    returnBegin: true,
+    contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\w[\w\d_]*/})],
+    relevance: 0
+  };
+
+  return {
+    name: 'Bash',
+    aliases: ['sh', 'zsh'],
+    keywords: {
+      $pattern: /\b[a-z._-]+\b/,
+      keyword:
+        'if then else elif fi for while in do done case esac function',
+      literal:
+        'true false',
+      built_in:
+        // Shell built-ins
+        // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html
+        'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +
+        'trap umask unset ' +
+        // Bash built-ins
+        'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +
+        'read readarray source type typeset ulimit unalias ' +
+        // Shell modifiers
+        'set shopt ' +
+        // Zsh built-ins
+        'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +
+        'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +
+        'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +
+        'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +
+        'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +
+        'zpty zregexparse zsocket zstyle ztcp'
+    },
+    contains: [
+      KNOWN_SHEBANG, // to catch known shells and boost relevancy
+      hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang
+      FUNCTION,
+      ARITHMETIC,
+      hljs.HASH_COMMENT_MODE,
+      HERE_DOC,
+      QUOTE_STRING,
+      ESCAPED_QUOTE,
+      APOS_STRING,
+      VAR
+    ]
+  };
+}
+
+module.exports = bash;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/basic.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/basic.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: BASIC
+Author: Raphaël Assénat 
+Description: Based on the BASIC reference from the Tandy 1000 guide
+Website: https://en.wikipedia.org/wiki/Tandy_1000
+*/
+
+/** @type LanguageFn */
+function basic(hljs) {
+  return {
+    name: 'BASIC',
+    case_insensitive: true,
+    illegal: '^\.',
+    // Support explicitly typed variables that end with $%! or #.
+    keywords: {
+      $pattern: '[a-zA-Z][a-zA-Z0-9_$%!#]*',
+      keyword:
+        'ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE ' +
+        'CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ ' +
+        'DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ ' +
+        'EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO ' +
+        'HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON ' +
+        'OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET ' +
+        'MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION ' +
+        'BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET ' +
+        'PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET ' +
+        'RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP ' +
+        'SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE ' +
+        'WEND WIDTH WINDOW WRITE XOR'
+    },
+    contains: [
+      hljs.QUOTE_STRING_MODE,
+      hljs.COMMENT('REM', '$', {
+        relevance: 10
+      }),
+      hljs.COMMENT('\'', '$', {
+        relevance: 0
+      }),
+      {
+        // Match line numbers
+        className: 'symbol',
+        begin: '^[0-9]+ ',
+        relevance: 10
+      },
+      {
+        // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2)
+        className: 'number',
+        begin: '\\b\\d+(\\.\\d+)?([edED]\\d+)?[#\!]?',
+        relevance: 0
+      },
+      {
+        // Match hexadecimal numbers (&Hxxxx)
+        className: 'number',
+        begin: '(&[hH][0-9a-fA-F]{1,4})'
+      },
+      {
+        // Match octal numbers (&Oxxxxxx)
+        className: 'number',
+        begin: '(&[oO][0-7]{1,6})'
+      }
+    ]
+  };
+}
+
+module.exports = basic;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/bnf.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/bnf.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Backus–Naur Form
+Website: https://en.wikipedia.org/wiki/Backus–Naur_form
+Author: Oleg Efimov 
+*/
+
+/** @type LanguageFn */
+function bnf(hljs) {
+  return {
+    name: 'Backus–Naur Form',
+    contains: [
+      // Attribute
+      {
+        className: 'attribute',
+        begin: //
+      },
+      // Specific
+      {
+        begin: /::=/,
+        end: /$/,
+        contains: [
+          {
+            begin: //
+          },
+          // Common
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          hljs.APOS_STRING_MODE,
+          hljs.QUOTE_STRING_MODE
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = bnf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/brainfuck.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/brainfuck.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Brainfuck
+Author: Evgeny Stepanischev 
+Website: https://esolangs.org/wiki/Brainfuck
+*/
+
+/** @type LanguageFn */
+function brainfuck(hljs) {
+  const LITERAL = {
+    className: 'literal',
+    begin: /[+-]/,
+    relevance: 0
+  };
+  return {
+    name: 'Brainfuck',
+    aliases: ['bf'],
+    contains: [
+      hljs.COMMENT(
+        '[^\\[\\]\\.,\\+\\-<> \r\n]',
+        '[\\[\\]\\.,\\+\\-<> \r\n]',
+        {
+          returnEnd: true,
+          relevance: 0
+        }
+      ),
+      {
+        className: 'title',
+        begin: '[\\[\\]]',
+        relevance: 0
+      },
+      {
+        className: 'string',
+        begin: '[\\.,]',
+        relevance: 0
+      },
+      {
+        // this mode works as the only relevance counter
+        begin: /(?:\+\+|--)/,
+        contains: [LITERAL]
+      },
+      LITERAL
+    ]
+  };
+}
+
+module.exports = brainfuck;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/c-like.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/c-like.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: C++
+Category: common, system
+Website: https://isocpp.org
+*/
+
+/** @type LanguageFn */
+function cPlusPlus(hljs) {
+  // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does
+  // not include such support nor can we be sure all the grammars depending
+  // on it would desire this behavior
+  const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {
+    contains: [
+      {
+        begin: /\\\n/
+      }
+    ]
+  });
+  const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)';
+  const NAMESPACE_RE = '[a-zA-Z_]\\w*::';
+  const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';
+  const FUNCTION_TYPE_RE = '(' +
+    DECLTYPE_AUTO_RE + '|' +
+    optional(NAMESPACE_RE) +
+    '[a-zA-Z_]\\w*' + optional(TEMPLATE_ARGUMENT_RE) +
+  ')';
+  const CPP_PRIMITIVE_TYPES = {
+    className: 'keyword',
+    begin: '\\b[a-z\\d_]*_t\\b'
+  };
+
+  // https://en.cppreference.com/w/cpp/language/escape
+  // \\ \x \xFF \u2837 \u00323747 \374
+  const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)';
+  const STRINGS = {
+    className: 'string',
+    variants: [
+      {
+        begin: '(u8?|U|L)?"',
+        end: '"',
+        illegal: '\\n',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + "|.)",
+        end: '\'',
+        illegal: '.'
+      },
+      hljs.END_SAME_AS_BEGIN({
+        begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
+        end: /\)([^()\\ ]{0,16})"/
+      })
+    ]
+  };
+
+  const NUMBERS = {
+    className: 'number',
+    variants: [
+      {
+        begin: '\\b(0b[01\']+)'
+      },
+      {
+        begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'
+      },
+      {
+        begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)'
+      }
+    ],
+    relevance: 0
+  };
+
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: /#\s*[a-z]+\b/,
+    end: /$/,
+    keywords: {
+      'meta-keyword':
+        'if else elif endif define undef warning error line ' +
+        'pragma _Pragma ifdef ifndef include'
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      hljs.inherit(STRINGS, {
+        className: 'meta-string'
+      }),
+      {
+        className: 'meta-string',
+        begin: /<.*?>/
+      },
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  const TITLE_MODE = {
+    className: 'title',
+    begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,
+    relevance: 0
+  };
+
+  const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\(';
+
+  const COMMON_CPP_HINTS = [
+    'asin',
+    'atan2',
+    'atan',
+    'calloc',
+    'ceil',
+    'cosh',
+    'cos',
+    'exit',
+    'exp',
+    'fabs',
+    'floor',
+    'fmod',
+    'fprintf',
+    'fputs',
+    'free',
+    'frexp',
+    'auto_ptr',
+    'deque',
+    'list',
+    'queue',
+    'stack',
+    'vector',
+    'map',
+    'set',
+    'pair',
+    'bitset',
+    'multiset',
+    'multimap',
+    'unordered_set',
+    'fscanf',
+    'future',
+    'isalnum',
+    'isalpha',
+    'iscntrl',
+    'isdigit',
+    'isgraph',
+    'islower',
+    'isprint',
+    'ispunct',
+    'isspace',
+    'isupper',
+    'isxdigit',
+    'tolower',
+    'toupper',
+    'labs',
+    'ldexp',
+    'log10',
+    'log',
+    'malloc',
+    'realloc',
+    'memchr',
+    'memcmp',
+    'memcpy',
+    'memset',
+    'modf',
+    'pow',
+    'printf',
+    'putchar',
+    'puts',
+    'scanf',
+    'sinh',
+    'sin',
+    'snprintf',
+    'sprintf',
+    'sqrt',
+    'sscanf',
+    'strcat',
+    'strchr',
+    'strcmp',
+    'strcpy',
+    'strcspn',
+    'strlen',
+    'strncat',
+    'strncmp',
+    'strncpy',
+    'strpbrk',
+    'strrchr',
+    'strspn',
+    'strstr',
+    'tanh',
+    'tan',
+    'unordered_map',
+    'unordered_multiset',
+    'unordered_multimap',
+    'priority_queue',
+    'make_pair',
+    'array',
+    'shared_ptr',
+    'abort',
+    'terminate',
+    'abs',
+    'acos',
+    'vfprintf',
+    'vprintf',
+    'vsprintf',
+    'endl',
+    'initializer_list',
+    'unique_ptr',
+    'complex',
+    'imaginary',
+    'std',
+    'string',
+    'wstring',
+    'cin',
+    'cout',
+    'cerr',
+    'clog',
+    'stdin',
+    'stdout',
+    'stderr',
+    'stringstream',
+    'istringstream',
+    'ostringstream'
+  ];
+
+  const CPP_KEYWORDS = {
+    keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +
+      'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +
+      'unsigned long volatile static protected bool template mutable if public friend ' +
+      'do goto auto void enum else break extern using asm case typeid wchar_t ' +
+      'short reinterpret_cast|10 default double register explicit signed typename try this ' +
+      'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +
+      'concept co_await co_return co_yield requires ' +
+      'noexcept static_assert thread_local restrict final override ' +
+      'atomic_bool atomic_char atomic_schar ' +
+      'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +
+      'atomic_ullong new throw return ' +
+      'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',
+    built_in: '_Bool _Complex _Imaginary',
+    _relevance_hints: COMMON_CPP_HINTS,
+    literal: 'true false nullptr NULL'
+  };
+
+  const FUNCTION_DISPATCH = {
+    className: "function.dispatch",
+    relevance: 0,
+    keywords: CPP_KEYWORDS,
+    begin: concat(
+      /\b/,
+      /(?!decltype)/,
+      /(?!if)/,
+      /(?!for)/,
+      /(?!while)/,
+      hljs.IDENT_RE,
+      lookahead(/\s*\(/))
+  };
+
+  const EXPRESSION_CONTAINS = [
+    FUNCTION_DISPATCH,
+    PREPROCESSOR,
+    CPP_PRIMITIVE_TYPES,
+    C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    NUMBERS,
+    STRINGS
+  ];
+
+
+  const EXPRESSION_CONTEXT = {
+    // This mode covers expression context where we can't expect a function
+    // definition and shouldn't highlight anything that looks like one:
+    // `return some()`, `else if()`, `(x*sum(1, 2))`
+    variants: [
+      {
+        begin: /=/,
+        end: /;/
+      },
+      {
+        begin: /\(/,
+        end: /\)/
+      },
+      {
+        beginKeywords: 'new throw return else',
+        end: /;/
+      }
+    ],
+    keywords: CPP_KEYWORDS,
+    contains: EXPRESSION_CONTAINS.concat([
+      {
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        contains: EXPRESSION_CONTAINS.concat([ 'self' ]),
+        relevance: 0
+      }
+    ]),
+    relevance: 0
+  };
+
+  const FUNCTION_DECLARATION = {
+    className: 'function',
+    begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE,
+    returnBegin: true,
+    end: /[{;=]/,
+    excludeEnd: true,
+    keywords: CPP_KEYWORDS,
+    illegal: /[^\w\s\*&:<>.]/,
+    contains: [
+      { // to prevent it from being confused as the function title
+        begin: DECLTYPE_AUTO_RE,
+        keywords: CPP_KEYWORDS,
+        relevance: 0
+      },
+      {
+        begin: FUNCTION_TITLE,
+        returnBegin: true,
+        contains: [ TITLE_MODE ],
+        relevance: 0
+      },
+      // needed because we do not have look-behind on the below rule
+      // to prevent it from grabbing the final : in a :: pair
+      {
+        begin: /::/,
+        relevance: 0
+      },
+      // initializers
+      {
+        begin: /:/,
+        endsWithParent: true,
+        contains: [
+          STRINGS,
+          NUMBERS
+        ]
+      },
+      {
+        className: 'params',
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        relevance: 0,
+        contains: [
+          C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          STRINGS,
+          NUMBERS,
+          CPP_PRIMITIVE_TYPES,
+          // Count matching parentheses.
+          {
+            begin: /\(/,
+            end: /\)/,
+            keywords: CPP_KEYWORDS,
+            relevance: 0,
+            contains: [
+              'self',
+              C_LINE_COMMENT_MODE,
+              hljs.C_BLOCK_COMMENT_MODE,
+              STRINGS,
+              NUMBERS,
+              CPP_PRIMITIVE_TYPES
+            ]
+          }
+        ]
+      },
+      CPP_PRIMITIVE_TYPES,
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      PREPROCESSOR
+    ]
+  };
+
+  return {
+    name: 'C++',
+    aliases: [
+      'cc',
+      'c++',
+      'h++',
+      'hpp',
+      'hh',
+      'hxx',
+      'cxx'
+    ],
+    keywords: CPP_KEYWORDS,
+    illegal: ' rooms (9);`
+          begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<',
+          end: '>',
+          keywords: CPP_KEYWORDS,
+          contains: [
+            'self',
+            CPP_PRIMITIVE_TYPES
+          ]
+        },
+        {
+          begin: hljs.IDENT_RE + '::',
+          keywords: CPP_KEYWORDS
+        },
+        {
+          className: 'class',
+          beginKeywords: 'enum class struct union',
+          end: /[{;:<>=]/,
+          contains: [
+            {
+              beginKeywords: "final class struct"
+            },
+            hljs.TITLE_MODE
+          ]
+        }
+      ]),
+    exports: {
+      preprocessor: PREPROCESSOR,
+      strings: STRINGS,
+      keywords: CPP_KEYWORDS
+    }
+  };
+}
+
+/*
+Language: C-like (deprecated, use C and C++ instead)
+Author: Ivan Sagalaev 
+Contributors: Evgeny Stepanischev , Zaven Muradyan , Roel Deckers , Sam Wu , Jordi Petit , Pieter Vantorre , Google Inc. (David Benjamin) 
+*/
+
+/** @type LanguageFn */
+function cLike(hljs) {
+  const lang = cPlusPlus(hljs);
+
+  const C_ALIASES = [
+    "c",
+    "h"
+  ];
+
+  const CPP_ALIASES = [
+    'cc',
+    'c++',
+    'h++',
+    'hpp',
+    'hh',
+    'hxx',
+    'cxx'
+  ];
+
+  lang.disableAutodetect = true;
+  lang.aliases = [];
+  // support users only loading c-like (legacy)
+  if (!hljs.getLanguage("c")) lang.aliases.push(...C_ALIASES);
+  if (!hljs.getLanguage("cpp")) lang.aliases.push(...CPP_ALIASES);
+
+  // if c and cpp are loaded after then they will reclaim these
+  // aliases for themselves
+
+  return lang;
+}
+
+module.exports = cLike;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/c.js":
+/*!******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/c.js ***!
+  \******************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: C
+Category: common, system
+Website: https://en.wikipedia.org/wiki/C_(programming_language)
+*/
+
+/** @type LanguageFn */
+function c(hljs) {
+  // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does
+  // not include such support nor can we be sure all the grammars depending
+  // on it would desire this behavior
+  const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {
+    contains: [
+      {
+        begin: /\\\n/
+      }
+    ]
+  });
+  const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)';
+  const NAMESPACE_RE = '[a-zA-Z_]\\w*::';
+  const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';
+  const FUNCTION_TYPE_RE = '(' +
+    DECLTYPE_AUTO_RE + '|' +
+    optional(NAMESPACE_RE) +
+    '[a-zA-Z_]\\w*' + optional(TEMPLATE_ARGUMENT_RE) +
+  ')';
+  const CPP_PRIMITIVE_TYPES = {
+    className: 'keyword',
+    begin: '\\b[a-z\\d_]*_t\\b'
+  };
+
+  // https://en.cppreference.com/w/cpp/language/escape
+  // \\ \x \xFF \u2837 \u00323747 \374
+  const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)';
+  const STRINGS = {
+    className: 'string',
+    variants: [
+      {
+        begin: '(u8?|U|L)?"',
+        end: '"',
+        illegal: '\\n',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + "|.)",
+        end: '\'',
+        illegal: '.'
+      },
+      hljs.END_SAME_AS_BEGIN({
+        begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
+        end: /\)([^()\\ ]{0,16})"/
+      })
+    ]
+  };
+
+  const NUMBERS = {
+    className: 'number',
+    variants: [
+      {
+        begin: '\\b(0b[01\']+)'
+      },
+      {
+        begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'
+      },
+      {
+        begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)'
+      }
+    ],
+    relevance: 0
+  };
+
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: /#\s*[a-z]+\b/,
+    end: /$/,
+    keywords: {
+      'meta-keyword':
+        'if else elif endif define undef warning error line ' +
+        'pragma _Pragma ifdef ifndef include'
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      hljs.inherit(STRINGS, {
+        className: 'meta-string'
+      }),
+      {
+        className: 'meta-string',
+        begin: /<.*?>/
+      },
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  const TITLE_MODE = {
+    className: 'title',
+    begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,
+    relevance: 0
+  };
+
+  const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\(';
+
+  const CPP_KEYWORDS = {
+    keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +
+      'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +
+      'unsigned long volatile static protected bool template mutable if public friend ' +
+      'do goto auto void enum else break extern using asm case typeid wchar_t ' +
+      'short reinterpret_cast|10 default double register explicit signed typename try this ' +
+      'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +
+      'concept co_await co_return co_yield requires ' +
+      'noexcept static_assert thread_local restrict final override ' +
+      'atomic_bool atomic_char atomic_schar ' +
+      'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +
+      'atomic_ullong new throw return ' +
+      'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',
+    built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +
+      'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set ' +
+      'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos ' +
+      'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +
+      'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +
+      'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +
+      'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +
+      'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +
+      'vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary',
+    literal: 'true false nullptr NULL'
+  };
+
+  const EXPRESSION_CONTAINS = [
+    PREPROCESSOR,
+    CPP_PRIMITIVE_TYPES,
+    C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    NUMBERS,
+    STRINGS
+  ];
+
+  const EXPRESSION_CONTEXT = {
+    // This mode covers expression context where we can't expect a function
+    // definition and shouldn't highlight anything that looks like one:
+    // `return some()`, `else if()`, `(x*sum(1, 2))`
+    variants: [
+      {
+        begin: /=/,
+        end: /;/
+      },
+      {
+        begin: /\(/,
+        end: /\)/
+      },
+      {
+        beginKeywords: 'new throw return else',
+        end: /;/
+      }
+    ],
+    keywords: CPP_KEYWORDS,
+    contains: EXPRESSION_CONTAINS.concat([
+      {
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        contains: EXPRESSION_CONTAINS.concat([ 'self' ]),
+        relevance: 0
+      }
+    ]),
+    relevance: 0
+  };
+
+  const FUNCTION_DECLARATION = {
+    className: 'function',
+    begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE,
+    returnBegin: true,
+    end: /[{;=]/,
+    excludeEnd: true,
+    keywords: CPP_KEYWORDS,
+    illegal: /[^\w\s\*&:<>.]/,
+    contains: [
+      { // to prevent it from being confused as the function title
+        begin: DECLTYPE_AUTO_RE,
+        keywords: CPP_KEYWORDS,
+        relevance: 0
+      },
+      {
+        begin: FUNCTION_TITLE,
+        returnBegin: true,
+        contains: [ TITLE_MODE ],
+        relevance: 0
+      },
+      {
+        className: 'params',
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        relevance: 0,
+        contains: [
+          C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          STRINGS,
+          NUMBERS,
+          CPP_PRIMITIVE_TYPES,
+          // Count matching parentheses.
+          {
+            begin: /\(/,
+            end: /\)/,
+            keywords: CPP_KEYWORDS,
+            relevance: 0,
+            contains: [
+              'self',
+              C_LINE_COMMENT_MODE,
+              hljs.C_BLOCK_COMMENT_MODE,
+              STRINGS,
+              NUMBERS,
+              CPP_PRIMITIVE_TYPES
+            ]
+          }
+        ]
+      },
+      CPP_PRIMITIVE_TYPES,
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      PREPROCESSOR
+    ]
+  };
+
+  return {
+    name: "C",
+    aliases: [
+      'h'
+    ],
+    keywords: CPP_KEYWORDS,
+    // Until differentiations are added between `c` and `cpp`, `c` will
+    // not be auto-detected to avoid auto-detect conflicts between C and C++
+    disableAutodetect: true,
+    illegal: ' rooms (9);`
+          begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<',
+          end: '>',
+          keywords: CPP_KEYWORDS,
+          contains: [
+            'self',
+            CPP_PRIMITIVE_TYPES
+          ]
+        },
+        {
+          begin: hljs.IDENT_RE + '::',
+          keywords: CPP_KEYWORDS
+        },
+        {
+          className: 'class',
+          beginKeywords: 'enum class struct union',
+          end: /[{;:<>=]/,
+          contains: [
+            {
+              beginKeywords: "final class struct"
+            },
+            hljs.TITLE_MODE
+          ]
+        }
+      ]),
+    exports: {
+      preprocessor: PREPROCESSOR,
+      strings: STRINGS,
+      keywords: CPP_KEYWORDS
+    }
+  };
+}
+
+module.exports = c;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/cal.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/cal.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: C/AL
+Author: Kenneth Fuglsang Christensen 
+Description: Provides highlighting of Microsoft Dynamics NAV C/AL code files
+Website: https://docs.microsoft.com/en-us/dynamics-nav/programming-in-c-al
+*/
+
+/** @type LanguageFn */
+function cal(hljs) {
+  const KEYWORDS =
+    'div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to ' +
+    'until while with var';
+  const LITERALS = 'false true';
+  const COMMENT_MODES = [
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.COMMENT(
+      /\{/,
+      /\}/,
+      {
+        relevance: 0
+      }
+    ),
+    hljs.COMMENT(
+      /\(\*/,
+      /\*\)/,
+      {
+        relevance: 10
+      }
+    )
+  ];
+  const STRING = {
+    className: 'string',
+    begin: /'/,
+    end: /'/,
+    contains: [{
+      begin: /''/
+    }]
+  };
+  const CHAR_STRING = {
+    className: 'string',
+    begin: /(#\d+)+/
+  };
+  const DATE = {
+    className: 'number',
+    begin: '\\b\\d+(\\.\\d+)?(DT|D|T)',
+    relevance: 0
+  };
+  const DBL_QUOTED_VARIABLE = {
+    className: 'string', // not a string technically but makes sense to be highlighted in the same style
+    begin: '"',
+    end: '"'
+  };
+
+  const PROCEDURE = {
+    className: 'function',
+    beginKeywords: 'procedure',
+    end: /[:;]/,
+    keywords: 'procedure|10',
+    contains: [
+      hljs.TITLE_MODE,
+      {
+        className: 'params',
+        begin: /\(/,
+        end: /\)/,
+        keywords: KEYWORDS,
+        contains: [
+          STRING,
+          CHAR_STRING
+        ]
+      }
+    ].concat(COMMENT_MODES)
+  };
+
+  const OBJECT = {
+    className: 'class',
+    begin: 'OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)',
+    returnBegin: true,
+    contains: [
+      hljs.TITLE_MODE,
+      PROCEDURE
+    ]
+  };
+
+  return {
+    name: 'C/AL',
+    case_insensitive: true,
+    keywords: {
+      keyword: KEYWORDS,
+      literal: LITERALS
+    },
+    illegal: /\/\*/,
+    contains: [
+      STRING,
+      CHAR_STRING,
+      DATE,
+      DBL_QUOTED_VARIABLE,
+      hljs.NUMBER_MODE,
+      OBJECT,
+      PROCEDURE
+    ]
+  };
+}
+
+module.exports = cal;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/capnproto.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/capnproto.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Cap’n Proto
+Author: Oleg Efimov 
+Description: Cap’n Proto message definition format
+Website: https://capnproto.org/capnp-tool.html
+Category: protocols
+*/
+
+/** @type LanguageFn */
+function capnproto(hljs) {
+  return {
+    name: 'Cap’n Proto',
+    aliases: ['capnp'],
+    keywords: {
+      keyword:
+        'struct enum interface union group import using const annotation extends in of on as with from fixed',
+      built_in:
+        'Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 ' +
+        'Text Data AnyPointer AnyStruct Capability List',
+      literal:
+        'true false'
+    },
+    contains: [
+      hljs.QUOTE_STRING_MODE,
+      hljs.NUMBER_MODE,
+      hljs.HASH_COMMENT_MODE,
+      {
+        className: 'meta',
+        begin: /@0x[\w\d]{16};/,
+        illegal: /\n/
+      },
+      {
+        className: 'symbol',
+        begin: /@\d+\b/
+      },
+      {
+        className: 'class',
+        beginKeywords: 'struct enum',
+        end: /\{/,
+        illegal: /\n/,
+        contains: [hljs.inherit(hljs.TITLE_MODE, {
+          starts: {
+            endsWithParent: true,
+            excludeEnd: true
+          } // hack: eating everything after the first title
+        })]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'interface',
+        end: /\{/,
+        illegal: /\n/,
+        contains: [hljs.inherit(hljs.TITLE_MODE, {
+          starts: {
+            endsWithParent: true,
+            excludeEnd: true
+          } // hack: eating everything after the first title
+        })]
+      }
+    ]
+  };
+}
+
+module.exports = capnproto;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/ceylon.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/ceylon.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Ceylon
+Author: Lucas Werkmeister 
+Website: https://ceylon-lang.org
+*/
+
+/** @type LanguageFn */
+function ceylon(hljs) {
+  // 2.3. Identifiers and keywords
+  const KEYWORDS =
+    'assembly module package import alias class interface object given value ' +
+    'assign void function new of extends satisfies abstracts in out return ' +
+    'break continue throw assert dynamic if else switch case for while try ' +
+    'catch finally then let this outer super is exists nonempty';
+  // 7.4.1 Declaration Modifiers
+  const DECLARATION_MODIFIERS =
+    'shared abstract formal default actual variable late native deprecated ' +
+    'final sealed annotation suppressWarnings small';
+  // 7.4.2 Documentation
+  const DOCUMENTATION =
+    'doc by license see throws tagged';
+  const SUBST = {
+    className: 'subst',
+    excludeBegin: true,
+    excludeEnd: true,
+    begin: /``/,
+    end: /``/,
+    keywords: KEYWORDS,
+    relevance: 10
+  };
+  const EXPRESSIONS = [
+    {
+      // verbatim string
+      className: 'string',
+      begin: '"""',
+      end: '"""',
+      relevance: 10
+    },
+    {
+      // string literal or template
+      className: 'string',
+      begin: '"',
+      end: '"',
+      contains: [SUBST]
+    },
+    {
+      // character literal
+      className: 'string',
+      begin: "'",
+      end: "'"
+    },
+    {
+      // numeric literal
+      className: 'number',
+      begin: '#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?',
+      relevance: 0
+    }
+  ];
+  SUBST.contains = EXPRESSIONS;
+
+  return {
+    name: 'Ceylon',
+    keywords: {
+      keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,
+      meta: DOCUMENTATION
+    },
+    illegal: '\\$[^01]|#[^0-9a-fA-F]',
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.COMMENT('/\\*', '\\*/', {
+        contains: ['self']
+      }),
+      {
+        // compiler annotation
+        className: 'meta',
+        begin: '@[a-z]\\w*(?::"[^"]*")?'
+      }
+    ].concat(EXPRESSIONS)
+  };
+}
+
+module.exports = ceylon;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/clean.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/clean.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Clean
+Author: Camil Staps 
+Category: functional
+Website: http://clean.cs.ru.nl
+*/
+
+/** @type LanguageFn */
+function clean(hljs) {
+  return {
+    name: 'Clean',
+    aliases: [
+      'icl',
+      'dcl'
+    ],
+    keywords: {
+      keyword:
+        'if let in with where case of class instance otherwise ' +
+        'implementation definition system module from import qualified as ' +
+        'special code inline foreign export ccall stdcall generic derive ' +
+        'infix infixl infixr',
+      built_in:
+        'Int Real Char Bool',
+      literal:
+        'True False'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE,
+      { // relevance booster
+        begin: '->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>'
+      }
+    ]
+  };
+}
+
+module.exports = clean;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/clojure-repl.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/clojure-repl.js ***!
+  \*****************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Clojure REPL
+Description: Clojure REPL sessions
+Author: Ivan Sagalaev 
+Requires: clojure.js
+Website: https://clojure.org
+Category: lisp
+*/
+
+/** @type LanguageFn */
+function clojureRepl(hljs) {
+  return {
+    name: 'Clojure REPL',
+    contains: [
+      {
+        className: 'meta',
+        begin: /^([\w.-]+|\s*#_)?=>/,
+        starts: {
+          end: /$/,
+          subLanguage: 'clojure'
+        }
+      }
+    ]
+  };
+}
+
+module.exports = clojureRepl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/clojure.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/clojure.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Clojure
+Description: Clojure syntax (based on lisp.js)
+Author: mfornos
+Website: https://clojure.org
+Category: lisp
+*/
+
+/** @type LanguageFn */
+function clojure(hljs) {
+  const SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>&#\'';
+  const SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';
+  const globals = 'def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord';
+  const keywords = {
+    $pattern: SYMBOL_RE,
+    'builtin-name':
+      // Clojure keywords
+      globals + ' ' +
+      'cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem ' +
+      'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? ' +
+      'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? ' +
+      'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? ' +
+      'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . ' +
+      'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last ' +
+      'drop-while while intern condp case reduced cycle split-at split-with repeat replicate ' +
+      'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext ' +
+      'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends ' +
+      'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler ' +
+      'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter ' +
+      'monitor-exit macroexpand macroexpand-1 for dosync and or ' +
+      'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert ' +
+      'peek pop doto proxy first rest cons cast coll last butlast ' +
+      'sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import ' +
+      'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! ' +
+      'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger ' +
+      'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline ' +
+      'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking ' +
+      'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! ' +
+      'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! ' +
+      'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty ' +
+      'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list ' +
+      'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer ' +
+      'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate ' +
+      'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta ' +
+      'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize'
+  };
+
+  const SIMPLE_NUMBER_RE = '[-+]?\\d+(\\.\\d+)?';
+
+  const SYMBOL = {
+    begin: SYMBOL_RE,
+    relevance: 0
+  };
+  const NUMBER = {
+    className: 'number',
+    begin: SIMPLE_NUMBER_RE,
+    relevance: 0
+  };
+  const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {
+    illegal: null
+  });
+  const COMMENT = hljs.COMMENT(
+    ';',
+    '$',
+    {
+      relevance: 0
+    }
+  );
+  const LITERAL = {
+    className: 'literal',
+    begin: /\b(true|false|nil)\b/
+  };
+  const COLLECTION = {
+    begin: '[\\[\\{]',
+    end: '[\\]\\}]'
+  };
+  const HINT = {
+    className: 'comment',
+    begin: '\\^' + SYMBOL_RE
+  };
+  const HINT_COL = hljs.COMMENT('\\^\\{', '\\}');
+  const KEY = {
+    className: 'symbol',
+    begin: '[:]{1,2}' + SYMBOL_RE
+  };
+  const LIST = {
+    begin: '\\(',
+    end: '\\)'
+  };
+  const BODY = {
+    endsWithParent: true,
+    relevance: 0
+  };
+  const NAME = {
+    keywords: keywords,
+    className: 'name',
+    begin: SYMBOL_RE,
+    relevance: 0,
+    starts: BODY
+  };
+  const DEFAULT_CONTAINS = [
+    LIST,
+    STRING,
+    HINT,
+    HINT_COL,
+    COMMENT,
+    KEY,
+    COLLECTION,
+    NUMBER,
+    LITERAL,
+    SYMBOL
+  ];
+
+  const GLOBAL = {
+    beginKeywords: globals,
+    lexemes: SYMBOL_RE,
+    end: '(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',
+    contains: [
+      {
+        className: 'title',
+        begin: SYMBOL_RE,
+        relevance: 0,
+        excludeEnd: true,
+        // we can only have a single title
+        endsParent: true
+      }
+    ].concat(DEFAULT_CONTAINS)
+  };
+
+  LIST.contains = [
+    hljs.COMMENT('comment', ''),
+    GLOBAL,
+    NAME,
+    BODY
+  ];
+  BODY.contains = DEFAULT_CONTAINS;
+  COLLECTION.contains = DEFAULT_CONTAINS;
+  HINT_COL.contains = [ COLLECTION ];
+
+  return {
+    name: 'Clojure',
+    aliases: [ 'clj' ],
+    illegal: /\S/,
+    contains: [
+      LIST,
+      STRING,
+      HINT,
+      HINT_COL,
+      COMMENT,
+      KEY,
+      COLLECTION,
+      NUMBER,
+      LITERAL
+    ]
+  };
+}
+
+module.exports = clojure;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/cmake.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/cmake.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: CMake
+Description: CMake is an open-source cross-platform system for build automation.
+Author: Igor Kalnitsky 
+Website: https://cmake.org
+*/
+
+/** @type LanguageFn */
+function cmake(hljs) {
+  return {
+    name: 'CMake',
+    aliases: ['cmake.in'],
+    case_insensitive: true,
+    keywords: {
+      keyword:
+        // scripting commands
+        'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments ' +
+        'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro ' +
+        'endwhile execute_process file find_file find_library find_package find_path ' +
+        'find_program foreach function get_cmake_property get_directory_property ' +
+        'get_filename_component get_property if include include_guard list macro ' +
+        'mark_as_advanced math message option return separate_arguments ' +
+        'set_directory_properties set_property set site_name string unset variable_watch while ' +
+        // project commands
+        'add_compile_definitions add_compile_options add_custom_command add_custom_target ' +
+        'add_definitions add_dependencies add_executable add_library add_link_options ' +
+        'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist ' +
+        'define_property enable_language enable_testing export fltk_wrap_ui ' +
+        'get_source_file_property get_target_property get_test_property include_directories ' +
+        'include_external_msproject include_regular_expression install link_directories ' +
+        'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions ' +
+        'set_source_files_properties set_target_properties set_tests_properties source_group ' +
+        'target_compile_definitions target_compile_features target_compile_options ' +
+        'target_include_directories target_link_directories target_link_libraries ' +
+        'target_link_options target_sources try_compile try_run ' +
+        // CTest commands
+        'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ' +
+        'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ' +
+        'ctest_test ctest_update ctest_upload ' +
+        // deprecated commands
+        'build_name exec_program export_library_dependencies install_files install_programs ' +
+        'install_targets load_command make_directory output_required_files remove ' +
+        'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file ' +
+        'qt5_use_modules qt5_use_package qt5_wrap_cpp ' +
+        // core keywords
+        'on off true false and or not command policy target test exists is_newer_than ' +
+        'is_directory is_symlink is_absolute matches less greater equal less_equal ' +
+        'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less ' +
+        'version_greater version_equal version_less_equal version_greater_equal in_list defined'
+    },
+    contains: [
+      {
+        className: 'variable',
+        begin: /\$\{/,
+        end: /\}/
+      },
+      hljs.HASH_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = cmake;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/coffeescript.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/coffeescript.js ***!
+  \*****************************************************************/
+/***/ ((module) => {
+
+const KEYWORDS = [
+  "as", // for exports
+  "in",
+  "of",
+  "if",
+  "for",
+  "while",
+  "finally",
+  "var",
+  "new",
+  "function",
+  "do",
+  "return",
+  "void",
+  "else",
+  "break",
+  "catch",
+  "instanceof",
+  "with",
+  "throw",
+  "case",
+  "default",
+  "try",
+  "switch",
+  "continue",
+  "typeof",
+  "delete",
+  "let",
+  "yield",
+  "const",
+  "class",
+  // JS handles these with a special rule
+  // "get",
+  // "set",
+  "debugger",
+  "async",
+  "await",
+  "static",
+  "import",
+  "from",
+  "export",
+  "extends"
+];
+const LITERALS = [
+  "true",
+  "false",
+  "null",
+  "undefined",
+  "NaN",
+  "Infinity"
+];
+
+const TYPES = [
+  "Intl",
+  "DataView",
+  "Number",
+  "Math",
+  "Date",
+  "String",
+  "RegExp",
+  "Object",
+  "Function",
+  "Boolean",
+  "Error",
+  "Symbol",
+  "Set",
+  "Map",
+  "WeakSet",
+  "WeakMap",
+  "Proxy",
+  "Reflect",
+  "JSON",
+  "Promise",
+  "Float64Array",
+  "Int16Array",
+  "Int32Array",
+  "Int8Array",
+  "Uint16Array",
+  "Uint32Array",
+  "Float32Array",
+  "Array",
+  "Uint8Array",
+  "Uint8ClampedArray",
+  "ArrayBuffer",
+  "BigInt64Array",
+  "BigUint64Array",
+  "BigInt"
+];
+
+const ERROR_TYPES = [
+  "EvalError",
+  "InternalError",
+  "RangeError",
+  "ReferenceError",
+  "SyntaxError",
+  "TypeError",
+  "URIError"
+];
+
+const BUILT_IN_GLOBALS = [
+  "setInterval",
+  "setTimeout",
+  "clearInterval",
+  "clearTimeout",
+
+  "require",
+  "exports",
+
+  "eval",
+  "isFinite",
+  "isNaN",
+  "parseFloat",
+  "parseInt",
+  "decodeURI",
+  "decodeURIComponent",
+  "encodeURI",
+  "encodeURIComponent",
+  "escape",
+  "unescape"
+];
+
+const BUILT_IN_VARIABLES = [
+  "arguments",
+  "this",
+  "super",
+  "console",
+  "window",
+  "document",
+  "localStorage",
+  "module",
+  "global" // Node.js
+];
+
+const BUILT_INS = [].concat(
+  BUILT_IN_GLOBALS,
+  BUILT_IN_VARIABLES,
+  TYPES,
+  ERROR_TYPES
+);
+
+/*
+Language: CoffeeScript
+Author: Dmytrii Nagirniak 
+Contributors: Oleg Efimov , Cédric Néhémie 
+Description: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/
+Category: common, scripting
+Website: https://coffeescript.org
+*/
+
+/** @type LanguageFn */
+function coffeescript(hljs) {
+  const COFFEE_BUILT_INS = [
+    'npm',
+    'print'
+  ];
+  const COFFEE_LITERALS = [
+    'yes',
+    'no',
+    'on',
+    'off'
+  ];
+  const COFFEE_KEYWORDS = [
+    'then',
+    'unless',
+    'until',
+    'loop',
+    'by',
+    'when',
+    'and',
+    'or',
+    'is',
+    'isnt',
+    'not'
+  ];
+  const NOT_VALID_KEYWORDS = [
+    "var",
+    "const",
+    "let",
+    "function",
+    "static"
+  ];
+  const excluding = (list) =>
+    (kw) => !list.includes(kw);
+  const KEYWORDS$1 = {
+    keyword: KEYWORDS.concat(COFFEE_KEYWORDS).filter(excluding(NOT_VALID_KEYWORDS)),
+    literal: LITERALS.concat(COFFEE_LITERALS),
+    built_in: BUILT_INS.concat(COFFEE_BUILT_INS)
+  };
+  const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';
+  const SUBST = {
+    className: 'subst',
+    begin: /#\{/,
+    end: /\}/,
+    keywords: KEYWORDS$1
+  };
+  const EXPRESSIONS = [
+    hljs.BINARY_NUMBER_MODE,
+    hljs.inherit(hljs.C_NUMBER_MODE, {
+      starts: {
+        end: '(\\s*/)?',
+        relevance: 0
+      }
+    }), // a number tries to eat the following slash to prevent treating it as a regexp
+    {
+      className: 'string',
+      variants: [
+        {
+          begin: /'''/,
+          end: /'''/,
+          contains: [hljs.BACKSLASH_ESCAPE]
+        },
+        {
+          begin: /'/,
+          end: /'/,
+          contains: [hljs.BACKSLASH_ESCAPE]
+        },
+        {
+          begin: /"""/,
+          end: /"""/,
+          contains: [
+            hljs.BACKSLASH_ESCAPE,
+            SUBST
+          ]
+        },
+        {
+          begin: /"/,
+          end: /"/,
+          contains: [
+            hljs.BACKSLASH_ESCAPE,
+            SUBST
+          ]
+        }
+      ]
+    },
+    {
+      className: 'regexp',
+      variants: [
+        {
+          begin: '///',
+          end: '///',
+          contains: [
+            SUBST,
+            hljs.HASH_COMMENT_MODE
+          ]
+        },
+        {
+          begin: '//[gim]{0,3}(?=\\W)',
+          relevance: 0
+        },
+        {
+          // regex can't start with space to parse x / 2 / 3 as two divisions
+          // regex can't start with *, and it supports an "illegal" in the main mode
+          begin: /\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/
+        }
+      ]
+    },
+    {
+      begin: '@' + JS_IDENT_RE // relevance booster
+    },
+    {
+      subLanguage: 'javascript',
+      excludeBegin: true,
+      excludeEnd: true,
+      variants: [
+        {
+          begin: '```',
+          end: '```'
+        },
+        {
+          begin: '`',
+          end: '`'
+        }
+      ]
+    }
+  ];
+  SUBST.contains = EXPRESSIONS;
+
+  const TITLE = hljs.inherit(hljs.TITLE_MODE, {
+    begin: JS_IDENT_RE
+  });
+  const POSSIBLE_PARAMS_RE = '(\\(.*\\)\\s*)?\\B[-=]>';
+  const PARAMS = {
+    className: 'params',
+    begin: '\\([^\\(]',
+    returnBegin: true,
+    /* We need another contained nameless mode to not have every nested
+    pair of parens to be called "params" */
+    contains: [{
+      begin: /\(/,
+      end: /\)/,
+      keywords: KEYWORDS$1,
+      contains: ['self'].concat(EXPRESSIONS)
+    }]
+  };
+
+  return {
+    name: 'CoffeeScript',
+    aliases: [
+      'coffee',
+      'cson',
+      'iced'
+    ],
+    keywords: KEYWORDS$1,
+    illegal: /\/\*/,
+    contains: EXPRESSIONS.concat([
+      hljs.COMMENT('###', '###'),
+      hljs.HASH_COMMENT_MODE,
+      {
+        className: 'function',
+        begin: '^\\s*' + JS_IDENT_RE + '\\s*=\\s*' + POSSIBLE_PARAMS_RE,
+        end: '[-=]>',
+        returnBegin: true,
+        contains: [
+          TITLE,
+          PARAMS
+        ]
+      },
+      {
+        // anonymous function start
+        begin: /[:\(,=]\s*/,
+        relevance: 0,
+        contains: [{
+          className: 'function',
+          begin: POSSIBLE_PARAMS_RE,
+          end: '[-=]>',
+          returnBegin: true,
+          contains: [PARAMS]
+        }]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class',
+        end: '$',
+        illegal: /[:="\[\]]/,
+        contains: [
+          {
+            beginKeywords: 'extends',
+            endsWithParent: true,
+            illegal: /[:="\[\]]/,
+            contains: [TITLE]
+          },
+          TITLE
+        ]
+      },
+      {
+        begin: JS_IDENT_RE + ':',
+        end: ':',
+        returnBegin: true,
+        returnEnd: true,
+        relevance: 0
+      }
+    ])
+  };
+}
+
+module.exports = coffeescript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/coq.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/coq.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Coq
+Author: Stephan Boyer 
+Category: functional
+Website: https://coq.inria.fr
+*/
+
+/** @type LanguageFn */
+function coq(hljs) {
+  return {
+    name: 'Coq',
+    keywords: {
+      keyword:
+        '_|0 as at cofix else end exists exists2 fix for forall fun if IF in let ' +
+        'match mod Prop return Set then Type using where with ' +
+        'Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo ' +
+        'Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion ' +
+        'Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture ' +
+        'Conjectures Constant constr Constraint Constructors Context Corollary ' +
+        'CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent ' +
+        'Derive Drop eauto End Equality Eval Example Existential Existentials ' +
+        'Existing Export exporting Extern Extract Extraction Fact Field Fields File ' +
+        'Fixpoint Focus for From Function Functional Generalizable Global Goal Grab ' +
+        'Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident ' +
+        'Identity If Immediate Implicit Import Include Inductive Infix Info Initial ' +
+        'Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear ' +
+        'Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML ' +
+        'Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation ' +
+        'Obligations Opaque Open Optimize Options Parameter Parameters Parametric ' +
+        'Path Paths pattern Polymorphic Preterm Print Printing Program Projections ' +
+        'Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark ' +
+        'Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save ' +
+        'Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern ' +
+        'SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies ' +
+        'Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time ' +
+        'Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused ' +
+        'Unfold Universe Universes Unset Unshelve using Variable Variables Variant ' +
+        'Verbose Visibility where with',
+      built_in:
+        'abstract absurd admit after apply as assert assumption at auto autorewrite ' +
+        'autounfold before bottom btauto by case case_eq cbn cbv change ' +
+        'classical_left classical_right clear clearbody cofix compare compute ' +
+        'congruence constr_eq constructor contradict contradiction cut cutrewrite ' +
+        'cycle decide decompose dependent destruct destruction dintuition ' +
+        'discriminate discrR do double dtauto eapply eassumption eauto ecase ' +
+        'econstructor edestruct ediscriminate eelim eexact eexists einduction ' +
+        'einjection eleft elim elimtype enough equality erewrite eright ' +
+        'esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail ' +
+        'field field_simplify field_simplify_eq first firstorder fix fold fourier ' +
+        'functional generalize generalizing gfail give_up has_evar hnf idtac in ' +
+        'induction injection instantiate intro intro_pattern intros intuition ' +
+        'inversion inversion_clear is_evar is_var lapply lazy left lia lra move ' +
+        'native_compute nia nsatz omega once pattern pose progress proof psatz quote ' +
+        'record red refine reflexivity remember rename repeat replace revert ' +
+        'revgoals rewrite rewrite_strat right ring ring_simplify rtauto set ' +
+        'setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry ' +
+        'setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve ' +
+        'specialize split split_Rabs split_Rmult stepl stepr subst sum swap ' +
+        'symmetry tactic tauto time timeout top transitivity trivial try tryif ' +
+        'unfold unify until using vm_compute with'
+    },
+    contains: [
+      hljs.QUOTE_STRING_MODE,
+      hljs.COMMENT('\\(\\*', '\\*\\)'),
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'type',
+        excludeBegin: true,
+        begin: '\\|\\s*',
+        end: '\\w+'
+      },
+      { // relevance booster
+        begin: /[-=]>/
+      }
+    ]
+  };
+}
+
+module.exports = coq;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/cos.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/cos.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Caché Object Script
+Author: Nikita Savchenko 
+Category: enterprise, scripting
+Website: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls
+*/
+
+/** @type LanguageFn */
+function cos(hljs) {
+  const STRINGS = {
+    className: 'string',
+    variants: [{
+      begin: '"',
+      end: '"',
+      contains: [{ // escaped
+        begin: "\"\"",
+        relevance: 0
+      }]
+    }]
+  };
+
+  const NUMBERS = {
+    className: "number",
+    begin: "\\b(\\d+(\\.\\d*)?|\\.\\d+)",
+    relevance: 0
+  };
+
+  const COS_KEYWORDS =
+    'property parameter class classmethod clientmethod extends as break ' +
+    'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' +
+    'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' +
+    'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' +
+    'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' +
+    'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' +
+    'zsync ascii';
+
+  // registered function - no need in them due to all functions are highlighted,
+  // but I'll just leave this here.
+
+  // "$bit", "$bitcount",
+  // "$bitfind", "$bitlogic", "$case", "$char", "$classmethod", "$classname",
+  // "$compile", "$data", "$decimal", "$double", "$extract", "$factor",
+  // "$find", "$fnumber", "$get", "$increment", "$inumber", "$isobject",
+  // "$isvaliddouble", "$isvalidnum", "$justify", "$length", "$list",
+  // "$listbuild", "$listdata", "$listfind", "$listfromstring", "$listget",
+  // "$listlength", "$listnext", "$listsame", "$listtostring", "$listvalid",
+  // "$locate", "$match", "$method", "$name", "$nconvert", "$next",
+  // "$normalize", "$now", "$number", "$order", "$parameter", "$piece",
+  // "$prefetchoff", "$prefetchon", "$property", "$qlength", "$qsubscript",
+  // "$query", "$random", "$replace", "$reverse", "$sconvert", "$select",
+  // "$sortbegin", "$sortend", "$stack", "$text", "$translate", "$view",
+  // "$wascii", "$wchar", "$wextract", "$wfind", "$wiswide", "$wlength",
+  // "$wreverse", "$xecute", "$zabs", "$zarccos", "$zarcsin", "$zarctan",
+  // "$zcos", "$zcot", "$zcsc", "$zdate", "$zdateh", "$zdatetime",
+  // "$zdatetimeh", "$zexp", "$zhex", "$zln", "$zlog", "$zpower", "$zsec",
+  // "$zsin", "$zsqr", "$ztan", "$ztime", "$ztimeh", "$zboolean",
+  // "$zconvert", "$zcrc", "$zcyc", "$zdascii", "$zdchar", "$zf",
+  // "$ziswide", "$zlascii", "$zlchar", "$zname", "$zposition", "$zqascii",
+  // "$zqchar", "$zsearch", "$zseek", "$zstrip", "$zwascii", "$zwchar",
+  // "$zwidth", "$zwpack", "$zwbpack", "$zwunpack", "$zwbunpack", "$zzenkaku",
+  // "$change", "$mv", "$mvat", "$mvfmt", "$mvfmts", "$mviconv",
+  // "$mviconvs", "$mvinmat", "$mvlover", "$mvoconv", "$mvoconvs", "$mvraise",
+  // "$mvtrans", "$mvv", "$mvname", "$zbitand", "$zbitcount", "$zbitfind",
+  // "$zbitget", "$zbitlen", "$zbitnot", "$zbitor", "$zbitset", "$zbitstr",
+  // "$zbitxor", "$zincrement", "$znext", "$zorder", "$zprevious", "$zsort",
+  // "device", "$ecode", "$estack", "$etrap", "$halt", "$horolog",
+  // "$io", "$job", "$key", "$namespace", "$principal", "$quit", "$roles",
+  // "$storage", "$system", "$test", "$this", "$tlevel", "$username",
+  // "$x", "$y", "$za", "$zb", "$zchild", "$zeof", "$zeos", "$zerror",
+  // "$zhorolog", "$zio", "$zjob", "$zmode", "$znspace", "$zparent", "$zpi",
+  // "$zpos", "$zreference", "$zstorage", "$ztimestamp", "$ztimezone",
+  // "$ztrap", "$zversion"
+
+  return {
+    name: 'Caché Object Script',
+    case_insensitive: true,
+    aliases: [
+      "cls"
+    ],
+    keywords: COS_KEYWORDS,
+    contains: [
+      NUMBERS,
+      STRINGS,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: "comment",
+        begin: /;/,
+        end: "$",
+        relevance: 0
+      },
+      { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)
+        className: "built_in",
+        begin: /(?:\$\$?|\.\.)\^?[a-zA-Z]+/
+      },
+      { // Macro command: quit $$$OK
+        className: "built_in",
+        begin: /\$\$\$[a-zA-Z]+/
+      },
+      { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer
+        className: "built_in",
+        begin: /%[a-z]+(?:\.[a-z]+)*/
+      },
+      { // Global variable: set ^globalName = 12 write ^globalName
+        className: "symbol",
+        begin: /\^%?[a-zA-Z][\w]*/
+      },
+      { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()
+        className: "keyword",
+        begin: /##class|##super|#define|#dim/
+      },
+      // sub-languages: are not fully supported by hljs by 11/15/2015
+      // left for the future implementation.
+      {
+        begin: /&sql\(/,
+        end: /\)/,
+        excludeBegin: true,
+        excludeEnd: true,
+        subLanguage: "sql"
+      },
+      {
+        begin: /&(js|jscript|javascript)/,
+        excludeBegin: true,
+        excludeEnd: true,
+        subLanguage: "javascript"
+      },
+      {
+        // this brakes first and last tag, but this is the only way to embed a valid html
+        begin: /&html<\s*\s*>/,
+        subLanguage: "xml"
+      }
+    ]
+  };
+}
+
+module.exports = cos;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/cpp.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/cpp.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: C++
+Category: common, system
+Website: https://isocpp.org
+*/
+
+/** @type LanguageFn */
+function cpp(hljs) {
+  // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does
+  // not include such support nor can we be sure all the grammars depending
+  // on it would desire this behavior
+  const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {
+    contains: [
+      {
+        begin: /\\\n/
+      }
+    ]
+  });
+  const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)';
+  const NAMESPACE_RE = '[a-zA-Z_]\\w*::';
+  const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';
+  const FUNCTION_TYPE_RE = '(' +
+    DECLTYPE_AUTO_RE + '|' +
+    optional(NAMESPACE_RE) +
+    '[a-zA-Z_]\\w*' + optional(TEMPLATE_ARGUMENT_RE) +
+  ')';
+  const CPP_PRIMITIVE_TYPES = {
+    className: 'keyword',
+    begin: '\\b[a-z\\d_]*_t\\b'
+  };
+
+  // https://en.cppreference.com/w/cpp/language/escape
+  // \\ \x \xFF \u2837 \u00323747 \374
+  const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)';
+  const STRINGS = {
+    className: 'string',
+    variants: [
+      {
+        begin: '(u8?|U|L)?"',
+        end: '"',
+        illegal: '\\n',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + "|.)",
+        end: '\'',
+        illegal: '.'
+      },
+      hljs.END_SAME_AS_BEGIN({
+        begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
+        end: /\)([^()\\ ]{0,16})"/
+      })
+    ]
+  };
+
+  const NUMBERS = {
+    className: 'number',
+    variants: [
+      {
+        begin: '\\b(0b[01\']+)'
+      },
+      {
+        begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'
+      },
+      {
+        begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)'
+      }
+    ],
+    relevance: 0
+  };
+
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: /#\s*[a-z]+\b/,
+    end: /$/,
+    keywords: {
+      'meta-keyword':
+        'if else elif endif define undef warning error line ' +
+        'pragma _Pragma ifdef ifndef include'
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      hljs.inherit(STRINGS, {
+        className: 'meta-string'
+      }),
+      {
+        className: 'meta-string',
+        begin: /<.*?>/
+      },
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  const TITLE_MODE = {
+    className: 'title',
+    begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,
+    relevance: 0
+  };
+
+  const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\(';
+
+  const COMMON_CPP_HINTS = [
+    'asin',
+    'atan2',
+    'atan',
+    'calloc',
+    'ceil',
+    'cosh',
+    'cos',
+    'exit',
+    'exp',
+    'fabs',
+    'floor',
+    'fmod',
+    'fprintf',
+    'fputs',
+    'free',
+    'frexp',
+    'auto_ptr',
+    'deque',
+    'list',
+    'queue',
+    'stack',
+    'vector',
+    'map',
+    'set',
+    'pair',
+    'bitset',
+    'multiset',
+    'multimap',
+    'unordered_set',
+    'fscanf',
+    'future',
+    'isalnum',
+    'isalpha',
+    'iscntrl',
+    'isdigit',
+    'isgraph',
+    'islower',
+    'isprint',
+    'ispunct',
+    'isspace',
+    'isupper',
+    'isxdigit',
+    'tolower',
+    'toupper',
+    'labs',
+    'ldexp',
+    'log10',
+    'log',
+    'malloc',
+    'realloc',
+    'memchr',
+    'memcmp',
+    'memcpy',
+    'memset',
+    'modf',
+    'pow',
+    'printf',
+    'putchar',
+    'puts',
+    'scanf',
+    'sinh',
+    'sin',
+    'snprintf',
+    'sprintf',
+    'sqrt',
+    'sscanf',
+    'strcat',
+    'strchr',
+    'strcmp',
+    'strcpy',
+    'strcspn',
+    'strlen',
+    'strncat',
+    'strncmp',
+    'strncpy',
+    'strpbrk',
+    'strrchr',
+    'strspn',
+    'strstr',
+    'tanh',
+    'tan',
+    'unordered_map',
+    'unordered_multiset',
+    'unordered_multimap',
+    'priority_queue',
+    'make_pair',
+    'array',
+    'shared_ptr',
+    'abort',
+    'terminate',
+    'abs',
+    'acos',
+    'vfprintf',
+    'vprintf',
+    'vsprintf',
+    'endl',
+    'initializer_list',
+    'unique_ptr',
+    'complex',
+    'imaginary',
+    'std',
+    'string',
+    'wstring',
+    'cin',
+    'cout',
+    'cerr',
+    'clog',
+    'stdin',
+    'stdout',
+    'stderr',
+    'stringstream',
+    'istringstream',
+    'ostringstream'
+  ];
+
+  const CPP_KEYWORDS = {
+    keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +
+      'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +
+      'unsigned long volatile static protected bool template mutable if public friend ' +
+      'do goto auto void enum else break extern using asm case typeid wchar_t ' +
+      'short reinterpret_cast|10 default double register explicit signed typename try this ' +
+      'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +
+      'concept co_await co_return co_yield requires ' +
+      'noexcept static_assert thread_local restrict final override ' +
+      'atomic_bool atomic_char atomic_schar ' +
+      'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +
+      'atomic_ullong new throw return ' +
+      'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',
+    built_in: '_Bool _Complex _Imaginary',
+    _relevance_hints: COMMON_CPP_HINTS,
+    literal: 'true false nullptr NULL'
+  };
+
+  const FUNCTION_DISPATCH = {
+    className: "function.dispatch",
+    relevance: 0,
+    keywords: CPP_KEYWORDS,
+    begin: concat(
+      /\b/,
+      /(?!decltype)/,
+      /(?!if)/,
+      /(?!for)/,
+      /(?!while)/,
+      hljs.IDENT_RE,
+      lookahead(/\s*\(/))
+  };
+
+  const EXPRESSION_CONTAINS = [
+    FUNCTION_DISPATCH,
+    PREPROCESSOR,
+    CPP_PRIMITIVE_TYPES,
+    C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    NUMBERS,
+    STRINGS
+  ];
+
+
+  const EXPRESSION_CONTEXT = {
+    // This mode covers expression context where we can't expect a function
+    // definition and shouldn't highlight anything that looks like one:
+    // `return some()`, `else if()`, `(x*sum(1, 2))`
+    variants: [
+      {
+        begin: /=/,
+        end: /;/
+      },
+      {
+        begin: /\(/,
+        end: /\)/
+      },
+      {
+        beginKeywords: 'new throw return else',
+        end: /;/
+      }
+    ],
+    keywords: CPP_KEYWORDS,
+    contains: EXPRESSION_CONTAINS.concat([
+      {
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        contains: EXPRESSION_CONTAINS.concat([ 'self' ]),
+        relevance: 0
+      }
+    ]),
+    relevance: 0
+  };
+
+  const FUNCTION_DECLARATION = {
+    className: 'function',
+    begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE,
+    returnBegin: true,
+    end: /[{;=]/,
+    excludeEnd: true,
+    keywords: CPP_KEYWORDS,
+    illegal: /[^\w\s\*&:<>.]/,
+    contains: [
+      { // to prevent it from being confused as the function title
+        begin: DECLTYPE_AUTO_RE,
+        keywords: CPP_KEYWORDS,
+        relevance: 0
+      },
+      {
+        begin: FUNCTION_TITLE,
+        returnBegin: true,
+        contains: [ TITLE_MODE ],
+        relevance: 0
+      },
+      // needed because we do not have look-behind on the below rule
+      // to prevent it from grabbing the final : in a :: pair
+      {
+        begin: /::/,
+        relevance: 0
+      },
+      // initializers
+      {
+        begin: /:/,
+        endsWithParent: true,
+        contains: [
+          STRINGS,
+          NUMBERS
+        ]
+      },
+      {
+        className: 'params',
+        begin: /\(/,
+        end: /\)/,
+        keywords: CPP_KEYWORDS,
+        relevance: 0,
+        contains: [
+          C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          STRINGS,
+          NUMBERS,
+          CPP_PRIMITIVE_TYPES,
+          // Count matching parentheses.
+          {
+            begin: /\(/,
+            end: /\)/,
+            keywords: CPP_KEYWORDS,
+            relevance: 0,
+            contains: [
+              'self',
+              C_LINE_COMMENT_MODE,
+              hljs.C_BLOCK_COMMENT_MODE,
+              STRINGS,
+              NUMBERS,
+              CPP_PRIMITIVE_TYPES
+            ]
+          }
+        ]
+      },
+      CPP_PRIMITIVE_TYPES,
+      C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      PREPROCESSOR
+    ]
+  };
+
+  return {
+    name: 'C++',
+    aliases: [
+      'cc',
+      'c++',
+      'h++',
+      'hpp',
+      'hh',
+      'hxx',
+      'cxx'
+    ],
+    keywords: CPP_KEYWORDS,
+    illegal: ' rooms (9);`
+          begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<',
+          end: '>',
+          keywords: CPP_KEYWORDS,
+          contains: [
+            'self',
+            CPP_PRIMITIVE_TYPES
+          ]
+        },
+        {
+          begin: hljs.IDENT_RE + '::',
+          keywords: CPP_KEYWORDS
+        },
+        {
+          className: 'class',
+          beginKeywords: 'enum class struct union',
+          end: /[{;:<>=]/,
+          contains: [
+            {
+              beginKeywords: "final class struct"
+            },
+            hljs.TITLE_MODE
+          ]
+        }
+      ]),
+    exports: {
+      preprocessor: PREPROCESSOR,
+      strings: STRINGS,
+      keywords: CPP_KEYWORDS
+    }
+  };
+}
+
+module.exports = cpp;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/crmsh.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/crmsh.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: crmsh
+Author: Kristoffer Gronlund 
+Website: http://crmsh.github.io
+Description: Syntax Highlighting for the crmsh DSL
+Category: config
+*/
+
+/** @type LanguageFn */
+function crmsh(hljs) {
+  const RESOURCES = 'primitive rsc_template';
+  const COMMANDS = 'group clone ms master location colocation order fencing_topology ' +
+      'rsc_ticket acl_target acl_group user role ' +
+      'tag xml';
+  const PROPERTY_SETS = 'property rsc_defaults op_defaults';
+  const KEYWORDS = 'params meta operations op rule attributes utilization';
+  const OPERATORS = 'read write deny defined not_defined in_range date spec in ' +
+      'ref reference attribute type xpath version and or lt gt tag ' +
+      'lte gte eq ne \\';
+  const TYPES = 'number string';
+  const LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';
+
+  return {
+    name: 'crmsh',
+    aliases: [
+      'crm',
+      'pcmk'
+    ],
+    case_insensitive: true,
+    keywords: {
+      keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,
+      literal: LITERALS
+    },
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      {
+        beginKeywords: 'node',
+        starts: {
+          end: '\\s*([\\w_-]+:)?',
+          starts: {
+            className: 'title',
+            end: '\\s*[\\$\\w_][\\w_-]*'
+          }
+        }
+      },
+      {
+        beginKeywords: RESOURCES,
+        starts: {
+          className: 'title',
+          end: '\\s*[\\$\\w_][\\w_-]*',
+          starts: {
+            end: '\\s*@?[\\w_][\\w_\\.:-]*'
+          }
+        }
+      },
+      {
+        begin: '\\b(' + COMMANDS.split(' ').join('|') + ')\\s+',
+        keywords: COMMANDS,
+        starts: {
+          className: 'title',
+          end: '[\\$\\w_][\\w_-]*'
+        }
+      },
+      {
+        beginKeywords: PROPERTY_SETS,
+        starts: {
+          className: 'title',
+          end: '\\s*([\\w_-]+:)?'
+        }
+      },
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'meta',
+        begin: '(ocf|systemd|service|lsb):[\\w_:-]+',
+        relevance: 0
+      },
+      {
+        className: 'number',
+        begin: '\\b\\d+(\\.\\d+)?(ms|s|h|m)?',
+        relevance: 0
+      },
+      {
+        className: 'literal',
+        begin: '[-]?(infinity|inf)',
+        relevance: 0
+      },
+      {
+        className: 'attr',
+        begin: /([A-Za-z$_#][\w_-]+)=/,
+        relevance: 0
+      },
+      {
+        className: 'tag',
+        begin: '',
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = crmsh;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/crystal.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/crystal.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Crystal
+Author: TSUYUSATO Kitsune 
+Website: https://crystal-lang.org
+*/
+
+/** @type LanguageFn */
+function crystal(hljs) {
+  const INT_SUFFIX = '(_?[ui](8|16|32|64|128))?';
+  const FLOAT_SUFFIX = '(_?f(32|64))?';
+  const CRYSTAL_IDENT_RE = '[a-zA-Z_]\\w*[!?=]?';
+  const CRYSTAL_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?';
+  const CRYSTAL_PATH_RE = '[A-Za-z_]\\w*(::\\w+)*(\\?|!)?';
+  const CRYSTAL_KEYWORDS = {
+    $pattern: CRYSTAL_IDENT_RE,
+    keyword:
+      'abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if ' +
+      'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? ' +
+      'return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield ' +
+      '__DIR__ __END_LINE__ __FILE__ __LINE__',
+    literal: 'false nil true'
+  };
+  const SUBST = {
+    className: 'subst',
+    begin: /#\{/,
+    end: /\}/,
+    keywords: CRYSTAL_KEYWORDS
+  };
+  const EXPANSION = {
+    className: 'template-variable',
+    variants: [
+      {
+        begin: '\\{\\{',
+        end: '\\}\\}'
+      },
+      {
+        begin: '\\{%',
+        end: '%\\}'
+      }
+    ],
+    keywords: CRYSTAL_KEYWORDS
+  };
+
+  function recursiveParen(begin, end) {
+    const
+        contains = [
+          {
+            begin: begin,
+            end: end
+          }
+        ];
+    contains[0].contains = contains;
+    return contains;
+  }
+  const STRING = {
+    className: 'string',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      SUBST
+    ],
+    variants: [
+      {
+        begin: /'/,
+        end: /'/
+      },
+      {
+        begin: /"/,
+        end: /"/
+      },
+      {
+        begin: /`/,
+        end: /`/
+      },
+      {
+        begin: '%[Qwi]?\\(',
+        end: '\\)',
+        contains: recursiveParen('\\(', '\\)')
+      },
+      {
+        begin: '%[Qwi]?\\[',
+        end: '\\]',
+        contains: recursiveParen('\\[', '\\]')
+      },
+      {
+        begin: '%[Qwi]?\\{',
+        end: /\}/,
+        contains: recursiveParen(/\{/, /\}/)
+      },
+      {
+        begin: '%[Qwi]?<',
+        end: '>',
+        contains: recursiveParen('<', '>')
+      },
+      {
+        begin: '%[Qwi]?\\|',
+        end: '\\|'
+      },
+      {
+        begin: /<<-\w+$/,
+        end: /^\s*\w+$/
+      }
+    ],
+    relevance: 0
+  };
+  const Q_STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: '%q\\(',
+        end: '\\)',
+        contains: recursiveParen('\\(', '\\)')
+      },
+      {
+        begin: '%q\\[',
+        end: '\\]',
+        contains: recursiveParen('\\[', '\\]')
+      },
+      {
+        begin: '%q\\{',
+        end: /\}/,
+        contains: recursiveParen(/\{/, /\}/)
+      },
+      {
+        begin: '%q<',
+        end: '>',
+        contains: recursiveParen('<', '>')
+      },
+      {
+        begin: '%q\\|',
+        end: '\\|'
+      },
+      {
+        begin: /<<-'\w+'$/,
+        end: /^\s*\w+$/
+      }
+    ],
+    relevance: 0
+  };
+  const REGEXP = {
+    begin: '(?!%\\})(' + hljs.RE_STARTERS_RE + '|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*',
+    keywords: 'case if select unless until when while',
+    contains: [
+      {
+        className: 'regexp',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          SUBST
+        ],
+        variants: [
+          {
+            begin: '//[a-z]*',
+            relevance: 0
+          },
+          {
+            begin: '/(?!\\/)',
+            end: '/[a-z]*'
+          }
+        ]
+      }
+    ],
+    relevance: 0
+  };
+  const REGEXP2 = {
+    className: 'regexp',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      SUBST
+    ],
+    variants: [
+      {
+        begin: '%r\\(',
+        end: '\\)',
+        contains: recursiveParen('\\(', '\\)')
+      },
+      {
+        begin: '%r\\[',
+        end: '\\]',
+        contains: recursiveParen('\\[', '\\]')
+      },
+      {
+        begin: '%r\\{',
+        end: /\}/,
+        contains: recursiveParen(/\{/, /\}/)
+      },
+      {
+        begin: '%r<',
+        end: '>',
+        contains: recursiveParen('<', '>')
+      },
+      {
+        begin: '%r\\|',
+        end: '\\|'
+      }
+    ],
+    relevance: 0
+  };
+  const ATTRIBUTE = {
+    className: 'meta',
+    begin: '@\\[',
+    end: '\\]',
+    contains: [
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {
+        className: 'meta-string'
+      })
+    ]
+  };
+  const CRYSTAL_DEFAULT_CONTAINS = [
+    EXPANSION,
+    STRING,
+    Q_STRING,
+    REGEXP2,
+    REGEXP,
+    ATTRIBUTE,
+    hljs.HASH_COMMENT_MODE,
+    {
+      className: 'class',
+      beginKeywords: 'class module struct',
+      end: '$|;',
+      illegal: /=/,
+      contains: [
+        hljs.HASH_COMMENT_MODE,
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: CRYSTAL_PATH_RE
+        }),
+        { // relevance booster for inheritance
+          begin: '<'
+        }
+      ]
+    },
+    {
+      className: 'class',
+      beginKeywords: 'lib enum union',
+      end: '$|;',
+      illegal: /=/,
+      contains: [
+        hljs.HASH_COMMENT_MODE,
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: CRYSTAL_PATH_RE
+        })
+      ]
+    },
+    {
+      beginKeywords: 'annotation',
+      end: '$|;',
+      illegal: /=/,
+      contains: [
+        hljs.HASH_COMMENT_MODE,
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: CRYSTAL_PATH_RE
+        })
+      ],
+      relevance: 2
+    },
+    {
+      className: 'function',
+      beginKeywords: 'def',
+      end: /\B\b/,
+      contains: [
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: CRYSTAL_METHOD_RE,
+          endsParent: true
+        })
+      ]
+    },
+    {
+      className: 'function',
+      beginKeywords: 'fun macro',
+      end: /\B\b/,
+      contains: [
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: CRYSTAL_METHOD_RE,
+          endsParent: true
+        })
+      ],
+      relevance: 2
+    },
+    {
+      className: 'symbol',
+      begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:',
+      relevance: 0
+    },
+    {
+      className: 'symbol',
+      begin: ':',
+      contains: [
+        STRING,
+        {
+          begin: CRYSTAL_METHOD_RE
+        }
+      ],
+      relevance: 0
+    },
+    {
+      className: 'number',
+      variants: [
+        {
+          begin: '\\b0b([01_]+)' + INT_SUFFIX
+        },
+        {
+          begin: '\\b0o([0-7_]+)' + INT_SUFFIX
+        },
+        {
+          begin: '\\b0x([A-Fa-f0-9_]+)' + INT_SUFFIX
+        },
+        {
+          begin: '\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_?[-+]?[0-9_]*)?' + FLOAT_SUFFIX + '(?!_)'
+        },
+        {
+          begin: '\\b([1-9][0-9_]*|0)' + INT_SUFFIX
+        }
+      ],
+      relevance: 0
+    }
+  ];
+  SUBST.contains = CRYSTAL_DEFAULT_CONTAINS;
+  EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION
+
+  return {
+    name: 'Crystal',
+    aliases: [ 'cr' ],
+    keywords: CRYSTAL_KEYWORDS,
+    contains: CRYSTAL_DEFAULT_CONTAINS
+  };
+}
+
+module.exports = crystal;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/csharp.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/csharp.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: C#
+Author: Jason Diamond 
+Contributor: Nicolas LLOBERA , Pieter Vantorre , David Pine 
+Website: https://docs.microsoft.com/en-us/dotnet/csharp/
+Category: common
+*/
+
+/** @type LanguageFn */
+function csharp(hljs) {
+  const BUILT_IN_KEYWORDS = [
+    'bool',
+    'byte',
+    'char',
+    'decimal',
+    'delegate',
+    'double',
+    'dynamic',
+    'enum',
+    'float',
+    'int',
+    'long',
+    'nint',
+    'nuint',
+    'object',
+    'sbyte',
+    'short',
+    'string',
+    'ulong',
+    'uint',
+    'ushort'
+  ];
+  const FUNCTION_MODIFIERS = [
+    'public',
+    'private',
+    'protected',
+    'static',
+    'internal',
+    'protected',
+    'abstract',
+    'async',
+    'extern',
+    'override',
+    'unsafe',
+    'virtual',
+    'new',
+    'sealed',
+    'partial'
+  ];
+  const LITERAL_KEYWORDS = [
+    'default',
+    'false',
+    'null',
+    'true'
+  ];
+  const NORMAL_KEYWORDS = [
+    'abstract',
+    'as',
+    'base',
+    'break',
+    'case',
+    'class',
+    'const',
+    'continue',
+    'do',
+    'else',
+    'event',
+    'explicit',
+    'extern',
+    'finally',
+    'fixed',
+    'for',
+    'foreach',
+    'goto',
+    'if',
+    'implicit',
+    'in',
+    'interface',
+    'internal',
+    'is',
+    'lock',
+    'namespace',
+    'new',
+    'operator',
+    'out',
+    'override',
+    'params',
+    'private',
+    'protected',
+    'public',
+    'readonly',
+    'record',
+    'ref',
+    'return',
+    'sealed',
+    'sizeof',
+    'stackalloc',
+    'static',
+    'struct',
+    'switch',
+    'this',
+    'throw',
+    'try',
+    'typeof',
+    'unchecked',
+    'unsafe',
+    'using',
+    'virtual',
+    'void',
+    'volatile',
+    'while'
+  ];
+  const CONTEXTUAL_KEYWORDS = [
+    'add',
+    'alias',
+    'and',
+    'ascending',
+    'async',
+    'await',
+    'by',
+    'descending',
+    'equals',
+    'from',
+    'get',
+    'global',
+    'group',
+    'init',
+    'into',
+    'join',
+    'let',
+    'nameof',
+    'not',
+    'notnull',
+    'on',
+    'or',
+    'orderby',
+    'partial',
+    'remove',
+    'select',
+    'set',
+    'unmanaged',
+    'value|0',
+    'var',
+    'when',
+    'where',
+    'with',
+    'yield'
+  ];
+
+  const KEYWORDS = {
+    keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),
+    built_in: BUILT_IN_KEYWORDS,
+    literal: LITERAL_KEYWORDS
+  };
+  const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, {
+    begin: '[a-zA-Z](\\.?\\w)*'
+  });
+  const NUMBERS = {
+    className: 'number',
+    variants: [
+      {
+        begin: '\\b(0b[01\']+)'
+      },
+      {
+        begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)(u|U|l|L|ul|UL|f|F|b|B)'
+      },
+      {
+        begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)'
+      }
+    ],
+    relevance: 0
+  };
+  const VERBATIM_STRING = {
+    className: 'string',
+    begin: '@"',
+    end: '"',
+    contains: [
+      {
+        begin: '""'
+      }
+    ]
+  };
+  const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {
+    illegal: /\n/
+  });
+  const SUBST = {
+    className: 'subst',
+    begin: /\{/,
+    end: /\}/,
+    keywords: KEYWORDS
+  };
+  const SUBST_NO_LF = hljs.inherit(SUBST, {
+    illegal: /\n/
+  });
+  const INTERPOLATED_STRING = {
+    className: 'string',
+    begin: /\$"/,
+    end: '"',
+    illegal: /\n/,
+    contains: [
+      {
+        begin: /\{\{/
+      },
+      {
+        begin: /\}\}/
+      },
+      hljs.BACKSLASH_ESCAPE,
+      SUBST_NO_LF
+    ]
+  };
+  const INTERPOLATED_VERBATIM_STRING = {
+    className: 'string',
+    begin: /\$@"/,
+    end: '"',
+    contains: [
+      {
+        begin: /\{\{/
+      },
+      {
+        begin: /\}\}/
+      },
+      {
+        begin: '""'
+      },
+      SUBST
+    ]
+  };
+  const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {
+    illegal: /\n/,
+    contains: [
+      {
+        begin: /\{\{/
+      },
+      {
+        begin: /\}\}/
+      },
+      {
+        begin: '""'
+      },
+      SUBST_NO_LF
+    ]
+  });
+  SUBST.contains = [
+    INTERPOLATED_VERBATIM_STRING,
+    INTERPOLATED_STRING,
+    VERBATIM_STRING,
+    hljs.APOS_STRING_MODE,
+    hljs.QUOTE_STRING_MODE,
+    NUMBERS,
+    hljs.C_BLOCK_COMMENT_MODE
+  ];
+  SUBST_NO_LF.contains = [
+    INTERPOLATED_VERBATIM_STRING_NO_LF,
+    INTERPOLATED_STRING,
+    VERBATIM_STRING_NO_LF,
+    hljs.APOS_STRING_MODE,
+    hljs.QUOTE_STRING_MODE,
+    NUMBERS,
+    hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {
+      illegal: /\n/
+    })
+  ];
+  const STRING = {
+    variants: [
+      INTERPOLATED_VERBATIM_STRING,
+      INTERPOLATED_STRING,
+      VERBATIM_STRING,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE
+    ]
+  };
+
+  const GENERIC_MODIFIER = {
+    begin: "<",
+    end: ">",
+    contains: [
+      {
+        beginKeywords: "in out"
+      },
+      TITLE_MODE
+    ]
+  };
+  const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?';
+  const AT_IDENTIFIER = {
+    // prevents expressions like `@class` from incorrect flagging
+    // `class` as a keyword
+    begin: "@" + hljs.IDENT_RE,
+    relevance: 0
+  };
+
+  return {
+    name: 'C#',
+    aliases: [
+      'cs',
+      'c#'
+    ],
+    keywords: KEYWORDS,
+    illegal: /::/,
+    contains: [
+      hljs.COMMENT(
+        '///',
+        '$',
+        {
+          returnBegin: true,
+          contains: [
+            {
+              className: 'doctag',
+              variants: [
+                {
+                  begin: '///',
+                  relevance: 0
+                },
+                {
+                  begin: ''
+                },
+                {
+                  begin: ''
+                }
+              ]
+            }
+          ]
+        }
+      ),
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'meta',
+        begin: '#',
+        end: '$',
+        keywords: {
+          'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'
+        }
+      },
+      STRING,
+      NUMBERS,
+      {
+        beginKeywords: 'class interface',
+        relevance: 0,
+        end: /[{;=]/,
+        illegal: /[^\s:,]/,
+        contains: [
+          {
+            beginKeywords: "where class"
+          },
+          TITLE_MODE,
+          GENERIC_MODIFIER,
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      {
+        beginKeywords: 'namespace',
+        relevance: 0,
+        end: /[{;=]/,
+        illegal: /[^\s:]/,
+        contains: [
+          TITLE_MODE,
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      {
+        beginKeywords: 'record',
+        relevance: 0,
+        end: /[{;=]/,
+        illegal: /[^\s:]/,
+        contains: [
+          TITLE_MODE,
+          GENERIC_MODIFIER,
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      {
+        // [Attributes("")]
+        className: 'meta',
+        begin: '^\\s*\\[',
+        excludeBegin: true,
+        end: '\\]',
+        excludeEnd: true,
+        contains: [
+          {
+            className: 'meta-string',
+            begin: /"/,
+            end: /"/
+          }
+        ]
+      },
+      {
+        // Expression keywords prevent 'keyword Name(...)' from being
+        // recognized as a function definition
+        beginKeywords: 'new return throw await else',
+        relevance: 0
+      },
+      {
+        className: 'function',
+        begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(<.+>\\s*)?\\(',
+        returnBegin: true,
+        end: /\s*[{;=]/,
+        excludeEnd: true,
+        keywords: KEYWORDS,
+        contains: [
+          // prevents these from being highlighted `title`
+          {
+            beginKeywords: FUNCTION_MODIFIERS.join(" "),
+            relevance: 0
+          },
+          {
+            begin: hljs.IDENT_RE + '\\s*(<.+>\\s*)?\\(',
+            returnBegin: true,
+            contains: [
+              hljs.TITLE_MODE,
+              GENERIC_MODIFIER
+            ],
+            relevance: 0
+          },
+          {
+            className: 'params',
+            begin: /\(/,
+            end: /\)/,
+            excludeBegin: true,
+            excludeEnd: true,
+            keywords: KEYWORDS,
+            relevance: 0,
+            contains: [
+              STRING,
+              NUMBERS,
+              hljs.C_BLOCK_COMMENT_MODE
+            ]
+          },
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      AT_IDENTIFIER
+    ]
+  };
+}
+
+module.exports = csharp;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/csp.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/csp.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: CSP
+Description: Content Security Policy definition highlighting
+Author: Taras 
+Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
+
+vim: ts=2 sw=2 st=2
+*/
+
+/** @type LanguageFn */
+function csp(hljs) {
+  return {
+    name: 'CSP',
+    case_insensitive: false,
+    keywords: {
+      $pattern: '[a-zA-Z][a-zA-Z0-9_-]*',
+      keyword: 'base-uri child-src connect-src default-src font-src form-action ' +
+        'frame-ancestors frame-src img-src media-src object-src plugin-types ' +
+        'report-uri sandbox script-src style-src'
+    },
+    contains: [
+      {
+        className: 'string',
+        begin: "'",
+        end: "'"
+      },
+      {
+        className: 'attribute',
+        begin: '^Content',
+        end: ':',
+        excludeEnd: true
+      }
+    ]
+  };
+}
+
+module.exports = csp;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/css.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/css.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+const MODES = (hljs) => {
+  return {
+    IMPORTANT: {
+      className: 'meta',
+      begin: '!important'
+    },
+    HEXCOLOR: {
+      className: 'number',
+      begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'
+    },
+    ATTRIBUTE_SELECTOR_MODE: {
+      className: 'selector-attr',
+      begin: /\[/,
+      end: /\]/,
+      illegal: '$',
+      contains: [
+        hljs.APOS_STRING_MODE,
+        hljs.QUOTE_STRING_MODE
+      ]
+    }
+  };
+};
+
+const TAGS = [
+  'a',
+  'abbr',
+  'address',
+  'article',
+  'aside',
+  'audio',
+  'b',
+  'blockquote',
+  'body',
+  'button',
+  'canvas',
+  'caption',
+  'cite',
+  'code',
+  'dd',
+  'del',
+  'details',
+  'dfn',
+  'div',
+  'dl',
+  'dt',
+  'em',
+  'fieldset',
+  'figcaption',
+  'figure',
+  'footer',
+  'form',
+  'h1',
+  'h2',
+  'h3',
+  'h4',
+  'h5',
+  'h6',
+  'header',
+  'hgroup',
+  'html',
+  'i',
+  'iframe',
+  'img',
+  'input',
+  'ins',
+  'kbd',
+  'label',
+  'legend',
+  'li',
+  'main',
+  'mark',
+  'menu',
+  'nav',
+  'object',
+  'ol',
+  'p',
+  'q',
+  'quote',
+  'samp',
+  'section',
+  'span',
+  'strong',
+  'summary',
+  'sup',
+  'table',
+  'tbody',
+  'td',
+  'textarea',
+  'tfoot',
+  'th',
+  'thead',
+  'time',
+  'tr',
+  'ul',
+  'var',
+  'video'
+];
+
+const MEDIA_FEATURES = [
+  'any-hover',
+  'any-pointer',
+  'aspect-ratio',
+  'color',
+  'color-gamut',
+  'color-index',
+  'device-aspect-ratio',
+  'device-height',
+  'device-width',
+  'display-mode',
+  'forced-colors',
+  'grid',
+  'height',
+  'hover',
+  'inverted-colors',
+  'monochrome',
+  'orientation',
+  'overflow-block',
+  'overflow-inline',
+  'pointer',
+  'prefers-color-scheme',
+  'prefers-contrast',
+  'prefers-reduced-motion',
+  'prefers-reduced-transparency',
+  'resolution',
+  'scan',
+  'scripting',
+  'update',
+  'width',
+  // TODO: find a better solution?
+  'min-width',
+  'max-width',
+  'min-height',
+  'max-height'
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes
+const PSEUDO_CLASSES = [
+  'active',
+  'any-link',
+  'blank',
+  'checked',
+  'current',
+  'default',
+  'defined',
+  'dir', // dir()
+  'disabled',
+  'drop',
+  'empty',
+  'enabled',
+  'first',
+  'first-child',
+  'first-of-type',
+  'fullscreen',
+  'future',
+  'focus',
+  'focus-visible',
+  'focus-within',
+  'has', // has()
+  'host', // host or host()
+  'host-context', // host-context()
+  'hover',
+  'indeterminate',
+  'in-range',
+  'invalid',
+  'is', // is()
+  'lang', // lang()
+  'last-child',
+  'last-of-type',
+  'left',
+  'link',
+  'local-link',
+  'not', // not()
+  'nth-child', // nth-child()
+  'nth-col', // nth-col()
+  'nth-last-child', // nth-last-child()
+  'nth-last-col', // nth-last-col()
+  'nth-last-of-type', //nth-last-of-type()
+  'nth-of-type', //nth-of-type()
+  'only-child',
+  'only-of-type',
+  'optional',
+  'out-of-range',
+  'past',
+  'placeholder-shown',
+  'read-only',
+  'read-write',
+  'required',
+  'right',
+  'root',
+  'scope',
+  'target',
+  'target-within',
+  'user-invalid',
+  'valid',
+  'visited',
+  'where' // where()
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements
+const PSEUDO_ELEMENTS = [
+  'after',
+  'backdrop',
+  'before',
+  'cue',
+  'cue-region',
+  'first-letter',
+  'first-line',
+  'grammar-error',
+  'marker',
+  'part',
+  'placeholder',
+  'selection',
+  'slotted',
+  'spelling-error'
+];
+
+const ATTRIBUTES = [
+  'align-content',
+  'align-items',
+  'align-self',
+  'animation',
+  'animation-delay',
+  'animation-direction',
+  'animation-duration',
+  'animation-fill-mode',
+  'animation-iteration-count',
+  'animation-name',
+  'animation-play-state',
+  'animation-timing-function',
+  'auto',
+  'backface-visibility',
+  'background',
+  'background-attachment',
+  'background-clip',
+  'background-color',
+  'background-image',
+  'background-origin',
+  'background-position',
+  'background-repeat',
+  'background-size',
+  'border',
+  'border-bottom',
+  'border-bottom-color',
+  'border-bottom-left-radius',
+  'border-bottom-right-radius',
+  'border-bottom-style',
+  'border-bottom-width',
+  'border-collapse',
+  'border-color',
+  'border-image',
+  'border-image-outset',
+  'border-image-repeat',
+  'border-image-slice',
+  'border-image-source',
+  'border-image-width',
+  'border-left',
+  'border-left-color',
+  'border-left-style',
+  'border-left-width',
+  'border-radius',
+  'border-right',
+  'border-right-color',
+  'border-right-style',
+  'border-right-width',
+  'border-spacing',
+  'border-style',
+  'border-top',
+  'border-top-color',
+  'border-top-left-radius',
+  'border-top-right-radius',
+  'border-top-style',
+  'border-top-width',
+  'border-width',
+  'bottom',
+  'box-decoration-break',
+  'box-shadow',
+  'box-sizing',
+  'break-after',
+  'break-before',
+  'break-inside',
+  'caption-side',
+  'clear',
+  'clip',
+  'clip-path',
+  'color',
+  'column-count',
+  'column-fill',
+  'column-gap',
+  'column-rule',
+  'column-rule-color',
+  'column-rule-style',
+  'column-rule-width',
+  'column-span',
+  'column-width',
+  'columns',
+  'content',
+  'counter-increment',
+  'counter-reset',
+  'cursor',
+  'direction',
+  'display',
+  'empty-cells',
+  'filter',
+  'flex',
+  'flex-basis',
+  'flex-direction',
+  'flex-flow',
+  'flex-grow',
+  'flex-shrink',
+  'flex-wrap',
+  'float',
+  'font',
+  'font-display',
+  'font-family',
+  'font-feature-settings',
+  'font-kerning',
+  'font-language-override',
+  'font-size',
+  'font-size-adjust',
+  'font-smoothing',
+  'font-stretch',
+  'font-style',
+  'font-variant',
+  'font-variant-ligatures',
+  'font-variation-settings',
+  'font-weight',
+  'height',
+  'hyphens',
+  'icon',
+  'image-orientation',
+  'image-rendering',
+  'image-resolution',
+  'ime-mode',
+  'inherit',
+  'initial',
+  'justify-content',
+  'left',
+  'letter-spacing',
+  'line-height',
+  'list-style',
+  'list-style-image',
+  'list-style-position',
+  'list-style-type',
+  'margin',
+  'margin-bottom',
+  'margin-left',
+  'margin-right',
+  'margin-top',
+  'marks',
+  'mask',
+  'max-height',
+  'max-width',
+  'min-height',
+  'min-width',
+  'nav-down',
+  'nav-index',
+  'nav-left',
+  'nav-right',
+  'nav-up',
+  'none',
+  'normal',
+  'object-fit',
+  'object-position',
+  'opacity',
+  'order',
+  'orphans',
+  'outline',
+  'outline-color',
+  'outline-offset',
+  'outline-style',
+  'outline-width',
+  'overflow',
+  'overflow-wrap',
+  'overflow-x',
+  'overflow-y',
+  'padding',
+  'padding-bottom',
+  'padding-left',
+  'padding-right',
+  'padding-top',
+  'page-break-after',
+  'page-break-before',
+  'page-break-inside',
+  'perspective',
+  'perspective-origin',
+  'pointer-events',
+  'position',
+  'quotes',
+  'resize',
+  'right',
+  'src', // @font-face
+  'tab-size',
+  'table-layout',
+  'text-align',
+  'text-align-last',
+  'text-decoration',
+  'text-decoration-color',
+  'text-decoration-line',
+  'text-decoration-style',
+  'text-indent',
+  'text-overflow',
+  'text-rendering',
+  'text-shadow',
+  'text-transform',
+  'text-underline-position',
+  'top',
+  'transform',
+  'transform-origin',
+  'transform-style',
+  'transition',
+  'transition-delay',
+  'transition-duration',
+  'transition-property',
+  'transition-timing-function',
+  'unicode-bidi',
+  'vertical-align',
+  'visibility',
+  'white-space',
+  'widows',
+  'width',
+  'word-break',
+  'word-spacing',
+  'word-wrap',
+  'z-index'
+  // reverse makes sure longer attributes `font-weight` are matched fully
+  // instead of getting false positives on say `font`
+].reverse();
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: CSS
+Category: common, css
+Website: https://developer.mozilla.org/en-US/docs/Web/CSS
+*/
+
+/** @type LanguageFn */
+function css(hljs) {
+  const modes = MODES(hljs);
+  const FUNCTION_DISPATCH = {
+    className: "built_in",
+    begin: /[\w-]+(?=\()/
+  };
+  const VENDOR_PREFIX = {
+    begin: /-(webkit|moz|ms|o)-(?=[a-z])/
+  };
+  const AT_MODIFIERS = "and or not only";
+  const AT_PROPERTY_RE = /@-?\w[\w]*(-\w+)*/; // @-webkit-keyframes
+  const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';
+  const STRINGS = [
+    hljs.APOS_STRING_MODE,
+    hljs.QUOTE_STRING_MODE
+  ];
+
+  return {
+    name: 'CSS',
+    case_insensitive: true,
+    illegal: /[=|'\$]/,
+    keywords: {
+      keyframePosition: "from to"
+    },
+    classNameAliases: {
+      // for visual continuity with `tag {}` and because we
+      // don't have a great class for this?
+      keyframePosition: "selector-tag"
+    },
+    contains: [
+      hljs.C_BLOCK_COMMENT_MODE,
+      VENDOR_PREFIX,
+      // to recognize keyframe 40% etc which are outside the scope of our
+      // attribute value mode
+      hljs.CSS_NUMBER_MODE,
+      {
+        className: 'selector-id',
+        begin: /#[A-Za-z0-9_-]+/,
+        relevance: 0
+      },
+      {
+        className: 'selector-class',
+        begin: '\\.' + IDENT_RE,
+        relevance: 0
+      },
+      modes.ATTRIBUTE_SELECTOR_MODE,
+      {
+        className: 'selector-pseudo',
+        variants: [
+          {
+            begin: ':(' + PSEUDO_CLASSES.join('|') + ')'
+          },
+          {
+            begin: '::(' + PSEUDO_ELEMENTS.join('|') + ')'
+          }
+        ]
+      },
+      // we may actually need this (12/2020)
+      // { // pseudo-selector params
+      //   begin: /\(/,
+      //   end: /\)/,
+      //   contains: [ hljs.CSS_NUMBER_MODE ]
+      // },
+      {
+        className: 'attribute',
+        begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b'
+      },
+      // attribute values
+      {
+        begin: ':',
+        end: '[;}]',
+        contains: [
+          modes.HEXCOLOR,
+          modes.IMPORTANT,
+          hljs.CSS_NUMBER_MODE,
+          ...STRINGS,
+          // needed to highlight these as strings and to avoid issues with
+          // illegal characters that might be inside urls that would tigger the
+          // languages illegal stack
+          {
+            begin: /(url|data-uri)\(/,
+            end: /\)/,
+            relevance: 0, // from keywords
+            keywords: {
+              built_in: "url data-uri"
+            },
+            contains: [
+              {
+                className: "string",
+                // any character other than `)` as in `url()` will be the start
+                // of a string, which ends with `)` (from the parent mode)
+                begin: /[^)]/,
+                endsWithParent: true,
+                excludeEnd: true
+              }
+            ]
+          },
+          FUNCTION_DISPATCH
+        ]
+      },
+      {
+        begin: lookahead(/@/),
+        end: '[{;]',
+        relevance: 0,
+        illegal: /:/, // break on Less variables @var: ...
+        contains: [
+          {
+            className: 'keyword',
+            begin: AT_PROPERTY_RE
+          },
+          {
+            begin: /\s/,
+            endsWithParent: true,
+            excludeEnd: true,
+            relevance: 0,
+            keywords: {
+              $pattern: /[a-z-]+/,
+              keyword: AT_MODIFIERS,
+              attribute: MEDIA_FEATURES.join(" ")
+            },
+            contains: [
+              {
+                begin: /[a-z-]+(?=:)/,
+                className: "attribute"
+              },
+              ...STRINGS,
+              hljs.CSS_NUMBER_MODE
+            ]
+          }
+        ]
+      },
+      {
+        className: 'selector-tag',
+        begin: '\\b(' + TAGS.join('|') + ')\\b'
+      }
+    ]
+  };
+}
+
+module.exports = css;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/d.js":
+/*!******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/d.js ***!
+  \******************************************************/
+/***/ ((module) => {
+
+/*
+Language: D
+Author: Aleksandar Ruzicic 
+Description: D is a language with C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity.
+Version: 1.0a
+Website: https://dlang.org
+Date: 2012-04-08
+*/
+
+/**
+ * Known issues:
+ *
+ * - invalid hex string literals will be recognized as a double quoted strings
+ *   but 'x' at the beginning of string will not be matched
+ *
+ * - delimited string literals are not checked for matching end delimiter
+ *   (not possible to do with js regexp)
+ *
+ * - content of token string is colored as a string (i.e. no keyword coloring inside a token string)
+ *   also, content of token string is not validated to contain only valid D tokens
+ *
+ * - special token sequence rule is not strictly following D grammar (anything following #line
+ *   up to the end of line is matched as special token sequence)
+ */
+
+/** @type LanguageFn */
+function d(hljs) {
+  /**
+   * Language keywords
+   *
+   * @type {Object}
+   */
+  const D_KEYWORDS = {
+    $pattern: hljs.UNDERSCORE_IDENT_RE,
+    keyword:
+      'abstract alias align asm assert auto body break byte case cast catch class ' +
+      'const continue debug default delete deprecated do else enum export extern final ' +
+      'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' +
+      'interface invariant is lazy macro mixin module new nothrow out override package ' +
+      'pragma private protected public pure ref return scope shared static struct ' +
+      'super switch synchronized template this throw try typedef typeid typeof union ' +
+      'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' +
+      '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__',
+    built_in:
+      'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' +
+      'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' +
+      'wstring',
+    literal:
+      'false null true'
+  };
+
+  /**
+   * Number literal regexps
+   *
+   * @type {String}
+   */
+  const decimal_integer_re = '(0|[1-9][\\d_]*)';
+  const decimal_integer_nosus_re = '(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)';
+  const binary_integer_re = '0[bB][01_]+';
+  const hexadecimal_digits_re = '([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)';
+  const hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re;
+
+  const decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')';
+  const decimal_float_re = '(' + decimal_integer_nosus_re + '(\\.\\d*|' + decimal_exponent_re + ')|' +
+                '\\d+\\.' + decimal_integer_nosus_re + '|' +
+                '\\.' + decimal_integer_re + decimal_exponent_re + '?' +
+              ')';
+  const hexadecimal_float_re = '(0[xX](' +
+                  hexadecimal_digits_re + '\\.' + hexadecimal_digits_re + '|' +
+                  '\\.?' + hexadecimal_digits_re +
+                 ')[pP][+-]?' + decimal_integer_nosus_re + ')';
+
+  const integer_re = '(' +
+      decimal_integer_re + '|' +
+      binary_integer_re + '|' +
+       hexadecimal_integer_re +
+    ')';
+
+  const float_re = '(' +
+      hexadecimal_float_re + '|' +
+      decimal_float_re +
+    ')';
+
+  /**
+   * Escape sequence supported in D string and character literals
+   *
+   * @type {String}
+   */
+  const escape_sequence_re = '\\\\(' +
+              '[\'"\\?\\\\abfnrtv]|' + // common escapes
+              'u[\\dA-Fa-f]{4}|' + // four hex digit unicode codepoint
+              '[0-7]{1,3}|' + // one to three octal digit ascii char code
+              'x[\\dA-Fa-f]{2}|' + // two hex digit ascii char code
+              'U[\\dA-Fa-f]{8}' + // eight hex digit unicode codepoint
+              ')|' +
+              '&[a-zA-Z\\d]{2,};'; // named character entity
+
+  /**
+   * D integer number literals
+   *
+   * @type {Object}
+   */
+  const D_INTEGER_MODE = {
+    className: 'number',
+    begin: '\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?',
+    relevance: 0
+  };
+
+  /**
+   * [D_FLOAT_MODE description]
+   * @type {Object}
+   */
+  const D_FLOAT_MODE = {
+    className: 'number',
+    begin: '\\b(' +
+        float_re + '([fF]|L|i|[fF]i|Li)?|' +
+        integer_re + '(i|[fF]i|Li)' +
+      ')',
+    relevance: 0
+  };
+
+  /**
+   * D character literal
+   *
+   * @type {Object}
+   */
+  const D_CHARACTER_MODE = {
+    className: 'string',
+    begin: '\'(' + escape_sequence_re + '|.)',
+    end: '\'',
+    illegal: '.'
+  };
+
+  /**
+   * D string escape sequence
+   *
+   * @type {Object}
+   */
+  const D_ESCAPE_SEQUENCE = {
+    begin: escape_sequence_re,
+    relevance: 0
+  };
+
+  /**
+   * D double quoted string literal
+   *
+   * @type {Object}
+   */
+  const D_STRING_MODE = {
+    className: 'string',
+    begin: '"',
+    contains: [D_ESCAPE_SEQUENCE],
+    end: '"[cwd]?'
+  };
+
+  /**
+   * D wysiwyg and delimited string literals
+   *
+   * @type {Object}
+   */
+  const D_WYSIWYG_DELIMITED_STRING_MODE = {
+    className: 'string',
+    begin: '[rq]"',
+    end: '"[cwd]?',
+    relevance: 5
+  };
+
+  /**
+   * D alternate wysiwyg string literal
+   *
+   * @type {Object}
+   */
+  const D_ALTERNATE_WYSIWYG_STRING_MODE = {
+    className: 'string',
+    begin: '`',
+    end: '`[cwd]?'
+  };
+
+  /**
+   * D hexadecimal string literal
+   *
+   * @type {Object}
+   */
+  const D_HEX_STRING_MODE = {
+    className: 'string',
+    begin: 'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',
+    relevance: 10
+  };
+
+  /**
+   * D delimited string literal
+   *
+   * @type {Object}
+   */
+  const D_TOKEN_STRING_MODE = {
+    className: 'string',
+    begin: 'q"\\{',
+    end: '\\}"'
+  };
+
+  /**
+   * Hashbang support
+   *
+   * @type {Object}
+   */
+  const D_HASHBANG_MODE = {
+    className: 'meta',
+    begin: '^#!',
+    end: '$',
+    relevance: 5
+  };
+
+  /**
+   * D special token sequence
+   *
+   * @type {Object}
+   */
+  const D_SPECIAL_TOKEN_SEQUENCE_MODE = {
+    className: 'meta',
+    begin: '#(line)',
+    end: '$',
+    relevance: 5
+  };
+
+  /**
+   * D attributes
+   *
+   * @type {Object}
+   */
+  const D_ATTRIBUTE_MODE = {
+    className: 'keyword',
+    begin: '@[a-zA-Z_][a-zA-Z_\\d]*'
+  };
+
+  /**
+   * D nesting comment
+   *
+   * @type {Object}
+   */
+  const D_NESTING_COMMENT_MODE = hljs.COMMENT(
+    '\\/\\+',
+    '\\+\\/',
+    {
+      contains: ['self'],
+      relevance: 10
+    }
+  );
+
+  return {
+    name: 'D',
+    keywords: D_KEYWORDS,
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      D_NESTING_COMMENT_MODE,
+      D_HEX_STRING_MODE,
+      D_STRING_MODE,
+      D_WYSIWYG_DELIMITED_STRING_MODE,
+      D_ALTERNATE_WYSIWYG_STRING_MODE,
+      D_TOKEN_STRING_MODE,
+      D_FLOAT_MODE,
+      D_INTEGER_MODE,
+      D_CHARACTER_MODE,
+      D_HASHBANG_MODE,
+      D_SPECIAL_TOKEN_SEQUENCE_MODE,
+      D_ATTRIBUTE_MODE
+    ]
+  };
+}
+
+module.exports = d;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/dart.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/dart.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Dart
+Requires: markdown.js
+Author: Maxim Dikun 
+Description: Dart a modern, object-oriented language developed by Google. For more information see https://www.dartlang.org/
+Website: https://dart.dev
+Category: scripting
+*/
+
+/** @type LanguageFn */
+function dart(hljs) {
+  const SUBST = {
+    className: 'subst',
+    variants: [{
+      begin: '\\$[A-Za-z0-9_]+'
+    }]
+  };
+
+  const BRACED_SUBST = {
+    className: 'subst',
+    variants: [{
+      begin: /\$\{/,
+      end: /\}/
+    }],
+    keywords: 'true false null this is new super'
+  };
+
+  const STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: 'r\'\'\'',
+        end: '\'\'\''
+      },
+      {
+        begin: 'r"""',
+        end: '"""'
+      },
+      {
+        begin: 'r\'',
+        end: '\'',
+        illegal: '\\n'
+      },
+      {
+        begin: 'r"',
+        end: '"',
+        illegal: '\\n'
+      },
+      {
+        begin: '\'\'\'',
+        end: '\'\'\'',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          SUBST,
+          BRACED_SUBST
+        ]
+      },
+      {
+        begin: '"""',
+        end: '"""',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          SUBST,
+          BRACED_SUBST
+        ]
+      },
+      {
+        begin: '\'',
+        end: '\'',
+        illegal: '\\n',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          SUBST,
+          BRACED_SUBST
+        ]
+      },
+      {
+        begin: '"',
+        end: '"',
+        illegal: '\\n',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          SUBST,
+          BRACED_SUBST
+        ]
+      }
+    ]
+  };
+  BRACED_SUBST.contains = [
+    hljs.C_NUMBER_MODE,
+    STRING
+  ];
+
+  const BUILT_IN_TYPES = [
+    // dart:core
+    'Comparable',
+    'DateTime',
+    'Duration',
+    'Function',
+    'Iterable',
+    'Iterator',
+    'List',
+    'Map',
+    'Match',
+    'Object',
+    'Pattern',
+    'RegExp',
+    'Set',
+    'Stopwatch',
+    'String',
+    'StringBuffer',
+    'StringSink',
+    'Symbol',
+    'Type',
+    'Uri',
+    'bool',
+    'double',
+    'int',
+    'num',
+    // dart:html
+    'Element',
+    'ElementList'
+  ];
+  const NULLABLE_BUILT_IN_TYPES = BUILT_IN_TYPES.map((e) => `${e}?`);
+
+  const KEYWORDS = {
+    keyword: 'abstract as assert async await break case catch class const continue covariant default deferred do ' +
+      'dynamic else enum export extends extension external factory false final finally for Function get hide if ' +
+      'implements import in inferface is late library mixin new null on operator part required rethrow return set ' +
+      'show static super switch sync this throw true try typedef var void while with yield',
+    built_in:
+      BUILT_IN_TYPES
+        .concat(NULLABLE_BUILT_IN_TYPES)
+        .concat([
+          // dart:core
+          'Never',
+          'Null',
+          'dynamic',
+          'print',
+          // dart:html
+          'document',
+          'querySelector',
+          'querySelectorAll',
+          'window'
+        ]),
+    $pattern: /[A-Za-z][A-Za-z0-9_]*\??/
+  };
+
+  return {
+    name: 'Dart',
+    keywords: KEYWORDS,
+    contains: [
+      STRING,
+      hljs.COMMENT(
+        /\/\*\*(?!\/)/,
+        /\*\//,
+        {
+          subLanguage: 'markdown',
+          relevance: 0
+        }
+      ),
+      hljs.COMMENT(
+        /\/{3,} ?/,
+        /$/, {
+          contains: [{
+            subLanguage: 'markdown',
+            begin: '.',
+            end: '$',
+            relevance: 0
+          }]
+        }
+      ),
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'class',
+        beginKeywords: 'class interface',
+        end: /\{/,
+        excludeEnd: true,
+        contains: [
+          {
+            beginKeywords: 'extends implements'
+          },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'meta',
+        begin: '@[A-Za-z]+'
+      },
+      {
+        begin: '=>' // No markup, just a relevance booster
+      }
+    ]
+  };
+}
+
+module.exports = dart;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/delphi.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/delphi.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Delphi
+Website: https://www.embarcadero.com/products/delphi
+*/
+
+/** @type LanguageFn */
+function delphi(hljs) {
+  const KEYWORDS =
+    'exports register file shl array record property for mod while set ally label uses raise not ' +
+    'stored class safecall var interface or private static exit index inherited to else stdcall ' +
+    'override shr asm far resourcestring finalization packed virtual out and protected library do ' +
+    'xorwrite goto near function end div overload object unit begin string on inline repeat until ' +
+    'destructor write message program with read initialization except default nil if case cdecl in ' +
+    'downto threadvar of try pascal const external constructor type public then implementation ' +
+    'finally published procedure absolute reintroduce operator as is abstract alias assembler ' +
+    'bitpacked break continue cppdecl cvar enumerator experimental platform deprecated ' +
+    'unimplemented dynamic export far16 forward generic helper implements interrupt iochecks ' +
+    'local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat ' +
+    'specialize strict unaligned varargs ';
+  const COMMENT_MODES = [
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.COMMENT(/\{/, /\}/, {
+      relevance: 0
+    }),
+    hljs.COMMENT(/\(\*/, /\*\)/, {
+      relevance: 10
+    })
+  ];
+  const DIRECTIVE = {
+    className: 'meta',
+    variants: [
+      {
+        begin: /\{\$/,
+        end: /\}/
+      },
+      {
+        begin: /\(\*\$/,
+        end: /\*\)/
+      }
+    ]
+  };
+  const STRING = {
+    className: 'string',
+    begin: /'/,
+    end: /'/,
+    contains: [{
+      begin: /''/
+    }]
+  };
+  const NUMBER = {
+    className: 'number',
+    relevance: 0,
+    // Source: https://www.freepascal.org/docs-html/ref/refse6.html
+    variants: [
+      {
+        // Hexadecimal notation, e.g., $7F.
+        begin: '\\$[0-9A-Fa-f]+'
+      },
+      {
+        // Octal notation, e.g., &42.
+        begin: '&[0-7]+'
+      },
+      {
+        // Binary notation, e.g., %1010.
+        begin: '%[01]+'
+      }
+    ]
+  };
+  const CHAR_STRING = {
+    className: 'string',
+    begin: /(#\d+)+/
+  };
+  const CLASS = {
+    begin: hljs.IDENT_RE + '\\s*=\\s*class\\s*\\(',
+    returnBegin: true,
+    contains: [hljs.TITLE_MODE]
+  };
+  const FUNCTION = {
+    className: 'function',
+    beginKeywords: 'function constructor destructor procedure',
+    end: /[:;]/,
+    keywords: 'function constructor|10 destructor|10 procedure|10',
+    contains: [
+      hljs.TITLE_MODE,
+      {
+        className: 'params',
+        begin: /\(/,
+        end: /\)/,
+        keywords: KEYWORDS,
+        contains: [
+          STRING,
+          CHAR_STRING,
+          DIRECTIVE
+        ].concat(COMMENT_MODES)
+      },
+      DIRECTIVE
+    ].concat(COMMENT_MODES)
+  };
+  return {
+    name: 'Delphi',
+    aliases: [
+      'dpr',
+      'dfm',
+      'pas',
+      'pascal',
+      'freepascal',
+      'lazarus',
+      'lpr',
+      'lfm'
+    ],
+    case_insensitive: true,
+    keywords: KEYWORDS,
+    illegal: /"|\$[G-Zg-z]|\/\*|<\/|\|/,
+    contains: [
+      STRING,
+      CHAR_STRING,
+      hljs.NUMBER_MODE,
+      NUMBER,
+      CLASS,
+      FUNCTION,
+      DIRECTIVE
+    ].concat(COMMENT_MODES)
+  };
+}
+
+module.exports = delphi;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/diff.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/diff.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Diff
+Description: Unified and context diff
+Author: Vasily Polovnyov 
+Website: https://www.gnu.org/software/diffutils/
+Category: common
+*/
+
+/** @type LanguageFn */
+function diff(hljs) {
+  return {
+    name: 'Diff',
+    aliases: ['patch'],
+    contains: [
+      {
+        className: 'meta',
+        relevance: 10,
+        variants: [
+          {
+            begin: /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/
+          },
+          {
+            begin: /^\*\*\* +\d+,\d+ +\*\*\*\*$/
+          },
+          {
+            begin: /^--- +\d+,\d+ +----$/
+          }
+        ]
+      },
+      {
+        className: 'comment',
+        variants: [
+          {
+            begin: /Index: /,
+            end: /$/
+          },
+          {
+            begin: /^index/,
+            end: /$/
+          },
+          {
+            begin: /={3,}/,
+            end: /$/
+          },
+          {
+            begin: /^-{3}/,
+            end: /$/
+          },
+          {
+            begin: /^\*{3} /,
+            end: /$/
+          },
+          {
+            begin: /^\+{3}/,
+            end: /$/
+          },
+          {
+            begin: /^\*{15}$/
+          },
+          {
+            begin: /^diff --git/,
+            end: /$/
+          }
+        ]
+      },
+      {
+        className: 'addition',
+        begin: /^\+/,
+        end: /$/
+      },
+      {
+        className: 'deletion',
+        begin: /^-/,
+        end: /$/
+      },
+      {
+        className: 'addition',
+        begin: /^!/,
+        end: /$/
+      }
+    ]
+  };
+}
+
+module.exports = diff;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/django.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/django.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Django
+Description: Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
+Requires: xml.js
+Author: Ivan Sagalaev 
+Contributors: Ilya Baryshev 
+Website: https://www.djangoproject.com
+Category: template
+*/
+
+/** @type LanguageFn */
+function django(hljs) {
+  const FILTER = {
+    begin: /\|[A-Za-z]+:?/,
+    keywords: {
+      name:
+        'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' +
+        'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' +
+        'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' +
+        'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' +
+        'dictsortreversed default_if_none pluralize lower join center default ' +
+        'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' +
+        'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' +
+        'localtime utc timezone'
+    },
+    contains: [
+      hljs.QUOTE_STRING_MODE,
+      hljs.APOS_STRING_MODE
+    ]
+  };
+
+  return {
+    name: 'Django',
+    aliases: ['jinja'],
+    case_insensitive: true,
+    subLanguage: 'xml',
+    contains: [
+      hljs.COMMENT(/\{%\s*comment\s*%\}/, /\{%\s*endcomment\s*%\}/),
+      hljs.COMMENT(/\{#/, /#\}/),
+      {
+        className: 'template-tag',
+        begin: /\{%/,
+        end: /%\}/,
+        contains: [{
+          className: 'name',
+          begin: /\w+/,
+          keywords: {
+            name:
+                'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' +
+                'endfor ifnotequal endifnotequal widthratio extends include spaceless ' +
+                'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' +
+                'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' +
+                'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' +
+                'plural get_current_language language get_available_languages ' +
+                'get_current_language_bidi get_language_info get_language_info_list localize ' +
+                'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' +
+                'verbatim'
+          },
+          starts: {
+            endsWithParent: true,
+            keywords: 'in by as',
+            contains: [FILTER],
+            relevance: 0
+          }
+        }]
+      },
+      {
+        className: 'template-variable',
+        begin: /\{\{/,
+        end: /\}\}/,
+        contains: [FILTER]
+      }
+    ]
+  };
+}
+
+module.exports = django;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/dns.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/dns.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: DNS Zone
+Author: Tim Schumacher 
+Category: config
+Website: https://en.wikipedia.org/wiki/Zone_file
+*/
+
+/** @type LanguageFn */
+function dns(hljs) {
+  return {
+    name: 'DNS Zone',
+    aliases: [
+      'bind',
+      'zone'
+    ],
+    keywords: {
+      keyword:
+        'IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX ' +
+        'LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT'
+    },
+    contains: [
+      hljs.COMMENT(';', '$', {
+        relevance: 0
+      }),
+      {
+        className: 'meta',
+        begin: /^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/
+      },
+      // IPv6
+      {
+        className: 'number',
+        begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b'
+      },
+      // IPv4
+      {
+        className: 'number',
+        begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b'
+      },
+      hljs.inherit(hljs.NUMBER_MODE, {
+        begin: /\b\d+[dhwm]?/
+      })
+    ]
+  };
+}
+
+module.exports = dns;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/dockerfile.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/dockerfile.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Dockerfile
+Requires: bash.js
+Author: Alexis Hénaut 
+Description: language definition for Dockerfile files
+Website: https://docs.docker.com/engine/reference/builder/
+Category: config
+*/
+
+/** @type LanguageFn */
+function dockerfile(hljs) {
+  return {
+    name: 'Dockerfile',
+    aliases: ['docker'],
+    case_insensitive: true,
+    keywords: 'from maintainer expose env arg user onbuild stopsignal',
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.NUMBER_MODE,
+      {
+        beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell',
+        starts: {
+          end: /[^\\]$/,
+          subLanguage: 'bash'
+        }
+      }
+    ],
+    illegal: ' {
+
+/*
+Language: Batch file (DOS)
+Author: Alexander Makarov 
+Contributors: Anton Kochkov 
+Website: https://en.wikipedia.org/wiki/Batch_file
+*/
+
+/** @type LanguageFn */
+function dos(hljs) {
+  const COMMENT = hljs.COMMENT(
+    /^\s*@?rem\b/, /$/,
+    {
+      relevance: 10
+    }
+  );
+  const LABEL = {
+    className: 'symbol',
+    begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)',
+    relevance: 0
+  };
+  return {
+    name: 'Batch file (DOS)',
+    aliases: [
+      'bat',
+      'cmd'
+    ],
+    case_insensitive: true,
+    illegal: /\/\*/,
+    keywords: {
+      keyword:
+        'if else goto for in do call exit not exist errorlevel defined ' +
+        'equ neq lss leq gtr geq',
+      built_in:
+        'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' +
+        'shift cd dir echo setlocal endlocal set pause copy ' +
+        'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' +
+        'comp compact convert date dir diskcomp diskcopy doskey erase fs ' +
+        'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' +
+        'pause print popd pushd promt rd recover rem rename replace restore rmdir shift ' +
+        'sort start subst time title tree type ver verify vol ' +
+        // winutils
+        'ping net ipconfig taskkill xcopy ren del'
+    },
+    contains: [
+      {
+        className: 'variable',
+        begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/
+      },
+      {
+        className: 'function',
+        begin: LABEL.begin,
+        end: 'goto:eof',
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, {
+            begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*'
+          }),
+          COMMENT
+        ]
+      },
+      {
+        className: 'number',
+        begin: '\\b\\d+',
+        relevance: 0
+      },
+      COMMENT
+    ]
+  };
+}
+
+module.exports = dos;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/dsconfig.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/dsconfig.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/*
+ Language: dsconfig
+ Description: dsconfig batch configuration language for LDAP directory servers
+ Contributors: Jacob Childress 
+ Category: enterprise, config
+ */
+
+ /** @type LanguageFn */
+function dsconfig(hljs) {
+  const QUOTED_PROPERTY = {
+    className: 'string',
+    begin: /"/,
+    end: /"/
+  };
+  const APOS_PROPERTY = {
+    className: 'string',
+    begin: /'/,
+    end: /'/
+  };
+  const UNQUOTED_PROPERTY = {
+    className: 'string',
+    begin: /[\w\-?]+:\w+/,
+    end: /\W/,
+    relevance: 0
+  };
+  const VALUELESS_PROPERTY = {
+    className: 'string',
+    begin: /\w+(\-\w+)*/,
+    end: /(?=\W)/,
+    relevance: 0
+  };
+
+  return {
+    keywords: 'dsconfig',
+    contains: [
+      {
+        className: 'keyword',
+        begin: '^dsconfig',
+        end: /\s/,
+        excludeEnd: true,
+        relevance: 10
+      },
+      {
+        className: 'built_in',
+        begin: /(list|create|get|set|delete)-(\w+)/,
+        end: /\s/,
+        excludeEnd: true,
+        illegal: '!@#$%^&*()',
+        relevance: 10
+      },
+      {
+        className: 'built_in',
+        begin: /--(\w+)/,
+        end: /\s/,
+        excludeEnd: true
+      },
+      QUOTED_PROPERTY,
+      APOS_PROPERTY,
+      UNQUOTED_PROPERTY,
+      VALUELESS_PROPERTY,
+      hljs.HASH_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = dsconfig;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/dts.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/dts.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Device Tree
+Description: *.dts files used in the Linux kernel
+Author: Martin Braun , Moritz Fischer 
+Website: https://elinux.org/Device_Tree_Reference
+Category: config
+*/
+
+/** @type LanguageFn */
+function dts(hljs) {
+  const STRINGS = {
+    className: 'string',
+    variants: [
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {
+        begin: '((u8?|U)|L)?"'
+      }),
+      {
+        begin: '(u8?|U)?R"',
+        end: '"',
+        contains: [hljs.BACKSLASH_ESCAPE]
+      },
+      {
+        begin: '\'\\\\?.',
+        end: '\'',
+        illegal: '.'
+      }
+    ]
+  };
+
+  const NUMBERS = {
+    className: 'number',
+    variants: [
+      {
+        begin: '\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)'
+      },
+      {
+        begin: hljs.C_NUMBER_RE
+      }
+    ],
+    relevance: 0
+  };
+
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: '#',
+    end: '$',
+    keywords: {
+      'meta-keyword': 'if else elif endif define undef ifdef ifndef'
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      {
+        beginKeywords: 'include',
+        end: '$',
+        keywords: {
+          'meta-keyword': 'include'
+        },
+        contains: [
+          hljs.inherit(STRINGS, {
+            className: 'meta-string'
+          }),
+          {
+            className: 'meta-string',
+            begin: '<',
+            end: '>',
+            illegal: '\\n'
+          }
+        ]
+      },
+      STRINGS,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  const DTS_REFERENCE = {
+    className: 'variable',
+    begin: /&[a-z\d_]*\b/
+  };
+
+  const DTS_KEYWORD = {
+    className: 'meta-keyword',
+    begin: '/[a-z][a-z\\d-]*/'
+  };
+
+  const DTS_LABEL = {
+    className: 'symbol',
+    begin: '^\\s*[a-zA-Z_][a-zA-Z\\d_]*:'
+  };
+
+  const DTS_CELL_PROPERTY = {
+    className: 'params',
+    begin: '<',
+    end: '>',
+    contains: [
+      NUMBERS,
+      DTS_REFERENCE
+    ]
+  };
+
+  const DTS_NODE = {
+    className: 'class',
+    begin: /[a-zA-Z_][a-zA-Z\d_@]*\s\{/,
+    end: /[{;=]/,
+    returnBegin: true,
+    excludeEnd: true
+  };
+
+  const DTS_ROOT_NODE = {
+    className: 'class',
+    begin: '/\\s*\\{',
+    end: /\};/,
+    relevance: 10,
+    contains: [
+      DTS_REFERENCE,
+      DTS_KEYWORD,
+      DTS_LABEL,
+      DTS_NODE,
+      DTS_CELL_PROPERTY,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      NUMBERS,
+      STRINGS
+    ]
+  };
+
+  return {
+    name: 'Device Tree',
+    keywords: "",
+    contains: [
+      DTS_ROOT_NODE,
+      DTS_REFERENCE,
+      DTS_KEYWORD,
+      DTS_LABEL,
+      DTS_NODE,
+      DTS_CELL_PROPERTY,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      NUMBERS,
+      STRINGS,
+      PREPROCESSOR,
+      {
+        begin: hljs.IDENT_RE + '::',
+        keywords: ""
+      }
+    ]
+  };
+}
+
+module.exports = dts;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/dust.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/dust.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Dust
+Requires: xml.js
+Author: Michael Allen 
+Description: Matcher for dust.js templates.
+Website: https://www.dustjs.com
+Category: template
+*/
+
+/** @type LanguageFn */
+function dust(hljs) {
+  const EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep';
+  return {
+    name: 'Dust',
+    aliases: ['dst'],
+    case_insensitive: true,
+    subLanguage: 'xml',
+    contains: [
+      {
+        className: 'template-tag',
+        begin: /\{[#\/]/,
+        end: /\}/,
+        illegal: /;/,
+        contains: [{
+          className: 'name',
+          begin: /[a-zA-Z\.-]+/,
+          starts: {
+            endsWithParent: true,
+            relevance: 0,
+            contains: [hljs.QUOTE_STRING_MODE]
+          }
+        }]
+      },
+      {
+        className: 'template-variable',
+        begin: /\{/,
+        end: /\}/,
+        illegal: /;/,
+        keywords: EXPRESSION_KEYWORDS
+      }
+    ]
+  };
+}
+
+module.exports = dust;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/ebnf.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/ebnf.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Extended Backus-Naur Form
+Author: Alex McKibben 
+Website: https://en.wikipedia.org/wiki/Extended_Backus–Naur_form
+*/
+
+/** @type LanguageFn */
+function ebnf(hljs) {
+  const commentMode = hljs.COMMENT(/\(\*/, /\*\)/);
+
+  const nonTerminalMode = {
+    className: "attribute",
+    begin: /^[ ]*[a-zA-Z]+([\s_-]+[a-zA-Z]+)*/
+  };
+
+  const specialSequenceMode = {
+    className: "meta",
+    begin: /\?.*\?/
+  };
+
+  const ruleBodyMode = {
+    begin: /=/,
+    end: /[.;]/,
+    contains: [
+      commentMode,
+      specialSequenceMode,
+      {
+        // terminals
+        className: 'string',
+        variants: [
+          hljs.APOS_STRING_MODE,
+          hljs.QUOTE_STRING_MODE,
+          {
+            begin: '`',
+            end: '`'
+          }
+        ]
+      }
+    ]
+  };
+
+  return {
+    name: 'Extended Backus-Naur Form',
+    illegal: /\S/,
+    contains: [
+      commentMode,
+      nonTerminalMode,
+      ruleBodyMode
+    ]
+  };
+}
+
+module.exports = ebnf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/elixir.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/elixir.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Elixir
+Author: Josh Adams 
+Description: language definition for Elixir source code files (.ex and .exs).  Based on ruby language support.
+Category: functional
+Website: https://elixir-lang.org
+*/
+
+/** @type LanguageFn */
+function elixir(hljs) {
+  const ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?';
+  const ELIXIR_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?';
+  const ELIXIR_KEYWORDS = {
+    $pattern: ELIXIR_IDENT_RE,
+    keyword: 'and false then defined module in return redo retry end for true self when ' +
+    'next until do begin unless nil break not case cond alias while ensure or ' +
+    'include use alias fn quote require import with|0'
+  };
+  const SUBST = {
+    className: 'subst',
+    begin: /#\{/,
+    end: /\}/,
+    keywords: ELIXIR_KEYWORDS
+  };
+  const NUMBER = {
+    className: 'number',
+    begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(\\.[0-9_]+([eE][-+]?[0-9]+)?)?)',
+    relevance: 0
+  };
+  const SIGIL_DELIMITERS = '[/|([{<"\']';
+  const LOWERCASE_SIGIL = {
+    className: 'string',
+    begin: '~[a-z]' + '(?=' + SIGIL_DELIMITERS + ')',
+    contains: [
+      {
+        endsParent: true,
+        contains: [
+          {
+            contains: [
+              hljs.BACKSLASH_ESCAPE,
+              SUBST
+            ],
+            variants: [
+              {
+                begin: /"/,
+                end: /"/
+              },
+              {
+                begin: /'/,
+                end: /'/
+              },
+              {
+                begin: /\//,
+                end: /\//
+              },
+              {
+                begin: /\|/,
+                end: /\|/
+              },
+              {
+                begin: /\(/,
+                end: /\)/
+              },
+              {
+                begin: /\[/,
+                end: /\]/
+              },
+              {
+                begin: /\{/,
+                end: /\}/
+              },
+              {
+                begin: //
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  };
+
+  const UPCASE_SIGIL = {
+    className: 'string',
+    begin: '~[A-Z]' + '(?=' + SIGIL_DELIMITERS + ')',
+    contains: [
+      {
+        begin: /"/,
+        end: /"/
+      },
+      {
+        begin: /'/,
+        end: /'/
+      },
+      {
+        begin: /\//,
+        end: /\//
+      },
+      {
+        begin: /\|/,
+        end: /\|/
+      },
+      {
+        begin: /\(/,
+        end: /\)/
+      },
+      {
+        begin: /\[/,
+        end: /\]/
+      },
+      {
+        begin: /\{/,
+        end: /\}/
+      },
+      {
+        begin: //
+      }
+    ]
+  };
+
+  const STRING = {
+    className: 'string',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      SUBST
+    ],
+    variants: [
+      {
+        begin: /"""/,
+        end: /"""/
+      },
+      {
+        begin: /'''/,
+        end: /'''/
+      },
+      {
+        begin: /~S"""/,
+        end: /"""/,
+        contains: [] // override default
+      },
+      {
+        begin: /~S"/,
+        end: /"/,
+        contains: [] // override default
+      },
+      {
+        begin: /~S'''/,
+        end: /'''/,
+        contains: [] // override default
+      },
+      {
+        begin: /~S'/,
+        end: /'/,
+        contains: [] // override default
+      },
+      {
+        begin: /'/,
+        end: /'/
+      },
+      {
+        begin: /"/,
+        end: /"/
+      }
+    ]
+  };
+  const FUNCTION = {
+    className: 'function',
+    beginKeywords: 'def defp defmacro',
+    end: /\B\b/, // the mode is ended by the title
+    contains: [
+      hljs.inherit(hljs.TITLE_MODE, {
+        begin: ELIXIR_IDENT_RE,
+        endsParent: true
+      })
+    ]
+  };
+  const CLASS = hljs.inherit(FUNCTION, {
+    className: 'class',
+    beginKeywords: 'defimpl defmodule defprotocol defrecord',
+    end: /\bdo\b|$|;/
+  });
+  const ELIXIR_DEFAULT_CONTAINS = [
+    STRING,
+    UPCASE_SIGIL,
+    LOWERCASE_SIGIL,
+    hljs.HASH_COMMENT_MODE,
+    CLASS,
+    FUNCTION,
+    {
+      begin: '::'
+    },
+    {
+      className: 'symbol',
+      begin: ':(?![\\s:])',
+      contains: [
+        STRING,
+        {
+          begin: ELIXIR_METHOD_RE
+        }
+      ],
+      relevance: 0
+    },
+    {
+      className: 'symbol',
+      begin: ELIXIR_IDENT_RE + ':(?!:)',
+      relevance: 0
+    },
+    NUMBER,
+    {
+      className: 'variable',
+      begin: '(\\$\\W)|((\\$|@@?)(\\w+))'
+    },
+    {
+      begin: '->'
+    },
+    { // regexp container
+      begin: '(' + hljs.RE_STARTERS_RE + ')\\s*',
+      contains: [
+        hljs.HASH_COMMENT_MODE,
+        {
+          // to prevent false regex triggers for the division function:
+          // /:
+          begin: /\/: (?=\d+\s*[,\]])/,
+          relevance: 0,
+          contains: [NUMBER]
+        },
+        {
+          className: 'regexp',
+          illegal: '\\n',
+          contains: [
+            hljs.BACKSLASH_ESCAPE,
+            SUBST
+          ],
+          variants: [
+            {
+              begin: '/',
+              end: '/[a-z]*'
+            },
+            {
+              begin: '%r\\[',
+              end: '\\][a-z]*'
+            }
+          ]
+        }
+      ],
+      relevance: 0
+    }
+  ];
+  SUBST.contains = ELIXIR_DEFAULT_CONTAINS;
+
+  return {
+    name: 'Elixir',
+    keywords: ELIXIR_KEYWORDS,
+    contains: ELIXIR_DEFAULT_CONTAINS
+  };
+}
+
+module.exports = elixir;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/elm.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/elm.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Elm
+Author: Janis Voigtlaender 
+Website: https://elm-lang.org
+Category: functional
+*/
+
+/** @type LanguageFn */
+function elm(hljs) {
+  const COMMENT = {
+    variants: [
+      hljs.COMMENT('--', '$'),
+      hljs.COMMENT(
+        /\{-/,
+        /-\}/,
+        {
+          contains: ['self']
+        }
+      )
+    ]
+  };
+
+  const CONSTRUCTOR = {
+    className: 'type',
+    begin: '\\b[A-Z][\\w\']*', // TODO: other constructors (built-in, infix).
+    relevance: 0
+  };
+
+  const LIST = {
+    begin: '\\(',
+    end: '\\)',
+    illegal: '"',
+    contains: [
+      {
+        className: 'type',
+        begin: '\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?'
+      },
+      COMMENT
+    ]
+  };
+
+  const RECORD = {
+    begin: /\{/,
+    end: /\}/,
+    contains: LIST.contains
+  };
+
+  const CHARACTER = {
+    className: 'string',
+    begin: '\'\\\\?.',
+    end: '\'',
+    illegal: '.'
+  };
+
+  return {
+    name: 'Elm',
+    keywords:
+      'let in if then else case of where module import exposing ' +
+      'type alias as infix infixl infixr port effect command subscription',
+    contains: [
+
+      // Top-level constructions.
+
+      {
+        beginKeywords: 'port effect module',
+        end: 'exposing',
+        keywords: 'port effect module where command subscription exposing',
+        contains: [
+          LIST,
+          COMMENT
+        ],
+        illegal: '\\W\\.|;'
+      },
+      {
+        begin: 'import',
+        end: '$',
+        keywords: 'import as exposing',
+        contains: [
+          LIST,
+          COMMENT
+        ],
+        illegal: '\\W\\.|;'
+      },
+      {
+        begin: 'type',
+        end: '$',
+        keywords: 'type alias',
+        contains: [
+          CONSTRUCTOR,
+          LIST,
+          RECORD,
+          COMMENT
+        ]
+      },
+      {
+        beginKeywords: 'infix infixl infixr',
+        end: '$',
+        contains: [
+          hljs.C_NUMBER_MODE,
+          COMMENT
+        ]
+      },
+      {
+        begin: 'port',
+        end: '$',
+        keywords: 'port',
+        contains: [COMMENT]
+      },
+
+      // Literals and names.
+
+      CHARACTER,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE,
+      CONSTRUCTOR,
+      hljs.inherit(hljs.TITLE_MODE, {
+        begin: '^[_a-z][\\w\']*'
+      }),
+      COMMENT,
+
+      {
+        begin: '->|<-'
+      } // No markup, relevance booster
+    ],
+    illegal: /;/
+  };
+}
+
+module.exports = elm;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/erb.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/erb.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: ERB (Embedded Ruby)
+Requires: xml.js, ruby.js
+Author: Lucas Mazza 
+Contributors: Kassio Borges 
+Description: "Bridge" language defining fragments of Ruby in HTML within <% .. %>
+Website: https://ruby-doc.org/stdlib-2.6.5/libdoc/erb/rdoc/ERB.html
+Category: template
+*/
+
+/** @type LanguageFn */
+function erb(hljs) {
+  return {
+    name: 'ERB',
+    subLanguage: 'xml',
+    contains: [
+      hljs.COMMENT('<%#', '%>'),
+      {
+        begin: '<%[%=-]?',
+        end: '[%-]?%>',
+        subLanguage: 'ruby',
+        excludeBegin: true,
+        excludeEnd: true
+      }
+    ]
+  };
+}
+
+module.exports = erb;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/erlang-repl.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/erlang-repl.js ***!
+  \****************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Erlang REPL
+Author: Sergey Ignatov 
+Website: https://www.erlang.org
+Category: functional
+*/
+
+/** @type LanguageFn */
+function erlangRepl(hljs) {
+  return {
+    name: 'Erlang REPL',
+    keywords: {
+      built_in:
+        'spawn spawn_link self',
+      keyword:
+        'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +
+        'let not of or orelse|10 query receive rem try when xor'
+    },
+    contains: [
+      {
+        className: 'meta',
+        begin: '^[0-9]+> ',
+        relevance: 10
+      },
+      hljs.COMMENT('%', '$'),
+      {
+        className: 'number',
+        begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)',
+        relevance: 0
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        begin: concat(
+          /\?(::)?/,
+          /([A-Z]\w*)/, // at least one identifier
+          /((::)[A-Z]\w*)*/ // perhaps more
+        )
+      },
+      {
+        begin: '->'
+      },
+      {
+        begin: 'ok'
+      },
+      {
+        begin: '!'
+      },
+      {
+        begin: '(\\b[a-z\'][a-zA-Z0-9_\']*:[a-z\'][a-zA-Z0-9_\']*)|(\\b[a-z\'][a-zA-Z0-9_\']*)',
+        relevance: 0
+      },
+      {
+        begin: '[A-Z][a-zA-Z0-9_\']*',
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = erlangRepl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/erlang.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/erlang.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Erlang
+Description: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing.
+Author: Nikolay Zakharov , Dmitry Kovega 
+Website: https://www.erlang.org
+Category: functional
+*/
+
+/** @type LanguageFn */
+function erlang(hljs) {
+  const BASIC_ATOM_RE = '[a-z\'][a-zA-Z0-9_\']*';
+  const FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';
+  const ERLANG_RESERVED = {
+    keyword:
+      'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' +
+      'let not of orelse|10 query receive rem try when xor',
+    literal:
+      'false true'
+  };
+
+  const COMMENT = hljs.COMMENT('%', '$');
+  const NUMBER = {
+    className: 'number',
+    begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)',
+    relevance: 0
+  };
+  const NAMED_FUN = {
+    begin: 'fun\\s+' + BASIC_ATOM_RE + '/\\d+'
+  };
+  const FUNCTION_CALL = {
+    begin: FUNCTION_NAME_RE + '\\(',
+    end: '\\)',
+    returnBegin: true,
+    relevance: 0,
+    contains: [
+      {
+        begin: FUNCTION_NAME_RE,
+        relevance: 0
+      },
+      {
+        begin: '\\(',
+        end: '\\)',
+        endsWithParent: true,
+        returnEnd: true,
+        relevance: 0
+        // "contains" defined later
+      }
+    ]
+  };
+  const TUPLE = {
+    begin: /\{/,
+    end: /\}/,
+    relevance: 0
+    // "contains" defined later
+  };
+  const VAR1 = {
+    begin: '\\b_([A-Z][A-Za-z0-9_]*)?',
+    relevance: 0
+  };
+  const VAR2 = {
+    begin: '[A-Z][a-zA-Z0-9_]*',
+    relevance: 0
+  };
+  const RECORD_ACCESS = {
+    begin: '#' + hljs.UNDERSCORE_IDENT_RE,
+    relevance: 0,
+    returnBegin: true,
+    contains: [
+      {
+        begin: '#' + hljs.UNDERSCORE_IDENT_RE,
+        relevance: 0
+      },
+      {
+        begin: /\{/,
+        end: /\}/,
+        relevance: 0
+        // "contains" defined later
+      }
+    ]
+  };
+
+  const BLOCK_STATEMENTS = {
+    beginKeywords: 'fun receive if try case',
+    end: 'end',
+    keywords: ERLANG_RESERVED
+  };
+  BLOCK_STATEMENTS.contains = [
+    COMMENT,
+    NAMED_FUN,
+    hljs.inherit(hljs.APOS_STRING_MODE, {
+      className: ''
+    }),
+    BLOCK_STATEMENTS,
+    FUNCTION_CALL,
+    hljs.QUOTE_STRING_MODE,
+    NUMBER,
+    TUPLE,
+    VAR1,
+    VAR2,
+    RECORD_ACCESS
+  ];
+
+  const BASIC_MODES = [
+    COMMENT,
+    NAMED_FUN,
+    BLOCK_STATEMENTS,
+    FUNCTION_CALL,
+    hljs.QUOTE_STRING_MODE,
+    NUMBER,
+    TUPLE,
+    VAR1,
+    VAR2,
+    RECORD_ACCESS
+  ];
+  FUNCTION_CALL.contains[1].contains = BASIC_MODES;
+  TUPLE.contains = BASIC_MODES;
+  RECORD_ACCESS.contains[1].contains = BASIC_MODES;
+
+  const DIRECTIVES = [
+    "-module",
+    "-record",
+    "-undef",
+    "-export",
+    "-ifdef",
+    "-ifndef",
+    "-author",
+    "-copyright",
+    "-doc",
+    "-vsn",
+    "-import",
+    "-include",
+    "-include_lib",
+    "-compile",
+    "-define",
+    "-else",
+    "-endif",
+    "-file",
+    "-behaviour",
+    "-behavior",
+    "-spec"
+  ];
+
+  const PARAMS = {
+    className: 'params',
+    begin: '\\(',
+    end: '\\)',
+    contains: BASIC_MODES
+  };
+  return {
+    name: 'Erlang',
+    aliases: ['erl'],
+    keywords: ERLANG_RESERVED,
+    illegal: '(',
+        returnBegin: true,
+        illegal: '\\(|#|//|/\\*|\\\\|:|;',
+        contains: [
+          PARAMS,
+          hljs.inherit(hljs.TITLE_MODE, {
+            begin: BASIC_ATOM_RE
+          })
+        ],
+        starts: {
+          end: ';|\\.',
+          keywords: ERLANG_RESERVED,
+          contains: BASIC_MODES
+        }
+      },
+      COMMENT,
+      {
+        begin: '^-',
+        end: '\\.',
+        relevance: 0,
+        excludeEnd: true,
+        returnBegin: true,
+        keywords: {
+          $pattern: '-' + hljs.IDENT_RE,
+          keyword: DIRECTIVES.map(x => `${x}|1.5`).join(" ")
+        },
+        contains: [PARAMS]
+      },
+      NUMBER,
+      hljs.QUOTE_STRING_MODE,
+      RECORD_ACCESS,
+      VAR1,
+      VAR2,
+      TUPLE,
+      {
+        begin: /\.$/
+      } // relevance booster
+    ]
+  };
+}
+
+module.exports = erlang;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/excel.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/excel.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Excel formulae
+Author: Victor Zhou 
+Description: Excel formulae
+Website: https://products.office.com/en-us/excel/
+*/
+
+/** @type LanguageFn */
+function excel(hljs) {
+  return {
+    name: 'Excel formulae',
+    aliases: [
+      'xlsx',
+      'xls'
+    ],
+    case_insensitive: true,
+    // built-in functions imported from https://web.archive.org/web/20160513042710/https://support.office.com/en-us/article/Excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188
+    keywords: {
+      $pattern: /[a-zA-Z][\w\.]*/,
+      built_in: 'ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST'
+    },
+    contains: [
+      {
+        /* matches a beginning equal sign found in Excel formula examples */
+        begin: /^=/,
+        end: /[^=]/,
+        returnEnd: true,
+        illegal: /=/, /* only allow single equal sign at front of line */
+        relevance: 10
+      },
+      /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */
+      {
+        /* matches a reference to a single cell */
+        className: 'symbol',
+        begin: /\b[A-Z]{1,2}\d+\b/,
+        end: /[^\d]/,
+        excludeEnd: true,
+        relevance: 0
+      },
+      {
+        /* matches a reference to a range of cells */
+        className: 'symbol',
+        begin: /[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,
+        relevance: 0
+      },
+      hljs.BACKSLASH_ESCAPE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'number',
+        begin: hljs.NUMBER_RE + '(%)?',
+        relevance: 0
+      },
+      /* Excel formula comments are done by putting the comment in a function call to N() */
+      hljs.COMMENT(/\bN\(/, /\)/,
+        {
+          excludeBegin: true,
+          excludeEnd: true,
+          illegal: /\n/
+        })
+    ]
+  };
+}
+
+module.exports = excel;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/fix.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/fix.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: FIX
+Author: Brent Bradbury 
+*/
+
+/** @type LanguageFn */
+function fix(hljs) {
+  return {
+    name: 'FIX',
+    contains: [{
+      begin: /[^\u2401\u0001]+/,
+      end: /[\u2401\u0001]/,
+      excludeEnd: true,
+      returnBegin: true,
+      returnEnd: false,
+      contains: [
+        {
+          begin: /([^\u2401\u0001=]+)/,
+          end: /=([^\u2401\u0001=]+)/,
+          returnEnd: true,
+          returnBegin: false,
+          className: 'attr'
+        },
+        {
+          begin: /=/,
+          end: /([\u2401\u0001])/,
+          excludeEnd: true,
+          excludeBegin: true,
+          className: 'string'
+        }
+      ]
+    }],
+    case_insensitive: true
+  };
+}
+
+module.exports = fix;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/flix.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/flix.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+ Language: Flix
+ Category: functional
+ Author: Magnus Madsen 
+ Website: https://flix.dev/
+ */
+
+ /** @type LanguageFn */
+function flix(hljs) {
+  const CHAR = {
+    className: 'string',
+    begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/
+  };
+
+  const STRING = {
+    className: 'string',
+    variants: [{
+      begin: '"',
+      end: '"'
+    }]
+  };
+
+  const NAME = {
+    className: 'title',
+    relevance: 0,
+    begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/
+  };
+
+  const METHOD = {
+    className: 'function',
+    beginKeywords: 'def',
+    end: /[:={\[(\n;]/,
+    excludeEnd: true,
+    contains: [NAME]
+  };
+
+  return {
+    name: 'Flix',
+    keywords: {
+      literal: 'true false',
+      keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      CHAR,
+      STRING,
+      METHOD,
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = flix;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/fortran.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/fortran.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Fortran
+Author: Anthony Scemama 
+Website: https://en.wikipedia.org/wiki/Fortran
+Category: scientific
+*/
+
+/** @type LanguageFn */
+function fortran(hljs) {
+  const PARAMS = {
+    className: 'params',
+    begin: '\\(',
+    end: '\\)'
+  };
+
+  const COMMENT = {
+    variants: [
+      hljs.COMMENT('!', '$', {
+        relevance: 0
+      }),
+      // allow FORTRAN 77 style comments
+      hljs.COMMENT('^C[ ]', '$', {
+        relevance: 0
+      }),
+      hljs.COMMENT('^C$', '$', {
+        relevance: 0
+      })
+    ]
+  };
+
+  // regex in both fortran and irpf90 should match
+  const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\d]+)?/;
+  const OPTIONAL_NUMBER_EXP = /([de][+-]?\d+)?/;
+  const NUMBER = {
+    className: 'number',
+    variants: [
+      {
+        begin: concat(/\b\d+/, /\.(\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)
+      },
+      {
+        begin: concat(/\b\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)
+      },
+      {
+        begin: concat(/\.\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)
+      }
+    ],
+    relevance: 0
+  };
+
+  const FUNCTION_DEF = {
+    className: 'function',
+    beginKeywords: 'subroutine function program',
+    illegal: '[${=\\n]',
+    contains: [
+      hljs.UNDERSCORE_TITLE_MODE,
+      PARAMS
+    ]
+  };
+
+  const STRING = {
+    className: 'string',
+    relevance: 0,
+    variants: [
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE
+    ]
+  };
+
+  const KEYWORDS = {
+    literal: '.False. .True.',
+    keyword: 'kind do concurrent local shared while private call intrinsic where elsewhere ' +
+      'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock endassociate ' +
+      'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +
+      'goto save else use module select case ' +
+      'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +
+      'continue format pause cycle exit ' +
+      'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +
+      'synchronous nopass non_overridable pass protected volatile abstract extends import ' +
+      'non_intrinsic value deferred generic final enumerator class associate bind enum ' +
+      'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +
+      'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +
+      'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +
+      'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer ' +
+      'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +
+      'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +
+      'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +
+      'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure impure ' +
+      'integer real character complex logical codimension dimension allocatable|10 parameter ' +
+      'external implicit|10 none double precision assign intent optional pointer ' +
+      'target in out common equivalence data',
+    built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +
+      'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +
+      'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +
+      'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +
+      'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +
+      'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +
+      'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +
+      'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +
+      'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +
+      'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +
+      'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +
+      'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +
+      'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +
+      'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of ' +
+      'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +
+      'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +
+      'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +
+      'num_images parity popcnt poppar shifta shiftl shiftr this_image sync change team co_broadcast co_max co_min co_sum co_reduce'
+  };
+  return {
+    name: 'Fortran',
+    case_insensitive: true,
+    aliases: [
+      'f90',
+      'f95'
+    ],
+    keywords: KEYWORDS,
+    illegal: /\/\*/,
+    contains: [
+      STRING,
+      FUNCTION_DEF,
+      // allow `C = value` for assignments so they aren't misdetected
+      // as Fortran 77 style comments
+      {
+        begin: /^C\s*=(?!=)/,
+        relevance: 0
+      },
+      COMMENT,
+      NUMBER
+    ]
+  };
+}
+
+module.exports = fortran;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/fsharp.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/fsharp.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: F#
+Author: Jonas Follesø 
+Contributors: Troy Kershaw , Henrik Feldt 
+Website: https://docs.microsoft.com/en-us/dotnet/fsharp/
+Category: functional
+*/
+
+/** @type LanguageFn */
+function fsharp(hljs) {
+  const TYPEPARAM = {
+    begin: '<',
+    end: '>',
+    contains: [
+      hljs.inherit(hljs.TITLE_MODE, {
+        begin: /'[a-zA-Z0-9_]+/
+      })
+    ]
+  };
+
+  return {
+    name: 'F#',
+    aliases: ['fs'],
+    keywords:
+      'abstract and as assert base begin class default delegate do done ' +
+      'downcast downto elif else end exception extern false finally for ' +
+      'fun function global if in inherit inline interface internal lazy let ' +
+      'match member module mutable namespace new null of open or ' +
+      'override private public rec return sig static struct then to ' +
+      'true try type upcast use val void when while with yield',
+    illegal: /\/\*/,
+    contains: [
+      {
+        // monad builder keywords (matches before non-bang kws)
+        className: 'keyword',
+        begin: /\b(yield|return|let|do)!/
+      },
+      {
+        className: 'string',
+        begin: '@"',
+        end: '"',
+        contains: [
+          {
+            begin: '""'
+          }
+        ]
+      },
+      {
+        className: 'string',
+        begin: '"""',
+        end: '"""'
+      },
+      hljs.COMMENT('\\(\\*(\\s)', '\\*\\)', {
+        contains: ["self"]
+      }),
+      {
+        className: 'class',
+        beginKeywords: 'type',
+        end: '\\(|=|$',
+        excludeEnd: true,
+        contains: [
+          hljs.UNDERSCORE_TITLE_MODE,
+          TYPEPARAM
+        ]
+      },
+      {
+        className: 'meta',
+        begin: '\\[<',
+        end: '>\\]',
+        relevance: 10
+      },
+      {
+        className: 'symbol',
+        begin: '\\B(\'[A-Za-z])\\b',
+        contains: [hljs.BACKSLASH_ESCAPE]
+      },
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {
+        illegal: null
+      }),
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = fsharp;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/gams.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/gams.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function anyNumberOfTimes(re) {
+  return concat('(', re, ')*');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/** @type LanguageFn */
+function gams(hljs) {
+  const KEYWORDS = {
+    keyword:
+      'abort acronym acronyms alias all and assign binary card diag display ' +
+      'else eq file files for free ge gt if integer le loop lt maximizing ' +
+      'minimizing model models ne negative no not option options or ord ' +
+      'positive prod put putpage puttl repeat sameas semicont semiint smax ' +
+      'smin solve sos1 sos2 sum system table then until using while xor yes',
+    literal:
+      'eps inf na',
+    built_in:
+      'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +
+      'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +
+      'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +
+      'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +
+      'randBinomial randLinear randTriangle round rPower sigmoid sign ' +
+      'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +
+      'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +
+      'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +
+      'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +
+      'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +
+      'handleCollect handleDelete handleStatus handleSubmit heapFree ' +
+      'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +
+      'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +
+      'timeElapsed timeExec timeStart'
+  };
+  const PARAMS = {
+    className: 'params',
+    begin: /\(/,
+    end: /\)/,
+    excludeBegin: true,
+    excludeEnd: true
+  };
+  const SYMBOLS = {
+    className: 'symbol',
+    variants: [
+      {
+        begin: /=[lgenxc]=/
+      },
+      {
+        begin: /\$/
+      }
+    ]
+  };
+  const QSTR = { // One-line quoted comment string
+    className: 'comment',
+    variants: [
+      {
+        begin: '\'',
+        end: '\''
+      },
+      {
+        begin: '"',
+        end: '"'
+      }
+    ],
+    illegal: '\\n',
+    contains: [hljs.BACKSLASH_ESCAPE]
+  };
+  const ASSIGNMENT = {
+    begin: '/',
+    end: '/',
+    keywords: KEYWORDS,
+    contains: [
+      QSTR,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.C_NUMBER_MODE
+    ]
+  };
+  const COMMENT_WORD = /[a-z0-9&#*=?@\\><:,()$[\]_.{}!+%^-]+/;
+  const DESCTEXT = { // Parameter/set/variable description text
+    begin: /[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,
+    excludeBegin: true,
+    end: '$',
+    endsWithParent: true,
+    contains: [
+      QSTR,
+      ASSIGNMENT,
+      {
+        className: 'comment',
+        // one comment word, then possibly more
+        begin: concat(
+          COMMENT_WORD,
+          // [ ] because \s would be too broad (matching newlines)
+          anyNumberOfTimes(concat(/[ ]+/, COMMENT_WORD))
+        ),
+        relevance: 0
+      }
+    ]
+  };
+
+  return {
+    name: 'GAMS',
+    aliases: ['gms'],
+    case_insensitive: true,
+    keywords: KEYWORDS,
+    contains: [
+      hljs.COMMENT(/^\$ontext/, /^\$offtext/),
+      {
+        className: 'meta',
+        begin: '^\\$[a-z0-9]+',
+        end: '$',
+        returnBegin: true,
+        contains: [
+          {
+            className: 'meta-keyword',
+            begin: '^\\$[a-z0-9]+'
+          }
+        ]
+      },
+      hljs.COMMENT('^\\*', '$'),
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.APOS_STRING_MODE,
+      // Declarations
+      {
+        beginKeywords:
+          'set sets parameter parameters variable variables ' +
+          'scalar scalars equation equations',
+        end: ';',
+        contains: [
+          hljs.COMMENT('^\\*', '$'),
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.APOS_STRING_MODE,
+          ASSIGNMENT,
+          DESCTEXT
+        ]
+      },
+      { // table environment
+        beginKeywords: 'table',
+        end: ';',
+        returnBegin: true,
+        contains: [
+          { // table header row
+            beginKeywords: 'table',
+            end: '$',
+            contains: [DESCTEXT]
+          },
+          hljs.COMMENT('^\\*', '$'),
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.APOS_STRING_MODE,
+          hljs.C_NUMBER_MODE
+          // Table does not contain DESCTEXT or ASSIGNMENT
+        ]
+      },
+      // Function definitions
+      {
+        className: 'function',
+        begin: /^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,
+        returnBegin: true,
+        contains: [
+          { // Function title
+            className: 'title',
+            begin: /^[a-z0-9_]+/
+          },
+          PARAMS,
+          SYMBOLS
+        ]
+      },
+      hljs.C_NUMBER_MODE,
+      SYMBOLS
+    ]
+  };
+}
+
+module.exports = gams;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/gauss.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/gauss.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: GAUSS
+Author: Matt Evans 
+Description: GAUSS Mathematical and Statistical language
+Website: https://www.aptech.com
+Category: scientific
+*/
+function gauss(hljs) {
+  const KEYWORDS = {
+    keyword: 'bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +
+              'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +
+              'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +
+              'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +
+              'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +
+              'matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print ' +
+              'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +
+              'scroll setarray show sparse stop string struct system trace trap threadfor ' +
+              'threadendfor threadbegin threadjoin threadstat threadend until use while winprint ' +
+              'ne ge le gt lt and xor or not eq eqv',
+    built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +
+              'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +
+              'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +
+              'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +
+              'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +
+              'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +
+              'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +
+              'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +
+              'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +
+              'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +
+              'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +
+              'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +
+              'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +
+              'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +
+              'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +
+              'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +
+              'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +
+              'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +
+              'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +
+              'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +
+              'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +
+              'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +
+              'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +
+              'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +
+              'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +
+              'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +
+              'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +
+              'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +
+              'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +
+              'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +
+              'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +
+              'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' +
+              'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' +
+              'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' +
+              'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' +
+              'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' +
+              'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' +
+              'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' +
+              'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' +
+              'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' +
+              'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' +
+              'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' +
+              'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' +
+              'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' +
+              'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' +
+              'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' +
+              'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' +
+              'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' +
+              'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' +
+              'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' +
+              'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' +
+              'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' +
+              'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' +
+              'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' +
+              'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' +
+              'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' +
+              'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' +
+              'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' +
+              'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' +
+              'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' +
+              'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' +
+              'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' +
+              'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' +
+              'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' +
+              'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' +
+              'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' +
+              'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' +
+              'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' +
+              'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' +
+              'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' +
+              'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' +
+              'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' +
+              'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' +
+              'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' +
+              'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' +
+              'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname ' +
+              'time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' +
+              'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' +
+              'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' +
+              'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' +
+              'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' +
+              'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' +
+              'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' +
+              'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester ' +
+              'strtrim',
+    literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' +
+             'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' +
+             'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' +
+             'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' +
+             'DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR'
+  };
+
+  const AT_COMMENT_MODE = hljs.COMMENT('@', '@');
+
+  const PREPROCESSOR =
+  {
+    className: 'meta',
+    begin: '#',
+    end: '$',
+    keywords: {
+      'meta-keyword': 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline'
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      {
+        beginKeywords: 'include',
+        end: '$',
+        keywords: {
+          'meta-keyword': 'include'
+        },
+        contains: [
+          {
+            className: 'meta-string',
+            begin: '"',
+            end: '"',
+            illegal: '\\n'
+          }
+        ]
+      },
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      AT_COMMENT_MODE
+    ]
+  };
+
+  const STRUCT_TYPE =
+  {
+    begin: /\bstruct\s+/,
+    end: /\s/,
+    keywords: "struct",
+    contains: [
+      {
+        className: "type",
+        begin: hljs.UNDERSCORE_IDENT_RE,
+        relevance: 0
+      }
+    ]
+  };
+
+  // only for definitions
+  const PARSE_PARAMS = [
+    {
+      className: 'params',
+      begin: /\(/,
+      end: /\)/,
+      excludeBegin: true,
+      excludeEnd: true,
+      endsWithParent: true,
+      relevance: 0,
+      contains: [
+        { // dots
+          className: 'literal',
+          begin: /\.\.\./
+        },
+        hljs.C_NUMBER_MODE,
+        hljs.C_BLOCK_COMMENT_MODE,
+        AT_COMMENT_MODE,
+        STRUCT_TYPE
+      ]
+    }
+  ];
+
+  const FUNCTION_DEF =
+  {
+    className: "title",
+    begin: hljs.UNDERSCORE_IDENT_RE,
+    relevance: 0
+  };
+
+  const DEFINITION = function(beginKeywords, end, inherits) {
+    const mode = hljs.inherit(
+      {
+        className: "function",
+        beginKeywords: beginKeywords,
+        end: end,
+        excludeEnd: true,
+        contains: [].concat(PARSE_PARAMS)
+      },
+      inherits || {}
+    );
+    mode.contains.push(FUNCTION_DEF);
+    mode.contains.push(hljs.C_NUMBER_MODE);
+    mode.contains.push(hljs.C_BLOCK_COMMENT_MODE);
+    mode.contains.push(AT_COMMENT_MODE);
+    return mode;
+  };
+
+  const BUILT_IN_REF =
+  { // these are explicitly named internal function calls
+    className: 'built_in',
+    begin: '\\b(' + KEYWORDS.built_in.split(' ').join('|') + ')\\b'
+  };
+
+  const STRING_REF =
+  {
+    className: 'string',
+    begin: '"',
+    end: '"',
+    contains: [hljs.BACKSLASH_ESCAPE],
+    relevance: 0
+  };
+
+  const FUNCTION_REF =
+  {
+    // className: "fn_ref",
+    begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(',
+    returnBegin: true,
+    keywords: KEYWORDS,
+    relevance: 0,
+    contains: [
+      {
+        beginKeywords: KEYWORDS.keyword
+      },
+      BUILT_IN_REF,
+      { // ambiguously named function calls get a relevance of 0
+        className: 'built_in',
+        begin: hljs.UNDERSCORE_IDENT_RE,
+        relevance: 0
+      }
+    ]
+  };
+
+  const FUNCTION_REF_PARAMS =
+  {
+    // className: "fn_ref_params",
+    begin: /\(/,
+    end: /\)/,
+    relevance: 0,
+    keywords: {
+      built_in: KEYWORDS.built_in,
+      literal: KEYWORDS.literal
+    },
+    contains: [
+      hljs.C_NUMBER_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      AT_COMMENT_MODE,
+      BUILT_IN_REF,
+      FUNCTION_REF,
+      STRING_REF,
+      'self'
+    ]
+  };
+
+  FUNCTION_REF.contains.push(FUNCTION_REF_PARAMS);
+
+  return {
+    name: 'GAUSS',
+    aliases: ['gss'],
+    case_insensitive: true, // language is case-insensitive
+    keywords: KEYWORDS,
+    illegal: /(\{[%#]|[%#]\}| <- )/,
+    contains: [
+      hljs.C_NUMBER_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      AT_COMMENT_MODE,
+      STRING_REF,
+      PREPROCESSOR,
+      {
+        className: 'keyword',
+        begin: /\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/
+      },
+      DEFINITION('proc keyword', ';'),
+      DEFINITION('fn', '='),
+      {
+        beginKeywords: 'for threadfor',
+        end: /;/,
+        // end: /\(/,
+        relevance: 0,
+        contains: [
+          hljs.C_BLOCK_COMMENT_MODE,
+          AT_COMMENT_MODE,
+          FUNCTION_REF_PARAMS
+        ]
+      },
+      { // custom method guard
+        // excludes method names from keyword processing
+        variants: [
+          {
+            begin: hljs.UNDERSCORE_IDENT_RE + '\\.' + hljs.UNDERSCORE_IDENT_RE
+          },
+          {
+            begin: hljs.UNDERSCORE_IDENT_RE + '\\s*='
+          }
+        ],
+        relevance: 0
+      },
+      FUNCTION_REF,
+      STRUCT_TYPE
+    ]
+  };
+}
+
+module.exports = gauss;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/gcode.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/gcode.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+ Language: G-code (ISO 6983)
+ Contributors: Adam Joseph Cook 
+ Description: G-code syntax highlighter for Fanuc and other common CNC machine tool controls.
+ Website: https://www.sis.se/api/document/preview/911952/
+ */
+
+function gcode(hljs) {
+  const GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
+  const GCODE_CLOSE_RE = '%';
+  const GCODE_KEYWORDS = {
+    $pattern: GCODE_IDENT_RE,
+    keyword: 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +
+      'EQ LT GT NE GE LE OR XOR'
+  };
+  const GCODE_START = {
+    className: 'meta',
+    begin: '([O])([0-9]+)'
+  };
+  const NUMBER = hljs.inherit(hljs.C_NUMBER_MODE, {
+    begin: '([-+]?((\\.\\d+)|(\\d+)(\\.\\d*)?))|' + hljs.C_NUMBER_RE
+  });
+  const GCODE_CODE = [
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    hljs.COMMENT(/\(/, /\)/),
+    NUMBER,
+    hljs.inherit(hljs.APOS_STRING_MODE, {
+      illegal: null
+    }),
+    hljs.inherit(hljs.QUOTE_STRING_MODE, {
+      illegal: null
+    }),
+    {
+      className: 'name',
+      begin: '([G])([0-9]+\\.?[0-9]?)'
+    },
+    {
+      className: 'name',
+      begin: '([M])([0-9]+\\.?[0-9]?)'
+    },
+    {
+      className: 'attr',
+      begin: '(VC|VS|#)',
+      end: '(\\d+)'
+    },
+    {
+      className: 'attr',
+      begin: '(VZOFX|VZOFY|VZOFZ)'
+    },
+    {
+      className: 'built_in',
+      begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)',
+      contains: [
+        NUMBER
+      ],
+      end: '\\]'
+    },
+    {
+      className: 'symbol',
+      variants: [
+        {
+          begin: 'N',
+          end: '\\d+',
+          illegal: '\\W'
+        }
+      ]
+    }
+  ];
+
+  return {
+    name: 'G-code (ISO 6983)',
+    aliases: ['nc'],
+    // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.
+    // However, most prefer all uppercase and uppercase is customary.
+    case_insensitive: true,
+    keywords: GCODE_KEYWORDS,
+    contains: [
+      {
+        className: 'meta',
+        begin: GCODE_CLOSE_RE
+      },
+      GCODE_START
+    ].concat(GCODE_CODE)
+  };
+}
+
+module.exports = gcode;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/gherkin.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/gherkin.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+ Language: Gherkin
+ Author: Sam Pikesley (@pikesley) 
+ Description: Gherkin is the format for cucumber specifications. It is a domain specific language which helps you to describe business behavior without the need to go into detail of implementation.
+ Website: https://cucumber.io/docs/gherkin/
+ */
+
+function gherkin(hljs) {
+  return {
+    name: 'Gherkin',
+    aliases: ['feature'],
+    keywords: 'Feature Background Ability Business\ Need Scenario Scenarios Scenario\ Outline Scenario\ Template Examples Given And Then But When',
+    contains: [
+      {
+        className: 'symbol',
+        begin: '\\*',
+        relevance: 0
+      },
+      {
+        className: 'meta',
+        begin: '@[^@\\s]+'
+      },
+      {
+        begin: '\\|',
+        end: '\\|\\w*$',
+        contains: [
+          {
+            className: 'string',
+            begin: '[^|]+'
+          }
+        ]
+      },
+      {
+        className: 'variable',
+        begin: '<',
+        end: '>'
+      },
+      hljs.HASH_COMMENT_MODE,
+      {
+        className: 'string',
+        begin: '"""',
+        end: '"""'
+      },
+      hljs.QUOTE_STRING_MODE
+    ]
+  };
+}
+
+module.exports = gherkin;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/glsl.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/glsl.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: GLSL
+Description: OpenGL Shading Language
+Author: Sergey Tikhomirov 
+Website: https://en.wikipedia.org/wiki/OpenGL_Shading_Language
+Category: graphics
+*/
+
+function glsl(hljs) {
+  return {
+    name: 'GLSL',
+    keywords: {
+      keyword:
+        // Statements
+        'break continue discard do else for if return while switch case default ' +
+        // Qualifiers
+        'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +
+        'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +
+        'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +
+        'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +
+        'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +
+        'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f ' +
+        'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +
+        'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +
+        'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +
+        'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +
+        'triangles triangles_adjacency uniform varying vertices volatile writeonly',
+      type:
+        'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +
+        'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +
+        'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer ' +
+        'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +
+        'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +
+        'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +
+        'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +
+        'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +
+        'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +
+        'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +
+        'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +
+        'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +
+        'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +
+        'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +
+        'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',
+      built_in:
+        // Constants
+        'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +
+        'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +
+        'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +
+        'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +
+        'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +
+        'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +
+        'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +
+        'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +
+        'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +
+        'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +
+        'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +
+        'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +
+        'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +
+        'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +
+        'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +
+        'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +
+        'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +
+        'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +
+        'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +
+        'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +
+        'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' +
+        'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' +
+        'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' +
+        // Variables
+        'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' +
+        'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' +
+        'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' +
+        'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' +
+        'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' +
+        'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' +
+        'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' +
+        'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' +
+        'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' +
+        'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' +
+        'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' +
+        'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' +
+        'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' +
+        'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' +
+        'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' +
+        'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' +
+        'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' +
+        'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' +
+        // Functions
+        'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' +
+        'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' +
+        'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' +
+        'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' +
+        'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' +
+        'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' +
+        'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' +
+        'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' +
+        'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' +
+        'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' +
+        'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' +
+        'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' +
+        'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' +
+        'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' +
+        'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' +
+        'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' +
+        'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' +
+        'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' +
+        'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' +
+        'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' +
+        'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' +
+        'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' +
+        'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow',
+      literal: 'true false'
+    },
+    illegal: '"',
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'meta',
+        begin: '#',
+        end: '$'
+      }
+    ]
+  };
+}
+
+module.exports = glsl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/gml.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/gml.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: GML
+Author: Meseta 
+Description: Game Maker Language for GameMaker Studio 2
+Website: https://docs2.yoyogames.com
+Category: scripting
+*/
+
+function gml(hljs) {
+  const GML_KEYWORDS = {
+    keyword: 'begin end if then else while do for break continue with until ' +
+      'repeat exit and or xor not return mod div switch case default var ' +
+      'globalvar enum function constructor delete #macro #region #endregion',
+    built_in: 'is_real is_string is_array is_undefined is_int32 is_int64 is_ptr ' +
+      'is_vec3 is_vec4 is_matrix is_bool is_method is_struct is_infinity is_nan ' +
+      'is_numeric typeof variable_global_exists variable_global_get variable_global_set ' +
+      'variable_instance_exists variable_instance_get variable_instance_set ' +
+      'variable_instance_get_names variable_struct_exists variable_struct_get ' +
+      'variable_struct_get_names variable_struct_names_count variable_struct_remove ' +
+      'variable_struct_set array_delete array_insert array_length array_length_1d ' +
+      'array_length_2d array_height_2d array_equals array_create ' +
+      'array_copy array_pop array_push array_resize array_sort ' +
+      'random random_range irandom irandom_range random_set_seed random_get_seed ' +
+      'randomize randomise choose abs round floor ceil sign frac sqrt sqr ' +
+      'exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos ' +
+      'dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn ' +
+      'min max mean median clamp lerp dot_product dot_product_3d ' +
+      'dot_product_normalised dot_product_3d_normalised ' +
+      'dot_product_normalized dot_product_3d_normalized math_set_epsilon ' +
+      'math_get_epsilon angle_difference point_distance_3d point_distance ' +
+      'point_direction lengthdir_x lengthdir_y real string int64 ptr ' +
+      'string_format chr ansi_char ord string_length string_byte_length ' +
+      'string_pos string_copy string_char_at string_ord_at string_byte_at ' +
+      'string_set_byte_at string_delete string_insert string_lower ' +
+      'string_upper string_repeat string_letters string_digits ' +
+      'string_lettersdigits string_replace string_replace_all string_count ' +
+      'string_hash_to_newline clipboard_has_text clipboard_set_text ' +
+      'clipboard_get_text date_current_datetime date_create_datetime ' +
+      'date_valid_datetime date_inc_year date_inc_month date_inc_week ' +
+      'date_inc_day date_inc_hour date_inc_minute date_inc_second ' +
+      'date_get_year date_get_month date_get_week date_get_day ' +
+      'date_get_hour date_get_minute date_get_second date_get_weekday ' +
+      'date_get_day_of_year date_get_hour_of_year date_get_minute_of_year ' +
+      'date_get_second_of_year date_year_span date_month_span ' +
+      'date_week_span date_day_span date_hour_span date_minute_span ' +
+      'date_second_span date_compare_datetime date_compare_date ' +
+      'date_compare_time date_date_of date_time_of date_datetime_string ' +
+      'date_date_string date_time_string date_days_in_month ' +
+      'date_days_in_year date_leap_year date_is_today date_set_timezone ' +
+      'date_get_timezone game_set_speed game_get_speed motion_set ' +
+      'motion_add place_free place_empty place_meeting place_snapped ' +
+      'move_random move_snap move_towards_point move_contact_solid ' +
+      'move_contact_all move_outside_solid move_outside_all ' +
+      'move_bounce_solid move_bounce_all move_wrap distance_to_point ' +
+      'distance_to_object position_empty position_meeting path_start ' +
+      'path_end mp_linear_step mp_potential_step mp_linear_step_object ' +
+      'mp_potential_step_object mp_potential_settings mp_linear_path ' +
+      'mp_potential_path mp_linear_path_object mp_potential_path_object ' +
+      'mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell ' +
+      'mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell ' +
+      'mp_grid_add_rectangle mp_grid_add_instances mp_grid_path ' +
+      'mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle ' +
+      'collision_circle collision_ellipse collision_line ' +
+      'collision_point_list collision_rectangle_list collision_circle_list ' +
+      'collision_ellipse_list collision_line_list instance_position_list ' +
+      'instance_place_list point_in_rectangle ' +
+      'point_in_triangle point_in_circle rectangle_in_rectangle ' +
+      'rectangle_in_triangle rectangle_in_circle instance_find ' +
+      'instance_exists instance_number instance_position instance_nearest ' +
+      'instance_furthest instance_place instance_create_depth ' +
+      'instance_create_layer instance_copy instance_change instance_destroy ' +
+      'position_destroy position_change instance_id_get ' +
+      'instance_deactivate_all instance_deactivate_object ' +
+      'instance_deactivate_region instance_activate_all ' +
+      'instance_activate_object instance_activate_region room_goto ' +
+      'room_goto_previous room_goto_next room_previous room_next ' +
+      'room_restart game_end game_restart game_load game_save ' +
+      'game_save_buffer game_load_buffer event_perform event_user ' +
+      'event_perform_object event_inherited show_debug_message ' +
+      'show_debug_overlay debug_event debug_get_callstack alarm_get ' +
+      'alarm_set font_texture_page_size keyboard_set_map keyboard_get_map ' +
+      'keyboard_unset_map keyboard_check keyboard_check_pressed ' +
+      'keyboard_check_released keyboard_check_direct keyboard_get_numlock ' +
+      'keyboard_set_numlock keyboard_key_press keyboard_key_release ' +
+      'keyboard_clear io_clear mouse_check_button ' +
+      'mouse_check_button_pressed mouse_check_button_released ' +
+      'mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite ' +
+      'draw_sprite_pos draw_sprite_ext draw_sprite_stretched ' +
+      'draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext ' +
+      'draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear ' +
+      'draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle ' +
+      'draw_roundrect draw_roundrect_ext draw_triangle draw_circle ' +
+      'draw_ellipse draw_set_circle_precision draw_arrow draw_button ' +
+      'draw_path draw_healthbar draw_getpixel draw_getpixel_ext ' +
+      'draw_set_colour draw_set_color draw_set_alpha draw_get_colour ' +
+      'draw_get_color draw_get_alpha merge_colour make_colour_rgb ' +
+      'make_colour_hsv colour_get_red colour_get_green colour_get_blue ' +
+      'colour_get_hue colour_get_saturation colour_get_value merge_color ' +
+      'make_color_rgb make_color_hsv color_get_red color_get_green ' +
+      'color_get_blue color_get_hue color_get_saturation color_get_value ' +
+      'merge_color screen_save screen_save_part draw_set_font ' +
+      'draw_set_halign draw_set_valign draw_text draw_text_ext string_width ' +
+      'string_height string_width_ext string_height_ext ' +
+      'draw_text_transformed draw_text_ext_transformed draw_text_colour ' +
+      'draw_text_ext_colour draw_text_transformed_colour ' +
+      'draw_text_ext_transformed_colour draw_text_color draw_text_ext_color ' +
+      'draw_text_transformed_color draw_text_ext_transformed_color ' +
+      'draw_point_colour draw_line_colour draw_line_width_colour ' +
+      'draw_rectangle_colour draw_roundrect_colour ' +
+      'draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour ' +
+      'draw_ellipse_colour draw_point_color draw_line_color ' +
+      'draw_line_width_color draw_rectangle_color draw_roundrect_color ' +
+      'draw_roundrect_color_ext draw_triangle_color draw_circle_color ' +
+      'draw_ellipse_color draw_primitive_begin draw_vertex ' +
+      'draw_vertex_colour draw_vertex_color draw_primitive_end ' +
+      'sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture ' +
+      'texture_get_width texture_get_height texture_get_uvs ' +
+      'draw_primitive_begin_texture draw_vertex_texture ' +
+      'draw_vertex_texture_colour draw_vertex_texture_color ' +
+      'texture_global_scale surface_create surface_create_ext ' +
+      'surface_resize surface_free surface_exists surface_get_width ' +
+      'surface_get_height surface_get_texture surface_set_target ' +
+      'surface_set_target_ext surface_reset_target surface_depth_disable ' +
+      'surface_get_depth_disable draw_surface draw_surface_stretched ' +
+      'draw_surface_tiled draw_surface_part draw_surface_ext ' +
+      'draw_surface_stretched_ext draw_surface_tiled_ext ' +
+      'draw_surface_part_ext draw_surface_general surface_getpixel ' +
+      'surface_getpixel_ext surface_save surface_save_part surface_copy ' +
+      'surface_copy_part application_surface_draw_enable ' +
+      'application_get_position application_surface_enable ' +
+      'application_surface_is_enabled display_get_width display_get_height ' +
+      'display_get_orientation display_get_gui_width display_get_gui_height ' +
+      'display_reset display_mouse_get_x display_mouse_get_y ' +
+      'display_mouse_set display_set_ui_visibility ' +
+      'window_set_fullscreen window_get_fullscreen ' +
+      'window_set_caption window_set_min_width window_set_max_width ' +
+      'window_set_min_height window_set_max_height window_get_visible_rects ' +
+      'window_get_caption window_set_cursor window_get_cursor ' +
+      'window_set_colour window_get_colour window_set_color ' +
+      'window_get_color window_set_position window_set_size ' +
+      'window_set_rectangle window_center window_get_x window_get_y ' +
+      'window_get_width window_get_height window_mouse_get_x ' +
+      'window_mouse_get_y window_mouse_set window_view_mouse_get_x ' +
+      'window_view_mouse_get_y window_views_mouse_get_x ' +
+      'window_views_mouse_get_y audio_listener_position ' +
+      'audio_listener_velocity audio_listener_orientation ' +
+      'audio_emitter_position audio_emitter_create audio_emitter_free ' +
+      'audio_emitter_exists audio_emitter_pitch audio_emitter_velocity ' +
+      'audio_emitter_falloff audio_emitter_gain audio_play_sound ' +
+      'audio_play_sound_on audio_play_sound_at audio_stop_sound ' +
+      'audio_resume_music audio_music_is_playing audio_resume_sound ' +
+      'audio_pause_sound audio_pause_music audio_channel_num ' +
+      'audio_sound_length audio_get_type audio_falloff_set_model ' +
+      'audio_play_music audio_stop_music audio_master_gain audio_music_gain ' +
+      'audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all ' +
+      'audio_pause_all audio_is_playing audio_is_paused audio_exists ' +
+      'audio_sound_set_track_position audio_sound_get_track_position ' +
+      'audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x ' +
+      'audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx ' +
+      'audio_emitter_get_vy audio_emitter_get_vz ' +
+      'audio_listener_set_position audio_listener_set_velocity ' +
+      'audio_listener_set_orientation audio_listener_get_data ' +
+      'audio_set_master_gain audio_get_master_gain audio_sound_get_gain ' +
+      'audio_sound_get_pitch audio_get_name audio_sound_set_track_position ' +
+      'audio_sound_get_track_position audio_create_stream ' +
+      'audio_destroy_stream audio_create_sync_group ' +
+      'audio_destroy_sync_group audio_play_in_sync_group ' +
+      'audio_start_sync_group audio_stop_sync_group audio_pause_sync_group ' +
+      'audio_resume_sync_group audio_sync_group_get_track_pos ' +
+      'audio_sync_group_debug audio_sync_group_is_playing audio_debug ' +
+      'audio_group_load audio_group_unload audio_group_is_loaded ' +
+      'audio_group_load_progress audio_group_name audio_group_stop_all ' +
+      'audio_group_set_gain audio_create_buffer_sound ' +
+      'audio_free_buffer_sound audio_create_play_queue ' +
+      'audio_free_play_queue audio_queue_sound audio_get_recorder_count ' +
+      'audio_get_recorder_info audio_start_recording audio_stop_recording ' +
+      'audio_sound_get_listener_mask audio_emitter_get_listener_mask ' +
+      'audio_get_listener_mask audio_sound_set_listener_mask ' +
+      'audio_emitter_set_listener_mask audio_set_listener_mask ' +
+      'audio_get_listener_count audio_get_listener_info audio_system ' +
+      'show_message show_message_async clickable_add clickable_add_ext ' +
+      'clickable_change clickable_change_ext clickable_delete ' +
+      'clickable_exists clickable_set_style show_question ' +
+      'show_question_async get_integer get_string get_integer_async ' +
+      'get_string_async get_login_async get_open_filename get_save_filename ' +
+      'get_open_filename_ext get_save_filename_ext show_error ' +
+      'highscore_clear highscore_add highscore_value highscore_name ' +
+      'draw_highscore sprite_exists sprite_get_name sprite_get_number ' +
+      'sprite_get_width sprite_get_height sprite_get_xoffset ' +
+      'sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right ' +
+      'sprite_get_bbox_top sprite_get_bbox_bottom sprite_save ' +
+      'sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext ' +
+      'sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush ' +
+      'sprite_flush_multi sprite_set_speed sprite_get_speed_type ' +
+      'sprite_get_speed font_exists font_get_name font_get_fontname ' +
+      'font_get_bold font_get_italic font_get_first font_get_last ' +
+      'font_get_size font_set_cache_size path_exists path_get_name ' +
+      'path_get_length path_get_time path_get_kind path_get_closed ' +
+      'path_get_precision path_get_number path_get_point_x path_get_point_y ' +
+      'path_get_point_speed path_get_x path_get_y path_get_speed ' +
+      'script_exists script_get_name timeline_add timeline_delete ' +
+      'timeline_clear timeline_exists timeline_get_name ' +
+      'timeline_moment_clear timeline_moment_add_script timeline_size ' +
+      'timeline_max_moment object_exists object_get_name object_get_sprite ' +
+      'object_get_solid object_get_visible object_get_persistent ' +
+      'object_get_mask object_get_parent object_get_physics ' +
+      'object_is_ancestor room_exists room_get_name sprite_set_offset ' +
+      'sprite_duplicate sprite_assign sprite_merge sprite_add ' +
+      'sprite_replace sprite_create_from_surface sprite_add_from_surface ' +
+      'sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask ' +
+      'font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite ' +
+      'font_add_sprite_ext font_replace font_replace_sprite ' +
+      'font_replace_sprite_ext font_delete path_set_kind path_set_closed ' +
+      'path_set_precision path_add path_assign path_duplicate path_append ' +
+      'path_delete path_add_point path_insert_point path_change_point ' +
+      'path_delete_point path_clear_points path_reverse path_mirror ' +
+      'path_flip path_rotate path_rescale path_shift script_execute ' +
+      'object_set_sprite object_set_solid object_set_visible ' +
+      'object_set_persistent object_set_mask room_set_width room_set_height ' +
+      'room_set_persistent room_set_background_colour ' +
+      'room_set_background_color room_set_view room_set_viewport ' +
+      'room_get_viewport room_set_view_enabled room_add room_duplicate ' +
+      'room_assign room_instance_add room_instance_clear room_get_camera ' +
+      'room_set_camera asset_get_index asset_get_type ' +
+      'file_text_open_from_string file_text_open_read file_text_open_write ' +
+      'file_text_open_append file_text_close file_text_write_string ' +
+      'file_text_write_real file_text_writeln file_text_read_string ' +
+      'file_text_read_real file_text_readln file_text_eof file_text_eoln ' +
+      'file_exists file_delete file_rename file_copy directory_exists ' +
+      'directory_create directory_destroy file_find_first file_find_next ' +
+      'file_find_close file_attributes filename_name filename_path ' +
+      'filename_dir filename_drive filename_ext filename_change_ext ' +
+      'file_bin_open file_bin_rewrite file_bin_close file_bin_position ' +
+      'file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte ' +
+      'parameter_count parameter_string environment_get_variable ' +
+      'ini_open_from_string ini_open ini_close ini_read_string ' +
+      'ini_read_real ini_write_string ini_write_real ini_key_exists ' +
+      'ini_section_exists ini_key_delete ini_section_delete ' +
+      'ds_set_precision ds_exists ds_stack_create ds_stack_destroy ' +
+      'ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ' +
+      'ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ' +
+      'ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ' +
+      'ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ' +
+      'ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ' +
+      'ds_list_create ds_list_destroy ds_list_clear ds_list_copy ' +
+      'ds_list_size ds_list_empty ds_list_add ds_list_insert ' +
+      'ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ' +
+      'ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ' +
+      'ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ' +
+      'ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ' +
+      'ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ' +
+      'ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ' +
+      'ds_map_find_value ds_map_find_previous ds_map_find_next ' +
+      'ds_map_find_first ds_map_find_last ds_map_write ds_map_read ' +
+      'ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ' +
+      'ds_map_secure_save_buffer ds_map_set ds_priority_create ' +
+      'ds_priority_destroy ds_priority_clear ds_priority_copy ' +
+      'ds_priority_size ds_priority_empty ds_priority_add ' +
+      'ds_priority_change_priority ds_priority_find_priority ' +
+      'ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ' +
+      'ds_priority_delete_max ds_priority_find_max ds_priority_write ' +
+      'ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ' +
+      'ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ' +
+      'ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ' +
+      'ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ' +
+      'ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ' +
+      'ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ' +
+      'ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ' +
+      'ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ' +
+      'ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ' +
+      'ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ' +
+      'ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ' +
+      'ds_grid_sort ds_grid_set ds_grid_get effect_create_below ' +
+      'effect_create_above effect_clear part_type_create part_type_destroy ' +
+      'part_type_exists part_type_clear part_type_shape part_type_sprite ' +
+      'part_type_size part_type_scale part_type_orientation part_type_life ' +
+      'part_type_step part_type_death part_type_speed part_type_direction ' +
+      'part_type_gravity part_type_colour1 part_type_colour2 ' +
+      'part_type_colour3 part_type_colour_mix part_type_colour_rgb ' +
+      'part_type_colour_hsv part_type_color1 part_type_color2 ' +
+      'part_type_color3 part_type_color_mix part_type_color_rgb ' +
+      'part_type_color_hsv part_type_alpha1 part_type_alpha2 ' +
+      'part_type_alpha3 part_type_blend part_system_create ' +
+      'part_system_create_layer part_system_destroy part_system_exists ' +
+      'part_system_clear part_system_draw_order part_system_depth ' +
+      'part_system_position part_system_automatic_update ' +
+      'part_system_automatic_draw part_system_update part_system_drawit ' +
+      'part_system_get_layer part_system_layer part_particles_create ' +
+      'part_particles_create_colour part_particles_create_color ' +
+      'part_particles_clear part_particles_count part_emitter_create ' +
+      'part_emitter_destroy part_emitter_destroy_all part_emitter_exists ' +
+      'part_emitter_clear part_emitter_region part_emitter_burst ' +
+      'part_emitter_stream external_call external_define external_free ' +
+      'window_handle window_device matrix_get matrix_set ' +
+      'matrix_build_identity matrix_build matrix_build_lookat ' +
+      'matrix_build_projection_ortho matrix_build_projection_perspective ' +
+      'matrix_build_projection_perspective_fov matrix_multiply ' +
+      'matrix_transform_vertex matrix_stack_push matrix_stack_pop ' +
+      'matrix_stack_multiply matrix_stack_set matrix_stack_clear ' +
+      'matrix_stack_top matrix_stack_is_empty browser_input_capture ' +
+      'os_get_config os_get_info os_get_language os_get_region ' +
+      'os_lock_orientation display_get_dpi_x display_get_dpi_y ' +
+      'display_set_gui_size display_set_gui_maximise ' +
+      'display_set_gui_maximize device_mouse_dbclick_enable ' +
+      'display_set_timing_method display_get_timing_method ' +
+      'display_set_sleep_margin display_get_sleep_margin virtual_key_add ' +
+      'virtual_key_hide virtual_key_delete virtual_key_show ' +
+      'draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level ' +
+      'draw_get_swf_aa_level draw_texture_flush draw_flush ' +
+      'gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc ' +
+      'gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog ' +
+      'gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext ' +
+      'gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable ' +
+      'gpu_set_colourwriteenable gpu_set_alphatestenable ' +
+      'gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter ' +
+      'gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext ' +
+      'gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat ' +
+      'gpu_set_tex_repeat_ext gpu_set_tex_mip_filter ' +
+      'gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias ' +
+      'gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext ' +
+      'gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso ' +
+      'gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable ' +
+      'gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable ' +
+      'gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable ' +
+      'gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext ' +
+      'gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src ' +
+      'gpu_get_blendmode_dest gpu_get_blendmode_srcalpha ' +
+      'gpu_get_blendmode_destalpha gpu_get_colorwriteenable ' +
+      'gpu_get_colourwriteenable gpu_get_alphatestenable ' +
+      'gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter ' +
+      'gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext ' +
+      'gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat ' +
+      'gpu_get_tex_repeat_ext gpu_get_tex_mip_filter ' +
+      'gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias ' +
+      'gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext ' +
+      'gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso ' +
+      'gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable ' +
+      'gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state ' +
+      'gpu_get_state gpu_set_state draw_light_define_ambient ' +
+      'draw_light_define_direction draw_light_define_point ' +
+      'draw_light_enable draw_set_lighting draw_light_get_ambient ' +
+      'draw_light_get draw_get_lighting shop_leave_rating url_get_domain ' +
+      'url_open url_open_ext url_open_full get_timer achievement_login ' +
+      'achievement_logout achievement_post achievement_increment ' +
+      'achievement_post_score achievement_available ' +
+      'achievement_show_achievements achievement_show_leaderboards ' +
+      'achievement_load_friends achievement_load_leaderboard ' +
+      'achievement_send_challenge achievement_load_progress ' +
+      'achievement_reset achievement_login_status achievement_get_pic ' +
+      'achievement_show_challenge_notifications achievement_get_challenges ' +
+      'achievement_event achievement_show achievement_get_info ' +
+      'cloud_file_save cloud_string_save cloud_synchronise ads_enable ' +
+      'ads_disable ads_setup ads_engagement_launch ads_engagement_available ' +
+      'ads_engagement_active ads_event ads_event_preload ' +
+      'ads_set_reward_callback ads_get_display_height ads_get_display_width ' +
+      'ads_move ads_interstitial_available ads_interstitial_display ' +
+      'device_get_tilt_x device_get_tilt_y device_get_tilt_z ' +
+      'device_is_keypad_open device_mouse_check_button ' +
+      'device_mouse_check_button_pressed device_mouse_check_button_released ' +
+      'device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y ' +
+      'device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status ' +
+      'iap_enumerate_products iap_restore_all iap_acquire iap_consume ' +
+      'iap_product_details iap_purchase_details facebook_init ' +
+      'facebook_login facebook_status facebook_graph_request ' +
+      'facebook_dialog facebook_logout facebook_launch_offerwall ' +
+      'facebook_post_message facebook_send_invite facebook_user_id ' +
+      'facebook_accesstoken facebook_check_permission ' +
+      'facebook_request_read_permissions ' +
+      'facebook_request_publish_permissions gamepad_is_supported ' +
+      'gamepad_get_device_count gamepad_is_connected ' +
+      'gamepad_get_description gamepad_get_button_threshold ' +
+      'gamepad_set_button_threshold gamepad_get_axis_deadzone ' +
+      'gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check ' +
+      'gamepad_button_check_pressed gamepad_button_check_released ' +
+      'gamepad_button_value gamepad_axis_count gamepad_axis_value ' +
+      'gamepad_set_vibration gamepad_set_colour gamepad_set_color ' +
+      'os_is_paused window_has_focus code_is_compiled http_get ' +
+      'http_get_file http_post_string http_request json_encode json_decode ' +
+      'zip_unzip load_csv base64_encode base64_decode md5_string_unicode ' +
+      'md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode ' +
+      'sha1_string_utf8 sha1_file os_powersave_enable analytics_event ' +
+      'analytics_event_ext win8_livetile_tile_notification ' +
+      'win8_livetile_tile_clear win8_livetile_badge_notification ' +
+      'win8_livetile_badge_clear win8_livetile_queue_enable ' +
+      'win8_secondarytile_pin win8_secondarytile_badge_notification ' +
+      'win8_secondarytile_delete win8_livetile_notification_begin ' +
+      'win8_livetile_notification_secondary_begin ' +
+      'win8_livetile_notification_expiry win8_livetile_notification_tag ' +
+      'win8_livetile_notification_text_add ' +
+      'win8_livetile_notification_image_add win8_livetile_notification_end ' +
+      'win8_appbar_enable win8_appbar_add_element ' +
+      'win8_appbar_remove_element win8_settingscharm_add_entry ' +
+      'win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry ' +
+      'win8_settingscharm_set_xaml_property ' +
+      'win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry ' +
+      'win8_share_image win8_share_screenshot win8_share_file ' +
+      'win8_share_url win8_share_text win8_search_enable ' +
+      'win8_search_disable win8_search_add_suggestions ' +
+      'win8_device_touchscreen_available win8_license_initialize_sandbox ' +
+      'win8_license_trial_version winphone_license_trial_version ' +
+      'winphone_tile_title winphone_tile_count winphone_tile_back_title ' +
+      'winphone_tile_back_content winphone_tile_back_content_wide ' +
+      'winphone_tile_front_image winphone_tile_front_image_small ' +
+      'winphone_tile_front_image_wide winphone_tile_back_image ' +
+      'winphone_tile_back_image_wide winphone_tile_background_colour ' +
+      'winphone_tile_background_color winphone_tile_icon_image ' +
+      'winphone_tile_small_icon_image winphone_tile_wide_content ' +
+      'winphone_tile_cycle_images winphone_tile_small_background_image ' +
+      'physics_world_create physics_world_gravity ' +
+      'physics_world_update_speed physics_world_update_iterations ' +
+      'physics_world_draw_debug physics_pause_enable physics_fixture_create ' +
+      'physics_fixture_set_kinematic physics_fixture_set_density ' +
+      'physics_fixture_set_awake physics_fixture_set_restitution ' +
+      'physics_fixture_set_friction physics_fixture_set_collision_group ' +
+      'physics_fixture_set_sensor physics_fixture_set_linear_damping ' +
+      'physics_fixture_set_angular_damping physics_fixture_set_circle_shape ' +
+      'physics_fixture_set_box_shape physics_fixture_set_edge_shape ' +
+      'physics_fixture_set_polygon_shape physics_fixture_set_chain_shape ' +
+      'physics_fixture_add_point physics_fixture_bind ' +
+      'physics_fixture_bind_ext physics_fixture_delete physics_apply_force ' +
+      'physics_apply_impulse physics_apply_angular_impulse ' +
+      'physics_apply_local_force physics_apply_local_impulse ' +
+      'physics_apply_torque physics_mass_properties physics_draw_debug ' +
+      'physics_test_overlap physics_remove_fixture physics_set_friction ' +
+      'physics_set_density physics_set_restitution physics_get_friction ' +
+      'physics_get_density physics_get_restitution ' +
+      'physics_joint_distance_create physics_joint_rope_create ' +
+      'physics_joint_revolute_create physics_joint_prismatic_create ' +
+      'physics_joint_pulley_create physics_joint_wheel_create ' +
+      'physics_joint_weld_create physics_joint_friction_create ' +
+      'physics_joint_gear_create physics_joint_enable_motor ' +
+      'physics_joint_get_value physics_joint_set_value physics_joint_delete ' +
+      'physics_particle_create physics_particle_delete ' +
+      'physics_particle_delete_region_circle ' +
+      'physics_particle_delete_region_box ' +
+      'physics_particle_delete_region_poly physics_particle_set_flags ' +
+      'physics_particle_set_category_flags physics_particle_draw ' +
+      'physics_particle_draw_ext physics_particle_count ' +
+      'physics_particle_get_data physics_particle_get_data_particle ' +
+      'physics_particle_group_begin physics_particle_group_circle ' +
+      'physics_particle_group_box physics_particle_group_polygon ' +
+      'physics_particle_group_add_point physics_particle_group_end ' +
+      'physics_particle_group_join physics_particle_group_delete ' +
+      'physics_particle_group_count physics_particle_group_get_data ' +
+      'physics_particle_group_get_mass physics_particle_group_get_inertia ' +
+      'physics_particle_group_get_centre_x ' +
+      'physics_particle_group_get_centre_y physics_particle_group_get_vel_x ' +
+      'physics_particle_group_get_vel_y physics_particle_group_get_ang_vel ' +
+      'physics_particle_group_get_x physics_particle_group_get_y ' +
+      'physics_particle_group_get_angle physics_particle_set_group_flags ' +
+      'physics_particle_get_group_flags physics_particle_get_max_count ' +
+      'physics_particle_get_radius physics_particle_get_density ' +
+      'physics_particle_get_damping physics_particle_get_gravity_scale ' +
+      'physics_particle_set_max_count physics_particle_set_radius ' +
+      'physics_particle_set_density physics_particle_set_damping ' +
+      'physics_particle_set_gravity_scale network_create_socket ' +
+      'network_create_socket_ext network_create_server ' +
+      'network_create_server_raw network_connect network_connect_raw ' +
+      'network_send_packet network_send_raw network_send_broadcast ' +
+      'network_send_udp network_send_udp_raw network_set_timeout ' +
+      'network_set_config network_resolve network_destroy buffer_create ' +
+      'buffer_write buffer_read buffer_seek buffer_get_surface ' +
+      'buffer_set_surface buffer_delete buffer_exists buffer_get_type ' +
+      'buffer_get_alignment buffer_poke buffer_peek buffer_save ' +
+      'buffer_save_ext buffer_load buffer_load_ext buffer_load_partial ' +
+      'buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize ' +
+      'buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode ' +
+      'buffer_base64_decode_ext buffer_sizeof buffer_get_address ' +
+      'buffer_create_from_vertex_buffer ' +
+      'buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer ' +
+      'buffer_async_group_begin buffer_async_group_option ' +
+      'buffer_async_group_end buffer_load_async buffer_save_async ' +
+      'gml_release_mode gml_pragma steam_activate_overlay ' +
+      'steam_is_overlay_enabled steam_is_overlay_activated ' +
+      'steam_get_persona_name steam_initialised ' +
+      'steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account ' +
+      'steam_file_persisted steam_get_quota_total steam_get_quota_free ' +
+      'steam_file_write steam_file_write_file steam_file_read ' +
+      'steam_file_delete steam_file_exists steam_file_size steam_file_share ' +
+      'steam_is_screenshot_requested steam_send_screenshot ' +
+      'steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc ' +
+      'steam_user_installed_dlc steam_set_achievement steam_get_achievement ' +
+      'steam_clear_achievement steam_set_stat_int steam_set_stat_float ' +
+      'steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float ' +
+      'steam_get_stat_avg_rate steam_reset_all_stats ' +
+      'steam_reset_all_stats_achievements steam_stats_ready ' +
+      'steam_create_leaderboard steam_upload_score steam_upload_score_ext ' +
+      'steam_download_scores_around_user steam_download_scores ' +
+      'steam_download_friends_scores steam_upload_score_buffer ' +
+      'steam_upload_score_buffer_ext steam_current_game_language ' +
+      'steam_available_languages steam_activate_overlay_browser ' +
+      'steam_activate_overlay_user steam_activate_overlay_store ' +
+      'steam_get_user_persona_name steam_get_app_id ' +
+      'steam_get_user_account_id steam_ugc_download steam_ugc_create_item ' +
+      'steam_ugc_start_item_update steam_ugc_set_item_title ' +
+      'steam_ugc_set_item_description steam_ugc_set_item_visibility ' +
+      'steam_ugc_set_item_tags steam_ugc_set_item_content ' +
+      'steam_ugc_set_item_preview steam_ugc_submit_item_update ' +
+      'steam_ugc_get_item_update_progress steam_ugc_subscribe_item ' +
+      'steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items ' +
+      'steam_ugc_get_subscribed_items steam_ugc_get_item_install_info ' +
+      'steam_ugc_get_item_update_info steam_ugc_request_item_details ' +
+      'steam_ugc_create_query_user steam_ugc_create_query_user_ex ' +
+      'steam_ugc_create_query_all steam_ugc_create_query_all_ex ' +
+      'steam_ugc_query_set_cloud_filename_filter ' +
+      'steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text ' +
+      'steam_ugc_query_set_ranked_by_trend_days ' +
+      'steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag ' +
+      'steam_ugc_query_set_return_long_description ' +
+      'steam_ugc_query_set_return_total_only ' +
+      'steam_ugc_query_set_allow_cached_response steam_ugc_send_query ' +
+      'shader_set shader_get_name shader_reset shader_current ' +
+      'shader_is_compiled shader_get_sampler_index shader_get_uniform ' +
+      'shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f ' +
+      'shader_set_uniform_f_array shader_set_uniform_matrix ' +
+      'shader_set_uniform_matrix_array shader_enable_corner_id ' +
+      'texture_set_stage texture_get_texel_width texture_get_texel_height ' +
+      'shaders_are_supported vertex_format_begin vertex_format_end ' +
+      'vertex_format_delete vertex_format_add_position ' +
+      'vertex_format_add_position_3d vertex_format_add_colour ' +
+      'vertex_format_add_color vertex_format_add_normal ' +
+      'vertex_format_add_texcoord vertex_format_add_textcoord ' +
+      'vertex_format_add_custom vertex_create_buffer ' +
+      'vertex_create_buffer_ext vertex_delete_buffer vertex_begin ' +
+      'vertex_end vertex_position vertex_position_3d vertex_colour ' +
+      'vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 ' +
+      'vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 ' +
+      'vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size ' +
+      'vertex_create_buffer_from_buffer ' +
+      'vertex_create_buffer_from_buffer_ext push_local_notification ' +
+      'push_get_first_local_notification push_get_next_local_notification ' +
+      'push_cancel_local_notification skeleton_animation_set ' +
+      'skeleton_animation_get skeleton_animation_mix ' +
+      'skeleton_animation_set_ext skeleton_animation_get_ext ' +
+      'skeleton_animation_get_duration skeleton_animation_get_frames ' +
+      'skeleton_animation_clear skeleton_skin_set skeleton_skin_get ' +
+      'skeleton_attachment_set skeleton_attachment_get ' +
+      'skeleton_attachment_create skeleton_collision_draw_set ' +
+      'skeleton_bone_data_get skeleton_bone_data_set ' +
+      'skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax ' +
+      'skeleton_get_num_bounds skeleton_get_bounds ' +
+      'skeleton_animation_get_frame skeleton_animation_set_frame ' +
+      'draw_skeleton draw_skeleton_time draw_skeleton_instance ' +
+      'draw_skeleton_collision skeleton_animation_list skeleton_skin_list ' +
+      'skeleton_slot_data layer_get_id layer_get_id_at_depth ' +
+      'layer_get_depth layer_create layer_destroy layer_destroy_instances ' +
+      'layer_add_instance layer_has_instance layer_set_visible ' +
+      'layer_get_visible layer_exists layer_x layer_y layer_get_x ' +
+      'layer_get_y layer_hspeed layer_vspeed layer_get_hspeed ' +
+      'layer_get_vspeed layer_script_begin layer_script_end layer_shader ' +
+      'layer_get_script_begin layer_get_script_end layer_get_shader ' +
+      'layer_set_target_room layer_get_target_room layer_reset_target_room ' +
+      'layer_get_all layer_get_all_elements layer_get_name layer_depth ' +
+      'layer_get_element_layer layer_get_element_type layer_element_move ' +
+      'layer_force_draw_depth layer_is_draw_depth_forced ' +
+      'layer_get_forced_depth layer_background_get_id ' +
+      'layer_background_exists layer_background_create ' +
+      'layer_background_destroy layer_background_visible ' +
+      'layer_background_change layer_background_sprite ' +
+      'layer_background_htiled layer_background_vtiled ' +
+      'layer_background_stretch layer_background_yscale ' +
+      'layer_background_xscale layer_background_blend ' +
+      'layer_background_alpha layer_background_index layer_background_speed ' +
+      'layer_background_get_visible layer_background_get_sprite ' +
+      'layer_background_get_htiled layer_background_get_vtiled ' +
+      'layer_background_get_stretch layer_background_get_yscale ' +
+      'layer_background_get_xscale layer_background_get_blend ' +
+      'layer_background_get_alpha layer_background_get_index ' +
+      'layer_background_get_speed layer_sprite_get_id layer_sprite_exists ' +
+      'layer_sprite_create layer_sprite_destroy layer_sprite_change ' +
+      'layer_sprite_index layer_sprite_speed layer_sprite_xscale ' +
+      'layer_sprite_yscale layer_sprite_angle layer_sprite_blend ' +
+      'layer_sprite_alpha layer_sprite_x layer_sprite_y ' +
+      'layer_sprite_get_sprite layer_sprite_get_index ' +
+      'layer_sprite_get_speed layer_sprite_get_xscale ' +
+      'layer_sprite_get_yscale layer_sprite_get_angle ' +
+      'layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x ' +
+      'layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists ' +
+      'layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x ' +
+      'tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset ' +
+      'tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width ' +
+      'tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get ' +
+      'tilemap_get_at_pixel tilemap_get_cell_x_at_pixel ' +
+      'tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile ' +
+      'tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask ' +
+      'tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index ' +
+      'tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty ' +
+      'tile_get_index tile_get_flip tile_get_mirror tile_get_rotate ' +
+      'layer_tile_exists layer_tile_create layer_tile_destroy ' +
+      'layer_tile_change layer_tile_xscale layer_tile_yscale ' +
+      'layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y ' +
+      'layer_tile_region layer_tile_visible layer_tile_get_sprite ' +
+      'layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend ' +
+      'layer_tile_get_alpha layer_tile_get_x layer_tile_get_y ' +
+      'layer_tile_get_region layer_tile_get_visible ' +
+      'layer_instance_get_instance instance_activate_layer ' +
+      'instance_deactivate_layer camera_create camera_create_view ' +
+      'camera_destroy camera_apply camera_get_active camera_get_default ' +
+      'camera_set_default camera_set_view_mat camera_set_proj_mat ' +
+      'camera_set_update_script camera_set_begin_script ' +
+      'camera_set_end_script camera_set_view_pos camera_set_view_size ' +
+      'camera_set_view_speed camera_set_view_border camera_set_view_angle ' +
+      'camera_set_view_target camera_get_view_mat camera_get_proj_mat ' +
+      'camera_get_update_script camera_get_begin_script ' +
+      'camera_get_end_script camera_get_view_x camera_get_view_y ' +
+      'camera_get_view_width camera_get_view_height camera_get_view_speed_x ' +
+      'camera_get_view_speed_y camera_get_view_border_x ' +
+      'camera_get_view_border_y camera_get_view_angle ' +
+      'camera_get_view_target view_get_camera view_get_visible ' +
+      'view_get_xport view_get_yport view_get_wport view_get_hport ' +
+      'view_get_surface_id view_set_camera view_set_visible view_set_xport ' +
+      'view_set_yport view_set_wport view_set_hport view_set_surface_id ' +
+      'gesture_drag_time gesture_drag_distance gesture_flick_speed ' +
+      'gesture_double_tap_time gesture_double_tap_distance ' +
+      'gesture_pinch_distance gesture_pinch_angle_towards ' +
+      'gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle ' +
+      'gesture_tap_count gesture_get_drag_time gesture_get_drag_distance ' +
+      'gesture_get_flick_speed gesture_get_double_tap_time ' +
+      'gesture_get_double_tap_distance gesture_get_pinch_distance ' +
+      'gesture_get_pinch_angle_towards gesture_get_pinch_angle_away ' +
+      'gesture_get_rotate_time gesture_get_rotate_angle ' +
+      'gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide ' +
+      'keyboard_virtual_status keyboard_virtual_height',
+    literal: 'self other all noone global local undefined pointer_invalid ' +
+      'pointer_null path_action_stop path_action_restart ' +
+      'path_action_continue path_action_reverse true false pi GM_build_date ' +
+      'GM_version GM_runtime_version  timezone_local timezone_utc ' +
+      'gamespeed_fps gamespeed_microseconds  ev_create ev_destroy ev_step ' +
+      'ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ' +
+      'ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ' +
+      'ev_keyrelease ev_trigger ev_left_button ev_right_button ' +
+      'ev_middle_button ev_no_button ev_left_press ev_right_press ' +
+      'ev_middle_press ev_left_release ev_right_release ev_middle_release ' +
+      'ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ' +
+      'ev_global_left_button ev_global_right_button ev_global_middle_button ' +
+      'ev_global_left_press ev_global_right_press ev_global_middle_press ' +
+      'ev_global_left_release ev_global_right_release ' +
+      'ev_global_middle_release ev_joystick1_left ev_joystick1_right ' +
+      'ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ' +
+      'ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ' +
+      'ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ' +
+      'ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ' +
+      'ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ' +
+      'ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ' +
+      'ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ' +
+      'ev_joystick2_button8 ev_outside ev_boundary ev_game_start ' +
+      'ev_game_end ev_room_start ev_room_end ev_no_more_lives ' +
+      'ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ' +
+      'ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ' +
+      'ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ' +
+      'ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ' +
+      'ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ' +
+      'ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ' +
+      'ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ' +
+      'ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ' +
+      'ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ' +
+      'ev_global_gesture_tap ev_global_gesture_double_tap ' +
+      'ev_global_gesture_drag_start ev_global_gesture_dragging ' +
+      'ev_global_gesture_drag_end ev_global_gesture_flick ' +
+      'ev_global_gesture_pinch_start ev_global_gesture_pinch_in ' +
+      'ev_global_gesture_pinch_out ev_global_gesture_pinch_end ' +
+      'ev_global_gesture_rotate_start ev_global_gesture_rotating ' +
+      'ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return ' +
+      'vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab ' +
+      'vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home ' +
+      'vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 ' +
+      'vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 ' +
+      'vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 ' +
+      'vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract ' +
+      'vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift ' +
+      'vk_rcontrol vk_ralt  mb_any mb_none mb_left mb_right mb_middle ' +
+      'c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime ' +
+      'c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal ' +
+      'c_white c_yellow c_orange fa_left fa_center fa_right fa_top ' +
+      'fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip ' +
+      'pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal ' +
+      'bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour ' +
+      'bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha ' +
+      'bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour ' +
+      'bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat ' +
+      'tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly ' +
+      'audio_falloff_none audio_falloff_inverse_distance ' +
+      'audio_falloff_inverse_distance_clamped audio_falloff_linear_distance ' +
+      'audio_falloff_linear_distance_clamped ' +
+      'audio_falloff_exponent_distance ' +
+      'audio_falloff_exponent_distance_clamped audio_old_system ' +
+      'audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none ' +
+      'cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse ' +
+      'cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint ' +
+      'cr_size_all spritespeed_framespersecond ' +
+      'spritespeed_framespergameframe asset_object asset_unknown ' +
+      'asset_sprite asset_sound asset_room asset_path asset_script ' +
+      'asset_font asset_timeline asset_tiles asset_shader fa_readonly ' +
+      'fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive  ' +
+      'ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ' +
+      'ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ' +
+      'ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ' +
+      'ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line ' +
+      'pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere ' +
+      'pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud ' +
+      'pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ' +
+      'ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ' +
+      'ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl ' +
+      'dll_stdcall matrix_view matrix_projection matrix_world os_win32 ' +
+      'os_windows os_macosx os_ios os_android os_symbian os_linux ' +
+      'os_unknown os_winphone os_tizen os_win8native ' +
+      'os_wiiu os_3ds  os_psvita os_bb10 os_ps4 os_xboxone ' +
+      'os_ps3 os_xbox360 os_uwp os_tvos os_switch ' +
+      'browser_not_a_browser browser_unknown browser_ie browser_firefox ' +
+      'browser_chrome browser_safari browser_safari_mobile browser_opera ' +
+      'browser_tizen browser_edge browser_windows_store browser_ie_mobile  ' +
+      'device_ios_unknown device_ios_iphone device_ios_iphone_retina ' +
+      'device_ios_ipad device_ios_ipad_retina device_ios_iphone5 ' +
+      'device_ios_iphone6 device_ios_iphone6plus device_emulator ' +
+      'device_tablet display_landscape display_landscape_flipped ' +
+      'display_portrait display_portrait_flipped tm_sleep tm_countvsyncs ' +
+      'of_challenge_win of_challen ge_lose of_challenge_tie ' +
+      'leaderboard_type_number leaderboard_type_time_mins_secs ' +
+      'cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal ' +
+      'cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always ' +
+      'cull_noculling cull_clockwise cull_counterclockwise lighttype_dir ' +
+      'lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase ' +
+      'iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed ' +
+      'iap_status_uninitialised iap_status_unavailable iap_status_loading ' +
+      'iap_status_available iap_status_processing iap_status_restoring ' +
+      'iap_failed iap_unavailable iap_available iap_purchased iap_canceled ' +
+      'iap_refunded fb_login_default fb_login_fallback_to_webview ' +
+      'fb_login_no_fallback_to_webview fb_login_forcing_webview ' +
+      'fb_login_use_system_account fb_login_forcing_safari  ' +
+      'phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x ' +
+      'phy_joint_anchor_2_y phy_joint_reaction_force_x ' +
+      'phy_joint_reaction_force_y phy_joint_reaction_torque ' +
+      'phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque ' +
+      'phy_joint_max_motor_torque phy_joint_translation phy_joint_speed ' +
+      'phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 ' +
+      'phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency ' +
+      'phy_joint_lower_angle_limit phy_joint_upper_angle_limit ' +
+      'phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque ' +
+      'phy_joint_max_force phy_debug_render_aabb ' +
+      'phy_debug_render_collision_pairs phy_debug_render_coms ' +
+      'phy_debug_render_core_shapes phy_debug_render_joints ' +
+      'phy_debug_render_obb phy_debug_render_shapes  ' +
+      'phy_particle_flag_water phy_particle_flag_zombie ' +
+      'phy_particle_flag_wall phy_particle_flag_spring ' +
+      'phy_particle_flag_elastic phy_particle_flag_viscous ' +
+      'phy_particle_flag_powder phy_particle_flag_tensile ' +
+      'phy_particle_flag_colourmixing phy_particle_flag_colormixing ' +
+      'phy_particle_group_flag_solid phy_particle_group_flag_rigid ' +
+      'phy_particle_data_flag_typeflags phy_particle_data_flag_position ' +
+      'phy_particle_data_flag_velocity phy_particle_data_flag_colour ' +
+      'phy_particle_data_flag_color phy_particle_data_flag_category  ' +
+      'achievement_our_info achievement_friends_info ' +
+      'achievement_leaderboard_info achievement_achievement_info ' +
+      'achievement_filter_all_players achievement_filter_friends_only ' +
+      'achievement_filter_favorites_only ' +
+      'achievement_type_achievement_challenge ' +
+      'achievement_type_score_challenge achievement_pic_loaded  ' +
+      'achievement_show_ui achievement_show_profile ' +
+      'achievement_show_leaderboard achievement_show_achievement ' +
+      'achievement_show_bank achievement_show_friend_picker ' +
+      'achievement_show_purchase_prompt network_socket_tcp ' +
+      'network_socket_udp network_socket_bluetooth network_type_connect ' +
+      'network_type_disconnect network_type_data ' +
+      'network_type_non_blocking_connect network_config_connect_timeout ' +
+      'network_config_use_non_blocking_socket ' +
+      'network_config_enable_reliable_udp ' +
+      'network_config_disable_reliable_udp buffer_fixed buffer_grow ' +
+      'buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 ' +
+      'buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 ' +
+      'buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text ' +
+      'buffer_string buffer_surface_copy buffer_seek_start ' +
+      'buffer_seek_relative buffer_seek_end ' +
+      'buffer_generalerror buffer_outofspace buffer_outofbounds ' +
+      'buffer_invalidtype  text_type button_type input_type ANSI_CHARSET ' +
+      'DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET ' +
+      'SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET ' +
+      'JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET ' +
+      'TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET ' +
+      'BALTIC_CHARSET OEM_CHARSET  gp_face1 gp_face2 gp_face3 gp_face4 ' +
+      'gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select ' +
+      'gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr ' +
+      'gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ' +
+      'ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none ' +
+      'lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric ' +
+      'lb_disp_time_sec lb_disp_time_ms ugc_result_success ' +
+      'ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ' +
+      'ugc_visibility_friends_only ugc_visibility_private ' +
+      'ugc_query_RankedByVote ugc_query_RankedByPublicationDate ' +
+      'ugc_query_AcceptedForGameRankedByAcceptanceDate ' +
+      'ugc_query_RankedByTrend ' +
+      'ugc_query_FavoritedByFriendsRankedByPublicationDate ' +
+      'ugc_query_CreatedByFriendsRankedByPublicationDate ' +
+      'ugc_query_RankedByNumTimesReported ' +
+      'ugc_query_CreatedByFollowedUsersRankedByPublicationDate ' +
+      'ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ' +
+      'ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ' +
+      'ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ' +
+      'ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ' +
+      'ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ' +
+      'ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ' +
+      'ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ' +
+      'ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ' +
+      'ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ' +
+      'ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ' +
+      'ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ' +
+      'ugc_match_WebGuides ugc_match_IntegratedGuides ' +
+      'ugc_match_UsableInGame ugc_match_ControllerBindings  ' +
+      'vertex_usage_position vertex_usage_colour vertex_usage_color ' +
+      'vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord ' +
+      'vertex_usage_blendweight vertex_usage_blendindices ' +
+      'vertex_usage_psize vertex_usage_tangent vertex_usage_binormal ' +
+      'vertex_usage_fog vertex_usage_depth vertex_usage_sample ' +
+      'vertex_type_float1 vertex_type_float2 vertex_type_float3 ' +
+      'vertex_type_float4 vertex_type_colour vertex_type_color ' +
+      'vertex_type_ubyte4 layerelementtype_undefined ' +
+      'layerelementtype_background layerelementtype_instance ' +
+      'layerelementtype_oldtilemap layerelementtype_sprite ' +
+      'layerelementtype_tilemap layerelementtype_particlesystem ' +
+      'layerelementtype_tile tile_rotate tile_flip tile_mirror ' +
+      'tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url ' +
+      'kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name ' +
+      'kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google ' +
+      'kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route ' +
+      'kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo ' +
+      'kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency ' +
+      'kbv_autocapitalize_none kbv_autocapitalize_words ' +
+      'kbv_autocapitalize_sentences kbv_autocapitalize_characters',
+    symbol: 'argument_relative argument argument0 argument1 argument2 ' +
+      'argument3 argument4 argument5 argument6 argument7 argument8 ' +
+      'argument9 argument10 argument11 argument12 argument13 argument14 ' +
+      'argument15 argument_count x|0 y|0 xprevious yprevious xstart ystart ' +
+      'hspeed vspeed direction speed friction gravity gravity_direction ' +
+      'path_index path_position path_positionprevious path_speed ' +
+      'path_scale path_orientation path_endaction object_index id solid ' +
+      'persistent mask_index instance_count instance_id room_speed fps ' +
+      'fps_real current_time current_year current_month current_day ' +
+      'current_weekday current_hour current_minute current_second alarm ' +
+      'timeline_index timeline_position timeline_speed timeline_running ' +
+      'timeline_loop room room_first room_last room_width room_height ' +
+      'room_caption room_persistent score lives health show_score ' +
+      'show_lives show_health caption_score caption_lives caption_health ' +
+      'event_type event_number event_object event_action ' +
+      'application_surface gamemaker_pro gamemaker_registered ' +
+      'gamemaker_version error_occurred error_last debug_mode ' +
+      'keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string ' +
+      'mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite ' +
+      'visible sprite_index sprite_width sprite_height sprite_xoffset ' +
+      'sprite_yoffset image_number image_index image_speed depth ' +
+      'image_xscale image_yscale image_angle image_alpha image_blend ' +
+      'bbox_left bbox_right bbox_top bbox_bottom layer background_colour  ' +
+      'background_showcolour background_color background_showcolor ' +
+      'view_enabled view_current view_visible view_xview view_yview ' +
+      'view_wview view_hview view_xport view_yport view_wport view_hport ' +
+      'view_angle view_hborder view_vborder view_hspeed view_vspeed ' +
+      'view_object view_surface_id view_camera game_id game_display_name ' +
+      'game_project_name game_save_id working_directory temp_directory ' +
+      'program_directory browser_width browser_height os_type os_device ' +
+      'os_browser os_version display_aa async_load delta_time ' +
+      'webgl_enabled event_data iap_data phy_rotation phy_position_x ' +
+      'phy_position_y phy_angular_velocity phy_linear_velocity_x ' +
+      'phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed ' +
+      'phy_angular_damping phy_linear_damping phy_bullet ' +
+      'phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x ' +
+      'phy_com_y phy_dynamic phy_kinematic phy_sleeping ' +
+      'phy_collision_points phy_collision_x phy_collision_y ' +
+      'phy_col_normal_x phy_col_normal_y phy_position_xprevious ' +
+      'phy_position_yprevious'
+  };
+
+  return {
+    name: 'GML',
+    case_insensitive: false, // language is case-insensitive
+    keywords: GML_KEYWORDS,
+
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = gml;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/go.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/go.js ***!
+  \*******************************************************/
+/***/ ((module) => {
+
+/*
+Language: Go
+Author: Stephan Kountso aka StepLg 
+Contributors: Evgeny Stepanischev 
+Description: Google go language (golang). For info about language
+Website: http://golang.org/
+Category: common, system
+*/
+
+function go(hljs) {
+  const GO_KEYWORDS = {
+    keyword:
+      'break default func interface select case map struct chan else goto package switch ' +
+      'const fallthrough if range type continue for import return var go defer ' +
+      'bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 ' +
+      'uint16 uint32 uint64 int uint uintptr rune',
+    literal:
+       'true false iota nil',
+    built_in:
+      'append cap close complex copy imag len make new panic print println real recover delete'
+  };
+  return {
+    name: 'Go',
+    aliases: ['golang'],
+    keywords: GO_KEYWORDS,
+    illegal: ' {
+
+/*
+Language: Golo
+Author: Philippe Charriere 
+Description: a lightweight dynamic language for the JVM
+Website: http://golo-lang.org/
+*/
+
+function golo(hljs) {
+  return {
+    name: 'Golo',
+    keywords: {
+      keyword:
+          'println readln print import module function local return let var ' +
+          'while for foreach times in case when match with break continue ' +
+          'augment augmentation each find filter reduce ' +
+          'if then else otherwise try catch finally raise throw orIfNull ' +
+          'DynamicObject|10 DynamicVariable struct Observable map set vector list array',
+      literal:
+          'true false null'
+    },
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'meta',
+        begin: '@[A-Za-z]+'
+      }
+    ]
+  };
+}
+
+module.exports = golo;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/gradle.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/gradle.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Gradle
+Description: Gradle is an open-source build automation tool focused on flexibility and performance.
+Website: https://gradle.org
+Author: Damian Mee 
+*/
+
+function gradle(hljs) {
+  return {
+    name: 'Gradle',
+    case_insensitive: true,
+    keywords: {
+      keyword:
+        'task project allprojects subprojects artifacts buildscript configurations ' +
+        'dependencies repositories sourceSets description delete from into include ' +
+        'exclude source classpath destinationDir includes options sourceCompatibility ' +
+        'targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant ' +
+        'def abstract break case catch continue default do else extends final finally ' +
+        'for if implements instanceof native new private protected public return static ' +
+        'switch synchronized throw throws transient try volatile while strictfp package ' +
+        'import false null super this true antlrtask checkstyle codenarc copy boolean ' +
+        'byte char class double float int interface long short void compile runTime ' +
+        'file fileTree abs any append asList asWritable call collect compareTo count ' +
+        'div dump each eachByte eachFile eachLine every find findAll flatten getAt ' +
+        'getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods ' +
+        'isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter ' +
+        'newReader newWriter next plus pop power previous print println push putAt read ' +
+        'readBytes readLines reverse reverseEach round size sort splitEachLine step subMap ' +
+        'times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader ' +
+        'withStream withWriter withWriterAppend write writeLine'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.NUMBER_MODE,
+      hljs.REGEXP_MODE
+
+    ]
+  };
+}
+
+module.exports = gradle;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/groovy.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/groovy.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+ Language: Groovy
+ Author: Guillaume Laforge 
+ Description: Groovy programming language implementation inspired from Vsevolod's Java mode
+ Website: https://groovy-lang.org
+ */
+
+function variants(variants, obj = {}) {
+  obj.variants = variants;
+  return obj;
+}
+
+function groovy(hljs) {
+  const IDENT_RE = '[A-Za-z0-9_$]+';
+  const COMMENT = variants([
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    hljs.COMMENT(
+      '/\\*\\*',
+      '\\*/',
+      {
+        relevance: 0,
+        contains: [
+          {
+            // eat up @'s in emails to prevent them to be recognized as doctags
+            begin: /\w+@/,
+            relevance: 0
+          },
+          {
+            className: 'doctag',
+            begin: '@[A-Za-z]+'
+          }
+        ]
+      }
+    )
+  ]);
+  const REGEXP = {
+    className: 'regexp',
+    begin: /~?\/[^\/\n]+\//,
+    contains: [ hljs.BACKSLASH_ESCAPE ]
+  };
+  const NUMBER = variants([
+    hljs.BINARY_NUMBER_MODE,
+    hljs.C_NUMBER_MODE
+  ]);
+  const STRING = variants([
+    {
+      begin: /"""/,
+      end: /"""/
+    },
+    {
+      begin: /'''/,
+      end: /'''/
+    },
+    {
+      begin: "\\$/",
+      end: "/\\$",
+      relevance: 10
+    },
+    hljs.APOS_STRING_MODE,
+    hljs.QUOTE_STRING_MODE
+  ],
+  {
+    className: "string"
+  }
+  );
+
+  return {
+    name: 'Groovy',
+    keywords: {
+      built_in: 'this super',
+      literal: 'true false null',
+      keyword:
+            'byte short char int long boolean float double void ' +
+            // groovy specific keywords
+            'def as in assert trait ' +
+            // common keywords with Java
+            'abstract static volatile transient public private protected synchronized final ' +
+            'class interface enum if else for while switch case break default continue ' +
+            'throw throws try catch finally implements extends new import package return instanceof'
+    },
+    contains: [
+      hljs.SHEBANG({
+        binary: "groovy",
+        relevance: 10
+      }),
+      COMMENT,
+      STRING,
+      REGEXP,
+      NUMBER,
+      {
+        className: 'class',
+        beginKeywords: 'class interface trait enum',
+        end: /\{/,
+        illegal: ':',
+        contains: [
+          {
+            beginKeywords: 'extends implements'
+          },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      {
+        className: 'meta',
+        begin: '@[A-Za-z]+',
+        relevance: 0
+      },
+      {
+        // highlight map keys and named parameters as attrs
+        className: 'attr',
+        begin: IDENT_RE + '[ \t]*:',
+        relevance: 0
+      },
+      {
+        // catch middle element of the ternary operator
+        // to avoid highlight it as a label, named parameter, or map key
+        begin: /\?/,
+        end: /:/,
+        relevance: 0,
+        contains: [
+          COMMENT,
+          STRING,
+          REGEXP,
+          NUMBER,
+          'self'
+        ]
+      },
+      {
+        // highlight labeled statements
+        className: 'symbol',
+        begin: '^[ \t]*' + lookahead(IDENT_RE + ':'),
+        excludeBegin: true,
+        end: IDENT_RE + ':',
+        relevance: 0
+      }
+    ],
+    illegal: /#|<\//
+  };
+}
+
+module.exports = groovy;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/haml.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/haml.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: HAML
+Requires: ruby.js
+Author: Dan Allen 
+Website: http://haml.info
+Category: template
+*/
+
+// TODO support filter tags like :javascript, support inline HTML
+function haml(hljs) {
+  return {
+    name: 'HAML',
+    case_insensitive: true,
+    contains: [
+      {
+        className: 'meta',
+        begin: '^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$',
+        relevance: 10
+      },
+      // FIXME these comments should be allowed to span indented lines
+      hljs.COMMENT(
+        '^\\s*(!=#|=#|-#|/).*$',
+        false,
+        {
+          relevance: 0
+        }
+      ),
+      {
+        begin: '^\\s*(-|=|!=)(?!#)',
+        starts: {
+          end: '\\n',
+          subLanguage: 'ruby'
+        }
+      },
+      {
+        className: 'tag',
+        begin: '^\\s*%',
+        contains: [
+          {
+            className: 'selector-tag',
+            begin: '\\w+'
+          },
+          {
+            className: 'selector-id',
+            begin: '#[\\w-]+'
+          },
+          {
+            className: 'selector-class',
+            begin: '\\.[\\w-]+'
+          },
+          {
+            begin: /\{\s*/,
+            end: /\s*\}/,
+            contains: [
+              {
+                begin: ':\\w+\\s*=>',
+                end: ',\\s+',
+                returnBegin: true,
+                endsWithParent: true,
+                contains: [
+                  {
+                    className: 'attr',
+                    begin: ':\\w+'
+                  },
+                  hljs.APOS_STRING_MODE,
+                  hljs.QUOTE_STRING_MODE,
+                  {
+                    begin: '\\w+',
+                    relevance: 0
+                  }
+                ]
+              }
+            ]
+          },
+          {
+            begin: '\\(\\s*',
+            end: '\\s*\\)',
+            excludeEnd: true,
+            contains: [
+              {
+                begin: '\\w+\\s*=',
+                end: '\\s+',
+                returnBegin: true,
+                endsWithParent: true,
+                contains: [
+                  {
+                    className: 'attr',
+                    begin: '\\w+',
+                    relevance: 0
+                  },
+                  hljs.APOS_STRING_MODE,
+                  hljs.QUOTE_STRING_MODE,
+                  {
+                    begin: '\\w+',
+                    relevance: 0
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      },
+      {
+        begin: '^\\s*[=~]\\s*'
+      },
+      {
+        begin: /#\{/,
+        starts: {
+          end: /\}/,
+          subLanguage: 'ruby'
+        }
+      }
+    ]
+  };
+}
+
+module.exports = haml;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/handlebars.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/handlebars.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function anyNumberOfTimes(re) {
+  return concat('(', re, ')*');
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: Handlebars
+Requires: xml.js
+Author: Robin Ward 
+Description: Matcher for Handlebars as well as EmberJS additions.
+Website: https://handlebarsjs.com
+Category: template
+*/
+
+function handlebars(hljs) {
+  const BUILT_INS = {
+    'builtin-name': [
+      'action',
+      'bindattr',
+      'collection',
+      'component',
+      'concat',
+      'debugger',
+      'each',
+      'each-in',
+      'get',
+      'hash',
+      'if',
+      'in',
+      'input',
+      'link-to',
+      'loc',
+      'log',
+      'lookup',
+      'mut',
+      'outlet',
+      'partial',
+      'query-params',
+      'render',
+      'template',
+      'textarea',
+      'unbound',
+      'unless',
+      'view',
+      'with',
+      'yield'
+    ]
+  };
+
+  const LITERALS = {
+    literal: [
+      'true',
+      'false',
+      'undefined',
+      'null'
+    ]
+  };
+
+  // as defined in https://handlebarsjs.com/guide/expressions.html#literal-segments
+  // this regex matches literal segments like ' abc ' or [ abc ] as well as helpers and paths
+  // like a/b, ./abc/cde, and abc.bcd
+
+  const DOUBLE_QUOTED_ID_REGEX = /""|"[^"]+"/;
+  const SINGLE_QUOTED_ID_REGEX = /''|'[^']+'/;
+  const BRACKET_QUOTED_ID_REGEX = /\[\]|\[[^\]]+\]/;
+  const PLAIN_ID_REGEX = /[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/;
+  const PATH_DELIMITER_REGEX = /(\.|\/)/;
+  const ANY_ID = either(
+    DOUBLE_QUOTED_ID_REGEX,
+    SINGLE_QUOTED_ID_REGEX,
+    BRACKET_QUOTED_ID_REGEX,
+    PLAIN_ID_REGEX
+    );
+
+  const IDENTIFIER_REGEX = concat(
+    optional(/\.|\.\/|\//), // relative or absolute path
+    ANY_ID,
+    anyNumberOfTimes(concat(
+      PATH_DELIMITER_REGEX,
+      ANY_ID
+    ))
+  );
+
+  // identifier followed by a equal-sign (without the equal sign)
+  const HASH_PARAM_REGEX = concat(
+    '(',
+    BRACKET_QUOTED_ID_REGEX, '|',
+    PLAIN_ID_REGEX,
+    ')(?==)'
+  );
+
+  const HELPER_NAME_OR_PATH_EXPRESSION = {
+    begin: IDENTIFIER_REGEX,
+    lexemes: /[\w.\/]+/
+  };
+
+  const HELPER_PARAMETER = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    keywords: LITERALS
+  });
+
+  const SUB_EXPRESSION = {
+    begin: /\(/,
+    end: /\)/
+    // the "contains" is added below when all necessary sub-modes are defined
+  };
+
+  const HASH = {
+    // fka "attribute-assignment", parameters of the form 'key=value'
+    className: 'attr',
+    begin: HASH_PARAM_REGEX,
+    relevance: 0,
+    starts: {
+      begin: /=/,
+      end: /=/,
+      starts: {
+        contains: [
+          hljs.NUMBER_MODE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.APOS_STRING_MODE,
+          HELPER_PARAMETER,
+          SUB_EXPRESSION
+        ]
+      }
+    }
+  };
+
+  const BLOCK_PARAMS = {
+    // parameters of the form '{{#with x as | y |}}...{{/with}}'
+    begin: /as\s+\|/,
+    keywords: {
+      keyword: 'as'
+    },
+    end: /\|/,
+    contains: [
+      {
+        // define sub-mode in order to prevent highlighting of block-parameter named "as"
+        begin: /\w+/
+      }
+    ]
+  };
+
+  const HELPER_PARAMETERS = {
+    contains: [
+      hljs.NUMBER_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.APOS_STRING_MODE,
+      BLOCK_PARAMS,
+      HASH,
+      HELPER_PARAMETER,
+      SUB_EXPRESSION
+    ],
+    returnEnd: true
+    // the property "end" is defined through inheritance when the mode is used. If depends
+    // on the surrounding mode, but "endsWithParent" does not work here (i.e. it includes the
+    // end-token of the surrounding mode)
+  };
+
+  const SUB_EXPRESSION_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    className: 'name',
+    keywords: BUILT_INS,
+    starts: hljs.inherit(HELPER_PARAMETERS, {
+      end: /\)/
+    })
+  });
+
+  SUB_EXPRESSION.contains = [SUB_EXPRESSION_CONTENTS];
+
+  const OPENING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    keywords: BUILT_INS,
+    className: 'name',
+    starts: hljs.inherit(HELPER_PARAMETERS, {
+      end: /\}\}/
+    })
+  });
+
+  const CLOSING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    keywords: BUILT_INS,
+    className: 'name'
+  });
+
+  const BASIC_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    className: 'name',
+    keywords: BUILT_INS,
+    starts: hljs.inherit(HELPER_PARAMETERS, {
+      end: /\}\}/
+    })
+  });
+
+  const ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = {
+    begin: /\\\{\{/,
+    skip: true
+  };
+  const PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = {
+    begin: /\\\\(?=\{\{)/,
+    skip: true
+  };
+
+  return {
+    name: 'Handlebars',
+    aliases: [
+      'hbs',
+      'html.hbs',
+      'html.handlebars',
+      'htmlbars'
+    ],
+    case_insensitive: true,
+    subLanguage: 'xml',
+    contains: [
+      ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH,
+      PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH,
+      hljs.COMMENT(/\{\{!--/, /--\}\}/),
+      hljs.COMMENT(/\{\{!/, /\}\}/),
+      {
+        // open raw block "{{{{raw}}}} content not evaluated {{{{/raw}}}}"
+        className: 'template-tag',
+        begin: /\{\{\{\{(?!\/)/,
+        end: /\}\}\}\}/,
+        contains: [OPENING_BLOCK_MUSTACHE_CONTENTS],
+        starts: {
+          end: /\{\{\{\{\//,
+          returnEnd: true,
+          subLanguage: 'xml'
+        }
+      },
+      {
+        // close raw block
+        className: 'template-tag',
+        begin: /\{\{\{\{\//,
+        end: /\}\}\}\}/,
+        contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]
+      },
+      {
+        // open block statement
+        className: 'template-tag',
+        begin: /\{\{#/,
+        end: /\}\}/,
+        contains: [OPENING_BLOCK_MUSTACHE_CONTENTS]
+      },
+      {
+        className: 'template-tag',
+        begin: /\{\{(?=else\}\})/,
+        end: /\}\}/,
+        keywords: 'else'
+      },
+      {
+        className: 'template-tag',
+        begin: /\{\{(?=else if)/,
+        end: /\}\}/,
+        keywords: 'else if'
+      },
+      {
+        // closing block statement
+        className: 'template-tag',
+        begin: /\{\{\//,
+        end: /\}\}/,
+        contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]
+      },
+      {
+        // template variable or helper-call that is NOT html-escaped
+        className: 'template-variable',
+        begin: /\{\{\{/,
+        end: /\}\}\}/,
+        contains: [BASIC_MUSTACHE_CONTENTS]
+      },
+      {
+        // template variable or helper-call that is html-escaped
+        className: 'template-variable',
+        begin: /\{\{/,
+        end: /\}\}/,
+        contains: [BASIC_MUSTACHE_CONTENTS]
+      }
+    ]
+  };
+}
+
+module.exports = handlebars;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/haskell.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/haskell.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Haskell
+Author: Jeremy Hull 
+Contributors: Zena Treep 
+Website: https://www.haskell.org
+Category: functional
+*/
+
+function haskell(hljs) {
+  const COMMENT = {
+    variants: [
+      hljs.COMMENT('--', '$'),
+      hljs.COMMENT(
+        /\{-/,
+        /-\}/,
+        {
+          contains: ['self']
+        }
+      )
+    ]
+  };
+
+  const PRAGMA = {
+    className: 'meta',
+    begin: /\{-#/,
+    end: /#-\}/
+  };
+
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: '^#',
+    end: '$'
+  };
+
+  const CONSTRUCTOR = {
+    className: 'type',
+    begin: '\\b[A-Z][\\w\']*', // TODO: other constructors (build-in, infix).
+    relevance: 0
+  };
+
+  const LIST = {
+    begin: '\\(',
+    end: '\\)',
+    illegal: '"',
+    contains: [
+      PRAGMA,
+      PREPROCESSOR,
+      {
+        className: 'type',
+        begin: '\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?'
+      },
+      hljs.inherit(hljs.TITLE_MODE, {
+        begin: '[_a-z][\\w\']*'
+      }),
+      COMMENT
+    ]
+  };
+
+  const RECORD = {
+    begin: /\{/,
+    end: /\}/,
+    contains: LIST.contains
+  };
+
+  return {
+    name: 'Haskell',
+    aliases: ['hs'],
+    keywords:
+      'let in if then else case of where do module import hiding ' +
+      'qualified type data newtype deriving class instance as default ' +
+      'infix infixl infixr foreign export ccall stdcall cplusplus ' +
+      'jvm dotnet safe unsafe family forall mdo proc rec',
+    contains: [
+      // Top-level constructions.
+      {
+        beginKeywords: 'module',
+        end: 'where',
+        keywords: 'module where',
+        contains: [
+          LIST,
+          COMMENT
+        ],
+        illegal: '\\W\\.|;'
+      },
+      {
+        begin: '\\bimport\\b',
+        end: '$',
+        keywords: 'import qualified as hiding',
+        contains: [
+          LIST,
+          COMMENT
+        ],
+        illegal: '\\W\\.|;'
+      },
+      {
+        className: 'class',
+        begin: '^(\\s*)?(class|instance)\\b',
+        end: 'where',
+        keywords: 'class family instance where',
+        contains: [
+          CONSTRUCTOR,
+          LIST,
+          COMMENT
+        ]
+      },
+      {
+        className: 'class',
+        begin: '\\b(data|(new)?type)\\b',
+        end: '$',
+        keywords: 'data family type newtype deriving',
+        contains: [
+          PRAGMA,
+          CONSTRUCTOR,
+          LIST,
+          RECORD,
+          COMMENT
+        ]
+      },
+      {
+        beginKeywords: 'default',
+        end: '$',
+        contains: [
+          CONSTRUCTOR,
+          LIST,
+          COMMENT
+        ]
+      },
+      {
+        beginKeywords: 'infix infixl infixr',
+        end: '$',
+        contains: [
+          hljs.C_NUMBER_MODE,
+          COMMENT
+        ]
+      },
+      {
+        begin: '\\bforeign\\b',
+        end: '$',
+        keywords: 'foreign import export ccall stdcall cplusplus jvm ' +
+                  'dotnet safe unsafe',
+        contains: [
+          CONSTRUCTOR,
+          hljs.QUOTE_STRING_MODE,
+          COMMENT
+        ]
+      },
+      {
+        className: 'meta',
+        begin: '#!\\/usr\\/bin\\/env\ runhaskell',
+        end: '$'
+      },
+      // "Whitespaces".
+      PRAGMA,
+      PREPROCESSOR,
+
+      // Literals and names.
+
+      // TODO: characters.
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE,
+      CONSTRUCTOR,
+      hljs.inherit(hljs.TITLE_MODE, {
+        begin: '^[_a-z][\\w\']*'
+      }),
+      COMMENT,
+      { // No markup, relevance booster
+        begin: '->|<-'
+      }
+    ]
+  };
+}
+
+module.exports = haskell;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/haxe.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/haxe.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Haxe
+Description: Haxe is an open source toolkit based on a modern, high level, strictly typed programming language.
+Author: Christopher Kaster  (Based on the actionscript.js language file by Alexander Myadzel)
+Contributors: Kenton Hamaluik 
+Website: https://haxe.org
+*/
+
+function haxe(hljs) {
+
+  const HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';
+
+  return {
+    name: 'Haxe',
+    aliases: ['hx'],
+    keywords: {
+      keyword: 'break case cast catch continue default do dynamic else enum extern ' +
+               'for function here if import in inline never new override package private get set ' +
+               'public return static super switch this throw trace try typedef untyped using var while ' +
+               HAXE_BASIC_TYPES,
+      built_in:
+        'trace this',
+      literal:
+        'true false null _'
+    },
+    contains: [
+      {
+        className: 'string', // interpolate-able strings
+        begin: '\'',
+        end: '\'',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          {
+            className: 'subst', // interpolation
+            begin: '\\$\\{',
+            end: '\\}'
+          },
+          {
+            className: 'subst', // interpolation
+            begin: '\\$',
+            end: /\W\}/
+          }
+        ]
+      },
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'meta', // compiler meta
+        begin: '@:',
+        end: '$'
+      },
+      {
+        className: 'meta', // compiler conditionals
+        begin: '#',
+        end: '$',
+        keywords: {
+          'meta-keyword': 'if else elseif end error'
+        }
+      },
+      {
+        className: 'type', // function types
+        begin: ':[ \t]*',
+        end: '[^A-Za-z0-9_ \t\\->]',
+        excludeBegin: true,
+        excludeEnd: true,
+        relevance: 0
+      },
+      {
+        className: 'type', // types
+        begin: ':[ \t]*',
+        end: '\\W',
+        excludeBegin: true,
+        excludeEnd: true
+      },
+      {
+        className: 'type', // instantiation
+        begin: 'new *',
+        end: '\\W',
+        excludeBegin: true,
+        excludeEnd: true
+      },
+      {
+        className: 'class', // enums
+        beginKeywords: 'enum',
+        end: '\\{',
+        contains: [hljs.TITLE_MODE]
+      },
+      {
+        className: 'class', // abstracts
+        beginKeywords: 'abstract',
+        end: '[\\{$]',
+        contains: [
+          {
+            className: 'type',
+            begin: '\\(',
+            end: '\\)',
+            excludeBegin: true,
+            excludeEnd: true
+          },
+          {
+            className: 'type',
+            begin: 'from +',
+            end: '\\W',
+            excludeBegin: true,
+            excludeEnd: true
+          },
+          {
+            className: 'type',
+            begin: 'to +',
+            end: '\\W',
+            excludeBegin: true,
+            excludeEnd: true
+          },
+          hljs.TITLE_MODE
+        ],
+        keywords: {
+          keyword: 'abstract from to'
+        }
+      },
+      {
+        className: 'class', // classes
+        begin: '\\b(class|interface) +',
+        end: '[\\{$]',
+        excludeEnd: true,
+        keywords: 'class interface',
+        contains: [
+          {
+            className: 'keyword',
+            begin: '\\b(extends|implements) +',
+            keywords: 'extends implements',
+            contains: [
+              {
+                className: 'type',
+                begin: hljs.IDENT_RE,
+                relevance: 0
+              }
+            ]
+          },
+          hljs.TITLE_MODE
+        ]
+      },
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: '\\(',
+        excludeEnd: true,
+        illegal: '\\S',
+        contains: [hljs.TITLE_MODE]
+      }
+    ],
+    illegal: /<\//
+  };
+}
+
+module.exports = haxe;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/hsp.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/hsp.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: HSP
+Author: prince 
+Website: https://en.wikipedia.org/wiki/Hot_Soup_Processor
+Category: scripting
+*/
+
+function hsp(hljs) {
+  return {
+    name: 'HSP',
+    case_insensitive: true,
+    keywords: {
+      $pattern: /[\w._]+/,
+      keyword: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.APOS_STRING_MODE,
+
+      {
+        // multi-line string
+        className: 'string',
+        begin: /\{"/,
+        end: /"\}/,
+        contains: [hljs.BACKSLASH_ESCAPE]
+      },
+
+      hljs.COMMENT(';', '$', {
+        relevance: 0
+      }),
+
+      {
+        // pre-processor
+        className: 'meta',
+        begin: '#',
+        end: '$',
+        keywords: {
+          'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'
+        },
+        contains: [
+          hljs.inherit(hljs.QUOTE_STRING_MODE, {
+            className: 'meta-string'
+          }),
+          hljs.NUMBER_MODE,
+          hljs.C_NUMBER_MODE,
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+
+      {
+        // label
+        className: 'symbol',
+        begin: '^\\*(\\w+|@)'
+      },
+
+      hljs.NUMBER_MODE,
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = hsp;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/htmlbars.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/htmlbars.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function anyNumberOfTimes(re) {
+  return concat('(', re, ')*');
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: Handlebars
+Requires: xml.js
+Author: Robin Ward 
+Description: Matcher for Handlebars as well as EmberJS additions.
+Website: https://handlebarsjs.com
+Category: template
+*/
+
+function handlebars(hljs) {
+  const BUILT_INS = {
+    'builtin-name': [
+      'action',
+      'bindattr',
+      'collection',
+      'component',
+      'concat',
+      'debugger',
+      'each',
+      'each-in',
+      'get',
+      'hash',
+      'if',
+      'in',
+      'input',
+      'link-to',
+      'loc',
+      'log',
+      'lookup',
+      'mut',
+      'outlet',
+      'partial',
+      'query-params',
+      'render',
+      'template',
+      'textarea',
+      'unbound',
+      'unless',
+      'view',
+      'with',
+      'yield'
+    ]
+  };
+
+  const LITERALS = {
+    literal: [
+      'true',
+      'false',
+      'undefined',
+      'null'
+    ]
+  };
+
+  // as defined in https://handlebarsjs.com/guide/expressions.html#literal-segments
+  // this regex matches literal segments like ' abc ' or [ abc ] as well as helpers and paths
+  // like a/b, ./abc/cde, and abc.bcd
+
+  const DOUBLE_QUOTED_ID_REGEX = /""|"[^"]+"/;
+  const SINGLE_QUOTED_ID_REGEX = /''|'[^']+'/;
+  const BRACKET_QUOTED_ID_REGEX = /\[\]|\[[^\]]+\]/;
+  const PLAIN_ID_REGEX = /[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/;
+  const PATH_DELIMITER_REGEX = /(\.|\/)/;
+  const ANY_ID = either(
+    DOUBLE_QUOTED_ID_REGEX,
+    SINGLE_QUOTED_ID_REGEX,
+    BRACKET_QUOTED_ID_REGEX,
+    PLAIN_ID_REGEX
+    );
+
+  const IDENTIFIER_REGEX = concat(
+    optional(/\.|\.\/|\//), // relative or absolute path
+    ANY_ID,
+    anyNumberOfTimes(concat(
+      PATH_DELIMITER_REGEX,
+      ANY_ID
+    ))
+  );
+
+  // identifier followed by a equal-sign (without the equal sign)
+  const HASH_PARAM_REGEX = concat(
+    '(',
+    BRACKET_QUOTED_ID_REGEX, '|',
+    PLAIN_ID_REGEX,
+    ')(?==)'
+  );
+
+  const HELPER_NAME_OR_PATH_EXPRESSION = {
+    begin: IDENTIFIER_REGEX,
+    lexemes: /[\w.\/]+/
+  };
+
+  const HELPER_PARAMETER = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    keywords: LITERALS
+  });
+
+  const SUB_EXPRESSION = {
+    begin: /\(/,
+    end: /\)/
+    // the "contains" is added below when all necessary sub-modes are defined
+  };
+
+  const HASH = {
+    // fka "attribute-assignment", parameters of the form 'key=value'
+    className: 'attr',
+    begin: HASH_PARAM_REGEX,
+    relevance: 0,
+    starts: {
+      begin: /=/,
+      end: /=/,
+      starts: {
+        contains: [
+          hljs.NUMBER_MODE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.APOS_STRING_MODE,
+          HELPER_PARAMETER,
+          SUB_EXPRESSION
+        ]
+      }
+    }
+  };
+
+  const BLOCK_PARAMS = {
+    // parameters of the form '{{#with x as | y |}}...{{/with}}'
+    begin: /as\s+\|/,
+    keywords: {
+      keyword: 'as'
+    },
+    end: /\|/,
+    contains: [
+      {
+        // define sub-mode in order to prevent highlighting of block-parameter named "as"
+        begin: /\w+/
+      }
+    ]
+  };
+
+  const HELPER_PARAMETERS = {
+    contains: [
+      hljs.NUMBER_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.APOS_STRING_MODE,
+      BLOCK_PARAMS,
+      HASH,
+      HELPER_PARAMETER,
+      SUB_EXPRESSION
+    ],
+    returnEnd: true
+    // the property "end" is defined through inheritance when the mode is used. If depends
+    // on the surrounding mode, but "endsWithParent" does not work here (i.e. it includes the
+    // end-token of the surrounding mode)
+  };
+
+  const SUB_EXPRESSION_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    className: 'name',
+    keywords: BUILT_INS,
+    starts: hljs.inherit(HELPER_PARAMETERS, {
+      end: /\)/
+    })
+  });
+
+  SUB_EXPRESSION.contains = [SUB_EXPRESSION_CONTENTS];
+
+  const OPENING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    keywords: BUILT_INS,
+    className: 'name',
+    starts: hljs.inherit(HELPER_PARAMETERS, {
+      end: /\}\}/
+    })
+  });
+
+  const CLOSING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    keywords: BUILT_INS,
+    className: 'name'
+  });
+
+  const BASIC_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {
+    className: 'name',
+    keywords: BUILT_INS,
+    starts: hljs.inherit(HELPER_PARAMETERS, {
+      end: /\}\}/
+    })
+  });
+
+  const ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = {
+    begin: /\\\{\{/,
+    skip: true
+  };
+  const PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = {
+    begin: /\\\\(?=\{\{)/,
+    skip: true
+  };
+
+  return {
+    name: 'Handlebars',
+    aliases: [
+      'hbs',
+      'html.hbs',
+      'html.handlebars',
+      'htmlbars'
+    ],
+    case_insensitive: true,
+    subLanguage: 'xml',
+    contains: [
+      ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH,
+      PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH,
+      hljs.COMMENT(/\{\{!--/, /--\}\}/),
+      hljs.COMMENT(/\{\{!/, /\}\}/),
+      {
+        // open raw block "{{{{raw}}}} content not evaluated {{{{/raw}}}}"
+        className: 'template-tag',
+        begin: /\{\{\{\{(?!\/)/,
+        end: /\}\}\}\}/,
+        contains: [OPENING_BLOCK_MUSTACHE_CONTENTS],
+        starts: {
+          end: /\{\{\{\{\//,
+          returnEnd: true,
+          subLanguage: 'xml'
+        }
+      },
+      {
+        // close raw block
+        className: 'template-tag',
+        begin: /\{\{\{\{\//,
+        end: /\}\}\}\}/,
+        contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]
+      },
+      {
+        // open block statement
+        className: 'template-tag',
+        begin: /\{\{#/,
+        end: /\}\}/,
+        contains: [OPENING_BLOCK_MUSTACHE_CONTENTS]
+      },
+      {
+        className: 'template-tag',
+        begin: /\{\{(?=else\}\})/,
+        end: /\}\}/,
+        keywords: 'else'
+      },
+      {
+        className: 'template-tag',
+        begin: /\{\{(?=else if)/,
+        end: /\}\}/,
+        keywords: 'else if'
+      },
+      {
+        // closing block statement
+        className: 'template-tag',
+        begin: /\{\{\//,
+        end: /\}\}/,
+        contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]
+      },
+      {
+        // template variable or helper-call that is NOT html-escaped
+        className: 'template-variable',
+        begin: /\{\{\{/,
+        end: /\}\}\}/,
+        contains: [BASIC_MUSTACHE_CONTENTS]
+      },
+      {
+        // template variable or helper-call that is html-escaped
+        className: 'template-variable',
+        begin: /\{\{/,
+        end: /\}\}/,
+        contains: [BASIC_MUSTACHE_CONTENTS]
+      }
+    ]
+  };
+}
+
+/*
+ Language: HTMLBars (legacy)
+ Requires: xml.js
+ Description: Matcher for Handlebars as well as EmberJS additions.
+ Website: https://github.com/tildeio/htmlbars
+ Category: template
+ */
+
+function htmlbars(hljs) {
+  const definition = handlebars(hljs);
+
+  definition.name = "HTMLbars";
+
+  // HACK: This lets handlebars do the auto-detection if it's been loaded (by
+  // default the build script will load in alphabetical order) and if not (perhaps
+  // an install is only using `htmlbars`, not `handlebars`) then this will still
+  // allow HTMLBars to participate in the auto-detection
+
+  // worse case someone will have HTMLbars and handlebars competing for the same
+  // content and will need to change their setup to only require handlebars, but
+  // I don't consider this a breaking change
+  if (hljs.getLanguage("handlebars")) {
+    definition.disableAutodetect = true;
+  }
+
+  return definition;
+}
+
+module.exports = htmlbars;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/http.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/http.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: HTTP
+Description: HTTP request and response headers with automatic body highlighting
+Author: Ivan Sagalaev 
+Category: common, protocols
+Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
+*/
+
+function http(hljs) {
+  const VERSION = 'HTTP/(2|1\\.[01])';
+  const HEADER_NAME = /[A-Za-z][A-Za-z0-9-]*/;
+  const HEADER = {
+    className: 'attribute',
+    begin: concat('^', HEADER_NAME, '(?=\\:\\s)'),
+    starts: {
+      contains: [
+        {
+          className: "punctuation",
+          begin: /: /,
+          relevance: 0,
+          starts: {
+            end: '$',
+            relevance: 0
+          }
+        }
+      ]
+    }
+  };
+  const HEADERS_AND_BODY = [
+    HEADER,
+    {
+      begin: '\\n\\n',
+      starts: { subLanguage: [], endsWithParent: true }
+    }
+  ];
+
+  return {
+    name: 'HTTP',
+    aliases: ['https'],
+    illegal: /\S/,
+    contains: [
+      // response
+      {
+        begin: '^(?=' + VERSION + " \\d{3})",
+        end: /$/,
+        contains: [
+          {
+            className: "meta",
+            begin: VERSION
+          },
+          {
+            className: 'number', begin: '\\b\\d{3}\\b'
+          }
+        ],
+        starts: {
+          end: /\b\B/,
+          illegal: /\S/,
+          contains: HEADERS_AND_BODY
+        }
+      },
+      // request
+      {
+        begin: '(?=^[A-Z]+ (.*?) ' + VERSION + '$)',
+        end: /$/,
+        contains: [
+          {
+            className: 'string',
+            begin: ' ',
+            end: ' ',
+            excludeBegin: true,
+            excludeEnd: true
+          },
+          {
+            className: "meta",
+            begin: VERSION
+          },
+          {
+            className: 'keyword',
+            begin: '[A-Z]+'
+          }
+        ],
+        starts: {
+          end: /\b\B/,
+          illegal: /\S/,
+          contains: HEADERS_AND_BODY
+        }
+      },
+      // to allow headers to work even without a preamble
+      hljs.inherit(HEADER, {
+        relevance: 0
+      })
+    ]
+  };
+}
+
+module.exports = http;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/hy.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/hy.js ***!
+  \*******************************************************/
+/***/ ((module) => {
+
+/*
+Language: Hy
+Description: Hy is a wonderful dialect of Lisp that’s embedded in Python.
+Author: Sergey Sobko 
+Website: http://docs.hylang.org/en/stable/
+Category: lisp
+*/
+
+function hy(hljs) {
+  var SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>&#\'';
+  var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';
+  var keywords = {
+    $pattern: SYMBOL_RE,
+    'builtin-name':
+      // keywords
+      '!= % %= & &= * ** **= *= *map ' +
+      '+ += , --build-class-- --import-- -= . / // //= ' +
+      '/= < << <<= <= = > >= >> >>= ' +
+      '@ @= ^ ^= abs accumulate all and any ap-compose ' +
+      'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +
+      'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +
+      'callable calling-module-name car case cdr chain chr coll? combinations compile ' +
+      'compress cond cons cons? continue count curry cut cycle dec ' +
+      'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +
+      'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +
+      'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +
+      'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +
+      'flatten float? fn fnc fnr for for* format fraction genexpr ' +
+      'gensym get getattr global globals group-by hasattr hash hex id ' +
+      'identity if if* if-not if-python2 import in inc input instance? ' +
+      'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +
+      'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +
+      'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +
+      'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +
+      'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +
+      'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +
+      'none? nonlocal not not-in not? nth numeric? oct odd? open ' +
+      'or ord partition permutations pos? post-route postwalk pow prewalk print ' +
+      'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +
+      'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +
+      'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +
+      'string? sum switch symbol? take take-nth take-while tee try unless ' +
+      'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +
+      'xi xor yield yield-from zero? zip zip-longest | |= ~'
+   };
+
+  var SIMPLE_NUMBER_RE = '[-+]?\\d+(\\.\\d+)?';
+
+  var SYMBOL = {
+    begin: SYMBOL_RE,
+    relevance: 0
+  };
+  var NUMBER = {
+    className: 'number', begin: SIMPLE_NUMBER_RE,
+    relevance: 0
+  };
+  var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});
+  var COMMENT = hljs.COMMENT(
+    ';',
+    '$',
+    {
+      relevance: 0
+    }
+  );
+  var LITERAL = {
+    className: 'literal',
+    begin: /\b([Tt]rue|[Ff]alse|nil|None)\b/
+  };
+  var COLLECTION = {
+    begin: '[\\[\\{]', end: '[\\]\\}]'
+  };
+  var HINT = {
+    className: 'comment',
+    begin: '\\^' + SYMBOL_RE
+  };
+  var HINT_COL = hljs.COMMENT('\\^\\{', '\\}');
+  var KEY = {
+    className: 'symbol',
+    begin: '[:]{1,2}' + SYMBOL_RE
+  };
+  var LIST = {
+    begin: '\\(', end: '\\)'
+  };
+  var BODY = {
+    endsWithParent: true,
+    relevance: 0
+  };
+  var NAME = {
+    className: 'name',
+    relevance: 0,
+    keywords: keywords,
+    begin: SYMBOL_RE,
+    starts: BODY
+  };
+  var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];
+
+  LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];
+  BODY.contains = DEFAULT_CONTAINS;
+  COLLECTION.contains = DEFAULT_CONTAINS;
+
+  return {
+    name: 'Hy',
+    aliases: ['hylang'],
+    illegal: /\S/,
+    contains: [hljs.SHEBANG(), LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]
+  };
+}
+
+module.exports = hy;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/inform7.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/inform7.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Inform 7
+Author: Bruno Dias 
+Description: Language definition for Inform 7, a DSL for writing parser interactive fiction.
+Website: http://inform7.com
+*/
+
+function inform7(hljs) {
+  const START_BRACKET = '\\[';
+  const END_BRACKET = '\\]';
+  return {
+    name: 'Inform 7',
+    aliases: ['i7'],
+    case_insensitive: true,
+    keywords: {
+      // Some keywords more or less unique to I7, for relevance.
+      keyword:
+        // kind:
+        'thing room person man woman animal container ' +
+        'supporter backdrop door ' +
+        // characteristic:
+        'scenery open closed locked inside gender ' +
+        // verb:
+        'is are say understand ' +
+        // misc keyword:
+        'kind of rule'
+    },
+    contains: [
+      {
+        className: 'string',
+        begin: '"',
+        end: '"',
+        relevance: 0,
+        contains: [
+          {
+            className: 'subst',
+            begin: START_BRACKET,
+            end: END_BRACKET
+          }
+        ]
+      },
+      {
+        className: 'section',
+        begin: /^(Volume|Book|Part|Chapter|Section|Table)\b/,
+        end: '$'
+      },
+      {
+        // Rule definition
+        // This is here for relevance.
+        begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,
+        end: ':',
+        contains: [
+          {
+            // Rule name
+            begin: '\\(This',
+            end: '\\)'
+          }
+        ]
+      },
+      {
+        className: 'comment',
+        begin: START_BRACKET,
+        end: END_BRACKET,
+        contains: ['self']
+      }
+    ]
+  };
+}
+
+module.exports = inform7;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/ini.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/ini.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: TOML, also INI
+Description: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics.
+Contributors: Guillaume Gomez 
+Category: common, config
+Website: https://github.com/toml-lang/toml
+*/
+
+function ini(hljs) {
+  const NUMBERS = {
+    className: 'number',
+    relevance: 0,
+    variants: [
+      {
+        begin: /([+-]+)?[\d]+_[\d_]+/
+      },
+      {
+        begin: hljs.NUMBER_RE
+      }
+    ]
+  };
+  const COMMENTS = hljs.COMMENT();
+  COMMENTS.variants = [
+    {
+      begin: /;/,
+      end: /$/
+    },
+    {
+      begin: /#/,
+      end: /$/
+    }
+  ];
+  const VARIABLES = {
+    className: 'variable',
+    variants: [
+      {
+        begin: /\$[\w\d"][\w\d_]*/
+      },
+      {
+        begin: /\$\{(.*?)\}/
+      }
+    ]
+  };
+  const LITERALS = {
+    className: 'literal',
+    begin: /\bon|off|true|false|yes|no\b/
+  };
+  const STRINGS = {
+    className: "string",
+    contains: [hljs.BACKSLASH_ESCAPE],
+    variants: [
+      {
+        begin: "'''",
+        end: "'''",
+        relevance: 10
+      },
+      {
+        begin: '"""',
+        end: '"""',
+        relevance: 10
+      },
+      {
+        begin: '"',
+        end: '"'
+      },
+      {
+        begin: "'",
+        end: "'"
+      }
+    ]
+  };
+  const ARRAY = {
+    begin: /\[/,
+    end: /\]/,
+    contains: [
+      COMMENTS,
+      LITERALS,
+      VARIABLES,
+      STRINGS,
+      NUMBERS,
+      'self'
+    ],
+    relevance: 0
+  };
+
+  const BARE_KEY = /[A-Za-z0-9_-]+/;
+  const QUOTED_KEY_DOUBLE_QUOTE = /"(\\"|[^"])*"/;
+  const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/;
+  const ANY_KEY = either(
+    BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE
+  );
+  const DOTTED_KEY = concat(
+    ANY_KEY, '(\\s*\\.\\s*', ANY_KEY, ')*',
+    lookahead(/\s*=\s*[^#\s]/)
+  );
+
+  return {
+    name: 'TOML, also INI',
+    aliases: ['toml'],
+    case_insensitive: true,
+    illegal: /\S/,
+    contains: [
+      COMMENTS,
+      {
+        className: 'section',
+        begin: /\[+/,
+        end: /\]+/
+      },
+      {
+        begin: DOTTED_KEY,
+        className: 'attr',
+        starts: {
+          end: /$/,
+          contains: [
+            COMMENTS,
+            ARRAY,
+            LITERALS,
+            VARIABLES,
+            STRINGS,
+            NUMBERS
+          ]
+        }
+      }
+    ]
+  };
+}
+
+module.exports = ini;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/irpf90.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/irpf90.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: IRPF90
+Author: Anthony Scemama 
+Description: IRPF90 is an open-source Fortran code generator
+Website: http://irpf90.ups-tlse.fr
+Category: scientific
+*/
+
+/** @type LanguageFn */
+function irpf90(hljs) {
+  const PARAMS = {
+    className: 'params',
+    begin: '\\(',
+    end: '\\)'
+  };
+
+  // regex in both fortran and irpf90 should match
+  const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\d]+)?/;
+  const OPTIONAL_NUMBER_EXP = /([de][+-]?\d+)?/;
+  const NUMBER = {
+    className: 'number',
+    variants: [
+      {
+        begin: concat(/\b\d+/, /\.(\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)
+      },
+      {
+        begin: concat(/\b\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)
+      },
+      {
+        begin: concat(/\.\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)
+      }
+    ],
+    relevance: 0
+  };
+
+  const F_KEYWORDS = {
+    literal: '.False. .True.',
+    keyword: 'kind do while private call intrinsic where elsewhere ' +
+      'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +
+      'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +
+      'goto save else use module select case ' +
+      'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +
+      'continue format pause cycle exit ' +
+      'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +
+      'synchronous nopass non_overridable pass protected volatile abstract extends import ' +
+      'non_intrinsic value deferred generic final enumerator class associate bind enum ' +
+      'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +
+      'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +
+      'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +
+      'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer ' +
+      'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +
+      'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +
+      'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +
+      'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +
+      'integer real character complex logical dimension allocatable|10 parameter ' +
+      'external implicit|10 none double precision assign intent optional pointer ' +
+      'target in out common equivalence data ' +
+      // IRPF90 special keywords
+      'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +
+      'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',
+    built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +
+      'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +
+      'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +
+      'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +
+      'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +
+      'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +
+      'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +
+      'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +
+      'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +
+      'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +
+      'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +
+      'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +
+      'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +
+      'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of ' +
+      'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +
+      'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +
+      'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +
+      'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +
+      // IRPF90 special built_ins
+      'IRP_ALIGN irp_here'
+  };
+  return {
+    name: 'IRPF90',
+    case_insensitive: true,
+    keywords: F_KEYWORDS,
+    illegal: /\/\*/,
+    contains: [
+      hljs.inherit(hljs.APOS_STRING_MODE, {
+        className: 'string',
+        relevance: 0
+      }),
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {
+        className: 'string',
+        relevance: 0
+      }),
+      {
+        className: 'function',
+        beginKeywords: 'subroutine function program',
+        illegal: '[${=\\n]',
+        contains: [
+          hljs.UNDERSCORE_TITLE_MODE,
+          PARAMS
+        ]
+      },
+      hljs.COMMENT('!', '$', {
+        relevance: 0
+      }),
+      hljs.COMMENT('begin_doc', 'end_doc', {
+        relevance: 10
+      }),
+      NUMBER
+    ]
+  };
+}
+
+module.exports = irpf90;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/isbl.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/isbl.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: ISBL
+Author: Dmitriy Tarasov 
+Description: built-in language DIRECTUM
+Category: enterprise
+*/
+
+function isbl(hljs) {
+  // Определение идентификаторов
+  const UNDERSCORE_IDENT_RE = "[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*";
+
+  // Определение имен функций
+  const FUNCTION_NAME_IDENT_RE = "[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*";
+
+  // keyword : ключевые слова
+  const KEYWORD =
+    "and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока " +
+    "except exitfor finally foreach все if если in в not не or или try while пока ";
+
+  // SYSRES Constants
+  const sysres_constants =
+    "SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT " +
+    "SYSRES_CONST_ACCES_RIGHT_TYPE_FULL " +
+    "SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW " +
+    "SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW " +
+    "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_VIEW " +
+    "SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE " +
+    "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE " +
+    "SYSRES_CONST_ACCESS_TYPE_CHANGE " +
+    "SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE " +
+    "SYSRES_CONST_ACCESS_TYPE_EXISTS " +
+    "SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE " +
+    "SYSRES_CONST_ACCESS_TYPE_FULL " +
+    "SYSRES_CONST_ACCESS_TYPE_FULL_CODE " +
+    "SYSRES_CONST_ACCESS_TYPE_VIEW " +
+    "SYSRES_CONST_ACCESS_TYPE_VIEW_CODE " +
+    "SYSRES_CONST_ACTION_TYPE_ABORT " +
+    "SYSRES_CONST_ACTION_TYPE_ACCEPT " +
+    "SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS " +
+    "SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT " +
+    "SYSRES_CONST_ACTION_TYPE_CHANGE_CARD " +
+    "SYSRES_CONST_ACTION_TYPE_CHANGE_KIND " +
+    "SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE " +
+    "SYSRES_CONST_ACTION_TYPE_CONTINUE " +
+    "SYSRES_CONST_ACTION_TYPE_COPY " +
+    "SYSRES_CONST_ACTION_TYPE_CREATE " +
+    "SYSRES_CONST_ACTION_TYPE_CREATE_VERSION " +
+    "SYSRES_CONST_ACTION_TYPE_DELETE " +
+    "SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT " +
+    "SYSRES_CONST_ACTION_TYPE_DELETE_VERSION " +
+    "SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS " +
+    "SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS " +
+    "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE " +
+    "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD " +
+    "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD " +
+    "SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK " +
+    "SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK " +
+    "SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK " +
+    "SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK " +
+    "SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE " +
+    "SYSRES_CONST_ACTION_TYPE_LOCK " +
+    "SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER " +
+    "SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY " +
+    "SYSRES_CONST_ACTION_TYPE_MARK_AS_READED " +
+    "SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED " +
+    "SYSRES_CONST_ACTION_TYPE_MODIFY " +
+    "SYSRES_CONST_ACTION_TYPE_MODIFY_CARD " +
+    "SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE " +
+    "SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION " +
+    "SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE " +
+    "SYSRES_CONST_ACTION_TYPE_PERFORM " +
+    "SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY " +
+    "SYSRES_CONST_ACTION_TYPE_RESTART " +
+    "SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE " +
+    "SYSRES_CONST_ACTION_TYPE_REVISION " +
+    "SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL " +
+    "SYSRES_CONST_ACTION_TYPE_SIGN " +
+    "SYSRES_CONST_ACTION_TYPE_START " +
+    "SYSRES_CONST_ACTION_TYPE_UNLOCK " +
+    "SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER " +
+    "SYSRES_CONST_ACTION_TYPE_VERSION_STATE " +
+    "SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY " +
+    "SYSRES_CONST_ACTION_TYPE_VIEW " +
+    "SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY " +
+    "SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY " +
+    "SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY " +
+    "SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE " +
+    "SYSRES_CONST_ADD_REFERENCE_MODE_NAME " +
+    "SYSRES_CONST_ADDITION_REQUISITE_CODE " +
+    "SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE " +
+    "SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME " +
+    "SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME " +
+    "SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME " +
+    "SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE " +
+    "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION " +
+    "SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS " +
+    "SYSRES_CONST_ALL_USERS_GROUP " +
+    "SYSRES_CONST_ALL_USERS_GROUP_NAME " +
+    "SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME " +
+    "SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE " +
+    "SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME " +
+    "SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_APPROVING_SIGNATURE_NAME " +
+    "SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE " +
+    "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE " +
+    "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE " +
+    "SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN " +
+    "SYSRES_CONST_ATTACH_TYPE_DOC " +
+    "SYSRES_CONST_ATTACH_TYPE_EDOC " +
+    "SYSRES_CONST_ATTACH_TYPE_FOLDER " +
+    "SYSRES_CONST_ATTACH_TYPE_JOB " +
+    "SYSRES_CONST_ATTACH_TYPE_REFERENCE " +
+    "SYSRES_CONST_ATTACH_TYPE_TASK " +
+    "SYSRES_CONST_AUTH_ENCODED_PASSWORD " +
+    "SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE " +
+    "SYSRES_CONST_AUTH_NOVELL " +
+    "SYSRES_CONST_AUTH_PASSWORD " +
+    "SYSRES_CONST_AUTH_PASSWORD_CODE " +
+    "SYSRES_CONST_AUTH_WINDOWS " +
+    "SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME " +
+    "SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE " +
+    "SYSRES_CONST_AUTO_ENUM_METHOD_FLAG " +
+    "SYSRES_CONST_AUTO_NUMERATION_CODE " +
+    "SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG " +
+    "SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE " +
+    "SYSRES_CONST_AUTOTEXT_USAGE_ALL " +
+    "SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE " +
+    "SYSRES_CONST_AUTOTEXT_USAGE_SIGN " +
+    "SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE " +
+    "SYSRES_CONST_AUTOTEXT_USAGE_WORK " +
+    "SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE " +
+    "SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE " +
+    "SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE " +
+    "SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE " +
+    "SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE " +
+    "SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR " +
+    "SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR " +
+    "SYSRES_CONST_BTN_PART " +
+    "SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE " +
+    "SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE " +
+    "SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE " +
+    "SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT " +
+    "SYSRES_CONST_CARD_PART " +
+    "SYSRES_CONST_CARD_REFERENCE_MODE_NAME " +
+    "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE " +
+    "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE " +
+    "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE " +
+    "SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE " +
+    "SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE " +
+    "SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE " +
+    "SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE " +
+    "SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE " +
+    "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE " +
+    "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT " +
+    "SYSRES_CONST_CODE_COMPONENT_TYPE_URL " +
+    "SYSRES_CONST_CODE_REQUISITE_ACCESS " +
+    "SYSRES_CONST_CODE_REQUISITE_CODE " +
+    "SYSRES_CONST_CODE_REQUISITE_COMPONENT " +
+    "SYSRES_CONST_CODE_REQUISITE_DESCRIPTION " +
+    "SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT " +
+    "SYSRES_CONST_CODE_REQUISITE_RECORD " +
+    "SYSRES_CONST_COMMENT_REQ_CODE " +
+    "SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE " +
+    "SYSRES_CONST_COMP_CODE_GRD " +
+    "SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS " +
+    "SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS " +
+    "SYSRES_CONST_COMPONENT_TYPE_DOCS " +
+    "SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS " +
+    "SYSRES_CONST_COMPONENT_TYPE_EDOCS " +
+    "SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE " +
+    "SYSRES_CONST_COMPONENT_TYPE_OTHER " +
+    "SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES " +
+    "SYSRES_CONST_COMPONENT_TYPE_REFERENCES " +
+    "SYSRES_CONST_COMPONENT_TYPE_REPORTS " +
+    "SYSRES_CONST_COMPONENT_TYPE_SCRIPTS " +
+    "SYSRES_CONST_COMPONENT_TYPE_URL " +
+    "SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE " +
+    "SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION " +
+    "SYSRES_CONST_CONST_FIRM_STATUS_COMMON " +
+    "SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL " +
+    "SYSRES_CONST_CONST_NEGATIVE_VALUE " +
+    "SYSRES_CONST_CONST_POSITIVE_VALUE " +
+    "SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE " +
+    "SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE " +
+    "SYSRES_CONST_CONTENTS_REQUISITE_CODE " +
+    "SYSRES_CONST_DATA_TYPE_BOOLEAN " +
+    "SYSRES_CONST_DATA_TYPE_DATE " +
+    "SYSRES_CONST_DATA_TYPE_FLOAT " +
+    "SYSRES_CONST_DATA_TYPE_INTEGER " +
+    "SYSRES_CONST_DATA_TYPE_PICK " +
+    "SYSRES_CONST_DATA_TYPE_REFERENCE " +
+    "SYSRES_CONST_DATA_TYPE_STRING " +
+    "SYSRES_CONST_DATA_TYPE_TEXT " +
+    "SYSRES_CONST_DATA_TYPE_VARIANT " +
+    "SYSRES_CONST_DATE_CLOSE_REQ_CODE " +
+    "SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR " +
+    "SYSRES_CONST_DATE_OPEN_REQ_CODE " +
+    "SYSRES_CONST_DATE_REQUISITE " +
+    "SYSRES_CONST_DATE_REQUISITE_CODE " +
+    "SYSRES_CONST_DATE_REQUISITE_NAME " +
+    "SYSRES_CONST_DATE_REQUISITE_TYPE " +
+    "SYSRES_CONST_DATE_TYPE_CHAR " +
+    "SYSRES_CONST_DATETIME_FORMAT_VALUE " +
+    "SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE " +
+    "SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE " +
+    "SYSRES_CONST_DESCRIPTION_REQUISITE_CODE " +
+    "SYSRES_CONST_DET1_PART " +
+    "SYSRES_CONST_DET2_PART " +
+    "SYSRES_CONST_DET3_PART " +
+    "SYSRES_CONST_DET4_PART " +
+    "SYSRES_CONST_DET5_PART " +
+    "SYSRES_CONST_DET6_PART " +
+    "SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE " +
+    "SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE " +
+    "SYSRES_CONST_DETAIL_REQ_CODE " +
+    "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE " +
+    "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME " +
+    "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE " +
+    "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME " +
+    "SYSRES_CONST_DOCUMENT_STORAGES_CODE " +
+    "SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME " +
+    "SYSRES_CONST_DOUBLE_REQUISITE_CODE " +
+    "SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE " +
+    "SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE " +
+    "SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE " +
+    "SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE " +
+    "SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE " +
+    "SYSRES_CONST_EDITORS_REFERENCE_CODE " +
+    "SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE " +
+    "SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE " +
+    "SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE " +
+    "SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE " +
+    "SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE " +
+    "SYSRES_CONST_EDOC_DATE_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_KIND_REFERENCE_CODE " +
+    "SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE " +
+    "SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE " +
+    "SYSRES_CONST_EDOC_NONE_ENCODE_CODE " +
+    "SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE " +
+    "SYSRES_CONST_EDOC_READONLY_ACCESS_CODE " +
+    "SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE " +
+    "SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE " +
+    "SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE " +
+    "SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE " +
+    "SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE " +
+    "SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE " +
+    "SYSRES_CONST_EDOC_WRITE_ACCES_CODE " +
+    "SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE " +
+    "SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE " +
+    "SYSRES_CONST_END_DATE_REQUISITE_CODE " +
+    "SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE " +
+    "SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE " +
+    "SYSRES_CONST_EXIST_CONST " +
+    "SYSRES_CONST_EXIST_VALUE " +
+    "SYSRES_CONST_EXPORT_LOCK_TYPE_ASK " +
+    "SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK " +
+    "SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK " +
+    "SYSRES_CONST_EXPORT_VERSION_TYPE_ASK " +
+    "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST " +
+    "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE " +
+    "SYSRES_CONST_EXTENSION_REQUISITE_CODE " +
+    "SYSRES_CONST_FILTER_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_FILTER_REQUISITE_CODE " +
+    "SYSRES_CONST_FILTER_TYPE_COMMON_CODE " +
+    "SYSRES_CONST_FILTER_TYPE_COMMON_NAME " +
+    "SYSRES_CONST_FILTER_TYPE_USER_CODE " +
+    "SYSRES_CONST_FILTER_TYPE_USER_NAME " +
+    "SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME " +
+    "SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR " +
+    "SYSRES_CONST_FLOAT_REQUISITE_TYPE " +
+    "SYSRES_CONST_FOLDER_AUTHOR_VALUE " +
+    "SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS " +
+    "SYSRES_CONST_FOLDER_KIND_COMPONENTS " +
+    "SYSRES_CONST_FOLDER_KIND_EDOCS " +
+    "SYSRES_CONST_FOLDER_KIND_JOBS " +
+    "SYSRES_CONST_FOLDER_KIND_TASKS " +
+    "SYSRES_CONST_FOLDER_TYPE_COMMON " +
+    "SYSRES_CONST_FOLDER_TYPE_COMPONENT " +
+    "SYSRES_CONST_FOLDER_TYPE_FAVORITES " +
+    "SYSRES_CONST_FOLDER_TYPE_INBOX " +
+    "SYSRES_CONST_FOLDER_TYPE_OUTBOX " +
+    "SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH " +
+    "SYSRES_CONST_FOLDER_TYPE_SEARCH " +
+    "SYSRES_CONST_FOLDER_TYPE_SHORTCUTS " +
+    "SYSRES_CONST_FOLDER_TYPE_USER " +
+    "SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG " +
+    "SYSRES_CONST_FULL_SUBSTITUTE_TYPE " +
+    "SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE " +
+    "SYSRES_CONST_FUNCTION_CANCEL_RESULT " +
+    "SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM " +
+    "SYSRES_CONST_FUNCTION_CATEGORY_USER " +
+    "SYSRES_CONST_FUNCTION_FAILURE_RESULT " +
+    "SYSRES_CONST_FUNCTION_SAVE_RESULT " +
+    "SYSRES_CONST_GENERATED_REQUISITE " +
+    "SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR " +
+    "SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE " +
+    "SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE " +
+    "SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME " +
+    "SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE " +
+    "SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME " +
+    "SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE " +
+    "SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_GROUP_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE " +
+    "SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE " +
+    "SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE " +
+    "SYSRES_CONST_GROUP_USER_REQUISITE_CODE " +
+    "SYSRES_CONST_GROUPS_REFERENCE_CODE " +
+    "SYSRES_CONST_GROUPS_REQUISITE_CODE " +
+    "SYSRES_CONST_HIDDEN_MODE_NAME " +
+    "SYSRES_CONST_HIGH_LVL_REQUISITE_CODE " +
+    "SYSRES_CONST_HISTORY_ACTION_CREATE_CODE " +
+    "SYSRES_CONST_HISTORY_ACTION_DELETE_CODE " +
+    "SYSRES_CONST_HISTORY_ACTION_EDIT_CODE " +
+    "SYSRES_CONST_HOUR_CHAR " +
+    "SYSRES_CONST_ID_REQUISITE_CODE " +
+    "SYSRES_CONST_IDSPS_REQUISITE_CODE " +
+    "SYSRES_CONST_IMAGE_MODE_COLOR " +
+    "SYSRES_CONST_IMAGE_MODE_GREYSCALE " +
+    "SYSRES_CONST_IMAGE_MODE_MONOCHROME " +
+    "SYSRES_CONST_IMPORTANCE_HIGH " +
+    "SYSRES_CONST_IMPORTANCE_LOW " +
+    "SYSRES_CONST_IMPORTANCE_NORMAL " +
+    "SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE " +
+    "SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE " +
+    "SYSRES_CONST_INT_REQUISITE " +
+    "SYSRES_CONST_INT_REQUISITE_TYPE " +
+    "SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR " +
+    "SYSRES_CONST_INTEGER_TYPE_CHAR " +
+    "SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE " +
+    "SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE " +
+    "SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE " +
+    "SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE " +
+    "SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE " +
+    "SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE " +
+    "SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE " +
+    "SYSRES_CONST_JOB_BLOCK_DESCRIPTION " +
+    "SYSRES_CONST_JOB_KIND_CONTROL_JOB " +
+    "SYSRES_CONST_JOB_KIND_JOB " +
+    "SYSRES_CONST_JOB_KIND_NOTICE " +
+    "SYSRES_CONST_JOB_STATE_ABORTED " +
+    "SYSRES_CONST_JOB_STATE_COMPLETE " +
+    "SYSRES_CONST_JOB_STATE_WORKING " +
+    "SYSRES_CONST_KIND_REQUISITE_CODE " +
+    "SYSRES_CONST_KIND_REQUISITE_NAME " +
+    "SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE " +
+    "SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE " +
+    "SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE " +
+    "SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE " +
+    "SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE " +
+    "SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE " +
+    "SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE " +
+    "SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE " +
+    "SYSRES_CONST_KOD_INPUT_TYPE " +
+    "SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE " +
+    "SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE " +
+    "SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR " +
+    "SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT " +
+    "SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT " +
+    "SYSRES_CONST_LINK_OBJECT_KIND_EDOC " +
+    "SYSRES_CONST_LINK_OBJECT_KIND_FOLDER " +
+    "SYSRES_CONST_LINK_OBJECT_KIND_JOB " +
+    "SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE " +
+    "SYSRES_CONST_LINK_OBJECT_KIND_TASK " +
+    "SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_LIST_REFERENCE_MODE_NAME " +
+    "SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE " +
+    "SYSRES_CONST_MAIN_VIEW_CODE " +
+    "SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG " +
+    "SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE " +
+    "SYSRES_CONST_MAXIMIZED_MODE_NAME " +
+    "SYSRES_CONST_ME_VALUE " +
+    "SYSRES_CONST_MESSAGE_ATTENTION_CAPTION " +
+    "SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION " +
+    "SYSRES_CONST_MESSAGE_ERROR_CAPTION " +
+    "SYSRES_CONST_MESSAGE_INFORMATION_CAPTION " +
+    "SYSRES_CONST_MINIMIZED_MODE_NAME " +
+    "SYSRES_CONST_MINUTE_CHAR " +
+    "SYSRES_CONST_MODULE_REQUISITE_CODE " +
+    "SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION " +
+    "SYSRES_CONST_MONTH_FORMAT_VALUE " +
+    "SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE " +
+    "SYSRES_CONST_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE " +
+    "SYSRES_CONST_NAMEAN_INPUT_TYPE " +
+    "SYSRES_CONST_NEGATIVE_PICK_VALUE " +
+    "SYSRES_CONST_NEGATIVE_VALUE " +
+    "SYSRES_CONST_NO " +
+    "SYSRES_CONST_NO_PICK_VALUE " +
+    "SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE " +
+    "SYSRES_CONST_NO_VALUE " +
+    "SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE " +
+    "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE " +
+    "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE " +
+    "SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE " +
+    "SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE " +
+    "SYSRES_CONST_NORMAL_MODE_NAME " +
+    "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE " +
+    "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME " +
+    "SYSRES_CONST_NOTE_REQUISITE_CODE " +
+    "SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION " +
+    "SYSRES_CONST_NUM_REQUISITE " +
+    "SYSRES_CONST_NUM_STR_REQUISITE_CODE " +
+    "SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG " +
+    "SYSRES_CONST_NUMERATION_AUTO_STRONG " +
+    "SYSRES_CONST_NUMERATION_FROM_DICTONARY " +
+    "SYSRES_CONST_NUMERATION_MANUAL " +
+    "SYSRES_CONST_NUMERIC_TYPE_CHAR " +
+    "SYSRES_CONST_NUMREQ_REQUISITE_CODE " +
+    "SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE " +
+    "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE " +
+    "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE " +
+    "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE " +
+    "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE " +
+    "SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX " +
+    "SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR " +
+    "SYSRES_CONST_ORIGINALREF_REQUISITE_CODE " +
+    "SYSRES_CONST_OURFIRM_REF_CODE " +
+    "SYSRES_CONST_OURFIRM_REQUISITE_CODE " +
+    "SYSRES_CONST_OURFIRM_VAR " +
+    "SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE " +
+    "SYSRES_CONST_PICK_NEGATIVE_RESULT " +
+    "SYSRES_CONST_PICK_POSITIVE_RESULT " +
+    "SYSRES_CONST_PICK_REQUISITE " +
+    "SYSRES_CONST_PICK_REQUISITE_TYPE " +
+    "SYSRES_CONST_PICK_TYPE_CHAR " +
+    "SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE " +
+    "SYSRES_CONST_PLATFORM_VERSION_COMMENT " +
+    "SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE " +
+    "SYSRES_CONST_POSITIVE_PICK_VALUE " +
+    "SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE " +
+    "SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE " +
+    "SYSRES_CONST_PRIORITY_REQUISITE_CODE " +
+    "SYSRES_CONST_QUALIFIED_TASK_TYPE " +
+    "SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE " +
+    "SYSRES_CONST_RECSTAT_REQUISITE_CODE " +
+    "SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR " +
+    "SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_REF_REQUISITE " +
+    "SYSRES_CONST_REF_REQUISITE_TYPE " +
+    "SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE " +
+    "SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE " +
+    "SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE " +
+    "SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE " +
+    "SYSRES_CONST_REFERENCE_TYPE_CHAR " +
+    "SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME " +
+    "SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE " +
+    "SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE " +
+    "SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING " +
+    "SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN " +
+    "SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY " +
+    "SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE " +
+    "SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL " +
+    "SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE " +
+    "SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE " +
+    "SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE " +
+    "SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE " +
+    "SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE " +
+    "SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE " +
+    "SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE " +
+    "SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE " +
+    "SYSRES_CONST_REQ_MODE_AVAILABLE_CODE " +
+    "SYSRES_CONST_REQ_MODE_EDIT_CODE " +
+    "SYSRES_CONST_REQ_MODE_HIDDEN_CODE " +
+    "SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE " +
+    "SYSRES_CONST_REQ_MODE_VIEW_CODE " +
+    "SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE " +
+    "SYSRES_CONST_REQ_SECTION_VALUE " +
+    "SYSRES_CONST_REQ_TYPE_VALUE " +
+    "SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT " +
+    "SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL " +
+    "SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME " +
+    "SYSRES_CONST_REQUISITE_FORMAT_LEFT " +
+    "SYSRES_CONST_REQUISITE_FORMAT_RIGHT " +
+    "SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT " +
+    "SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE " +
+    "SYSRES_CONST_REQUISITE_SECTION_ACTIONS " +
+    "SYSRES_CONST_REQUISITE_SECTION_BUTTON " +
+    "SYSRES_CONST_REQUISITE_SECTION_BUTTONS " +
+    "SYSRES_CONST_REQUISITE_SECTION_CARD " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE10 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE11 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE12 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE13 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE14 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE15 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE16 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE17 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE18 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE19 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE2 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE20 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE21 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE22 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE23 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE24 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE3 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE4 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE5 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE6 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE7 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE8 " +
+    "SYSRES_CONST_REQUISITE_SECTION_TABLE9 " +
+    "SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE " +
+    "SYSRES_CONST_RIGHT_ALIGNMENT_CODE " +
+    "SYSRES_CONST_ROLES_REFERENCE_CODE " +
+    "SYSRES_CONST_ROUTE_STEP_AFTER_RUS " +
+    "SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS " +
+    "SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS " +
+    "SYSRES_CONST_ROUTE_TYPE_COMPLEX " +
+    "SYSRES_CONST_ROUTE_TYPE_PARALLEL " +
+    "SYSRES_CONST_ROUTE_TYPE_SERIAL " +
+    "SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE " +
+    "SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE " +
+    "SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE " +
+    "SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION " +
+    "SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE " +
+    "SYSRES_CONST_SEARCHES_COMPONENT_CONTENT " +
+    "SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME " +
+    "SYSRES_CONST_SEARCHES_EDOC_CONTENT " +
+    "SYSRES_CONST_SEARCHES_FOLDER_CONTENT " +
+    "SYSRES_CONST_SEARCHES_JOB_CONTENT " +
+    "SYSRES_CONST_SEARCHES_REFERENCE_CODE " +
+    "SYSRES_CONST_SEARCHES_TASK_CONTENT " +
+    "SYSRES_CONST_SECOND_CHAR " +
+    "SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE " +
+    "SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE " +
+    "SYSRES_CONST_SECTION_REQUISITE_CODE " +
+    "SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE " +
+    "SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE " +
+    "SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE " +
+    "SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE " +
+    "SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE " +
+    "SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE " +
+    "SYSRES_CONST_SELECT_REFERENCE_MODE_NAME " +
+    "SYSRES_CONST_SELECT_TYPE_SELECTABLE " +
+    "SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD " +
+    "SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD " +
+    "SYSRES_CONST_SELECT_TYPE_UNSLECTABLE " +
+    "SYSRES_CONST_SERVER_TYPE_MAIN " +
+    "SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE " +
+    "SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE " +
+    "SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE " +
+    "SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE " +
+    "SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE " +
+    "SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE " +
+    "SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE " +
+    "SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE " +
+    "SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE " +
+    "SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE " +
+    "SYSRES_CONST_STATE_REQ_NAME " +
+    "SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE " +
+    "SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE " +
+    "SYSRES_CONST_STATE_REQUISITE_CODE " +
+    "SYSRES_CONST_STATIC_ROLE_TYPE_CODE " +
+    "SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE " +
+    "SYSRES_CONST_STATUS_VALUE_AUTOCLEANING " +
+    "SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE " +
+    "SYSRES_CONST_STATUS_VALUE_COMPLETE " +
+    "SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE " +
+    "SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE " +
+    "SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE " +
+    "SYSRES_CONST_STATUS_VALUE_RED_SQUARE " +
+    "SYSRES_CONST_STATUS_VALUE_SUSPEND " +
+    "SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE " +
+    "SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE " +
+    "SYSRES_CONST_STORAGE_TYPE_FILE " +
+    "SYSRES_CONST_STORAGE_TYPE_SQL_SERVER " +
+    "SYSRES_CONST_STR_REQUISITE " +
+    "SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE " +
+    "SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR " +
+    "SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR " +
+    "SYSRES_CONST_STRING_REQUISITE_CODE " +
+    "SYSRES_CONST_STRING_REQUISITE_TYPE " +
+    "SYSRES_CONST_STRING_TYPE_CHAR " +
+    "SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE " +
+    "SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION " +
+    "SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE " +
+    "SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE " +
+    "SYSRES_CONST_SYSTEM_VERSION_COMMENT " +
+    "SYSRES_CONST_TASK_ACCESS_TYPE_ALL " +
+    "SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS " +
+    "SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL " +
+    "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION " +
+    "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD " +
+    "SYSRES_CONST_TASK_ENCODE_TYPE_NONE " +
+    "SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD " +
+    "SYSRES_CONST_TASK_ROUTE_ALL_CONDITION " +
+    "SYSRES_CONST_TASK_ROUTE_AND_CONDITION " +
+    "SYSRES_CONST_TASK_ROUTE_OR_CONDITION " +
+    "SYSRES_CONST_TASK_STATE_ABORTED " +
+    "SYSRES_CONST_TASK_STATE_COMPLETE " +
+    "SYSRES_CONST_TASK_STATE_CONTINUED " +
+    "SYSRES_CONST_TASK_STATE_CONTROL " +
+    "SYSRES_CONST_TASK_STATE_INIT " +
+    "SYSRES_CONST_TASK_STATE_WORKING " +
+    "SYSRES_CONST_TASK_TITLE " +
+    "SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE " +
+    "SYSRES_CONST_TASK_TYPES_REFERENCE_CODE " +
+    "SYSRES_CONST_TEMPLATES_REFERENCE_CODE " +
+    "SYSRES_CONST_TEST_DATE_REQUISITE_NAME " +
+    "SYSRES_CONST_TEST_DEV_DATABASE_NAME " +
+    "SYSRES_CONST_TEST_DEV_SYSTEM_CODE " +
+    "SYSRES_CONST_TEST_EDMS_DATABASE_NAME " +
+    "SYSRES_CONST_TEST_EDMS_MAIN_CODE " +
+    "SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME " +
+    "SYSRES_CONST_TEST_EDMS_SECOND_CODE " +
+    "SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME " +
+    "SYSRES_CONST_TEST_EDMS_SYSTEM_CODE " +
+    "SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME " +
+    "SYSRES_CONST_TEXT_REQUISITE " +
+    "SYSRES_CONST_TEXT_REQUISITE_CODE " +
+    "SYSRES_CONST_TEXT_REQUISITE_TYPE " +
+    "SYSRES_CONST_TEXT_TYPE_CHAR " +
+    "SYSRES_CONST_TYPE_CODE_REQUISITE_CODE " +
+    "SYSRES_CONST_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR " +
+    "SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE " +
+    "SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE " +
+    "SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE " +
+    "SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE " +
+    "SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME " +
+    "SYSRES_CONST_USE_ACCESS_TYPE_CODE " +
+    "SYSRES_CONST_USE_ACCESS_TYPE_NAME " +
+    "SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE " +
+    "SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_CATEGORY_NORMAL " +
+    "SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_COMMON_CATEGORY " +
+    "SYSRES_CONST_USER_COMMON_CATEGORY_CODE " +
+    "SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_LOGIN_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE " +
+    "SYSRES_CONST_USER_SERVICE_CATEGORY " +
+    "SYSRES_CONST_USER_SERVICE_CATEGORY_CODE " +
+    "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE " +
+    "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME " +
+    "SYSRES_CONST_USER_STATUS_DEVELOPER_CODE " +
+    "SYSRES_CONST_USER_STATUS_DEVELOPER_NAME " +
+    "SYSRES_CONST_USER_STATUS_DISABLED_CODE " +
+    "SYSRES_CONST_USER_STATUS_DISABLED_NAME " +
+    "SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE " +
+    "SYSRES_CONST_USER_STATUS_USER_CODE " +
+    "SYSRES_CONST_USER_STATUS_USER_NAME " +
+    "SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED " +
+    "SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER " +
+    "SYSRES_CONST_USER_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_REFERENCE_CODE " +
+    "SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME " +
+    "SYSRES_CONST_USERS_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE " +
+    "SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME " +
+    "SYSRES_CONST_VIEW_DEFAULT_CODE " +
+    "SYSRES_CONST_VIEW_DEFAULT_NAME " +
+    "SYSRES_CONST_VIEWER_REQUISITE_CODE " +
+    "SYSRES_CONST_WAITING_BLOCK_DESCRIPTION " +
+    "SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING  " +
+    "SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING " +
+    "SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE " +
+    "SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE " +
+    "SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE " +
+    "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE " +
+    "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE " +
+    "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS " +
+    "SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS " +
+    "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD " +
+    "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT " +
+    "SYSRES_CONST_XML_ENCODING " +
+    "SYSRES_CONST_XREC_STAT_REQUISITE_CODE " +
+    "SYSRES_CONST_XRECID_FIELD_NAME " +
+    "SYSRES_CONST_YES " +
+    "SYSRES_CONST_YES_NO_2_REQUISITE_CODE " +
+    "SYSRES_CONST_YES_NO_REQUISITE_CODE " +
+    "SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE " +
+    "SYSRES_CONST_YES_PICK_VALUE " +
+    "SYSRES_CONST_YES_VALUE ";
+
+  // Base constant
+  const base_constants = "CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ";
+
+  // Base group name
+  const base_group_name_constants =
+    "ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME ";
+
+  // Decision block properties
+  const decision_block_properties_constants =
+    "DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY " +
+    "DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ";
+
+  // File extension
+  const file_extension_constants =
+    "ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION " +
+    "SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION ";
+
+  // Job block properties
+  const job_block_properties_constants =
+    "JOB_BLOCK_ABORT_DEADLINE_PROPERTY " +
+    "JOB_BLOCK_AFTER_FINISH_EVENT " +
+    "JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT " +
+    "JOB_BLOCK_ATTACHMENT_PROPERTY " +
+    "JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " +
+    "JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " +
+    "JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT " +
+    "JOB_BLOCK_BEFORE_START_EVENT " +
+    "JOB_BLOCK_CREATED_JOBS_PROPERTY " +
+    "JOB_BLOCK_DEADLINE_PROPERTY " +
+    "JOB_BLOCK_EXECUTION_RESULTS_PROPERTY " +
+    "JOB_BLOCK_IS_PARALLEL_PROPERTY " +
+    "JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY " +
+    "JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " +
+    "JOB_BLOCK_JOB_TEXT_PROPERTY " +
+    "JOB_BLOCK_NAME_PROPERTY " +
+    "JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY " +
+    "JOB_BLOCK_PERFORMER_PROPERTY " +
+    "JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY " +
+    "JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " +
+    "JOB_BLOCK_SUBJECT_PROPERTY ";
+
+  // Language code
+  const language_code_constants = "ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE ";
+
+  // Launching external applications
+  const launching_external_applications_constants =
+    "smHidden smMaximized smMinimized smNormal wmNo wmYes ";
+
+  // Link kind
+  const link_kind_constants =
+    "COMPONENT_TOKEN_LINK_KIND " +
+    "DOCUMENT_LINK_KIND " +
+    "EDOCUMENT_LINK_KIND " +
+    "FOLDER_LINK_KIND " +
+    "JOB_LINK_KIND " +
+    "REFERENCE_LINK_KIND " +
+    "TASK_LINK_KIND ";
+
+  // Lock type
+  const lock_type_constants =
+    "COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE ";
+
+  // Monitor block properties
+  const monitor_block_properties_constants =
+    "MONITOR_BLOCK_AFTER_FINISH_EVENT " +
+    "MONITOR_BLOCK_BEFORE_START_EVENT " +
+    "MONITOR_BLOCK_DEADLINE_PROPERTY " +
+    "MONITOR_BLOCK_INTERVAL_PROPERTY " +
+    "MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY " +
+    "MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " +
+    "MONITOR_BLOCK_NAME_PROPERTY " +
+    "MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " +
+    "MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY ";
+
+  // Notice block properties
+  const notice_block_properties_constants =
+    "NOTICE_BLOCK_AFTER_FINISH_EVENT " +
+    "NOTICE_BLOCK_ATTACHMENT_PROPERTY " +
+    "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " +
+    "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " +
+    "NOTICE_BLOCK_BEFORE_START_EVENT " +
+    "NOTICE_BLOCK_CREATED_NOTICES_PROPERTY " +
+    "NOTICE_BLOCK_DEADLINE_PROPERTY " +
+    "NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " +
+    "NOTICE_BLOCK_NAME_PROPERTY " +
+    "NOTICE_BLOCK_NOTICE_TEXT_PROPERTY " +
+    "NOTICE_BLOCK_PERFORMER_PROPERTY " +
+    "NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " +
+    "NOTICE_BLOCK_SUBJECT_PROPERTY ";
+
+  // Object events
+  const object_events_constants =
+    "dseAfterCancel " +
+    "dseAfterClose " +
+    "dseAfterDelete " +
+    "dseAfterDeleteOutOfTransaction " +
+    "dseAfterInsert " +
+    "dseAfterOpen " +
+    "dseAfterScroll " +
+    "dseAfterUpdate " +
+    "dseAfterUpdateOutOfTransaction " +
+    "dseBeforeCancel " +
+    "dseBeforeClose " +
+    "dseBeforeDelete " +
+    "dseBeforeDetailUpdate " +
+    "dseBeforeInsert " +
+    "dseBeforeOpen " +
+    "dseBeforeUpdate " +
+    "dseOnAnyRequisiteChange " +
+    "dseOnCloseRecord " +
+    "dseOnDeleteError " +
+    "dseOnOpenRecord " +
+    "dseOnPrepareUpdate " +
+    "dseOnUpdateError " +
+    "dseOnUpdateRatifiedRecord " +
+    "dseOnValidDelete " +
+    "dseOnValidUpdate " +
+    "reOnChange " +
+    "reOnChangeValues " +
+    "SELECTION_BEGIN_ROUTE_EVENT " +
+    "SELECTION_END_ROUTE_EVENT ";
+
+  // Object params
+  const object_params_constants =
+    "CURRENT_PERIOD_IS_REQUIRED " +
+    "PREVIOUS_CARD_TYPE_NAME " +
+    "SHOW_RECORD_PROPERTIES_FORM ";
+
+  // Other
+  const other_constants =
+    "ACCESS_RIGHTS_SETTING_DIALOG_CODE " +
+    "ADMINISTRATOR_USER_CODE " +
+    "ANALYTIC_REPORT_TYPE " +
+    "asrtHideLocal " +
+    "asrtHideRemote " +
+    "CALCULATED_ROLE_TYPE_CODE " +
+    "COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE " +
+    "DCTS_TEST_PROTOCOLS_FOLDER_PATH " +
+    "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED " +
+    "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER " +
+    "E_EDOC_VERSION_ALREDY_SIGNED " +
+    "E_EDOC_VERSION_ALREDY_SIGNED_BY_USER " +
+    "EDOC_TYPES_CODE_REQUISITE_FIELD_NAME " +
+    "EDOCUMENTS_ALIAS_NAME " +
+    "FILES_FOLDER_PATH " +
+    "FILTER_OPERANDS_DELIMITER " +
+    "FILTER_OPERATIONS_DELIMITER " +
+    "FORMCARD_NAME " +
+    "FORMLIST_NAME " +
+    "GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE " +
+    "GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE " +
+    "INTEGRATED_REPORT_TYPE " +
+    "IS_BUILDER_APPLICATION_ROLE " +
+    "IS_BUILDER_APPLICATION_ROLE2 " +
+    "IS_BUILDER_USERS " +
+    "ISBSYSDEV " +
+    "LOG_FOLDER_PATH " +
+    "mbCancel " +
+    "mbNo " +
+    "mbNoToAll " +
+    "mbOK " +
+    "mbYes " +
+    "mbYesToAll " +
+    "MEMORY_DATASET_DESRIPTIONS_FILENAME " +
+    "mrNo " +
+    "mrNoToAll " +
+    "mrYes " +
+    "mrYesToAll " +
+    "MULTIPLE_SELECT_DIALOG_CODE " +
+    "NONOPERATING_RECORD_FLAG_FEMININE " +
+    "NONOPERATING_RECORD_FLAG_MASCULINE " +
+    "OPERATING_RECORD_FLAG_FEMININE " +
+    "OPERATING_RECORD_FLAG_MASCULINE " +
+    "PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE " +
+    "PROGRAM_INITIATED_LOOKUP_ACTION " +
+    "ratDelete " +
+    "ratEdit " +
+    "ratInsert " +
+    "REPORT_TYPE " +
+    "REQUIRED_PICK_VALUES_VARIABLE " +
+    "rmCard " +
+    "rmList " +
+    "SBRTE_PROGID_DEV " +
+    "SBRTE_PROGID_RELEASE " +
+    "STATIC_ROLE_TYPE_CODE " +
+    "SUPPRESS_EMPTY_TEMPLATE_CREATION " +
+    "SYSTEM_USER_CODE " +
+    "UPDATE_DIALOG_DATASET " +
+    "USED_IN_OBJECT_HINT_PARAM " +
+    "USER_INITIATED_LOOKUP_ACTION " +
+    "USER_NAME_FORMAT " +
+    "USER_SELECTION_RESTRICTIONS " +
+    "WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH " +
+    "ELS_SUBTYPE_CONTROL_NAME " +
+    "ELS_FOLDER_KIND_CONTROL_NAME " +
+    "REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME ";
+
+  // Privileges
+  const privileges_constants =
+    "PRIVILEGE_COMPONENT_FULL_ACCESS " +
+    "PRIVILEGE_DEVELOPMENT_EXPORT " +
+    "PRIVILEGE_DEVELOPMENT_IMPORT " +
+    "PRIVILEGE_DOCUMENT_DELETE " +
+    "PRIVILEGE_ESD " +
+    "PRIVILEGE_FOLDER_DELETE " +
+    "PRIVILEGE_MANAGE_ACCESS_RIGHTS " +
+    "PRIVILEGE_MANAGE_REPLICATION " +
+    "PRIVILEGE_MANAGE_SESSION_SERVER " +
+    "PRIVILEGE_OBJECT_FULL_ACCESS " +
+    "PRIVILEGE_OBJECT_VIEW " +
+    "PRIVILEGE_RESERVE_LICENSE " +
+    "PRIVILEGE_SYSTEM_CUSTOMIZE " +
+    "PRIVILEGE_SYSTEM_DEVELOP " +
+    "PRIVILEGE_SYSTEM_INSTALL " +
+    "PRIVILEGE_TASK_DELETE " +
+    "PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE " +
+    "PRIVILEGES_PSEUDOREFERENCE_CODE ";
+
+  // Pseudoreference code
+  const pseudoreference_code_constants =
+    "ACCESS_TYPES_PSEUDOREFERENCE_CODE " +
+    "ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE " +
+    "ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE " +
+    "ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE " +
+    "AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE " +
+    "COMPONENTS_PSEUDOREFERENCE_CODE " +
+    "FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE " +
+    "GROUPS_PSEUDOREFERENCE_CODE " +
+    "RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE " +
+    "REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE " +
+    "REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE " +
+    "REFTYPES_PSEUDOREFERENCE_CODE " +
+    "REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE " +
+    "SEND_PROTOCOL_PSEUDOREFERENCE_CODE " +
+    "SUBSTITUTES_PSEUDOREFERENCE_CODE " +
+    "SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE " +
+    "UNITS_PSEUDOREFERENCE_CODE " +
+    "USERS_PSEUDOREFERENCE_CODE " +
+    "VIEWERS_PSEUDOREFERENCE_CODE ";
+
+  // Requisite ISBCertificateType values
+  const requisite_ISBCertificateType_values_constants =
+    "CERTIFICATE_TYPE_ENCRYPT " +
+    "CERTIFICATE_TYPE_SIGN " +
+    "CERTIFICATE_TYPE_SIGN_AND_ENCRYPT ";
+
+  // Requisite ISBEDocStorageType values
+  const requisite_ISBEDocStorageType_values_constants =
+    "STORAGE_TYPE_FILE " +
+    "STORAGE_TYPE_NAS_CIFS " +
+    "STORAGE_TYPE_SAPERION " +
+    "STORAGE_TYPE_SQL_SERVER ";
+
+  // Requisite CompType2 values
+  const requisite_compType2_values_constants =
+    "COMPTYPE2_REQUISITE_DOCUMENTS_VALUE " +
+    "COMPTYPE2_REQUISITE_TASKS_VALUE " +
+    "COMPTYPE2_REQUISITE_FOLDERS_VALUE " +
+    "COMPTYPE2_REQUISITE_REFERENCES_VALUE ";
+
+  // Requisite name
+  const requisite_name_constants =
+    "SYSREQ_CODE " +
+    "SYSREQ_COMPTYPE2 " +
+    "SYSREQ_CONST_AVAILABLE_FOR_WEB " +
+    "SYSREQ_CONST_COMMON_CODE " +
+    "SYSREQ_CONST_COMMON_VALUE " +
+    "SYSREQ_CONST_FIRM_CODE " +
+    "SYSREQ_CONST_FIRM_STATUS " +
+    "SYSREQ_CONST_FIRM_VALUE " +
+    "SYSREQ_CONST_SERVER_STATUS " +
+    "SYSREQ_CONTENTS " +
+    "SYSREQ_DATE_OPEN " +
+    "SYSREQ_DATE_CLOSE " +
+    "SYSREQ_DESCRIPTION " +
+    "SYSREQ_DESCRIPTION_LOCALIZE_ID " +
+    "SYSREQ_DOUBLE " +
+    "SYSREQ_EDOC_ACCESS_TYPE " +
+    "SYSREQ_EDOC_AUTHOR " +
+    "SYSREQ_EDOC_CREATED " +
+    "SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE " +
+    "SYSREQ_EDOC_EDITOR " +
+    "SYSREQ_EDOC_ENCODE_TYPE " +
+    "SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME " +
+    "SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION " +
+    "SYSREQ_EDOC_EXPORT_DATE " +
+    "SYSREQ_EDOC_EXPORTER " +
+    "SYSREQ_EDOC_KIND " +
+    "SYSREQ_EDOC_LIFE_STAGE_NAME " +
+    "SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE " +
+    "SYSREQ_EDOC_MODIFIED " +
+    "SYSREQ_EDOC_NAME " +
+    "SYSREQ_EDOC_NOTE " +
+    "SYSREQ_EDOC_QUALIFIED_ID " +
+    "SYSREQ_EDOC_SESSION_KEY " +
+    "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME " +
+    "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION " +
+    "SYSREQ_EDOC_SIGNATURE_TYPE " +
+    "SYSREQ_EDOC_SIGNED " +
+    "SYSREQ_EDOC_STORAGE " +
+    "SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE " +
+    "SYSREQ_EDOC_STORAGES_CHECK_RIGHTS " +
+    "SYSREQ_EDOC_STORAGES_COMPUTER_NAME " +
+    "SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE " +
+    "SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE " +
+    "SYSREQ_EDOC_STORAGES_FUNCTION " +
+    "SYSREQ_EDOC_STORAGES_INITIALIZED " +
+    "SYSREQ_EDOC_STORAGES_LOCAL_PATH " +
+    "SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME " +
+    "SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT " +
+    "SYSREQ_EDOC_STORAGES_SERVER_NAME " +
+    "SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME " +
+    "SYSREQ_EDOC_STORAGES_TYPE " +
+    "SYSREQ_EDOC_TEXT_MODIFIED " +
+    "SYSREQ_EDOC_TYPE_ACT_CODE " +
+    "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION " +
+    "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID " +
+    "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE " +
+    "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS " +
+    "SYSREQ_EDOC_TYPE_ACT_SECTION " +
+    "SYSREQ_EDOC_TYPE_ADD_PARAMS " +
+    "SYSREQ_EDOC_TYPE_COMMENT " +
+    "SYSREQ_EDOC_TYPE_EVENT_TEXT " +
+    "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR " +
+    "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID " +
+    "SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID " +
+    "SYSREQ_EDOC_TYPE_NUMERATION_METHOD " +
+    "SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE " +
+    "SYSREQ_EDOC_TYPE_REQ_CODE " +
+    "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION " +
+    "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID " +
+    "SYSREQ_EDOC_TYPE_REQ_IS_LEADING " +
+    "SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED " +
+    "SYSREQ_EDOC_TYPE_REQ_NUMBER " +
+    "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE " +
+    "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS " +
+    "SYSREQ_EDOC_TYPE_REQ_ON_SELECT " +
+    "SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND " +
+    "SYSREQ_EDOC_TYPE_REQ_SECTION " +
+    "SYSREQ_EDOC_TYPE_VIEW_CARD " +
+    "SYSREQ_EDOC_TYPE_VIEW_CODE " +
+    "SYSREQ_EDOC_TYPE_VIEW_COMMENT " +
+    "SYSREQ_EDOC_TYPE_VIEW_IS_MAIN " +
+    "SYSREQ_EDOC_TYPE_VIEW_NAME " +
+    "SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID " +
+    "SYSREQ_EDOC_VERSION_AUTHOR " +
+    "SYSREQ_EDOC_VERSION_CRC " +
+    "SYSREQ_EDOC_VERSION_DATA " +
+    "SYSREQ_EDOC_VERSION_EDITOR " +
+    "SYSREQ_EDOC_VERSION_EXPORT_DATE " +
+    "SYSREQ_EDOC_VERSION_EXPORTER " +
+    "SYSREQ_EDOC_VERSION_HIDDEN " +
+    "SYSREQ_EDOC_VERSION_LIFE_STAGE " +
+    "SYSREQ_EDOC_VERSION_MODIFIED " +
+    "SYSREQ_EDOC_VERSION_NOTE " +
+    "SYSREQ_EDOC_VERSION_SIGNATURE_TYPE " +
+    "SYSREQ_EDOC_VERSION_SIGNED " +
+    "SYSREQ_EDOC_VERSION_SIZE " +
+    "SYSREQ_EDOC_VERSION_SOURCE " +
+    "SYSREQ_EDOC_VERSION_TEXT_MODIFIED " +
+    "SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE " +
+    "SYSREQ_FOLDER_KIND " +
+    "SYSREQ_FUNC_CATEGORY " +
+    "SYSREQ_FUNC_COMMENT " +
+    "SYSREQ_FUNC_GROUP " +
+    "SYSREQ_FUNC_GROUP_COMMENT " +
+    "SYSREQ_FUNC_GROUP_NUMBER " +
+    "SYSREQ_FUNC_HELP " +
+    "SYSREQ_FUNC_PARAM_DEF_VALUE " +
+    "SYSREQ_FUNC_PARAM_IDENT " +
+    "SYSREQ_FUNC_PARAM_NUMBER " +
+    "SYSREQ_FUNC_PARAM_TYPE " +
+    "SYSREQ_FUNC_TEXT " +
+    "SYSREQ_GROUP_CATEGORY " +
+    "SYSREQ_ID " +
+    "SYSREQ_LAST_UPDATE " +
+    "SYSREQ_LEADER_REFERENCE " +
+    "SYSREQ_LINE_NUMBER " +
+    "SYSREQ_MAIN_RECORD_ID " +
+    "SYSREQ_NAME " +
+    "SYSREQ_NAME_LOCALIZE_ID " +
+    "SYSREQ_NOTE " +
+    "SYSREQ_ORIGINAL_RECORD " +
+    "SYSREQ_OUR_FIRM " +
+    "SYSREQ_PROFILING_SETTINGS_BATCH_LOGING " +
+    "SYSREQ_PROFILING_SETTINGS_BATCH_SIZE " +
+    "SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED " +
+    "SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED " +
+    "SYSREQ_PROFILING_SETTINGS_START_LOGGED " +
+    "SYSREQ_RECORD_STATUS " +
+    "SYSREQ_REF_REQ_FIELD_NAME " +
+    "SYSREQ_REF_REQ_FORMAT " +
+    "SYSREQ_REF_REQ_GENERATED " +
+    "SYSREQ_REF_REQ_LENGTH " +
+    "SYSREQ_REF_REQ_PRECISION " +
+    "SYSREQ_REF_REQ_REFERENCE " +
+    "SYSREQ_REF_REQ_SECTION " +
+    "SYSREQ_REF_REQ_STORED " +
+    "SYSREQ_REF_REQ_TOKENS " +
+    "SYSREQ_REF_REQ_TYPE " +
+    "SYSREQ_REF_REQ_VIEW " +
+    "SYSREQ_REF_TYPE_ACT_CODE " +
+    "SYSREQ_REF_TYPE_ACT_DESCRIPTION " +
+    "SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID " +
+    "SYSREQ_REF_TYPE_ACT_ON_EXECUTE " +
+    "SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS " +
+    "SYSREQ_REF_TYPE_ACT_SECTION " +
+    "SYSREQ_REF_TYPE_ADD_PARAMS " +
+    "SYSREQ_REF_TYPE_COMMENT " +
+    "SYSREQ_REF_TYPE_COMMON_SETTINGS " +
+    "SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME " +
+    "SYSREQ_REF_TYPE_EVENT_TEXT " +
+    "SYSREQ_REF_TYPE_MAIN_LEADING_REF " +
+    "SYSREQ_REF_TYPE_NAME_IN_SINGULAR " +
+    "SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID " +
+    "SYSREQ_REF_TYPE_NAME_LOCALIZE_ID " +
+    "SYSREQ_REF_TYPE_NUMERATION_METHOD " +
+    "SYSREQ_REF_TYPE_REQ_CODE " +
+    "SYSREQ_REF_TYPE_REQ_DESCRIPTION " +
+    "SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID " +
+    "SYSREQ_REF_TYPE_REQ_IS_CONTROL " +
+    "SYSREQ_REF_TYPE_REQ_IS_FILTER " +
+    "SYSREQ_REF_TYPE_REQ_IS_LEADING " +
+    "SYSREQ_REF_TYPE_REQ_IS_REQUIRED " +
+    "SYSREQ_REF_TYPE_REQ_NUMBER " +
+    "SYSREQ_REF_TYPE_REQ_ON_CHANGE " +
+    "SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS " +
+    "SYSREQ_REF_TYPE_REQ_ON_SELECT " +
+    "SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND " +
+    "SYSREQ_REF_TYPE_REQ_SECTION " +
+    "SYSREQ_REF_TYPE_VIEW_CARD " +
+    "SYSREQ_REF_TYPE_VIEW_CODE " +
+    "SYSREQ_REF_TYPE_VIEW_COMMENT " +
+    "SYSREQ_REF_TYPE_VIEW_IS_MAIN " +
+    "SYSREQ_REF_TYPE_VIEW_NAME " +
+    "SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID " +
+    "SYSREQ_REFERENCE_TYPE_ID " +
+    "SYSREQ_STATE " +
+    "SYSREQ_STATЕ " +
+    "SYSREQ_SYSTEM_SETTINGS_VALUE " +
+    "SYSREQ_TYPE " +
+    "SYSREQ_UNIT " +
+    "SYSREQ_UNIT_ID " +
+    "SYSREQ_USER_GROUPS_GROUP_FULL_NAME " +
+    "SYSREQ_USER_GROUPS_GROUP_NAME " +
+    "SYSREQ_USER_GROUPS_GROUP_SERVER_NAME " +
+    "SYSREQ_USERS_ACCESS_RIGHTS " +
+    "SYSREQ_USERS_AUTHENTICATION " +
+    "SYSREQ_USERS_CATEGORY " +
+    "SYSREQ_USERS_COMPONENT " +
+    "SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC " +
+    "SYSREQ_USERS_DOMAIN " +
+    "SYSREQ_USERS_FULL_USER_NAME " +
+    "SYSREQ_USERS_GROUP " +
+    "SYSREQ_USERS_IS_MAIN_SERVER " +
+    "SYSREQ_USERS_LOGIN " +
+    "SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC " +
+    "SYSREQ_USERS_STATUS " +
+    "SYSREQ_USERS_USER_CERTIFICATE " +
+    "SYSREQ_USERS_USER_CERTIFICATE_INFO " +
+    "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME " +
+    "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION " +
+    "SYSREQ_USERS_USER_CERTIFICATE_STATE " +
+    "SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME " +
+    "SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT " +
+    "SYSREQ_USERS_USER_DEFAULT_CERTIFICATE " +
+    "SYSREQ_USERS_USER_DESCRIPTION " +
+    "SYSREQ_USERS_USER_GLOBAL_NAME " +
+    "SYSREQ_USERS_USER_LOGIN " +
+    "SYSREQ_USERS_USER_MAIN_SERVER " +
+    "SYSREQ_USERS_USER_TYPE " +
+    "SYSREQ_WORK_RULES_FOLDER_ID ";
+
+  // Result
+  const result_constants = "RESULT_VAR_NAME RESULT_VAR_NAME_ENG ";
+
+  // Rule identification
+  const rule_identification_constants =
+    "AUTO_NUMERATION_RULE_ID " +
+    "CANT_CHANGE_ID_REQUISITE_RULE_ID " +
+    "CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID " +
+    "CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID " +
+    "CHECK_CODE_REQUISITE_RULE_ID " +
+    "CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID " +
+    "CHECK_FILTRATER_CHANGES_RULE_ID " +
+    "CHECK_RECORD_INTERVAL_RULE_ID " +
+    "CHECK_REFERENCE_INTERVAL_RULE_ID " +
+    "CHECK_REQUIRED_DATA_FULLNESS_RULE_ID " +
+    "CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID " +
+    "MAKE_RECORD_UNRATIFIED_RULE_ID " +
+    "RESTORE_AUTO_NUMERATION_RULE_ID " +
+    "SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID " +
+    "SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID " +
+    "SET_IDSPS_VALUE_RULE_ID " +
+    "SET_NEXT_CODE_VALUE_RULE_ID " +
+    "SET_OURFIRM_BOUNDS_RULE_ID " +
+    "SET_OURFIRM_REQUISITE_RULE_ID ";
+
+  // Script block properties
+  const script_block_properties_constants =
+    "SCRIPT_BLOCK_AFTER_FINISH_EVENT " +
+    "SCRIPT_BLOCK_BEFORE_START_EVENT " +
+    "SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY " +
+    "SCRIPT_BLOCK_NAME_PROPERTY " +
+    "SCRIPT_BLOCK_SCRIPT_PROPERTY ";
+
+  // Subtask block properties
+  const subtask_block_properties_constants =
+    "SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY " +
+    "SUBTASK_BLOCK_AFTER_FINISH_EVENT " +
+    "SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT " +
+    "SUBTASK_BLOCK_ATTACHMENTS_PROPERTY " +
+    "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " +
+    "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " +
+    "SUBTASK_BLOCK_BEFORE_START_EVENT " +
+    "SUBTASK_BLOCK_CREATED_TASK_PROPERTY " +
+    "SUBTASK_BLOCK_CREATION_EVENT " +
+    "SUBTASK_BLOCK_DEADLINE_PROPERTY " +
+    "SUBTASK_BLOCK_IMPORTANCE_PROPERTY " +
+    "SUBTASK_BLOCK_INITIATOR_PROPERTY " +
+    "SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY " +
+    "SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " +
+    "SUBTASK_BLOCK_JOBS_TYPE_PROPERTY " +
+    "SUBTASK_BLOCK_NAME_PROPERTY " +
+    "SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY " +
+    "SUBTASK_BLOCK_PERFORMERS_PROPERTY " +
+    "SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY " +
+    "SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " +
+    "SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY " +
+    "SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY " +
+    "SUBTASK_BLOCK_START_EVENT " +
+    "SUBTASK_BLOCK_STEP_CONTROL_PROPERTY " +
+    "SUBTASK_BLOCK_SUBJECT_PROPERTY " +
+    "SUBTASK_BLOCK_TASK_CONTROL_PROPERTY " +
+    "SUBTASK_BLOCK_TEXT_PROPERTY " +
+    "SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY " +
+    "SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY " +
+    "SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY ";
+
+  // System component
+  const system_component_constants =
+    "SYSCOMP_CONTROL_JOBS " +
+    "SYSCOMP_FOLDERS " +
+    "SYSCOMP_JOBS " +
+    "SYSCOMP_NOTICES " +
+    "SYSCOMP_TASKS ";
+
+  // System dialogs
+  const system_dialogs_constants =
+    "SYSDLG_CREATE_EDOCUMENT " +
+    "SYSDLG_CREATE_EDOCUMENT_VERSION " +
+    "SYSDLG_CURRENT_PERIOD " +
+    "SYSDLG_EDIT_FUNCTION_HELP " +
+    "SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE " +
+    "SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS " +
+    "SYSDLG_EXPORT_SINGLE_EDOCUMENT " +
+    "SYSDLG_IMPORT_EDOCUMENT " +
+    "SYSDLG_MULTIPLE_SELECT " +
+    "SYSDLG_SETUP_ACCESS_RIGHTS " +
+    "SYSDLG_SETUP_DEFAULT_RIGHTS " +
+    "SYSDLG_SETUP_FILTER_CONDITION " +
+    "SYSDLG_SETUP_SIGN_RIGHTS " +
+    "SYSDLG_SETUP_TASK_OBSERVERS " +
+    "SYSDLG_SETUP_TASK_ROUTE " +
+    "SYSDLG_SETUP_USERS_LIST " +
+    "SYSDLG_SIGN_EDOCUMENT " +
+    "SYSDLG_SIGN_MULTIPLE_EDOCUMENTS ";
+
+  // System reference names
+  const system_reference_names_constants =
+    "SYSREF_ACCESS_RIGHTS_TYPES " +
+    "SYSREF_ADMINISTRATION_HISTORY " +
+    "SYSREF_ALL_AVAILABLE_COMPONENTS " +
+    "SYSREF_ALL_AVAILABLE_PRIVILEGES " +
+    "SYSREF_ALL_REPLICATING_COMPONENTS " +
+    "SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS " +
+    "SYSREF_CALENDAR_EVENTS " +
+    "SYSREF_COMPONENT_TOKEN_HISTORY " +
+    "SYSREF_COMPONENT_TOKENS " +
+    "SYSREF_COMPONENTS " +
+    "SYSREF_CONSTANTS " +
+    "SYSREF_DATA_RECEIVE_PROTOCOL " +
+    "SYSREF_DATA_SEND_PROTOCOL " +
+    "SYSREF_DIALOGS " +
+    "SYSREF_DIALOGS_REQUISITES " +
+    "SYSREF_EDITORS " +
+    "SYSREF_EDOC_CARDS " +
+    "SYSREF_EDOC_TYPES " +
+    "SYSREF_EDOCUMENT_CARD_REQUISITES " +
+    "SYSREF_EDOCUMENT_CARD_TYPES " +
+    "SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE " +
+    "SYSREF_EDOCUMENT_CARDS " +
+    "SYSREF_EDOCUMENT_HISTORY " +
+    "SYSREF_EDOCUMENT_KINDS " +
+    "SYSREF_EDOCUMENT_REQUISITES " +
+    "SYSREF_EDOCUMENT_SIGNATURES " +
+    "SYSREF_EDOCUMENT_TEMPLATES " +
+    "SYSREF_EDOCUMENT_TEXT_STORAGES " +
+    "SYSREF_EDOCUMENT_VIEWS " +
+    "SYSREF_FILTERER_SETUP_CONFLICTS " +
+    "SYSREF_FILTRATER_SETTING_CONFLICTS " +
+    "SYSREF_FOLDER_HISTORY " +
+    "SYSREF_FOLDERS " +
+    "SYSREF_FUNCTION_GROUPS " +
+    "SYSREF_FUNCTION_PARAMS " +
+    "SYSREF_FUNCTIONS " +
+    "SYSREF_JOB_HISTORY " +
+    "SYSREF_LINKS " +
+    "SYSREF_LOCALIZATION_DICTIONARY " +
+    "SYSREF_LOCALIZATION_LANGUAGES " +
+    "SYSREF_MODULES " +
+    "SYSREF_PRIVILEGES " +
+    "SYSREF_RECORD_HISTORY " +
+    "SYSREF_REFERENCE_REQUISITES " +
+    "SYSREF_REFERENCE_TYPE_VIEWS " +
+    "SYSREF_REFERENCE_TYPES " +
+    "SYSREF_REFERENCES " +
+    "SYSREF_REFERENCES_REQUISITES " +
+    "SYSREF_REMOTE_SERVERS " +
+    "SYSREF_REPLICATION_SESSIONS_LOG " +
+    "SYSREF_REPLICATION_SESSIONS_PROTOCOL " +
+    "SYSREF_REPORTS " +
+    "SYSREF_ROLES " +
+    "SYSREF_ROUTE_BLOCK_GROUPS " +
+    "SYSREF_ROUTE_BLOCKS " +
+    "SYSREF_SCRIPTS " +
+    "SYSREF_SEARCHES " +
+    "SYSREF_SERVER_EVENTS " +
+    "SYSREF_SERVER_EVENTS_HISTORY " +
+    "SYSREF_STANDARD_ROUTE_GROUPS " +
+    "SYSREF_STANDARD_ROUTES " +
+    "SYSREF_STATUSES " +
+    "SYSREF_SYSTEM_SETTINGS " +
+    "SYSREF_TASK_HISTORY " +
+    "SYSREF_TASK_KIND_GROUPS " +
+    "SYSREF_TASK_KINDS " +
+    "SYSREF_TASK_RIGHTS " +
+    "SYSREF_TASK_SIGNATURES " +
+    "SYSREF_TASKS " +
+    "SYSREF_UNITS " +
+    "SYSREF_USER_GROUPS " +
+    "SYSREF_USER_GROUPS_REFERENCE " +
+    "SYSREF_USER_SUBSTITUTION " +
+    "SYSREF_USERS " +
+    "SYSREF_USERS_REFERENCE " +
+    "SYSREF_VIEWERS " +
+    "SYSREF_WORKING_TIME_CALENDARS ";
+
+  // Table name
+  const table_name_constants =
+    "ACCESS_RIGHTS_TABLE_NAME " +
+    "EDMS_ACCESS_TABLE_NAME " +
+    "EDOC_TYPES_TABLE_NAME ";
+
+  // Test
+  const test_constants =
+    "TEST_DEV_DB_NAME " +
+    "TEST_DEV_SYSTEM_CODE " +
+    "TEST_EDMS_DB_NAME " +
+    "TEST_EDMS_MAIN_CODE " +
+    "TEST_EDMS_MAIN_DB_NAME " +
+    "TEST_EDMS_SECOND_CODE " +
+    "TEST_EDMS_SECOND_DB_NAME " +
+    "TEST_EDMS_SYSTEM_CODE " +
+    "TEST_ISB5_MAIN_CODE " +
+    "TEST_ISB5_SECOND_CODE " +
+    "TEST_SQL_SERVER_2005_NAME " +
+    "TEST_SQL_SERVER_NAME ";
+
+  // Using the dialog windows
+  const using_the_dialog_windows_constants =
+    "ATTENTION_CAPTION " +
+    "cbsCommandLinks " +
+    "cbsDefault " +
+    "CONFIRMATION_CAPTION " +
+    "ERROR_CAPTION " +
+    "INFORMATION_CAPTION " +
+    "mrCancel " +
+    "mrOk ";
+
+  // Using the document
+  const using_the_document_constants =
+    "EDOC_VERSION_ACTIVE_STAGE_CODE " +
+    "EDOC_VERSION_DESIGN_STAGE_CODE " +
+    "EDOC_VERSION_OBSOLETE_STAGE_CODE ";
+
+  // Using the EA and encryption
+  const using_the_EA_and_encryption_constants =
+    "cpDataEnciphermentEnabled " +
+    "cpDigitalSignatureEnabled " +
+    "cpID " +
+    "cpIssuer " +
+    "cpPluginVersion " +
+    "cpSerial " +
+    "cpSubjectName " +
+    "cpSubjSimpleName " +
+    "cpValidFromDate " +
+    "cpValidToDate ";
+
+  // Using the ISBL-editor
+  const using_the_ISBL_editor_constants =
+    "ISBL_SYNTAX " + "NO_SYNTAX " + "XML_SYNTAX ";
+
+  // Wait block properties
+  const wait_block_properties_constants =
+    "WAIT_BLOCK_AFTER_FINISH_EVENT " +
+    "WAIT_BLOCK_BEFORE_START_EVENT " +
+    "WAIT_BLOCK_DEADLINE_PROPERTY " +
+    "WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " +
+    "WAIT_BLOCK_NAME_PROPERTY " +
+    "WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY ";
+
+  // SYSRES Common
+  const sysres_common_constants =
+    "SYSRES_COMMON " +
+    "SYSRES_CONST " +
+    "SYSRES_MBFUNC " +
+    "SYSRES_SBDATA " +
+    "SYSRES_SBGUI " +
+    "SYSRES_SBINTF " +
+    "SYSRES_SBREFDSC " +
+    "SYSRES_SQLERRORS " +
+    "SYSRES_SYSCOMP ";
+
+  // Константы ==> built_in
+  const CONSTANTS =
+    sysres_constants +
+    base_constants +
+    base_group_name_constants +
+    decision_block_properties_constants +
+    file_extension_constants +
+    job_block_properties_constants +
+    language_code_constants +
+    launching_external_applications_constants +
+    link_kind_constants +
+    lock_type_constants +
+    monitor_block_properties_constants +
+    notice_block_properties_constants +
+    object_events_constants +
+    object_params_constants +
+    other_constants +
+    privileges_constants +
+    pseudoreference_code_constants +
+    requisite_ISBCertificateType_values_constants +
+    requisite_ISBEDocStorageType_values_constants +
+    requisite_compType2_values_constants +
+    requisite_name_constants +
+    result_constants +
+    rule_identification_constants +
+    script_block_properties_constants +
+    subtask_block_properties_constants +
+    system_component_constants +
+    system_dialogs_constants +
+    system_reference_names_constants +
+    table_name_constants +
+    test_constants +
+    using_the_dialog_windows_constants +
+    using_the_document_constants +
+    using_the_EA_and_encryption_constants +
+    using_the_ISBL_editor_constants +
+    wait_block_properties_constants +
+    sysres_common_constants;
+
+  // enum TAccountType
+  const TAccountType = "atUser atGroup atRole ";
+
+  // enum TActionEnabledMode
+  const TActionEnabledMode =
+    "aemEnabledAlways " +
+    "aemDisabledAlways " +
+    "aemEnabledOnBrowse " +
+    "aemEnabledOnEdit " +
+    "aemDisabledOnBrowseEmpty ";
+
+  // enum TAddPosition
+  const TAddPosition = "apBegin apEnd ";
+
+  // enum TAlignment
+  const TAlignment = "alLeft alRight ";
+
+  // enum TAreaShowMode
+  const TAreaShowMode =
+    "asmNever " +
+    "asmNoButCustomize " +
+    "asmAsLastTime " +
+    "asmYesButCustomize " +
+    "asmAlways ";
+
+  // enum TCertificateInvalidationReason
+  const TCertificateInvalidationReason = "cirCommon cirRevoked ";
+
+  // enum TCertificateType
+  const TCertificateType = "ctSignature ctEncode ctSignatureEncode ";
+
+  // enum TCheckListBoxItemState
+  const TCheckListBoxItemState = "clbUnchecked clbChecked clbGrayed ";
+
+  // enum TCloseOnEsc
+  const TCloseOnEsc = "ceISB ceAlways ceNever ";
+
+  // enum TCompType
+  const TCompType =
+    "ctDocument " +
+    "ctReference " +
+    "ctScript " +
+    "ctUnknown " +
+    "ctReport " +
+    "ctDialog " +
+    "ctFunction " +
+    "ctFolder " +
+    "ctEDocument " +
+    "ctTask " +
+    "ctJob " +
+    "ctNotice " +
+    "ctControlJob ";
+
+  // enum TConditionFormat
+  const TConditionFormat = "cfInternal cfDisplay ";
+
+  // enum TConnectionIntent
+  const TConnectionIntent = "ciUnspecified ciWrite ciRead ";
+
+  // enum TContentKind
+  const TContentKind =
+    "ckFolder " +
+    "ckEDocument " +
+    "ckTask " +
+    "ckJob " +
+    "ckComponentToken " +
+    "ckAny " +
+    "ckReference " +
+    "ckScript " +
+    "ckReport " +
+    "ckDialog ";
+
+  // enum TControlType
+  const TControlType =
+    "ctISBLEditor " +
+    "ctBevel " +
+    "ctButton " +
+    "ctCheckListBox " +
+    "ctComboBox " +
+    "ctComboEdit " +
+    "ctGrid " +
+    "ctDBCheckBox " +
+    "ctDBComboBox " +
+    "ctDBEdit " +
+    "ctDBEllipsis " +
+    "ctDBMemo " +
+    "ctDBNavigator " +
+    "ctDBRadioGroup " +
+    "ctDBStatusLabel " +
+    "ctEdit " +
+    "ctGroupBox " +
+    "ctInplaceHint " +
+    "ctMemo " +
+    "ctPanel " +
+    "ctListBox " +
+    "ctRadioButton " +
+    "ctRichEdit " +
+    "ctTabSheet " +
+    "ctWebBrowser " +
+    "ctImage " +
+    "ctHyperLink " +
+    "ctLabel " +
+    "ctDBMultiEllipsis " +
+    "ctRibbon " +
+    "ctRichView " +
+    "ctInnerPanel " +
+    "ctPanelGroup " +
+    "ctBitButton ";
+
+  // enum TCriterionContentType
+  const TCriterionContentType =
+    "cctDate " +
+    "cctInteger " +
+    "cctNumeric " +
+    "cctPick " +
+    "cctReference " +
+    "cctString " +
+    "cctText ";
+
+  // enum TCultureType
+  const TCultureType = "cltInternal cltPrimary cltGUI ";
+
+  // enum TDataSetEventType
+  const TDataSetEventType =
+    "dseBeforeOpen " +
+    "dseAfterOpen " +
+    "dseBeforeClose " +
+    "dseAfterClose " +
+    "dseOnValidDelete " +
+    "dseBeforeDelete " +
+    "dseAfterDelete " +
+    "dseAfterDeleteOutOfTransaction " +
+    "dseOnDeleteError " +
+    "dseBeforeInsert " +
+    "dseAfterInsert " +
+    "dseOnValidUpdate " +
+    "dseBeforeUpdate " +
+    "dseOnUpdateRatifiedRecord " +
+    "dseAfterUpdate " +
+    "dseAfterUpdateOutOfTransaction " +
+    "dseOnUpdateError " +
+    "dseAfterScroll " +
+    "dseOnOpenRecord " +
+    "dseOnCloseRecord " +
+    "dseBeforeCancel " +
+    "dseAfterCancel " +
+    "dseOnUpdateDeadlockError " +
+    "dseBeforeDetailUpdate " +
+    "dseOnPrepareUpdate " +
+    "dseOnAnyRequisiteChange ";
+
+  // enum TDataSetState
+  const TDataSetState = "dssEdit dssInsert dssBrowse dssInActive ";
+
+  // enum TDateFormatType
+  const TDateFormatType = "dftDate dftShortDate dftDateTime dftTimeStamp ";
+
+  // enum TDateOffsetType
+  const TDateOffsetType = "dotDays dotHours dotMinutes dotSeconds ";
+
+  // enum TDateTimeKind
+  const TDateTimeKind = "dtkndLocal dtkndUTC ";
+
+  // enum TDeaAccessRights
+  const TDeaAccessRights = "arNone arView arEdit arFull ";
+
+  // enum TDocumentDefaultAction
+  const TDocumentDefaultAction = "ddaView ddaEdit ";
+
+  // enum TEditMode
+  const TEditMode =
+    "emLock " +
+    "emEdit " +
+    "emSign " +
+    "emExportWithLock " +
+    "emImportWithUnlock " +
+    "emChangeVersionNote " +
+    "emOpenForModify " +
+    "emChangeLifeStage " +
+    "emDelete " +
+    "emCreateVersion " +
+    "emImport " +
+    "emUnlockExportedWithLock " +
+    "emStart " +
+    "emAbort " +
+    "emReInit " +
+    "emMarkAsReaded " +
+    "emMarkAsUnreaded " +
+    "emPerform " +
+    "emAccept " +
+    "emResume " +
+    "emChangeRights " +
+    "emEditRoute " +
+    "emEditObserver " +
+    "emRecoveryFromLocalCopy " +
+    "emChangeWorkAccessType " +
+    "emChangeEncodeTypeToCertificate " +
+    "emChangeEncodeTypeToPassword " +
+    "emChangeEncodeTypeToNone " +
+    "emChangeEncodeTypeToCertificatePassword " +
+    "emChangeStandardRoute " +
+    "emGetText " +
+    "emOpenForView " +
+    "emMoveToStorage " +
+    "emCreateObject " +
+    "emChangeVersionHidden " +
+    "emDeleteVersion " +
+    "emChangeLifeCycleStage " +
+    "emApprovingSign " +
+    "emExport " +
+    "emContinue " +
+    "emLockFromEdit " +
+    "emUnLockForEdit " +
+    "emLockForServer " +
+    "emUnlockFromServer " +
+    "emDelegateAccessRights " +
+    "emReEncode ";
+
+  // enum TEditorCloseObservType
+  const TEditorCloseObservType = "ecotFile ecotProcess ";
+
+  // enum TEdmsApplicationAction
+  const TEdmsApplicationAction = "eaGet eaCopy eaCreate eaCreateStandardRoute ";
+
+  // enum TEDocumentLockType
+  const TEDocumentLockType = "edltAll edltNothing edltQuery ";
+
+  // enum TEDocumentStepShowMode
+  const TEDocumentStepShowMode = "essmText essmCard ";
+
+  // enum TEDocumentStepVersionType
+  const TEDocumentStepVersionType = "esvtLast esvtLastActive esvtSpecified ";
+
+  // enum TEDocumentStorageFunction
+  const TEDocumentStorageFunction = "edsfExecutive edsfArchive ";
+
+  // enum TEDocumentStorageType
+  const TEDocumentStorageType = "edstSQLServer edstFile ";
+
+  // enum TEDocumentVersionSourceType
+  const TEDocumentVersionSourceType =
+    "edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile ";
+
+  // enum TEDocumentVersionState
+  const TEDocumentVersionState = "vsDefault vsDesign vsActive vsObsolete ";
+
+  // enum TEncodeType
+  const TEncodeType = "etNone etCertificate etPassword etCertificatePassword ";
+
+  // enum TExceptionCategory
+  const TExceptionCategory = "ecException ecWarning ecInformation ";
+
+  // enum TExportedSignaturesType
+  const TExportedSignaturesType = "estAll estApprovingOnly ";
+
+  // enum TExportedVersionType
+  const TExportedVersionType = "evtLast evtLastActive evtQuery ";
+
+  // enum TFieldDataType
+  const TFieldDataType =
+    "fdtString " +
+    "fdtNumeric " +
+    "fdtInteger " +
+    "fdtDate " +
+    "fdtText " +
+    "fdtUnknown " +
+    "fdtWideString " +
+    "fdtLargeInteger ";
+
+  // enum TFolderType
+  const TFolderType =
+    "ftInbox " +
+    "ftOutbox " +
+    "ftFavorites " +
+    "ftCommonFolder " +
+    "ftUserFolder " +
+    "ftComponents " +
+    "ftQuickLaunch " +
+    "ftShortcuts " +
+    "ftSearch ";
+
+  // enum TGridRowHeight
+  const TGridRowHeight = "grhAuto " + "grhX1 " + "grhX2 " + "grhX3 ";
+
+  // enum THyperlinkType
+  const THyperlinkType = "hltText " + "hltRTF " + "hltHTML ";
+
+  // enum TImageFileFormat
+  const TImageFileFormat =
+    "iffBMP " +
+    "iffJPEG " +
+    "iffMultiPageTIFF " +
+    "iffSinglePageTIFF " +
+    "iffTIFF " +
+    "iffPNG ";
+
+  // enum TImageMode
+  const TImageMode = "im8bGrayscale " + "im24bRGB " + "im1bMonochrome ";
+
+  // enum TImageType
+  const TImageType = "itBMP " + "itJPEG " + "itWMF " + "itPNG ";
+
+  // enum TInplaceHintKind
+  const TInplaceHintKind =
+    "ikhInformation " + "ikhWarning " + "ikhError " + "ikhNoIcon ";
+
+  // enum TISBLContext
+  const TISBLContext =
+    "icUnknown " +
+    "icScript " +
+    "icFunction " +
+    "icIntegratedReport " +
+    "icAnalyticReport " +
+    "icDataSetEventHandler " +
+    "icActionHandler " +
+    "icFormEventHandler " +
+    "icLookUpEventHandler " +
+    "icRequisiteChangeEventHandler " +
+    "icBeforeSearchEventHandler " +
+    "icRoleCalculation " +
+    "icSelectRouteEventHandler " +
+    "icBlockPropertyCalculation " +
+    "icBlockQueryParamsEventHandler " +
+    "icChangeSearchResultEventHandler " +
+    "icBlockEventHandler " +
+    "icSubTaskInitEventHandler " +
+    "icEDocDataSetEventHandler " +
+    "icEDocLookUpEventHandler " +
+    "icEDocActionHandler " +
+    "icEDocFormEventHandler " +
+    "icEDocRequisiteChangeEventHandler " +
+    "icStructuredConversionRule " +
+    "icStructuredConversionEventBefore " +
+    "icStructuredConversionEventAfter " +
+    "icWizardEventHandler " +
+    "icWizardFinishEventHandler " +
+    "icWizardStepEventHandler " +
+    "icWizardStepFinishEventHandler " +
+    "icWizardActionEnableEventHandler " +
+    "icWizardActionExecuteEventHandler " +
+    "icCreateJobsHandler " +
+    "icCreateNoticesHandler " +
+    "icBeforeLookUpEventHandler " +
+    "icAfterLookUpEventHandler " +
+    "icTaskAbortEventHandler " +
+    "icWorkflowBlockActionHandler " +
+    "icDialogDataSetEventHandler " +
+    "icDialogActionHandler " +
+    "icDialogLookUpEventHandler " +
+    "icDialogRequisiteChangeEventHandler " +
+    "icDialogFormEventHandler " +
+    "icDialogValidCloseEventHandler " +
+    "icBlockFormEventHandler " +
+    "icTaskFormEventHandler " +
+    "icReferenceMethod " +
+    "icEDocMethod " +
+    "icDialogMethod " +
+    "icProcessMessageHandler ";
+
+  // enum TItemShow
+  const TItemShow = "isShow " + "isHide " + "isByUserSettings ";
+
+  // enum TJobKind
+  const TJobKind = "jkJob " + "jkNotice " + "jkControlJob ";
+
+  // enum TJoinType
+  const TJoinType = "jtInner " + "jtLeft " + "jtRight " + "jtFull " + "jtCross ";
+
+  // enum TLabelPos
+  const TLabelPos = "lbpAbove " + "lbpBelow " + "lbpLeft " + "lbpRight ";
+
+  // enum TLicensingType
+  const TLicensingType = "eltPerConnection " + "eltPerUser ";
+
+  // enum TLifeCycleStageFontColor
+  const TLifeCycleStageFontColor =
+    "sfcUndefined " +
+    "sfcBlack " +
+    "sfcGreen " +
+    "sfcRed " +
+    "sfcBlue " +
+    "sfcOrange " +
+    "sfcLilac ";
+
+  // enum TLifeCycleStageFontStyle
+  const TLifeCycleStageFontStyle = "sfsItalic " + "sfsStrikeout " + "sfsNormal ";
+
+  // enum TLockableDevelopmentComponentType
+  const TLockableDevelopmentComponentType =
+    "ldctStandardRoute " +
+    "ldctWizard " +
+    "ldctScript " +
+    "ldctFunction " +
+    "ldctRouteBlock " +
+    "ldctIntegratedReport " +
+    "ldctAnalyticReport " +
+    "ldctReferenceType " +
+    "ldctEDocumentType " +
+    "ldctDialog " +
+    "ldctServerEvents ";
+
+  // enum TMaxRecordCountRestrictionType
+  const TMaxRecordCountRestrictionType =
+    "mrcrtNone " + "mrcrtUser " + "mrcrtMaximal " + "mrcrtCustom ";
+
+  // enum TRangeValueType
+  const TRangeValueType =
+    "vtEqual " + "vtGreaterOrEqual " + "vtLessOrEqual " + "vtRange ";
+
+  // enum TRelativeDate
+  const TRelativeDate =
+    "rdYesterday " +
+    "rdToday " +
+    "rdTomorrow " +
+    "rdThisWeek " +
+    "rdThisMonth " +
+    "rdThisYear " +
+    "rdNextMonth " +
+    "rdNextWeek " +
+    "rdLastWeek " +
+    "rdLastMonth ";
+
+  // enum TReportDestination
+  const TReportDestination = "rdWindow " + "rdFile " + "rdPrinter ";
+
+  // enum TReqDataType
+  const TReqDataType =
+    "rdtString " +
+    "rdtNumeric " +
+    "rdtInteger " +
+    "rdtDate " +
+    "rdtReference " +
+    "rdtAccount " +
+    "rdtText " +
+    "rdtPick " +
+    "rdtUnknown " +
+    "rdtLargeInteger " +
+    "rdtDocument ";
+
+  // enum TRequisiteEventType
+  const TRequisiteEventType = "reOnChange " + "reOnChangeValues ";
+
+  // enum TSBTimeType
+  const TSBTimeType = "ttGlobal " + "ttLocal " + "ttUser " + "ttSystem ";
+
+  // enum TSearchShowMode
+  const TSearchShowMode =
+    "ssmBrowse " + "ssmSelect " + "ssmMultiSelect " + "ssmBrowseModal ";
+
+  // enum TSelectMode
+  const TSelectMode = "smSelect " + "smLike " + "smCard ";
+
+  // enum TSignatureType
+  const TSignatureType = "stNone " + "stAuthenticating " + "stApproving ";
+
+  // enum TSignerContentType
+  const TSignerContentType = "sctString " + "sctStream ";
+
+  // enum TStringsSortType
+  const TStringsSortType = "sstAnsiSort " + "sstNaturalSort ";
+
+  // enum TStringValueType
+  const TStringValueType = "svtEqual " + "svtContain ";
+
+  // enum TStructuredObjectAttributeType
+  const TStructuredObjectAttributeType =
+    "soatString " +
+    "soatNumeric " +
+    "soatInteger " +
+    "soatDatetime " +
+    "soatReferenceRecord " +
+    "soatText " +
+    "soatPick " +
+    "soatBoolean " +
+    "soatEDocument " +
+    "soatAccount " +
+    "soatIntegerCollection " +
+    "soatNumericCollection " +
+    "soatStringCollection " +
+    "soatPickCollection " +
+    "soatDatetimeCollection " +
+    "soatBooleanCollection " +
+    "soatReferenceRecordCollection " +
+    "soatEDocumentCollection " +
+    "soatAccountCollection " +
+    "soatContents " +
+    "soatUnknown ";
+
+  // enum TTaskAbortReason
+  const TTaskAbortReason = "tarAbortByUser " + "tarAbortByWorkflowException ";
+
+  // enum TTextValueType
+  const TTextValueType = "tvtAllWords " + "tvtExactPhrase " + "tvtAnyWord ";
+
+  // enum TUserObjectStatus
+  const TUserObjectStatus =
+    "usNone " +
+    "usCompleted " +
+    "usRedSquare " +
+    "usBlueSquare " +
+    "usYellowSquare " +
+    "usGreenSquare " +
+    "usOrangeSquare " +
+    "usPurpleSquare " +
+    "usFollowUp ";
+
+  // enum TUserType
+  const TUserType =
+    "utUnknown " +
+    "utUser " +
+    "utDeveloper " +
+    "utAdministrator " +
+    "utSystemDeveloper " +
+    "utDisconnected ";
+
+  // enum TValuesBuildType
+  const TValuesBuildType =
+    "btAnd " + "btDetailAnd " + "btOr " + "btNotOr " + "btOnly ";
+
+  // enum TViewMode
+  const TViewMode = "vmView " + "vmSelect " + "vmNavigation ";
+
+  // enum TViewSelectionMode
+  const TViewSelectionMode =
+    "vsmSingle " + "vsmMultiple " + "vsmMultipleCheck " + "vsmNoSelection ";
+
+  // enum TWizardActionType
+  const TWizardActionType =
+    "wfatPrevious " + "wfatNext " + "wfatCancel " + "wfatFinish ";
+
+  // enum TWizardFormElementProperty
+  const TWizardFormElementProperty =
+    "wfepUndefined " +
+    "wfepText3 " +
+    "wfepText6 " +
+    "wfepText9 " +
+    "wfepSpinEdit " +
+    "wfepDropDown " +
+    "wfepRadioGroup " +
+    "wfepFlag " +
+    "wfepText12 " +
+    "wfepText15 " +
+    "wfepText18 " +
+    "wfepText21 " +
+    "wfepText24 " +
+    "wfepText27 " +
+    "wfepText30 " +
+    "wfepRadioGroupColumn1 " +
+    "wfepRadioGroupColumn2 " +
+    "wfepRadioGroupColumn3 ";
+
+  // enum TWizardFormElementType
+  const TWizardFormElementType =
+    "wfetQueryParameter " + "wfetText " + "wfetDelimiter " + "wfetLabel ";
+
+  // enum TWizardParamType
+  const TWizardParamType =
+    "wptString " +
+    "wptInteger " +
+    "wptNumeric " +
+    "wptBoolean " +
+    "wptDateTime " +
+    "wptPick " +
+    "wptText " +
+    "wptUser " +
+    "wptUserList " +
+    "wptEDocumentInfo " +
+    "wptEDocumentInfoList " +
+    "wptReferenceRecordInfo " +
+    "wptReferenceRecordInfoList " +
+    "wptFolderInfo " +
+    "wptTaskInfo " +
+    "wptContents " +
+    "wptFileName " +
+    "wptDate ";
+
+  // enum TWizardStepResult
+  const TWizardStepResult =
+    "wsrComplete " +
+    "wsrGoNext " +
+    "wsrGoPrevious " +
+    "wsrCustom " +
+    "wsrCancel " +
+    "wsrGoFinal ";
+
+  // enum TWizardStepType
+  const TWizardStepType =
+    "wstForm " +
+    "wstEDocument " +
+    "wstTaskCard " +
+    "wstReferenceRecordCard " +
+    "wstFinal ";
+
+  // enum TWorkAccessType
+  const TWorkAccessType = "waAll " + "waPerformers " + "waManual ";
+
+  // enum TWorkflowBlockType
+  const TWorkflowBlockType =
+    "wsbStart " +
+    "wsbFinish " +
+    "wsbNotice " +
+    "wsbStep " +
+    "wsbDecision " +
+    "wsbWait " +
+    "wsbMonitor " +
+    "wsbScript " +
+    "wsbConnector " +
+    "wsbSubTask " +
+    "wsbLifeCycleStage " +
+    "wsbPause ";
+
+  // enum TWorkflowDataType
+  const TWorkflowDataType =
+    "wdtInteger " +
+    "wdtFloat " +
+    "wdtString " +
+    "wdtPick " +
+    "wdtDateTime " +
+    "wdtBoolean " +
+    "wdtTask " +
+    "wdtJob " +
+    "wdtFolder " +
+    "wdtEDocument " +
+    "wdtReferenceRecord " +
+    "wdtUser " +
+    "wdtGroup " +
+    "wdtRole " +
+    "wdtIntegerCollection " +
+    "wdtFloatCollection " +
+    "wdtStringCollection " +
+    "wdtPickCollection " +
+    "wdtDateTimeCollection " +
+    "wdtBooleanCollection " +
+    "wdtTaskCollection " +
+    "wdtJobCollection " +
+    "wdtFolderCollection " +
+    "wdtEDocumentCollection " +
+    "wdtReferenceRecordCollection " +
+    "wdtUserCollection " +
+    "wdtGroupCollection " +
+    "wdtRoleCollection " +
+    "wdtContents " +
+    "wdtUserList " +
+    "wdtSearchDescription " +
+    "wdtDeadLine " +
+    "wdtPickSet " +
+    "wdtAccountCollection ";
+
+  // enum TWorkImportance
+  const TWorkImportance = "wiLow " + "wiNormal " + "wiHigh ";
+
+  // enum TWorkRouteType
+  const TWorkRouteType = "wrtSoft " + "wrtHard ";
+
+  // enum TWorkState
+  const TWorkState =
+    "wsInit " +
+    "wsRunning " +
+    "wsDone " +
+    "wsControlled " +
+    "wsAborted " +
+    "wsContinued ";
+
+  // enum TWorkTextBuildingMode
+  const TWorkTextBuildingMode =
+    "wtmFull " + "wtmFromCurrent " + "wtmOnlyCurrent ";
+
+  // Перечисления
+  const ENUMS =
+    TAccountType +
+    TActionEnabledMode +
+    TAddPosition +
+    TAlignment +
+    TAreaShowMode +
+    TCertificateInvalidationReason +
+    TCertificateType +
+    TCheckListBoxItemState +
+    TCloseOnEsc +
+    TCompType +
+    TConditionFormat +
+    TConnectionIntent +
+    TContentKind +
+    TControlType +
+    TCriterionContentType +
+    TCultureType +
+    TDataSetEventType +
+    TDataSetState +
+    TDateFormatType +
+    TDateOffsetType +
+    TDateTimeKind +
+    TDeaAccessRights +
+    TDocumentDefaultAction +
+    TEditMode +
+    TEditorCloseObservType +
+    TEdmsApplicationAction +
+    TEDocumentLockType +
+    TEDocumentStepShowMode +
+    TEDocumentStepVersionType +
+    TEDocumentStorageFunction +
+    TEDocumentStorageType +
+    TEDocumentVersionSourceType +
+    TEDocumentVersionState +
+    TEncodeType +
+    TExceptionCategory +
+    TExportedSignaturesType +
+    TExportedVersionType +
+    TFieldDataType +
+    TFolderType +
+    TGridRowHeight +
+    THyperlinkType +
+    TImageFileFormat +
+    TImageMode +
+    TImageType +
+    TInplaceHintKind +
+    TISBLContext +
+    TItemShow +
+    TJobKind +
+    TJoinType +
+    TLabelPos +
+    TLicensingType +
+    TLifeCycleStageFontColor +
+    TLifeCycleStageFontStyle +
+    TLockableDevelopmentComponentType +
+    TMaxRecordCountRestrictionType +
+    TRangeValueType +
+    TRelativeDate +
+    TReportDestination +
+    TReqDataType +
+    TRequisiteEventType +
+    TSBTimeType +
+    TSearchShowMode +
+    TSelectMode +
+    TSignatureType +
+    TSignerContentType +
+    TStringsSortType +
+    TStringValueType +
+    TStructuredObjectAttributeType +
+    TTaskAbortReason +
+    TTextValueType +
+    TUserObjectStatus +
+    TUserType +
+    TValuesBuildType +
+    TViewMode +
+    TViewSelectionMode +
+    TWizardActionType +
+    TWizardFormElementProperty +
+    TWizardFormElementType +
+    TWizardParamType +
+    TWizardStepResult +
+    TWizardStepType +
+    TWorkAccessType +
+    TWorkflowBlockType +
+    TWorkflowDataType +
+    TWorkImportance +
+    TWorkRouteType +
+    TWorkState +
+    TWorkTextBuildingMode;
+
+  // Системные функции ==> SYSFUNCTIONS
+  const system_functions =
+    "AddSubString " +
+    "AdjustLineBreaks " +
+    "AmountInWords " +
+    "Analysis " +
+    "ArrayDimCount " +
+    "ArrayHighBound " +
+    "ArrayLowBound " +
+    "ArrayOf " +
+    "ArrayReDim " +
+    "Assert " +
+    "Assigned " +
+    "BeginOfMonth " +
+    "BeginOfPeriod " +
+    "BuildProfilingOperationAnalysis " +
+    "CallProcedure " +
+    "CanReadFile " +
+    "CArrayElement " +
+    "CDataSetRequisite " +
+    "ChangeDate " +
+    "ChangeReferenceDataset " +
+    "Char " +
+    "CharPos " +
+    "CheckParam " +
+    "CheckParamValue " +
+    "CompareStrings " +
+    "ConstantExists " +
+    "ControlState " +
+    "ConvertDateStr " +
+    "Copy " +
+    "CopyFile " +
+    "CreateArray " +
+    "CreateCachedReference " +
+    "CreateConnection " +
+    "CreateDialog " +
+    "CreateDualListDialog " +
+    "CreateEditor " +
+    "CreateException " +
+    "CreateFile " +
+    "CreateFolderDialog " +
+    "CreateInputDialog " +
+    "CreateLinkFile " +
+    "CreateList " +
+    "CreateLock " +
+    "CreateMemoryDataSet " +
+    "CreateObject " +
+    "CreateOpenDialog " +
+    "CreateProgress " +
+    "CreateQuery " +
+    "CreateReference " +
+    "CreateReport " +
+    "CreateSaveDialog " +
+    "CreateScript " +
+    "CreateSQLPivotFunction " +
+    "CreateStringList " +
+    "CreateTreeListSelectDialog " +
+    "CSelectSQL " +
+    "CSQL " +
+    "CSubString " +
+    "CurrentUserID " +
+    "CurrentUserName " +
+    "CurrentVersion " +
+    "DataSetLocateEx " +
+    "DateDiff " +
+    "DateTimeDiff " +
+    "DateToStr " +
+    "DayOfWeek " +
+    "DeleteFile " +
+    "DirectoryExists " +
+    "DisableCheckAccessRights " +
+    "DisableCheckFullShowingRestriction " +
+    "DisableMassTaskSendingRestrictions " +
+    "DropTable " +
+    "DupeString " +
+    "EditText " +
+    "EnableCheckAccessRights " +
+    "EnableCheckFullShowingRestriction " +
+    "EnableMassTaskSendingRestrictions " +
+    "EndOfMonth " +
+    "EndOfPeriod " +
+    "ExceptionExists " +
+    "ExceptionsOff " +
+    "ExceptionsOn " +
+    "Execute " +
+    "ExecuteProcess " +
+    "Exit " +
+    "ExpandEnvironmentVariables " +
+    "ExtractFileDrive " +
+    "ExtractFileExt " +
+    "ExtractFileName " +
+    "ExtractFilePath " +
+    "ExtractParams " +
+    "FileExists " +
+    "FileSize " +
+    "FindFile " +
+    "FindSubString " +
+    "FirmContext " +
+    "ForceDirectories " +
+    "Format " +
+    "FormatDate " +
+    "FormatNumeric " +
+    "FormatSQLDate " +
+    "FormatString " +
+    "FreeException " +
+    "GetComponent " +
+    "GetComponentLaunchParam " +
+    "GetConstant " +
+    "GetLastException " +
+    "GetReferenceRecord " +
+    "GetRefTypeByRefID " +
+    "GetTableID " +
+    "GetTempFolder " +
+    "IfThen " +
+    "In " +
+    "IndexOf " +
+    "InputDialog " +
+    "InputDialogEx " +
+    "InteractiveMode " +
+    "IsFileLocked " +
+    "IsGraphicFile " +
+    "IsNumeric " +
+    "Length " +
+    "LoadString " +
+    "LoadStringFmt " +
+    "LocalTimeToUTC " +
+    "LowerCase " +
+    "Max " +
+    "MessageBox " +
+    "MessageBoxEx " +
+    "MimeDecodeBinary " +
+    "MimeDecodeString " +
+    "MimeEncodeBinary " +
+    "MimeEncodeString " +
+    "Min " +
+    "MoneyInWords " +
+    "MoveFile " +
+    "NewID " +
+    "Now " +
+    "OpenFile " +
+    "Ord " +
+    "Precision " +
+    "Raise " +
+    "ReadCertificateFromFile " +
+    "ReadFile " +
+    "ReferenceCodeByID " +
+    "ReferenceNumber " +
+    "ReferenceRequisiteMode " +
+    "ReferenceRequisiteValue " +
+    "RegionDateSettings " +
+    "RegionNumberSettings " +
+    "RegionTimeSettings " +
+    "RegRead " +
+    "RegWrite " +
+    "RenameFile " +
+    "Replace " +
+    "Round " +
+    "SelectServerCode " +
+    "SelectSQL " +
+    "ServerDateTime " +
+    "SetConstant " +
+    "SetManagedFolderFieldsState " +
+    "ShowConstantsInputDialog " +
+    "ShowMessage " +
+    "Sleep " +
+    "Split " +
+    "SQL " +
+    "SQL2XLSTAB " +
+    "SQLProfilingSendReport " +
+    "StrToDate " +
+    "SubString " +
+    "SubStringCount " +
+    "SystemSetting " +
+    "Time " +
+    "TimeDiff " +
+    "Today " +
+    "Transliterate " +
+    "Trim " +
+    "UpperCase " +
+    "UserStatus " +
+    "UTCToLocalTime " +
+    "ValidateXML " +
+    "VarIsClear " +
+    "VarIsEmpty " +
+    "VarIsNull " +
+    "WorkTimeDiff " +
+    "WriteFile " +
+    "WriteFileEx " +
+    "WriteObjectHistory " +
+    "Анализ " +
+    "БазаДанных " +
+    "БлокЕсть " +
+    "БлокЕстьРасш " +
+    "БлокИнфо " +
+    "БлокСнять " +
+    "БлокСнятьРасш " +
+    "БлокУстановить " +
+    "Ввод " +
+    "ВводМеню " +
+    "ВедС " +
+    "ВедСпр " +
+    "ВерхняяГраницаМассива " +
+    "ВнешПрогр " +
+    "Восст " +
+    "ВременнаяПапка " +
+    "Время " +
+    "ВыборSQL " +
+    "ВыбратьЗапись " +
+    "ВыделитьСтр " +
+    "Вызвать " +
+    "Выполнить " +
+    "ВыпПрогр " +
+    "ГрафическийФайл " +
+    "ГруппаДополнительно " +
+    "ДатаВремяСерв " +
+    "ДеньНедели " +
+    "ДиалогДаНет " +
+    "ДлинаСтр " +
+    "ДобПодстр " +
+    "ЕПусто " +
+    "ЕслиТо " +
+    "ЕЧисло " +
+    "ЗамПодстр " +
+    "ЗаписьСправочника " +
+    "ЗначПоляСпр " +
+    "ИДТипСпр " +
+    "ИзвлечьДиск " +
+    "ИзвлечьИмяФайла " +
+    "ИзвлечьПуть " +
+    "ИзвлечьРасширение " +
+    "ИзмДат " +
+    "ИзменитьРазмерМассива " +
+    "ИзмеренийМассива " +
+    "ИмяОрг " +
+    "ИмяПоляСпр " +
+    "Индекс " +
+    "ИндикаторЗакрыть " +
+    "ИндикаторОткрыть " +
+    "ИндикаторШаг " +
+    "ИнтерактивныйРежим " +
+    "ИтогТблСпр " +
+    "КодВидВедСпр " +
+    "КодВидСпрПоИД " +
+    "КодПоAnalit " +
+    "КодСимвола " +
+    "КодСпр " +
+    "КолПодстр " +
+    "КолПроп " +
+    "КонМес " +
+    "Конст " +
+    "КонстЕсть " +
+    "КонстЗнач " +
+    "КонТран " +
+    "КопироватьФайл " +
+    "КопияСтр " +
+    "КПериод " +
+    "КСтрТблСпр " +
+    "Макс " +
+    "МаксСтрТблСпр " +
+    "Массив " +
+    "Меню " +
+    "МенюРасш " +
+    "Мин " +
+    "НаборДанныхНайтиРасш " +
+    "НаимВидСпр " +
+    "НаимПоAnalit " +
+    "НаимСпр " +
+    "НастроитьПереводыСтрок " +
+    "НачМес " +
+    "НачТран " +
+    "НижняяГраницаМассива " +
+    "НомерСпр " +
+    "НПериод " +
+    "Окно " +
+    "Окр " +
+    "Окружение " +
+    "ОтлИнфДобавить " +
+    "ОтлИнфУдалить " +
+    "Отчет " +
+    "ОтчетАнал " +
+    "ОтчетИнт " +
+    "ПапкаСуществует " +
+    "Пауза " +
+    "ПВыборSQL " +
+    "ПереименоватьФайл " +
+    "Переменные " +
+    "ПереместитьФайл " +
+    "Подстр " +
+    "ПоискПодстр " +
+    "ПоискСтр " +
+    "ПолучитьИДТаблицы " +
+    "ПользовательДополнительно " +
+    "ПользовательИД " +
+    "ПользовательИмя " +
+    "ПользовательСтатус " +
+    "Прервать " +
+    "ПроверитьПараметр " +
+    "ПроверитьПараметрЗнач " +
+    "ПроверитьУсловие " +
+    "РазбСтр " +
+    "РазнВремя " +
+    "РазнДат " +
+    "РазнДатаВремя " +
+    "РазнРабВремя " +
+    "РегУстВрем " +
+    "РегУстДат " +
+    "РегУстЧсл " +
+    "РедТекст " +
+    "РеестрЗапись " +
+    "РеестрСписокИменПарам " +
+    "РеестрЧтение " +
+    "РеквСпр " +
+    "РеквСпрПр " +
+    "Сегодня " +
+    "Сейчас " +
+    "Сервер " +
+    "СерверПроцессИД " +
+    "СертификатФайлСчитать " +
+    "СжПроб " +
+    "Символ " +
+    "СистемаДиректумКод " +
+    "СистемаИнформация " +
+    "СистемаКод " +
+    "Содержит " +
+    "СоединениеЗакрыть " +
+    "СоединениеОткрыть " +
+    "СоздатьДиалог " +
+    "СоздатьДиалогВыбораИзДвухСписков " +
+    "СоздатьДиалогВыбораПапки " +
+    "СоздатьДиалогОткрытияФайла " +
+    "СоздатьДиалогСохраненияФайла " +
+    "СоздатьЗапрос " +
+    "СоздатьИндикатор " +
+    "СоздатьИсключение " +
+    "СоздатьКэшированныйСправочник " +
+    "СоздатьМассив " +
+    "СоздатьНаборДанных " +
+    "СоздатьОбъект " +
+    "СоздатьОтчет " +
+    "СоздатьПапку " +
+    "СоздатьРедактор " +
+    "СоздатьСоединение " +
+    "СоздатьСписок " +
+    "СоздатьСписокСтрок " +
+    "СоздатьСправочник " +
+    "СоздатьСценарий " +
+    "СоздСпр " +
+    "СостСпр " +
+    "Сохр " +
+    "СохрСпр " +
+    "СписокСистем " +
+    "Спр " +
+    "Справочник " +
+    "СпрБлокЕсть " +
+    "СпрБлокСнять " +
+    "СпрБлокСнятьРасш " +
+    "СпрБлокУстановить " +
+    "СпрИзмНабДан " +
+    "СпрКод " +
+    "СпрНомер " +
+    "СпрОбновить " +
+    "СпрОткрыть " +
+    "СпрОтменить " +
+    "СпрПарам " +
+    "СпрПолеЗнач " +
+    "СпрПолеИмя " +
+    "СпрРекв " +
+    "СпрРеквВведЗн " +
+    "СпрРеквНовые " +
+    "СпрРеквПр " +
+    "СпрРеквПредЗн " +
+    "СпрРеквРежим " +
+    "СпрРеквТипТекст " +
+    "СпрСоздать " +
+    "СпрСост " +
+    "СпрСохранить " +
+    "СпрТблИтог " +
+    "СпрТблСтр " +
+    "СпрТблСтрКол " +
+    "СпрТблСтрМакс " +
+    "СпрТблСтрМин " +
+    "СпрТблСтрПред " +
+    "СпрТблСтрСлед " +
+    "СпрТблСтрСозд " +
+    "СпрТблСтрУд " +
+    "СпрТекПредст " +
+    "СпрУдалить " +
+    "СравнитьСтр " +
+    "СтрВерхРегистр " +
+    "СтрНижнРегистр " +
+    "СтрТблСпр " +
+    "СумПроп " +
+    "Сценарий " +
+    "СценарийПарам " +
+    "ТекВерсия " +
+    "ТекОрг " +
+    "Точн " +
+    "Тран " +
+    "Транслитерация " +
+    "УдалитьТаблицу " +
+    "УдалитьФайл " +
+    "УдСпр " +
+    "УдСтрТблСпр " +
+    "Уст " +
+    "УстановкиКонстант " +
+    "ФайлАтрибутСчитать " +
+    "ФайлАтрибутУстановить " +
+    "ФайлВремя " +
+    "ФайлВремяУстановить " +
+    "ФайлВыбрать " +
+    "ФайлЗанят " +
+    "ФайлЗаписать " +
+    "ФайлИскать " +
+    "ФайлКопировать " +
+    "ФайлМожноЧитать " +
+    "ФайлОткрыть " +
+    "ФайлПереименовать " +
+    "ФайлПерекодировать " +
+    "ФайлПереместить " +
+    "ФайлПросмотреть " +
+    "ФайлРазмер " +
+    "ФайлСоздать " +
+    "ФайлСсылкаСоздать " +
+    "ФайлСуществует " +
+    "ФайлСчитать " +
+    "ФайлУдалить " +
+    "ФмтSQLДат " +
+    "ФмтДат " +
+    "ФмтСтр " +
+    "ФмтЧсл " +
+    "Формат " +
+    "ЦМассивЭлемент " +
+    "ЦНаборДанныхРеквизит " +
+    "ЦПодстр ";
+
+  // Предопределенные переменные ==> built_in
+  const predefined_variables =
+    "AltState " +
+    "Application " +
+    "CallType " +
+    "ComponentTokens " +
+    "CreatedJobs " +
+    "CreatedNotices " +
+    "ControlState " +
+    "DialogResult " +
+    "Dialogs " +
+    "EDocuments " +
+    "EDocumentVersionSource " +
+    "Folders " +
+    "GlobalIDs " +
+    "Job " +
+    "Jobs " +
+    "InputValue " +
+    "LookUpReference " +
+    "LookUpRequisiteNames " +
+    "LookUpSearch " +
+    "Object " +
+    "ParentComponent " +
+    "Processes " +
+    "References " +
+    "Requisite " +
+    "ReportName " +
+    "Reports " +
+    "Result " +
+    "Scripts " +
+    "Searches " +
+    "SelectedAttachments " +
+    "SelectedItems " +
+    "SelectMode " +
+    "Sender " +
+    "ServerEvents " +
+    "ServiceFactory " +
+    "ShiftState " +
+    "SubTask " +
+    "SystemDialogs " +
+    "Tasks " +
+    "Wizard " +
+    "Wizards " +
+    "Work " +
+    "ВызовСпособ " +
+    "ИмяОтчета " +
+    "РеквЗнач ";
+
+  // Интерфейсы ==> type
+  const interfaces =
+    "IApplication " +
+    "IAccessRights " +
+    "IAccountRepository " +
+    "IAccountSelectionRestrictions " +
+    "IAction " +
+    "IActionList " +
+    "IAdministrationHistoryDescription " +
+    "IAnchors " +
+    "IApplication " +
+    "IArchiveInfo " +
+    "IAttachment " +
+    "IAttachmentList " +
+    "ICheckListBox " +
+    "ICheckPointedList " +
+    "IColumn " +
+    "IComponent " +
+    "IComponentDescription " +
+    "IComponentToken " +
+    "IComponentTokenFactory " +
+    "IComponentTokenInfo " +
+    "ICompRecordInfo " +
+    "IConnection " +
+    "IContents " +
+    "IControl " +
+    "IControlJob " +
+    "IControlJobInfo " +
+    "IControlList " +
+    "ICrypto " +
+    "ICrypto2 " +
+    "ICustomJob " +
+    "ICustomJobInfo " +
+    "ICustomListBox " +
+    "ICustomObjectWizardStep " +
+    "ICustomWork " +
+    "ICustomWorkInfo " +
+    "IDataSet " +
+    "IDataSetAccessInfo " +
+    "IDataSigner " +
+    "IDateCriterion " +
+    "IDateRequisite " +
+    "IDateRequisiteDescription " +
+    "IDateValue " +
+    "IDeaAccessRights " +
+    "IDeaObjectInfo " +
+    "IDevelopmentComponentLock " +
+    "IDialog " +
+    "IDialogFactory " +
+    "IDialogPickRequisiteItems " +
+    "IDialogsFactory " +
+    "IDICSFactory " +
+    "IDocRequisite " +
+    "IDocumentInfo " +
+    "IDualListDialog " +
+    "IECertificate " +
+    "IECertificateInfo " +
+    "IECertificates " +
+    "IEditControl " +
+    "IEditorForm " +
+    "IEdmsExplorer " +
+    "IEdmsObject " +
+    "IEdmsObjectDescription " +
+    "IEdmsObjectFactory " +
+    "IEdmsObjectInfo " +
+    "IEDocument " +
+    "IEDocumentAccessRights " +
+    "IEDocumentDescription " +
+    "IEDocumentEditor " +
+    "IEDocumentFactory " +
+    "IEDocumentInfo " +
+    "IEDocumentStorage " +
+    "IEDocumentVersion " +
+    "IEDocumentVersionListDialog " +
+    "IEDocumentVersionSource " +
+    "IEDocumentWizardStep " +
+    "IEDocVerSignature " +
+    "IEDocVersionState " +
+    "IEnabledMode " +
+    "IEncodeProvider " +
+    "IEncrypter " +
+    "IEvent " +
+    "IEventList " +
+    "IException " +
+    "IExternalEvents " +
+    "IExternalHandler " +
+    "IFactory " +
+    "IField " +
+    "IFileDialog " +
+    "IFolder " +
+    "IFolderDescription " +
+    "IFolderDialog " +
+    "IFolderFactory " +
+    "IFolderInfo " +
+    "IForEach " +
+    "IForm " +
+    "IFormTitle " +
+    "IFormWizardStep " +
+    "IGlobalIDFactory " +
+    "IGlobalIDInfo " +
+    "IGrid " +
+    "IHasher " +
+    "IHistoryDescription " +
+    "IHyperLinkControl " +
+    "IImageButton " +
+    "IImageControl " +
+    "IInnerPanel " +
+    "IInplaceHint " +
+    "IIntegerCriterion " +
+    "IIntegerList " +
+    "IIntegerRequisite " +
+    "IIntegerValue " +
+    "IISBLEditorForm " +
+    "IJob " +
+    "IJobDescription " +
+    "IJobFactory " +
+    "IJobForm " +
+    "IJobInfo " +
+    "ILabelControl " +
+    "ILargeIntegerCriterion " +
+    "ILargeIntegerRequisite " +
+    "ILargeIntegerValue " +
+    "ILicenseInfo " +
+    "ILifeCycleStage " +
+    "IList " +
+    "IListBox " +
+    "ILocalIDInfo " +
+    "ILocalization " +
+    "ILock " +
+    "IMemoryDataSet " +
+    "IMessagingFactory " +
+    "IMetadataRepository " +
+    "INotice " +
+    "INoticeInfo " +
+    "INumericCriterion " +
+    "INumericRequisite " +
+    "INumericValue " +
+    "IObject " +
+    "IObjectDescription " +
+    "IObjectImporter " +
+    "IObjectInfo " +
+    "IObserver " +
+    "IPanelGroup " +
+    "IPickCriterion " +
+    "IPickProperty " +
+    "IPickRequisite " +
+    "IPickRequisiteDescription " +
+    "IPickRequisiteItem " +
+    "IPickRequisiteItems " +
+    "IPickValue " +
+    "IPrivilege " +
+    "IPrivilegeList " +
+    "IProcess " +
+    "IProcessFactory " +
+    "IProcessMessage " +
+    "IProgress " +
+    "IProperty " +
+    "IPropertyChangeEvent " +
+    "IQuery " +
+    "IReference " +
+    "IReferenceCriterion " +
+    "IReferenceEnabledMode " +
+    "IReferenceFactory " +
+    "IReferenceHistoryDescription " +
+    "IReferenceInfo " +
+    "IReferenceRecordCardWizardStep " +
+    "IReferenceRequisiteDescription " +
+    "IReferencesFactory " +
+    "IReferenceValue " +
+    "IRefRequisite " +
+    "IReport " +
+    "IReportFactory " +
+    "IRequisite " +
+    "IRequisiteDescription " +
+    "IRequisiteDescriptionList " +
+    "IRequisiteFactory " +
+    "IRichEdit " +
+    "IRouteStep " +
+    "IRule " +
+    "IRuleList " +
+    "ISchemeBlock " +
+    "IScript " +
+    "IScriptFactory " +
+    "ISearchCriteria " +
+    "ISearchCriterion " +
+    "ISearchDescription " +
+    "ISearchFactory " +
+    "ISearchFolderInfo " +
+    "ISearchForObjectDescription " +
+    "ISearchResultRestrictions " +
+    "ISecuredContext " +
+    "ISelectDialog " +
+    "IServerEvent " +
+    "IServerEventFactory " +
+    "IServiceDialog " +
+    "IServiceFactory " +
+    "ISignature " +
+    "ISignProvider " +
+    "ISignProvider2 " +
+    "ISignProvider3 " +
+    "ISimpleCriterion " +
+    "IStringCriterion " +
+    "IStringList " +
+    "IStringRequisite " +
+    "IStringRequisiteDescription " +
+    "IStringValue " +
+    "ISystemDialogsFactory " +
+    "ISystemInfo " +
+    "ITabSheet " +
+    "ITask " +
+    "ITaskAbortReasonInfo " +
+    "ITaskCardWizardStep " +
+    "ITaskDescription " +
+    "ITaskFactory " +
+    "ITaskInfo " +
+    "ITaskRoute " +
+    "ITextCriterion " +
+    "ITextRequisite " +
+    "ITextValue " +
+    "ITreeListSelectDialog " +
+    "IUser " +
+    "IUserList " +
+    "IValue " +
+    "IView " +
+    "IWebBrowserControl " +
+    "IWizard " +
+    "IWizardAction " +
+    "IWizardFactory " +
+    "IWizardFormElement " +
+    "IWizardParam " +
+    "IWizardPickParam " +
+    "IWizardReferenceParam " +
+    "IWizardStep " +
+    "IWorkAccessRights " +
+    "IWorkDescription " +
+    "IWorkflowAskableParam " +
+    "IWorkflowAskableParams " +
+    "IWorkflowBlock " +
+    "IWorkflowBlockResult " +
+    "IWorkflowEnabledMode " +
+    "IWorkflowParam " +
+    "IWorkflowPickParam " +
+    "IWorkflowReferenceParam " +
+    "IWorkState " +
+    "IWorkTreeCustomNode " +
+    "IWorkTreeJobNode " +
+    "IWorkTreeTaskNode " +
+    "IXMLEditorForm " +
+    "SBCrypto ";
+
+  // built_in : встроенные или библиотечные объекты (константы, перечисления)
+  const BUILTIN = CONSTANTS + ENUMS;
+
+  // class: встроенные наборы значений, системные объекты, фабрики
+  const CLASS = predefined_variables;
+
+  // literal : примитивные типы
+  const LITERAL = "null true false nil ";
+
+  // number : числа
+  const NUMBERS = {
+    className: "number",
+    begin: hljs.NUMBER_RE,
+    relevance: 0
+  };
+
+  // string : строки
+  const STRINGS = {
+    className: "string",
+    variants: [
+      {
+        begin: '"',
+        end: '"'
+      },
+      {
+        begin: "'",
+        end: "'"
+      }
+    ]
+  };
+
+  // Токены
+  const DOCTAGS = {
+    className: "doctag",
+    begin: "\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",
+    relevance: 0
+  };
+
+  // Однострочный комментарий
+  const ISBL_LINE_COMMENT_MODE = {
+    className: "comment",
+    begin: "//",
+    end: "$",
+    relevance: 0,
+    contains: [
+      hljs.PHRASAL_WORDS_MODE,
+      DOCTAGS
+    ]
+  };
+
+  // Многострочный комментарий
+  const ISBL_BLOCK_COMMENT_MODE = {
+    className: "comment",
+    begin: "/\\*",
+    end: "\\*/",
+    relevance: 0,
+    contains: [
+      hljs.PHRASAL_WORDS_MODE,
+      DOCTAGS
+    ]
+  };
+
+  // comment : комментарии
+  const COMMENTS = {
+    variants: [
+      ISBL_LINE_COMMENT_MODE,
+      ISBL_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  // keywords : ключевые слова
+  const KEYWORDS = {
+    $pattern: UNDERSCORE_IDENT_RE,
+    keyword: KEYWORD,
+    built_in: BUILTIN,
+    class: CLASS,
+    literal: LITERAL
+  };
+
+  // methods : методы
+  const METHODS = {
+    begin: "\\.\\s*" + hljs.UNDERSCORE_IDENT_RE,
+    keywords: KEYWORDS,
+    relevance: 0
+  };
+
+  // type : встроенные типы
+  const TYPES = {
+    className: "type",
+    begin: ":[ \\t]*(" + interfaces.trim().replace(/\s/g, "|") + ")",
+    end: "[ \\t]*=",
+    excludeEnd: true
+  };
+
+  // variables : переменные
+  const VARIABLES = {
+    className: "variable",
+    keywords: KEYWORDS,
+    begin: UNDERSCORE_IDENT_RE,
+    relevance: 0,
+    contains: [
+      TYPES,
+      METHODS
+    ]
+  };
+
+  // Имена функций
+  const FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + "\\(";
+
+  const TITLE_MODE = {
+    className: "title",
+    keywords: {
+      $pattern: UNDERSCORE_IDENT_RE,
+      built_in: system_functions
+    },
+    begin: FUNCTION_TITLE,
+    end: "\\(",
+    returnBegin: true,
+    excludeEnd: true
+  };
+
+  // function : функции
+  const FUNCTIONS = {
+    className: "function",
+    begin: FUNCTION_TITLE,
+    end: "\\)$",
+    returnBegin: true,
+    keywords: KEYWORDS,
+    illegal: "[\\[\\]\\|\\$\\?%,~#@]",
+    contains: [
+      TITLE_MODE,
+      METHODS,
+      VARIABLES,
+      STRINGS,
+      NUMBERS,
+      COMMENTS
+    ]
+  };
+
+  return {
+    name: 'ISBL',
+    case_insensitive: true,
+    keywords: KEYWORDS,
+    illegal: "\\$|\\?|%|,|;$|~|#|@| {
+
+// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10
+var decimalDigits = '[0-9](_*[0-9])*';
+var frac = `\\.(${decimalDigits})`;
+var hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';
+var NUMERIC = {
+  className: 'number',
+  variants: [
+    // DecimalFloatingPointLiteral
+    // including ExponentPart
+    { begin: `(\\b(${decimalDigits})((${frac})|\\.)?|(${frac}))` +
+      `[eE][+-]?(${decimalDigits})[fFdD]?\\b` },
+    // excluding ExponentPart
+    { begin: `\\b(${decimalDigits})((${frac})[fFdD]?\\b|\\.([fFdD]\\b)?)` },
+    { begin: `(${frac})[fFdD]?\\b` },
+    { begin: `\\b(${decimalDigits})[fFdD]\\b` },
+
+    // HexadecimalFloatingPointLiteral
+    { begin: `\\b0[xX]((${hexDigits})\\.?|(${hexDigits})?\\.(${hexDigits}))` +
+      `[pP][+-]?(${decimalDigits})[fFdD]?\\b` },
+
+    // DecimalIntegerLiteral
+    { begin: '\\b(0|[1-9](_*[0-9])*)[lL]?\\b' },
+
+    // HexIntegerLiteral
+    { begin: `\\b0[xX](${hexDigits})[lL]?\\b` },
+
+    // OctalIntegerLiteral
+    { begin: '\\b0(_*[0-7])*[lL]?\\b' },
+
+    // BinaryIntegerLiteral
+    { begin: '\\b0[bB][01](_*[01])*[lL]?\\b' },
+  ],
+  relevance: 0
+};
+
+/*
+Language: Java
+Author: Vsevolod Solovyov 
+Category: common, enterprise
+Website: https://www.java.com/
+*/
+
+function java(hljs) {
+  var JAVA_IDENT_RE = '[\u00C0-\u02B8a-zA-Z_$][\u00C0-\u02B8a-zA-Z_$0-9]*';
+  var GENERIC_IDENT_RE = JAVA_IDENT_RE + '(<' + JAVA_IDENT_RE + '(\\s*,\\s*' + JAVA_IDENT_RE + ')*>)?';
+  var KEYWORDS = 'false synchronized int abstract float private char boolean var static null if const ' +
+    'for true while long strictfp finally protected import native final void ' +
+    'enum else break transient catch instanceof byte super volatile case assert short ' +
+    'package default double public try this switch continue throws protected public private ' +
+    'module requires exports do';
+
+  var ANNOTATION = {
+    className: 'meta',
+    begin: '@' + JAVA_IDENT_RE,
+    contains: [
+      {
+        begin: /\(/,
+        end: /\)/,
+        contains: ["self"] // allow nested () inside our annotation
+      },
+    ]
+  };
+  const NUMBER = NUMERIC;
+
+  return {
+    name: 'Java',
+    aliases: ['jsp'],
+    keywords: KEYWORDS,
+    illegal: /<\/|#/,
+    contains: [
+      hljs.COMMENT(
+        '/\\*\\*',
+        '\\*/',
+        {
+          relevance: 0,
+          contains: [
+            {
+              // eat up @'s in emails to prevent them to be recognized as doctags
+              begin: /\w+@/, relevance: 0
+            },
+            {
+              className: 'doctag',
+              begin: '@[A-Za-z]+'
+            }
+          ]
+        }
+      ),
+      // relevance boost
+      {
+        begin: /import java\.[a-z]+\./,
+        keywords: "import",
+        relevance: 2
+      },
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'class',
+        beginKeywords: 'class interface enum', end: /[{;=]/, excludeEnd: true,
+        // TODO: can this be removed somehow?
+        // an extra boost because Java is more popular than other languages with
+        // this same syntax feature (this is just to preserve our tests passing
+        // for now)
+        relevance: 1,
+        keywords: 'class interface enum',
+        illegal: /[:"\[\]]/,
+        contains: [
+          { beginKeywords: 'extends implements' },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      {
+        // Expression keywords prevent 'keyword Name(...)' from being
+        // recognized as a function definition
+        beginKeywords: 'new throw return else',
+        relevance: 0
+      },
+      {
+        className: 'class',
+        begin: 'record\\s+' + hljs.UNDERSCORE_IDENT_RE + '\\s*\\(',
+        returnBegin: true,
+        excludeEnd: true,
+        end: /[{;=]/,
+        keywords: KEYWORDS,
+        contains: [
+          { beginKeywords: "record" },
+          {
+            begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(',
+            returnBegin: true,
+            relevance: 0,
+            contains: [hljs.UNDERSCORE_TITLE_MODE]
+          },
+          {
+            className: 'params',
+            begin: /\(/, end: /\)/,
+            keywords: KEYWORDS,
+            relevance: 0,
+            contains: [
+              hljs.C_BLOCK_COMMENT_MODE
+            ]
+          },
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      {
+        className: 'function',
+        begin: '(' + GENERIC_IDENT_RE + '\\s+)+' + hljs.UNDERSCORE_IDENT_RE + '\\s*\\(', returnBegin: true, end: /[{;=]/,
+        excludeEnd: true,
+        keywords: KEYWORDS,
+        contains: [
+          {
+            begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(', returnBegin: true,
+            relevance: 0,
+            contains: [hljs.UNDERSCORE_TITLE_MODE]
+          },
+          {
+            className: 'params',
+            begin: /\(/, end: /\)/,
+            keywords: KEYWORDS,
+            relevance: 0,
+            contains: [
+              ANNOTATION,
+              hljs.APOS_STRING_MODE,
+              hljs.QUOTE_STRING_MODE,
+              NUMBER,
+              hljs.C_BLOCK_COMMENT_MODE
+            ]
+          },
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      NUMBER,
+      ANNOTATION
+    ]
+  };
+}
+
+module.exports = java;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/javascript.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/javascript.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';
+const KEYWORDS = [
+  "as", // for exports
+  "in",
+  "of",
+  "if",
+  "for",
+  "while",
+  "finally",
+  "var",
+  "new",
+  "function",
+  "do",
+  "return",
+  "void",
+  "else",
+  "break",
+  "catch",
+  "instanceof",
+  "with",
+  "throw",
+  "case",
+  "default",
+  "try",
+  "switch",
+  "continue",
+  "typeof",
+  "delete",
+  "let",
+  "yield",
+  "const",
+  "class",
+  // JS handles these with a special rule
+  // "get",
+  // "set",
+  "debugger",
+  "async",
+  "await",
+  "static",
+  "import",
+  "from",
+  "export",
+  "extends"
+];
+const LITERALS = [
+  "true",
+  "false",
+  "null",
+  "undefined",
+  "NaN",
+  "Infinity"
+];
+
+const TYPES = [
+  "Intl",
+  "DataView",
+  "Number",
+  "Math",
+  "Date",
+  "String",
+  "RegExp",
+  "Object",
+  "Function",
+  "Boolean",
+  "Error",
+  "Symbol",
+  "Set",
+  "Map",
+  "WeakSet",
+  "WeakMap",
+  "Proxy",
+  "Reflect",
+  "JSON",
+  "Promise",
+  "Float64Array",
+  "Int16Array",
+  "Int32Array",
+  "Int8Array",
+  "Uint16Array",
+  "Uint32Array",
+  "Float32Array",
+  "Array",
+  "Uint8Array",
+  "Uint8ClampedArray",
+  "ArrayBuffer",
+  "BigInt64Array",
+  "BigUint64Array",
+  "BigInt"
+];
+
+const ERROR_TYPES = [
+  "EvalError",
+  "InternalError",
+  "RangeError",
+  "ReferenceError",
+  "SyntaxError",
+  "TypeError",
+  "URIError"
+];
+
+const BUILT_IN_GLOBALS = [
+  "setInterval",
+  "setTimeout",
+  "clearInterval",
+  "clearTimeout",
+
+  "require",
+  "exports",
+
+  "eval",
+  "isFinite",
+  "isNaN",
+  "parseFloat",
+  "parseInt",
+  "decodeURI",
+  "decodeURIComponent",
+  "encodeURI",
+  "encodeURIComponent",
+  "escape",
+  "unescape"
+];
+
+const BUILT_IN_VARIABLES = [
+  "arguments",
+  "this",
+  "super",
+  "console",
+  "window",
+  "document",
+  "localStorage",
+  "module",
+  "global" // Node.js
+];
+
+const BUILT_INS = [].concat(
+  BUILT_IN_GLOBALS,
+  BUILT_IN_VARIABLES,
+  TYPES,
+  ERROR_TYPES
+);
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: JavaScript
+Description: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.
+Category: common, scripting
+Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript
+*/
+
+/** @type LanguageFn */
+function javascript(hljs) {
+  /**
+   * Takes a string like " {
+    const tag = "',
+    end: ''
+  };
+  const XML_TAG = {
+    begin: /<[A-Za-z0-9\\._:-]+/,
+    end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
+    /**
+     * @param {RegExpMatchArray} match
+     * @param {CallbackResponse} response
+     */
+    isTrulyOpeningTag: (match, response) => {
+      const afterMatchIndex = match[0].length + match.index;
+      const nextChar = match.input[afterMatchIndex];
+      // nested type?
+      // HTML should not include another raw `<` inside a tag
+      // But a type might: `>`, etc.
+      if (nextChar === "<") {
+        response.ignoreMatch();
+        return;
+      }
+      // 
+      // This is now either a tag or a type.
+      if (nextChar === ">") {
+        // if we cannot find a matching closing tag, then we
+        // will ignore it
+        if (!hasClosingTag(match, { after: afterMatchIndex })) {
+          response.ignoreMatch();
+        }
+      }
+    }
+  };
+  const KEYWORDS$1 = {
+    $pattern: IDENT_RE,
+    keyword: KEYWORDS,
+    literal: LITERALS,
+    built_in: BUILT_INS
+  };
+
+  // https://tc39.es/ecma262/#sec-literals-numeric-literals
+  const decimalDigits = '[0-9](_?[0-9])*';
+  const frac = `\\.(${decimalDigits})`;
+  // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral
+  // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals
+  const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;
+  const NUMBER = {
+    className: 'number',
+    variants: [
+      // DecimalLiteral
+      { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))` +
+        `[eE][+-]?(${decimalDigits})\\b` },
+      { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` },
+
+      // DecimalBigIntegerLiteral
+      { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` },
+
+      // NonDecimalIntegerLiteral
+      { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" },
+      { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" },
+      { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" },
+
+      // LegacyOctalIntegerLiteral (does not include underscore separators)
+      // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals
+      { begin: "\\b0[0-7]+n?\\b" },
+    ],
+    relevance: 0
+  };
+
+  const SUBST = {
+    className: 'subst',
+    begin: '\\$\\{',
+    end: '\\}',
+    keywords: KEYWORDS$1,
+    contains: [] // defined later
+  };
+  const HTML_TEMPLATE = {
+    begin: 'html`',
+    end: '',
+    starts: {
+      end: '`',
+      returnEnd: false,
+      contains: [
+        hljs.BACKSLASH_ESCAPE,
+        SUBST
+      ],
+      subLanguage: 'xml'
+    }
+  };
+  const CSS_TEMPLATE = {
+    begin: 'css`',
+    end: '',
+    starts: {
+      end: '`',
+      returnEnd: false,
+      contains: [
+        hljs.BACKSLASH_ESCAPE,
+        SUBST
+      ],
+      subLanguage: 'css'
+    }
+  };
+  const TEMPLATE_STRING = {
+    className: 'string',
+    begin: '`',
+    end: '`',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      SUBST
+    ]
+  };
+  const JSDOC_COMMENT = hljs.COMMENT(
+    /\/\*\*(?!\/)/,
+    '\\*/',
+    {
+      relevance: 0,
+      contains: [
+        {
+          className: 'doctag',
+          begin: '@[A-Za-z]+',
+          contains: [
+            {
+              className: 'type',
+              begin: '\\{',
+              end: '\\}',
+              relevance: 0
+            },
+            {
+              className: 'variable',
+              begin: IDENT_RE$1 + '(?=\\s*(-)|$)',
+              endsParent: true,
+              relevance: 0
+            },
+            // eat spaces (not newlines) so we can find
+            // types or variables
+            {
+              begin: /(?=[^\n])\s/,
+              relevance: 0
+            }
+          ]
+        }
+      ]
+    }
+  );
+  const COMMENT = {
+    className: "comment",
+    variants: [
+      JSDOC_COMMENT,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.C_LINE_COMMENT_MODE
+    ]
+  };
+  const SUBST_INTERNALS = [
+    hljs.APOS_STRING_MODE,
+    hljs.QUOTE_STRING_MODE,
+    HTML_TEMPLATE,
+    CSS_TEMPLATE,
+    TEMPLATE_STRING,
+    NUMBER,
+    hljs.REGEXP_MODE
+  ];
+  SUBST.contains = SUBST_INTERNALS
+    .concat({
+      // we need to pair up {} inside our subst to prevent
+      // it from ending too early by matching another }
+      begin: /\{/,
+      end: /\}/,
+      keywords: KEYWORDS$1,
+      contains: [
+        "self"
+      ].concat(SUBST_INTERNALS)
+    });
+  const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);
+  const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([
+    // eat recursive parens in sub expressions
+    {
+      begin: /\(/,
+      end: /\)/,
+      keywords: KEYWORDS$1,
+      contains: ["self"].concat(SUBST_AND_COMMENTS)
+    }
+  ]);
+  const PARAMS = {
+    className: 'params',
+    begin: /\(/,
+    end: /\)/,
+    excludeBegin: true,
+    excludeEnd: true,
+    keywords: KEYWORDS$1,
+    contains: PARAMS_CONTAINS
+  };
+
+  return {
+    name: 'Javascript',
+    aliases: ['js', 'jsx', 'mjs', 'cjs'],
+    keywords: KEYWORDS$1,
+    // this will be extended by TypeScript
+    exports: { PARAMS_CONTAINS },
+    illegal: /#(?![$_A-z])/,
+    contains: [
+      hljs.SHEBANG({
+        label: "shebang",
+        binary: "node",
+        relevance: 5
+      }),
+      {
+        label: "use_strict",
+        className: 'meta',
+        relevance: 10,
+        begin: /^\s*['"]use (strict|asm)['"]/
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      HTML_TEMPLATE,
+      CSS_TEMPLATE,
+      TEMPLATE_STRING,
+      COMMENT,
+      NUMBER,
+      { // object attr container
+        begin: concat(/[{,\n]\s*/,
+          // we need to look ahead to make sure that we actually have an
+          // attribute coming up so we don't steal a comma from a potential
+          // "value" container
+          //
+          // NOTE: this might not work how you think.  We don't actually always
+          // enter this mode and stay.  Instead it might merely match `,
+          // ` and then immediately end after the , because it
+          // fails to find any actual attrs. But this still does the job because
+          // it prevents the value contain rule from grabbing this instead and
+          // prevening this rule from firing when we actually DO have keys.
+          lookahead(concat(
+            // we also need to allow for multiple possible comments inbetween
+            // the first key:value pairing
+            /(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,
+            IDENT_RE$1 + '\\s*:'))),
+        relevance: 0,
+        contains: [
+          {
+            className: 'attr',
+            begin: IDENT_RE$1 + lookahead('\\s*:'),
+            relevance: 0
+          }
+        ]
+      },
+      { // "value" container
+        begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*',
+        keywords: 'return throw case',
+        contains: [
+          COMMENT,
+          hljs.REGEXP_MODE,
+          {
+            className: 'function',
+            // we have to count the parens to make sure we actually have the
+            // correct bounding ( ) before the =>.  There could be any number of
+            // sub-expressions inside also surrounded by parens.
+            begin: '(\\(' +
+            '[^()]*(\\(' +
+            '[^()]*(\\(' +
+            '[^()]*' +
+            '\\)[^()]*)*' +
+            '\\)[^()]*)*' +
+            '\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\s*=>',
+            returnBegin: true,
+            end: '\\s*=>',
+            contains: [
+              {
+                className: 'params',
+                variants: [
+                  {
+                    begin: hljs.UNDERSCORE_IDENT_RE,
+                    relevance: 0
+                  },
+                  {
+                    className: null,
+                    begin: /\(\s*\)/,
+                    skip: true
+                  },
+                  {
+                    begin: /\(/,
+                    end: /\)/,
+                    excludeBegin: true,
+                    excludeEnd: true,
+                    keywords: KEYWORDS$1,
+                    contains: PARAMS_CONTAINS
+                  }
+                ]
+              }
+            ]
+          },
+          { // could be a comma delimited list of params to a function call
+            begin: /,/, relevance: 0
+          },
+          {
+            className: '',
+            begin: /\s/,
+            end: /\s*/,
+            skip: true
+          },
+          { // JSX
+            variants: [
+              { begin: FRAGMENT.begin, end: FRAGMENT.end },
+              {
+                begin: XML_TAG.begin,
+                // we carefully check the opening tag to see if it truly
+                // is a tag and not a false positive
+                'on:begin': XML_TAG.isTrulyOpeningTag,
+                end: XML_TAG.end
+              }
+            ],
+            subLanguage: 'xml',
+            contains: [
+              {
+                begin: XML_TAG.begin,
+                end: XML_TAG.end,
+                skip: true,
+                contains: ['self']
+              }
+            ]
+          }
+        ],
+        relevance: 0
+      },
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: /[{;]/,
+        excludeEnd: true,
+        keywords: KEYWORDS$1,
+        contains: [
+          'self',
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+          PARAMS
+        ],
+        illegal: /%/
+      },
+      {
+        // prevent this from getting swallowed up by function
+        // since they appear "function like"
+        beginKeywords: "while if switch catch for"
+      },
+      {
+        className: 'function',
+        // we have to count the parens to make sure we actually have the correct
+        // bounding ( ).  There could be any number of sub-expressions inside
+        // also surrounded by parens.
+        begin: hljs.UNDERSCORE_IDENT_RE +
+          '\\(' + // first parens
+          '[^()]*(\\(' +
+            '[^()]*(\\(' +
+              '[^()]*' +
+            '\\)[^()]*)*' +
+          '\\)[^()]*)*' +
+          '\\)\\s*\\{', // end parens
+        returnBegin:true,
+        contains: [
+          PARAMS,
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+        ]
+      },
+      // hack: prevents detection of keywords in some circumstances
+      // .keyword()
+      // $keyword = x
+      {
+        variants: [
+          { begin: '\\.' + IDENT_RE$1 },
+          { begin: '\\$' + IDENT_RE$1 }
+        ],
+        relevance: 0
+      },
+      { // ES6 class
+        className: 'class',
+        beginKeywords: 'class',
+        end: /[{;=]/,
+        excludeEnd: true,
+        illegal: /[:"[\]]/,
+        contains: [
+          { beginKeywords: 'extends' },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      {
+        begin: /\b(?=constructor)/,
+        end: /[{;]/,
+        excludeEnd: true,
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+          'self',
+          PARAMS
+        ]
+      },
+      {
+        begin: '(get|set)\\s+(?=' + IDENT_RE$1 + '\\()',
+        end: /\{/,
+        keywords: "get set",
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+          { begin: /\(\)/ }, // eat to avoid empty params
+          PARAMS
+        ]
+      },
+      {
+        begin: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`
+      }
+    ]
+  };
+}
+
+module.exports = javascript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/jboss-cli.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/jboss-cli.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/*
+ Language: JBoss CLI
+ Author: Raphaël Parrëe 
+ Description: language definition jboss cli
+ Website: https://docs.jboss.org/author/display/WFLY/Command+Line+Interface
+ Category: config
+ */
+
+function jbossCli(hljs) {
+  const PARAM = {
+    begin: /[\w-]+ *=/,
+    returnBegin: true,
+    relevance: 0,
+    contains: [
+      {
+        className: 'attr',
+        begin: /[\w-]+/
+      }
+    ]
+  };
+  const PARAMSBLOCK = {
+    className: 'params',
+    begin: /\(/,
+    end: /\)/,
+    contains: [PARAM],
+    relevance: 0
+  };
+  const OPERATION = {
+    className: 'function',
+    begin: /:[\w\-.]+/,
+    relevance: 0
+  };
+  const PATH = {
+    className: 'string',
+    begin: /\B([\/.])[\w\-.\/=]+/
+  };
+  const COMMAND_PARAMS = {
+    className: 'params',
+    begin: /--[\w\-=\/]+/
+  };
+  return {
+    name: 'JBoss CLI',
+    aliases: ['wildfly-cli'],
+    keywords: {
+      $pattern: '[a-z\-]+',
+      keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' +
+      'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' +
+      'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' +
+      'undeploy unset version xa-data-source', // module
+      literal: 'true false'
+    },
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      COMMAND_PARAMS,
+      OPERATION,
+      PATH,
+      PARAMSBLOCK
+    ]
+  };
+}
+
+module.exports = jbossCli;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/json.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/json.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: JSON
+Description: JSON (JavaScript Object Notation) is a lightweight data-interchange format.
+Author: Ivan Sagalaev 
+Website: http://www.json.org
+Category: common, protocols
+*/
+
+function json(hljs) {
+  const LITERALS = {
+    literal: 'true false null'
+  };
+  const ALLOWED_COMMENTS = [
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE
+  ];
+  const TYPES = [
+    hljs.QUOTE_STRING_MODE,
+    hljs.C_NUMBER_MODE
+  ];
+  const VALUE_CONTAINER = {
+    end: ',',
+    endsWithParent: true,
+    excludeEnd: true,
+    contains: TYPES,
+    keywords: LITERALS
+  };
+  const OBJECT = {
+    begin: /\{/,
+    end: /\}/,
+    contains: [
+      {
+        className: 'attr',
+        begin: /"/,
+        end: /"/,
+        contains: [hljs.BACKSLASH_ESCAPE],
+        illegal: '\\n'
+      },
+      hljs.inherit(VALUE_CONTAINER, {
+        begin: /:/
+      })
+    ].concat(ALLOWED_COMMENTS),
+    illegal: '\\S'
+  };
+  const ARRAY = {
+    begin: '\\[',
+    end: '\\]',
+    contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents
+    illegal: '\\S'
+  };
+  TYPES.push(OBJECT, ARRAY);
+  ALLOWED_COMMENTS.forEach(function(rule) {
+    TYPES.push(rule);
+  });
+  return {
+    name: 'JSON',
+    contains: TYPES,
+    keywords: LITERALS,
+    illegal: '\\S'
+  };
+}
+
+module.exports = json;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/julia-repl.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/julia-repl.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Julia REPL
+Description: Julia REPL sessions
+Author: Morten Piibeleht 
+Website: https://julialang.org
+Requires: julia.js
+
+The Julia REPL code blocks look something like the following:
+
+  julia> function foo(x)
+             x + 1
+         end
+  foo (generic function with 1 method)
+
+They start on a new line with "julia>". Usually there should also be a space after this, but
+we also allow the code to start right after the > character. The code may run over multiple
+lines, but the additional lines must start with six spaces (i.e. be indented to match
+"julia>"). The rest of the code is assumed to be output from the executed code and will be
+left un-highlighted.
+
+Using simply spaces to identify line continuations may get a false-positive if the output
+also prints out six spaces, but such cases should be rare.
+*/
+
+function juliaRepl(hljs) {
+  return {
+    name: 'Julia REPL',
+    contains: [
+      {
+        className: 'meta',
+        begin: /^julia>/,
+        relevance: 10,
+        starts: {
+          // end the highlighting if we are on a new line and the line does not have at
+          // least six spaces in the beginning
+          end: /^(?![ ]{6})/,
+          subLanguage: 'julia'
+      },
+      // jldoctest Markdown blocks are used in the Julia manual and package docs indicate
+      // code snippets that should be verified when the documentation is built. They can be
+      // either REPL-like or script-like, but are usually REPL-like and therefore we apply
+      // julia-repl highlighting to them. More information can be found in Documenter's
+      // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html
+      aliases: ['jldoctest']
+      }
+    ]
+  }
+}
+
+module.exports = juliaRepl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/julia.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/julia.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Julia
+Description: Julia is a high-level, high-performance, dynamic programming language.
+Author: Kenta Sato 
+Contributors: Alex Arslan , Fredrik Ekre 
+Website: https://julialang.org
+*/
+
+function julia(hljs) {
+  // Since there are numerous special names in Julia, it is too much trouble
+  // to maintain them by hand. Hence these names (i.e. keywords, literals and
+  // built-ins) are automatically generated from Julia 1.5.2 itself through
+  // the following scripts for each.
+
+  // ref: https://docs.julialang.org/en/v1/manual/variables/#Allowed-Variable-Names
+  var VARIABLE_NAME_RE = '[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*';
+
+  // # keyword generator, multi-word keywords handled manually below (Julia 1.5.2)
+  // import REPL.REPLCompletions
+  // res = String["in", "isa", "where"]
+  // for kw in collect(x.keyword for x in REPLCompletions.complete_keyword(""))
+  //     if !(contains(kw, " ") || kw == "struct")
+  //         push!(res, kw)
+  //     end
+  // end
+  // sort!(unique!(res))
+  // foreach(x -> println("\'", x, "\',"), res)
+  var KEYWORD_LIST = [
+    'baremodule',
+    'begin',
+    'break',
+    'catch',
+    'ccall',
+    'const',
+    'continue',
+    'do',
+    'else',
+    'elseif',
+    'end',
+    'export',
+    'false',
+    'finally',
+    'for',
+    'function',
+    'global',
+    'if',
+    'import',
+    'in',
+    'isa',
+    'let',
+    'local',
+    'macro',
+    'module',
+    'quote',
+    'return',
+    'true',
+    'try',
+    'using',
+    'where',
+    'while',
+  ];
+
+  // # literal generator (Julia 1.5.2)
+  // import REPL.REPLCompletions
+  // res = String["true", "false"]
+  // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core),
+  //                     REPLCompletions.completions("", 0)[1])
+  //     try
+  //         v = eval(Symbol(compl.mod))
+  //         if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon)
+  //             push!(res, compl.mod)
+  //         end
+  //     catch e
+  //     end
+  // end
+  // sort!(unique!(res))
+  // foreach(x -> println("\'", x, "\',"), res)
+  var LITERAL_LIST = [
+    'ARGS',
+    'C_NULL',
+    'DEPOT_PATH',
+    'ENDIAN_BOM',
+    'ENV',
+    'Inf',
+    'Inf16',
+    'Inf32',
+    'Inf64',
+    'InsertionSort',
+    'LOAD_PATH',
+    'MergeSort',
+    'NaN',
+    'NaN16',
+    'NaN32',
+    'NaN64',
+    'PROGRAM_FILE',
+    'QuickSort',
+    'RoundDown',
+    'RoundFromZero',
+    'RoundNearest',
+    'RoundNearestTiesAway',
+    'RoundNearestTiesUp',
+    'RoundToZero',
+    'RoundUp',
+    'VERSION|0',
+    'devnull',
+    'false',
+    'im',
+    'missing',
+    'nothing',
+    'pi',
+    'stderr',
+    'stdin',
+    'stdout',
+    'true',
+    'undef',
+    'π',
+    'ℯ',
+  ];
+
+  // # built_in generator (Julia 1.5.2)
+  // import REPL.REPLCompletions
+  // res = String[]
+  // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core),
+  //                     REPLCompletions.completions("", 0)[1])
+  //     try
+  //         v = eval(Symbol(compl.mod))
+  //         if (v isa Type || v isa TypeVar) && (compl.mod != "=>")
+  //             push!(res, compl.mod)
+  //         end
+  //     catch e
+  //     end
+  // end
+  // sort!(unique!(res))
+  // foreach(x -> println("\'", x, "\',"), res)
+  var BUILT_IN_LIST = [
+    'AbstractArray',
+    'AbstractChannel',
+    'AbstractChar',
+    'AbstractDict',
+    'AbstractDisplay',
+    'AbstractFloat',
+    'AbstractIrrational',
+    'AbstractMatrix',
+    'AbstractRange',
+    'AbstractSet',
+    'AbstractString',
+    'AbstractUnitRange',
+    'AbstractVecOrMat',
+    'AbstractVector',
+    'Any',
+    'ArgumentError',
+    'Array',
+    'AssertionError',
+    'BigFloat',
+    'BigInt',
+    'BitArray',
+    'BitMatrix',
+    'BitSet',
+    'BitVector',
+    'Bool',
+    'BoundsError',
+    'CapturedException',
+    'CartesianIndex',
+    'CartesianIndices',
+    'Cchar',
+    'Cdouble',
+    'Cfloat',
+    'Channel',
+    'Char',
+    'Cint',
+    'Cintmax_t',
+    'Clong',
+    'Clonglong',
+    'Cmd',
+    'Colon',
+    'Complex',
+    'ComplexF16',
+    'ComplexF32',
+    'ComplexF64',
+    'CompositeException',
+    'Condition',
+    'Cptrdiff_t',
+    'Cshort',
+    'Csize_t',
+    'Cssize_t',
+    'Cstring',
+    'Cuchar',
+    'Cuint',
+    'Cuintmax_t',
+    'Culong',
+    'Culonglong',
+    'Cushort',
+    'Cvoid',
+    'Cwchar_t',
+    'Cwstring',
+    'DataType',
+    'DenseArray',
+    'DenseMatrix',
+    'DenseVecOrMat',
+    'DenseVector',
+    'Dict',
+    'DimensionMismatch',
+    'Dims',
+    'DivideError',
+    'DomainError',
+    'EOFError',
+    'Enum',
+    'ErrorException',
+    'Exception',
+    'ExponentialBackOff',
+    'Expr',
+    'Float16',
+    'Float32',
+    'Float64',
+    'Function',
+    'GlobalRef',
+    'HTML',
+    'IO',
+    'IOBuffer',
+    'IOContext',
+    'IOStream',
+    'IdDict',
+    'IndexCartesian',
+    'IndexLinear',
+    'IndexStyle',
+    'InexactError',
+    'InitError',
+    'Int',
+    'Int128',
+    'Int16',
+    'Int32',
+    'Int64',
+    'Int8',
+    'Integer',
+    'InterruptException',
+    'InvalidStateException',
+    'Irrational',
+    'KeyError',
+    'LinRange',
+    'LineNumberNode',
+    'LinearIndices',
+    'LoadError',
+    'MIME',
+    'Matrix',
+    'Method',
+    'MethodError',
+    'Missing',
+    'MissingException',
+    'Module',
+    'NTuple',
+    'NamedTuple',
+    'Nothing',
+    'Number',
+    'OrdinalRange',
+    'OutOfMemoryError',
+    'OverflowError',
+    'Pair',
+    'PartialQuickSort',
+    'PermutedDimsArray',
+    'Pipe',
+    'ProcessFailedException',
+    'Ptr',
+    'QuoteNode',
+    'Rational',
+    'RawFD',
+    'ReadOnlyMemoryError',
+    'Real',
+    'ReentrantLock',
+    'Ref',
+    'Regex',
+    'RegexMatch',
+    'RoundingMode',
+    'SegmentationFault',
+    'Set',
+    'Signed',
+    'Some',
+    'StackOverflowError',
+    'StepRange',
+    'StepRangeLen',
+    'StridedArray',
+    'StridedMatrix',
+    'StridedVecOrMat',
+    'StridedVector',
+    'String',
+    'StringIndexError',
+    'SubArray',
+    'SubString',
+    'SubstitutionString',
+    'Symbol',
+    'SystemError',
+    'Task',
+    'TaskFailedException',
+    'Text',
+    'TextDisplay',
+    'Timer',
+    'Tuple',
+    'Type',
+    'TypeError',
+    'TypeVar',
+    'UInt',
+    'UInt128',
+    'UInt16',
+    'UInt32',
+    'UInt64',
+    'UInt8',
+    'UndefInitializer',
+    'UndefKeywordError',
+    'UndefRefError',
+    'UndefVarError',
+    'Union',
+    'UnionAll',
+    'UnitRange',
+    'Unsigned',
+    'Val',
+    'Vararg',
+    'VecElement',
+    'VecOrMat',
+    'Vector',
+    'VersionNumber',
+    'WeakKeyDict',
+    'WeakRef',
+  ];
+
+  var KEYWORDS = {
+    $pattern: VARIABLE_NAME_RE,
+    keyword: KEYWORD_LIST,
+    literal: LITERAL_LIST,
+    built_in: BUILT_IN_LIST,
+  };
+
+  // placeholder for recursive self-reference
+  var DEFAULT = {
+    keywords: KEYWORDS, illegal: /<\//
+  };
+
+  // ref: https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/
+  var NUMBER = {
+    className: 'number',
+    // supported numeric literals:
+    //  * binary literal (e.g. 0x10)
+    //  * octal literal (e.g. 0o76543210)
+    //  * hexadecimal literal (e.g. 0xfedcba876543210)
+    //  * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2)
+    //  * decimal literal (e.g. 9876543210, 100_000_000)
+    //  * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10)
+    begin: /(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,
+    relevance: 0
+  };
+
+  var CHAR = {
+    className: 'string',
+    begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/
+  };
+
+  var INTERPOLATION = {
+    className: 'subst',
+    begin: /\$\(/, end: /\)/,
+    keywords: KEYWORDS
+  };
+
+  var INTERPOLATED_VARIABLE = {
+    className: 'variable',
+    begin: '\\$' + VARIABLE_NAME_RE
+  };
+
+  // TODO: neatly escape normal code in string literal
+  var STRING = {
+    className: 'string',
+    contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],
+    variants: [
+      { begin: /\w*"""/, end: /"""\w*/, relevance: 10 },
+      { begin: /\w*"/, end: /"\w*/ }
+    ]
+  };
+
+  var COMMAND = {
+    className: 'string',
+    contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],
+    begin: '`', end: '`'
+  };
+
+  var MACROCALL = {
+    className: 'meta',
+    begin: '@' + VARIABLE_NAME_RE
+  };
+
+  var COMMENT = {
+    className: 'comment',
+    variants: [
+      { begin: '#=', end: '=#', relevance: 10 },
+      { begin: '#', end: '$' }
+    ]
+  };
+
+  DEFAULT.name = 'Julia';
+  DEFAULT.contains = [
+    NUMBER,
+    CHAR,
+    STRING,
+    COMMAND,
+    MACROCALL,
+    COMMENT,
+    hljs.HASH_COMMENT_MODE,
+    {
+      className: 'keyword',
+      begin:
+        '\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b'
+    },
+    {begin: /<:/}  // relevance booster
+  ];
+  INTERPOLATION.contains = DEFAULT.contains;
+
+  return DEFAULT;
+}
+
+module.exports = julia;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/kotlin.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/kotlin.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10
+var decimalDigits = '[0-9](_*[0-9])*';
+var frac = `\\.(${decimalDigits})`;
+var hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';
+var NUMERIC = {
+  className: 'number',
+  variants: [
+    // DecimalFloatingPointLiteral
+    // including ExponentPart
+    { begin: `(\\b(${decimalDigits})((${frac})|\\.)?|(${frac}))` +
+      `[eE][+-]?(${decimalDigits})[fFdD]?\\b` },
+    // excluding ExponentPart
+    { begin: `\\b(${decimalDigits})((${frac})[fFdD]?\\b|\\.([fFdD]\\b)?)` },
+    { begin: `(${frac})[fFdD]?\\b` },
+    { begin: `\\b(${decimalDigits})[fFdD]\\b` },
+
+    // HexadecimalFloatingPointLiteral
+    { begin: `\\b0[xX]((${hexDigits})\\.?|(${hexDigits})?\\.(${hexDigits}))` +
+      `[pP][+-]?(${decimalDigits})[fFdD]?\\b` },
+
+    // DecimalIntegerLiteral
+    { begin: '\\b(0|[1-9](_*[0-9])*)[lL]?\\b' },
+
+    // HexIntegerLiteral
+    { begin: `\\b0[xX](${hexDigits})[lL]?\\b` },
+
+    // OctalIntegerLiteral
+    { begin: '\\b0(_*[0-7])*[lL]?\\b' },
+
+    // BinaryIntegerLiteral
+    { begin: '\\b0[bB][01](_*[01])*[lL]?\\b' },
+  ],
+  relevance: 0
+};
+
+/*
+ Language: Kotlin
+ Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native.
+ Author: Sergey Mashkov 
+ Website: https://kotlinlang.org
+ Category: common
+ */
+
+function kotlin(hljs) {
+  const KEYWORDS = {
+    keyword:
+      'abstract as val var vararg get set class object open private protected public noinline ' +
+      'crossinline dynamic final enum if else do while for when throw try catch finally ' +
+      'import package is in fun override companion reified inline lateinit init ' +
+      'interface annotation data sealed internal infix operator out by constructor super ' +
+      'tailrec where const inner suspend typealias external expect actual',
+    built_in:
+      'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',
+    literal:
+      'true false null'
+  };
+  const KEYWORDS_WITH_LABEL = {
+    className: 'keyword',
+    begin: /\b(break|continue|return|this)\b/,
+    starts: {
+      contains: [
+        {
+          className: 'symbol',
+          begin: /@\w+/
+        }
+      ]
+    }
+  };
+  const LABEL = {
+    className: 'symbol',
+    begin: hljs.UNDERSCORE_IDENT_RE + '@'
+  };
+
+  // for string templates
+  const SUBST = {
+    className: 'subst',
+    begin: /\$\{/,
+    end: /\}/,
+    contains: [ hljs.C_NUMBER_MODE ]
+  };
+  const VARIABLE = {
+    className: 'variable',
+    begin: '\\$' + hljs.UNDERSCORE_IDENT_RE
+  };
+  const STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: '"""',
+        end: '"""(?=[^"])',
+        contains: [
+          VARIABLE,
+          SUBST
+        ]
+      },
+      // Can't use built-in modes easily, as we want to use STRING in the meta
+      // context as 'meta-string' and there's no syntax to remove explicitly set
+      // classNames in built-in modes.
+      {
+        begin: '\'',
+        end: '\'',
+        illegal: /\n/,
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        begin: '"',
+        end: '"',
+        illegal: /\n/,
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          VARIABLE,
+          SUBST
+        ]
+      }
+    ]
+  };
+  SUBST.contains.push(STRING);
+
+  const ANNOTATION_USE_SITE = {
+    className: 'meta',
+    begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'
+  };
+  const ANNOTATION = {
+    className: 'meta',
+    begin: '@' + hljs.UNDERSCORE_IDENT_RE,
+    contains: [
+      {
+        begin: /\(/,
+        end: /\)/,
+        contains: [
+          hljs.inherit(STRING, {
+            className: 'meta-string'
+          })
+        ]
+      }
+    ]
+  };
+
+  // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals
+  // According to the doc above, the number mode of kotlin is the same as java 8,
+  // so the code below is copied from java.js
+  const KOTLIN_NUMBER_MODE = NUMERIC;
+  const KOTLIN_NESTED_COMMENT = hljs.COMMENT(
+    '/\\*', '\\*/',
+    {
+      contains: [ hljs.C_BLOCK_COMMENT_MODE ]
+    }
+  );
+  const KOTLIN_PAREN_TYPE = {
+    variants: [
+      {
+        className: 'type',
+        begin: hljs.UNDERSCORE_IDENT_RE
+      },
+      {
+        begin: /\(/,
+        end: /\)/,
+        contains: [] // defined later
+      }
+    ]
+  };
+  const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;
+  KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ];
+  KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ];
+
+  return {
+    name: 'Kotlin',
+    aliases: [ 'kt', 'kts' ],
+    keywords: KEYWORDS,
+    contains: [
+      hljs.COMMENT(
+        '/\\*\\*',
+        '\\*/',
+        {
+          relevance: 0,
+          contains: [
+            {
+              className: 'doctag',
+              begin: '@[A-Za-z]+'
+            }
+          ]
+        }
+      ),
+      hljs.C_LINE_COMMENT_MODE,
+      KOTLIN_NESTED_COMMENT,
+      KEYWORDS_WITH_LABEL,
+      LABEL,
+      ANNOTATION_USE_SITE,
+      ANNOTATION,
+      {
+        className: 'function',
+        beginKeywords: 'fun',
+        end: '[(]|$',
+        returnBegin: true,
+        excludeEnd: true,
+        keywords: KEYWORDS,
+        relevance: 5,
+        contains: [
+          {
+            begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(',
+            returnBegin: true,
+            relevance: 0,
+            contains: [ hljs.UNDERSCORE_TITLE_MODE ]
+          },
+          {
+            className: 'type',
+            begin: //,
+            keywords: 'reified',
+            relevance: 0
+          },
+          {
+            className: 'params',
+            begin: /\(/,
+            end: /\)/,
+            endsParent: true,
+            keywords: KEYWORDS,
+            relevance: 0,
+            contains: [
+              {
+                begin: /:/,
+                end: /[=,\/]/,
+                endsWithParent: true,
+                contains: [
+                  KOTLIN_PAREN_TYPE,
+                  hljs.C_LINE_COMMENT_MODE,
+                  KOTLIN_NESTED_COMMENT
+                ],
+                relevance: 0
+              },
+              hljs.C_LINE_COMMENT_MODE,
+              KOTLIN_NESTED_COMMENT,
+              ANNOTATION_USE_SITE,
+              ANNOTATION,
+              STRING,
+              hljs.C_NUMBER_MODE
+            ]
+          },
+          KOTLIN_NESTED_COMMENT
+        ]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class interface trait', // remove 'trait' when removed from KEYWORDS
+        end: /[:\{(]|$/,
+        excludeEnd: true,
+        illegal: 'extends implements',
+        contains: [
+          {
+            beginKeywords: 'public protected internal private constructor'
+          },
+          hljs.UNDERSCORE_TITLE_MODE,
+          {
+            className: 'type',
+            begin: //,
+            excludeBegin: true,
+            excludeEnd: true,
+            relevance: 0
+          },
+          {
+            className: 'type',
+            begin: /[,:]\s*/,
+            end: /[<\(,]|$/,
+            excludeBegin: true,
+            returnEnd: true
+          },
+          ANNOTATION_USE_SITE,
+          ANNOTATION
+        ]
+      },
+      STRING,
+      {
+        className: 'meta',
+        begin: "^#!/usr/bin/env",
+        end: '$',
+        illegal: '\n'
+      },
+      KOTLIN_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = kotlin;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/lasso.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/lasso.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Lasso
+Author: Eric Knibbe 
+Description: Lasso is a language and server platform for database-driven web applications. This definition handles Lasso 9 syntax and LassoScript for Lasso 8.6 and earlier.
+Website: http://www.lassosoft.com/What-Is-Lasso
+*/
+
+function lasso(hljs) {
+  const LASSO_IDENT_RE = '[a-zA-Z_][\\w.]*';
+  const LASSO_ANGLE_RE = '<\\?(lasso(script)?|=)';
+  const LASSO_CLOSE_RE = '\\]|\\?>';
+  const LASSO_KEYWORDS = {
+    $pattern: LASSO_IDENT_RE + '|&[lg]t;',
+    literal:
+      'true false none minimal full all void and or not ' +
+      'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',
+    built_in:
+      'array date decimal duration integer map pair string tag xml null ' +
+      'boolean bytes keyword list locale queue set stack staticarray ' +
+      'local var variable global data self inherited currentcapture givenblock',
+    keyword:
+      'cache database_names database_schemanames database_tablenames ' +
+      'define_tag define_type email_batch encode_set html_comment handle ' +
+      'handle_error header if inline iterate ljax_target link ' +
+      'link_currentaction link_currentgroup link_currentrecord link_detail ' +
+      'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +
+      'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +
+      'loop namespace_using output_none portal private protect records ' +
+      'referer referrer repeating resultset rows search_args ' +
+      'search_arguments select sort_args sort_arguments thread_atomic ' +
+      'value_list while abort case else fail_if fail_ifnot fail if_empty ' +
+      'if_false if_null if_true loop_abort loop_continue loop_count params ' +
+      'params_up return return_value run_children soap_definetag ' +
+      'soap_lastrequest soap_lastresponse tag_name ascending average by ' +
+      'define descending do equals frozen group handle_failure import in ' +
+      'into join let match max min on order parent protected provide public ' +
+      'require returnhome skip split_thread sum take thread to trait type ' +
+      'where with yield yieldhome'
+  };
+  const HTML_COMMENT = hljs.COMMENT(
+    '',
+    {
+      relevance: 0
+    }
+  );
+  const LASSO_NOPROCESS = {
+    className: 'meta',
+    begin: '\\[noprocess\\]',
+    starts: {
+      end: '\\[/noprocess\\]',
+      returnEnd: true,
+      contains: [HTML_COMMENT]
+    }
+  };
+  const LASSO_START = {
+    className: 'meta',
+    begin: '\\[/noprocess|' + LASSO_ANGLE_RE
+  };
+  const LASSO_DATAMEMBER = {
+    className: 'symbol',
+    begin: '\'' + LASSO_IDENT_RE + '\''
+  };
+  const LASSO_CODE = [
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    hljs.inherit(hljs.C_NUMBER_MODE, {
+      begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\b'
+    }),
+    hljs.inherit(hljs.APOS_STRING_MODE, {
+      illegal: null
+    }),
+    hljs.inherit(hljs.QUOTE_STRING_MODE, {
+      illegal: null
+    }),
+    {
+      className: 'string',
+      begin: '`',
+      end: '`'
+    },
+    { // variables
+      variants: [
+        {
+          begin: '[#$]' + LASSO_IDENT_RE
+        },
+        {
+          begin: '#',
+          end: '\\d+',
+          illegal: '\\W'
+        }
+      ]
+    },
+    {
+      className: 'type',
+      begin: '::\\s*',
+      end: LASSO_IDENT_RE,
+      illegal: '\\W'
+    },
+    {
+      className: 'params',
+      variants: [
+        {
+          begin: '-(?!infinity)' + LASSO_IDENT_RE,
+          relevance: 0
+        },
+        {
+          begin: '(\\.\\.\\.)'
+        }
+      ]
+    },
+    {
+      begin: /(->|\.)\s*/,
+      relevance: 0,
+      contains: [LASSO_DATAMEMBER]
+    },
+    {
+      className: 'class',
+      beginKeywords: 'define',
+      returnEnd: true,
+      end: '\\(|=>',
+      contains: [
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'
+        })
+      ]
+    }
+  ];
+  return {
+    name: 'Lasso',
+    aliases: [
+      'ls',
+      'lassoscript'
+    ],
+    case_insensitive: true,
+    keywords: LASSO_KEYWORDS,
+    contains: [
+      {
+        className: 'meta',
+        begin: LASSO_CLOSE_RE,
+        relevance: 0,
+        starts: { // markup
+          end: '\\[|' + LASSO_ANGLE_RE,
+          returnEnd: true,
+          relevance: 0,
+          contains: [HTML_COMMENT]
+        }
+      },
+      LASSO_NOPROCESS,
+      LASSO_START,
+      {
+        className: 'meta',
+        begin: '\\[no_square_brackets',
+        starts: {
+          end: '\\[/no_square_brackets\\]', // not implemented in the language
+          keywords: LASSO_KEYWORDS,
+          contains: [
+            {
+              className: 'meta',
+              begin: LASSO_CLOSE_RE,
+              relevance: 0,
+              starts: {
+                end: '\\[noprocess\\]|' + LASSO_ANGLE_RE,
+                returnEnd: true,
+                contains: [HTML_COMMENT]
+              }
+            },
+            LASSO_NOPROCESS,
+            LASSO_START
+          ].concat(LASSO_CODE)
+        }
+      },
+      {
+        className: 'meta',
+        begin: '\\[',
+        relevance: 0
+      },
+      {
+        className: 'meta',
+        begin: '^#!',
+        end: 'lasso9$',
+        relevance: 10
+      }
+    ].concat(LASSO_CODE)
+  };
+}
+
+module.exports = lasso;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/latex.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/latex.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: LaTeX
+Author: Benedikt Wilde 
+Website: https://www.latex-project.org
+Category: markup
+*/
+
+/** @type LanguageFn */
+function latex(hljs) {
+  const KNOWN_CONTROL_WORDS = either(...[
+      '(?:NeedsTeXFormat|RequirePackage|GetIdInfo)',
+      'Provides(?:Expl)?(?:Package|Class|File)',
+      '(?:DeclareOption|ProcessOptions)',
+      '(?:documentclass|usepackage|input|include)',
+      'makeat(?:letter|other)',
+      'ExplSyntax(?:On|Off)',
+      '(?:new|renew|provide)?command',
+      '(?:re)newenvironment',
+      '(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand',
+      '(?:New|Renew|Provide|Declare)DocumentEnvironment',
+      '(?:(?:e|g|x)?def|let)',
+      '(?:begin|end)',
+      '(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)',
+      'caption',
+      '(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)',
+      '(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)',
+      '(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)',
+      '(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)',
+      '(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)',
+      '(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)'
+    ].map(word => word + '(?![a-zA-Z@:_])'));
+  const L3_REGEX = new RegExp([
+      // A function \module_function_name:signature or \__module_function_name:signature,
+      // where both module and function_name need at least two characters and
+      // function_name may contain single underscores.
+      '(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*',
+      // A variable \scope_module_and_name_type or \scope__module_ane_name_type,
+      // where scope is one of l, g or c, type needs at least two characters
+      // and module_and_name may contain single underscores.
+      '[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}',
+      // A quark \q_the_name or \q__the_name or
+      // scan mark \s_the_name or \s__vthe_name,
+      // where variable_name needs at least two characters and
+      // may contain single underscores.
+      '[qs]__?[a-zA-Z](?:_?[a-zA-Z])+',
+      // Other LaTeX3 macro names that are not covered by the three rules above.
+      'use(?:_i)?:[a-zA-Z]*',
+      '(?:else|fi|or):',
+      '(?:if|cs|exp):w',
+      '(?:hbox|vbox):n',
+      '::[a-zA-Z]_unbraced',
+      '::[a-zA-Z:]'
+    ].map(pattern => pattern + '(?![a-zA-Z:_])').join('|'));
+  const L2_VARIANTS = [
+    {begin: /[a-zA-Z@]+/}, // control word
+    {begin: /[^a-zA-Z@]?/} // control symbol
+  ];
+  const DOUBLE_CARET_VARIANTS = [
+    {begin: /\^{6}[0-9a-f]{6}/},
+    {begin: /\^{5}[0-9a-f]{5}/},
+    {begin: /\^{4}[0-9a-f]{4}/},
+    {begin: /\^{3}[0-9a-f]{3}/},
+    {begin: /\^{2}[0-9a-f]{2}/},
+    {begin: /\^{2}[\u0000-\u007f]/}
+  ];
+  const CONTROL_SEQUENCE = {
+    className: 'keyword',
+    begin: /\\/,
+    relevance: 0,
+    contains: [
+      {
+        endsParent: true,
+        begin: KNOWN_CONTROL_WORDS
+      },
+      {
+        endsParent: true,
+        begin: L3_REGEX
+      },
+      {
+        endsParent: true,
+        variants: DOUBLE_CARET_VARIANTS
+      },
+      {
+        endsParent: true,
+        relevance: 0,
+        variants: L2_VARIANTS
+      }
+    ]
+  };
+  const MACRO_PARAM = {
+    className: 'params',
+    relevance: 0,
+    begin: /#+\d?/
+  };
+  const DOUBLE_CARET_CHAR = {
+    // relevance: 1
+    variants: DOUBLE_CARET_VARIANTS
+  };
+  const SPECIAL_CATCODE = {
+    className: 'built_in',
+    relevance: 0,
+    begin: /[$&^_]/
+  };
+  const MAGIC_COMMENT = {
+    className: 'meta',
+    begin: '% !TeX',
+    end: '$',
+    relevance: 10
+  };
+  const COMMENT = hljs.COMMENT(
+    '%',
+    '$',
+    {
+      relevance: 0
+    }
+  );
+  const EVERYTHING_BUT_VERBATIM = [
+    CONTROL_SEQUENCE,
+    MACRO_PARAM,
+    DOUBLE_CARET_CHAR,
+    SPECIAL_CATCODE,
+    MAGIC_COMMENT,
+    COMMENT
+  ];
+  const BRACE_GROUP_NO_VERBATIM = {
+    begin: /\{/, end: /\}/,
+    relevance: 0,
+    contains: ['self', ...EVERYTHING_BUT_VERBATIM]
+  };
+  const ARGUMENT_BRACES = hljs.inherit(
+    BRACE_GROUP_NO_VERBATIM,
+    {
+      relevance: 0,
+      endsParent: true,
+      contains: [BRACE_GROUP_NO_VERBATIM, ...EVERYTHING_BUT_VERBATIM]
+    }
+  );
+  const ARGUMENT_BRACKETS = {
+    begin: /\[/,
+      end: /\]/,
+    endsParent: true,
+    relevance: 0,
+    contains: [BRACE_GROUP_NO_VERBATIM, ...EVERYTHING_BUT_VERBATIM]
+  };
+  const SPACE_GOBBLER = {
+    begin: /\s+/,
+    relevance: 0
+  };
+  const ARGUMENT_M = [ARGUMENT_BRACES];
+  const ARGUMENT_O = [ARGUMENT_BRACKETS];
+  const ARGUMENT_AND_THEN = function(arg, starts_mode) {
+    return {
+      contains: [SPACE_GOBBLER],
+      starts: {
+        relevance: 0,
+        contains: arg,
+        starts: starts_mode
+      }
+    };
+  };
+  const CSNAME = function(csname, starts_mode) {
+    return {
+        begin: '\\\\' + csname + '(?![a-zA-Z@:_])',
+        keywords: {$pattern: /\\[a-zA-Z]+/, keyword: '\\' + csname},
+        relevance: 0,
+        contains: [SPACE_GOBBLER],
+        starts: starts_mode
+      };
+  };
+  const BEGIN_ENV = function(envname, starts_mode) {
+    return hljs.inherit(
+      {
+        begin: '\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{' + envname + '\\})',
+        keywords: {$pattern: /\\[a-zA-Z]+/, keyword: '\\begin'},
+        relevance: 0,
+      },
+      ARGUMENT_AND_THEN(ARGUMENT_M, starts_mode)
+    );
+  };
+  const VERBATIM_DELIMITED_EQUAL = (innerName = "string") => {
+    return hljs.END_SAME_AS_BEGIN({
+      className: innerName,
+      begin: /(.|\r?\n)/,
+      end: /(.|\r?\n)/,
+      excludeBegin: true,
+      excludeEnd: true,
+      endsParent: true
+    });
+  };
+  const VERBATIM_DELIMITED_ENV = function(envname) {
+    return {
+      className: 'string',
+      end: '(?=\\\\end\\{' + envname + '\\})'
+    };
+  };
+
+  const VERBATIM_DELIMITED_BRACES = (innerName = "string") => {
+    return {
+      relevance: 0,
+      begin: /\{/,
+      starts: {
+        endsParent: true,
+        contains: [
+          {
+            className: innerName,
+            end: /(?=\})/,
+            endsParent:true,
+            contains: [
+              {
+                begin: /\{/,
+                end: /\}/,
+                relevance: 0,
+                contains: ["self"]
+              }
+            ],
+          }
+        ]
+      }
+    };
+  };
+  const VERBATIM = [
+    ...['verb', 'lstinline'].map(csname => CSNAME(csname, {contains: [VERBATIM_DELIMITED_EQUAL()]})),
+    CSNAME('mint', ARGUMENT_AND_THEN(ARGUMENT_M, {contains: [VERBATIM_DELIMITED_EQUAL()]})),
+    CSNAME('mintinline', ARGUMENT_AND_THEN(ARGUMENT_M, {contains: [VERBATIM_DELIMITED_BRACES(), VERBATIM_DELIMITED_EQUAL()]})),
+    CSNAME('url', {contains: [VERBATIM_DELIMITED_BRACES("link"), VERBATIM_DELIMITED_BRACES("link")]}),
+    CSNAME('hyperref', {contains: [VERBATIM_DELIMITED_BRACES("link")]}),
+    CSNAME('href', ARGUMENT_AND_THEN(ARGUMENT_O, {contains: [VERBATIM_DELIMITED_BRACES("link")]})),
+    ...[].concat(...['', '\\*'].map(suffix => [
+      BEGIN_ENV('verbatim' + suffix, VERBATIM_DELIMITED_ENV('verbatim' + suffix)),
+      BEGIN_ENV('filecontents' + suffix,  ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('filecontents' + suffix))),
+      ...['', 'B', 'L'].map(prefix =>
+        BEGIN_ENV(prefix + 'Verbatim' + suffix, ARGUMENT_AND_THEN(ARGUMENT_O, VERBATIM_DELIMITED_ENV(prefix + 'Verbatim' + suffix)))
+      )
+    ])),
+    BEGIN_ENV('minted', ARGUMENT_AND_THEN(ARGUMENT_O, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('minted')))),
+  ];
+
+  return {
+    name: 'LaTeX',
+    aliases: ['tex'],
+    contains: [
+      ...VERBATIM,
+      ...EVERYTHING_BUT_VERBATIM
+    ]
+  };
+}
+
+module.exports = latex;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/ldif.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/ldif.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: LDIF
+Contributors: Jacob Childress 
+Category: enterprise, config
+Website: https://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format
+*/
+function ldif(hljs) {
+  return {
+    name: 'LDIF',
+    contains: [
+      {
+        className: 'attribute',
+        begin: '^dn',
+        end: ': ',
+        excludeEnd: true,
+        starts: {
+          end: '$',
+          relevance: 0
+        },
+        relevance: 10
+      },
+      {
+        className: 'attribute',
+        begin: '^\\w',
+        end: ': ',
+        excludeEnd: true,
+        starts: {
+          end: '$',
+          relevance: 0
+        }
+      },
+      {
+        className: 'literal',
+        begin: '^-',
+        end: '$'
+      },
+      hljs.HASH_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = ldif;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/leaf.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/leaf.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Leaf
+Author: Hale Chan 
+Description: Based on the Leaf reference from https://vapor.github.io/documentation/guide/leaf.html.
+*/
+
+function leaf(hljs) {
+  return {
+    name: 'Leaf',
+    contains: [
+      {
+        className: 'function',
+        begin: '#+' + '[A-Za-z_0-9]*' + '\\(',
+        end: / \{/,
+        returnBegin: true,
+        excludeEnd: true,
+        contains: [
+          {
+            className: 'keyword',
+            begin: '#+'
+          },
+          {
+            className: 'title',
+            begin: '[A-Za-z_][A-Za-z_0-9]*'
+          },
+          {
+            className: 'params',
+            begin: '\\(',
+            end: '\\)',
+            endsParent: true,
+            contains: [
+              {
+                className: 'string',
+                begin: '"',
+                end: '"'
+              },
+              {
+                className: 'variable',
+                begin: '[A-Za-z_][A-Za-z_0-9]*'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = leaf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/less.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/less.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+const MODES = (hljs) => {
+  return {
+    IMPORTANT: {
+      className: 'meta',
+      begin: '!important'
+    },
+    HEXCOLOR: {
+      className: 'number',
+      begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'
+    },
+    ATTRIBUTE_SELECTOR_MODE: {
+      className: 'selector-attr',
+      begin: /\[/,
+      end: /\]/,
+      illegal: '$',
+      contains: [
+        hljs.APOS_STRING_MODE,
+        hljs.QUOTE_STRING_MODE
+      ]
+    }
+  };
+};
+
+const TAGS = [
+  'a',
+  'abbr',
+  'address',
+  'article',
+  'aside',
+  'audio',
+  'b',
+  'blockquote',
+  'body',
+  'button',
+  'canvas',
+  'caption',
+  'cite',
+  'code',
+  'dd',
+  'del',
+  'details',
+  'dfn',
+  'div',
+  'dl',
+  'dt',
+  'em',
+  'fieldset',
+  'figcaption',
+  'figure',
+  'footer',
+  'form',
+  'h1',
+  'h2',
+  'h3',
+  'h4',
+  'h5',
+  'h6',
+  'header',
+  'hgroup',
+  'html',
+  'i',
+  'iframe',
+  'img',
+  'input',
+  'ins',
+  'kbd',
+  'label',
+  'legend',
+  'li',
+  'main',
+  'mark',
+  'menu',
+  'nav',
+  'object',
+  'ol',
+  'p',
+  'q',
+  'quote',
+  'samp',
+  'section',
+  'span',
+  'strong',
+  'summary',
+  'sup',
+  'table',
+  'tbody',
+  'td',
+  'textarea',
+  'tfoot',
+  'th',
+  'thead',
+  'time',
+  'tr',
+  'ul',
+  'var',
+  'video'
+];
+
+const MEDIA_FEATURES = [
+  'any-hover',
+  'any-pointer',
+  'aspect-ratio',
+  'color',
+  'color-gamut',
+  'color-index',
+  'device-aspect-ratio',
+  'device-height',
+  'device-width',
+  'display-mode',
+  'forced-colors',
+  'grid',
+  'height',
+  'hover',
+  'inverted-colors',
+  'monochrome',
+  'orientation',
+  'overflow-block',
+  'overflow-inline',
+  'pointer',
+  'prefers-color-scheme',
+  'prefers-contrast',
+  'prefers-reduced-motion',
+  'prefers-reduced-transparency',
+  'resolution',
+  'scan',
+  'scripting',
+  'update',
+  'width',
+  // TODO: find a better solution?
+  'min-width',
+  'max-width',
+  'min-height',
+  'max-height'
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes
+const PSEUDO_CLASSES = [
+  'active',
+  'any-link',
+  'blank',
+  'checked',
+  'current',
+  'default',
+  'defined',
+  'dir', // dir()
+  'disabled',
+  'drop',
+  'empty',
+  'enabled',
+  'first',
+  'first-child',
+  'first-of-type',
+  'fullscreen',
+  'future',
+  'focus',
+  'focus-visible',
+  'focus-within',
+  'has', // has()
+  'host', // host or host()
+  'host-context', // host-context()
+  'hover',
+  'indeterminate',
+  'in-range',
+  'invalid',
+  'is', // is()
+  'lang', // lang()
+  'last-child',
+  'last-of-type',
+  'left',
+  'link',
+  'local-link',
+  'not', // not()
+  'nth-child', // nth-child()
+  'nth-col', // nth-col()
+  'nth-last-child', // nth-last-child()
+  'nth-last-col', // nth-last-col()
+  'nth-last-of-type', //nth-last-of-type()
+  'nth-of-type', //nth-of-type()
+  'only-child',
+  'only-of-type',
+  'optional',
+  'out-of-range',
+  'past',
+  'placeholder-shown',
+  'read-only',
+  'read-write',
+  'required',
+  'right',
+  'root',
+  'scope',
+  'target',
+  'target-within',
+  'user-invalid',
+  'valid',
+  'visited',
+  'where' // where()
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements
+const PSEUDO_ELEMENTS = [
+  'after',
+  'backdrop',
+  'before',
+  'cue',
+  'cue-region',
+  'first-letter',
+  'first-line',
+  'grammar-error',
+  'marker',
+  'part',
+  'placeholder',
+  'selection',
+  'slotted',
+  'spelling-error'
+];
+
+const ATTRIBUTES = [
+  'align-content',
+  'align-items',
+  'align-self',
+  'animation',
+  'animation-delay',
+  'animation-direction',
+  'animation-duration',
+  'animation-fill-mode',
+  'animation-iteration-count',
+  'animation-name',
+  'animation-play-state',
+  'animation-timing-function',
+  'auto',
+  'backface-visibility',
+  'background',
+  'background-attachment',
+  'background-clip',
+  'background-color',
+  'background-image',
+  'background-origin',
+  'background-position',
+  'background-repeat',
+  'background-size',
+  'border',
+  'border-bottom',
+  'border-bottom-color',
+  'border-bottom-left-radius',
+  'border-bottom-right-radius',
+  'border-bottom-style',
+  'border-bottom-width',
+  'border-collapse',
+  'border-color',
+  'border-image',
+  'border-image-outset',
+  'border-image-repeat',
+  'border-image-slice',
+  'border-image-source',
+  'border-image-width',
+  'border-left',
+  'border-left-color',
+  'border-left-style',
+  'border-left-width',
+  'border-radius',
+  'border-right',
+  'border-right-color',
+  'border-right-style',
+  'border-right-width',
+  'border-spacing',
+  'border-style',
+  'border-top',
+  'border-top-color',
+  'border-top-left-radius',
+  'border-top-right-radius',
+  'border-top-style',
+  'border-top-width',
+  'border-width',
+  'bottom',
+  'box-decoration-break',
+  'box-shadow',
+  'box-sizing',
+  'break-after',
+  'break-before',
+  'break-inside',
+  'caption-side',
+  'clear',
+  'clip',
+  'clip-path',
+  'color',
+  'column-count',
+  'column-fill',
+  'column-gap',
+  'column-rule',
+  'column-rule-color',
+  'column-rule-style',
+  'column-rule-width',
+  'column-span',
+  'column-width',
+  'columns',
+  'content',
+  'counter-increment',
+  'counter-reset',
+  'cursor',
+  'direction',
+  'display',
+  'empty-cells',
+  'filter',
+  'flex',
+  'flex-basis',
+  'flex-direction',
+  'flex-flow',
+  'flex-grow',
+  'flex-shrink',
+  'flex-wrap',
+  'float',
+  'font',
+  'font-display',
+  'font-family',
+  'font-feature-settings',
+  'font-kerning',
+  'font-language-override',
+  'font-size',
+  'font-size-adjust',
+  'font-smoothing',
+  'font-stretch',
+  'font-style',
+  'font-variant',
+  'font-variant-ligatures',
+  'font-variation-settings',
+  'font-weight',
+  'height',
+  'hyphens',
+  'icon',
+  'image-orientation',
+  'image-rendering',
+  'image-resolution',
+  'ime-mode',
+  'inherit',
+  'initial',
+  'justify-content',
+  'left',
+  'letter-spacing',
+  'line-height',
+  'list-style',
+  'list-style-image',
+  'list-style-position',
+  'list-style-type',
+  'margin',
+  'margin-bottom',
+  'margin-left',
+  'margin-right',
+  'margin-top',
+  'marks',
+  'mask',
+  'max-height',
+  'max-width',
+  'min-height',
+  'min-width',
+  'nav-down',
+  'nav-index',
+  'nav-left',
+  'nav-right',
+  'nav-up',
+  'none',
+  'normal',
+  'object-fit',
+  'object-position',
+  'opacity',
+  'order',
+  'orphans',
+  'outline',
+  'outline-color',
+  'outline-offset',
+  'outline-style',
+  'outline-width',
+  'overflow',
+  'overflow-wrap',
+  'overflow-x',
+  'overflow-y',
+  'padding',
+  'padding-bottom',
+  'padding-left',
+  'padding-right',
+  'padding-top',
+  'page-break-after',
+  'page-break-before',
+  'page-break-inside',
+  'perspective',
+  'perspective-origin',
+  'pointer-events',
+  'position',
+  'quotes',
+  'resize',
+  'right',
+  'src', // @font-face
+  'tab-size',
+  'table-layout',
+  'text-align',
+  'text-align-last',
+  'text-decoration',
+  'text-decoration-color',
+  'text-decoration-line',
+  'text-decoration-style',
+  'text-indent',
+  'text-overflow',
+  'text-rendering',
+  'text-shadow',
+  'text-transform',
+  'text-underline-position',
+  'top',
+  'transform',
+  'transform-origin',
+  'transform-style',
+  'transition',
+  'transition-delay',
+  'transition-duration',
+  'transition-property',
+  'transition-timing-function',
+  'unicode-bidi',
+  'vertical-align',
+  'visibility',
+  'white-space',
+  'widows',
+  'width',
+  'word-break',
+  'word-spacing',
+  'word-wrap',
+  'z-index'
+  // reverse makes sure longer attributes `font-weight` are matched fully
+  // instead of getting false positives on say `font`
+].reverse();
+
+// some grammars use them all as a single group
+const PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS);
+
+/*
+Language: Less
+Description: It's CSS, with just a little more.
+Author:   Max Mikhailov 
+Website: http://lesscss.org
+Category: common, css
+*/
+
+/** @type LanguageFn */
+function less(hljs) {
+  const modes = MODES(hljs);
+  const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS;
+
+  const AT_MODIFIERS = "and or not only";
+  const IDENT_RE = '[\\w-]+'; // yes, Less identifiers may begin with a digit
+  const INTERP_IDENT_RE = '(' + IDENT_RE + '|@\\{' + IDENT_RE + '\\})';
+
+  /* Generic Modes */
+
+  const RULES = []; const VALUE_MODES = []; // forward def. for recursive modes
+
+  const STRING_MODE = function(c) {
+    return {
+    // Less strings are not multiline (also include '~' for more consistent coloring of "escaped" strings)
+      className: 'string',
+      begin: '~?' + c + '.*?' + c
+    };
+  };
+
+  const IDENT_MODE = function(name, begin, relevance) {
+    return {
+      className: name,
+      begin: begin,
+      relevance: relevance
+    };
+  };
+
+  const AT_KEYWORDS = {
+    $pattern: /[a-z-]+/,
+    keyword: AT_MODIFIERS,
+    attribute: MEDIA_FEATURES.join(" ")
+  };
+
+  const PARENS_MODE = {
+    // used only to properly balance nested parens inside mixin call, def. arg list
+    begin: '\\(',
+    end: '\\)',
+    contains: VALUE_MODES,
+    keywords: AT_KEYWORDS,
+    relevance: 0
+  };
+
+  // generic Less highlighter (used almost everywhere except selectors):
+  VALUE_MODES.push(
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    STRING_MODE("'"),
+    STRING_MODE('"'),
+    hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(
+    {
+      begin: '(url|data-uri)\\(',
+      starts: {
+        className: 'string',
+        end: '[\\)\\n]',
+        excludeEnd: true
+      }
+    },
+    modes.HEXCOLOR,
+    PARENS_MODE,
+    IDENT_MODE('variable', '@@?' + IDENT_RE, 10),
+    IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'),
+    IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string
+    { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):
+      className: 'attribute',
+      begin: IDENT_RE + '\\s*:',
+      end: ':',
+      returnBegin: true,
+      excludeEnd: true
+    },
+    modes.IMPORTANT
+  );
+
+  const VALUE_WITH_RULESETS = VALUE_MODES.concat({
+    begin: /\{/,
+    end: /\}/,
+    contains: RULES
+  });
+
+  const MIXIN_GUARD_MODE = {
+    beginKeywords: 'when',
+    endsWithParent: true,
+    contains: [
+      {
+        beginKeywords: 'and not'
+      }
+    ].concat(VALUE_MODES) // using this form to override VALUE’s 'function' match
+  };
+
+  /* Rule-Level Modes */
+
+  const RULE_MODE = {
+    begin: INTERP_IDENT_RE + '\\s*:',
+    returnBegin: true,
+    end: /[;}]/,
+    relevance: 0,
+    contains: [
+      {
+        begin: /-(webkit|moz|ms|o)-/
+      },
+      {
+        className: 'attribute',
+        begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b',
+        end: /(?=:)/,
+        starts: {
+          endsWithParent: true,
+          illegal: '[<=$]',
+          relevance: 0,
+          contains: VALUE_MODES
+        }
+      }
+    ]
+  };
+
+  const AT_RULE_MODE = {
+    className: 'keyword',
+    begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b',
+    starts: {
+      end: '[;{}]',
+      keywords: AT_KEYWORDS,
+      returnEnd: true,
+      contains: VALUE_MODES,
+      relevance: 0
+    }
+  };
+
+  // variable definitions and calls
+  const VAR_RULE_MODE = {
+    className: 'variable',
+    variants: [
+      // using more strict pattern for higher relevance to increase chances of Less detection.
+      // this is *the only* Less specific statement used in most of the sources, so...
+      // (we’ll still often loose to the css-parser unless there's '//' comment,
+      // simply because 1 variable just can't beat 99 properties :)
+      {
+        begin: '@' + IDENT_RE + '\\s*:',
+        relevance: 15
+      },
+      {
+        begin: '@' + IDENT_RE
+      }
+    ],
+    starts: {
+      end: '[;}]',
+      returnEnd: true,
+      contains: VALUE_WITH_RULESETS
+    }
+  };
+
+  const SELECTOR_MODE = {
+    // first parse unambiguous selectors (i.e. those not starting with tag)
+    // then fall into the scary lookahead-discriminator variant.
+    // this mode also handles mixin definitions and calls
+    variants: [
+      {
+        begin: '[\\.#:&\\[>]',
+        end: '[;{}]' // mixin calls end with ';'
+      },
+      {
+        begin: INTERP_IDENT_RE,
+        end: /\{/
+      }
+    ],
+    returnBegin: true,
+    returnEnd: true,
+    illegal: '[<=\'$"]',
+    relevance: 0,
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      MIXIN_GUARD_MODE,
+      IDENT_MODE('keyword', 'all\\b'),
+      IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'), // otherwise it’s identified as tag
+      {
+        begin: '\\b(' + TAGS.join('|') + ')\\b',
+        className: 'selector-tag'
+      },
+      IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes "tags"
+      IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),
+      IDENT_MODE('selector-class', '\\.' + INTERP_IDENT_RE, 0),
+      IDENT_MODE('selector-tag', '&', 0),
+      modes.ATTRIBUTE_SELECTOR_MODE,
+      {
+        className: 'selector-pseudo',
+        begin: ':(' + PSEUDO_CLASSES.join('|') + ')'
+      },
+      {
+        className: 'selector-pseudo',
+        begin: '::(' + PSEUDO_ELEMENTS.join('|') + ')'
+      },
+      {
+        begin: '\\(',
+        end: '\\)',
+        contains: VALUE_WITH_RULESETS
+      }, // argument list of parametric mixins
+      {
+        begin: '!important'
+      } // eat !important after mixin call or it will be colored as tag
+    ]
+  };
+
+  const PSEUDO_SELECTOR_MODE = {
+    begin: IDENT_RE + ':(:)?' + `(${PSEUDO_SELECTORS$1.join('|')})`,
+    returnBegin: true,
+    contains: [ SELECTOR_MODE ]
+  };
+
+  RULES.push(
+    hljs.C_LINE_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    AT_RULE_MODE,
+    VAR_RULE_MODE,
+    PSEUDO_SELECTOR_MODE,
+    RULE_MODE,
+    SELECTOR_MODE
+  );
+
+  return {
+    name: 'Less',
+    case_insensitive: true,
+    illegal: '[=>\'/<($"]',
+    contains: RULES
+  };
+}
+
+module.exports = less;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/lisp.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/lisp.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Lisp
+Description: Generic lisp syntax
+Author: Vasily Polovnyov 
+Category: lisp
+*/
+
+function lisp(hljs) {
+  var LISP_IDENT_RE = '[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*';
+  var MEC_RE = '\\|[^]*?\\|';
+  var LISP_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?';
+  var LITERAL = {
+    className: 'literal',
+    begin: '\\b(t{1}|nil)\\b'
+  };
+  var NUMBER = {
+    className: 'number',
+    variants: [
+      {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},
+      {begin: '#(b|B)[0-1]+(/[0-1]+)?'},
+      {begin: '#(o|O)[0-7]+(/[0-7]+)?'},
+      {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},
+      {begin: '#(c|C)\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\)'}
+    ]
+  };
+  var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});
+  var COMMENT = hljs.COMMENT(
+    ';', '$',
+    {
+      relevance: 0
+    }
+  );
+  var VARIABLE = {
+    begin: '\\*', end: '\\*'
+  };
+  var KEYWORD = {
+    className: 'symbol',
+    begin: '[:&]' + LISP_IDENT_RE
+  };
+  var IDENT = {
+    begin: LISP_IDENT_RE,
+    relevance: 0
+  };
+  var MEC = {
+    begin: MEC_RE
+  };
+  var QUOTED_LIST = {
+    begin: '\\(', end: '\\)',
+    contains: ['self', LITERAL, STRING, NUMBER, IDENT]
+  };
+  var QUOTED = {
+    contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],
+    variants: [
+      {
+        begin: '[\'`]\\(', end: '\\)'
+      },
+      {
+        begin: '\\(quote ', end: '\\)',
+        keywords: {name: 'quote'}
+      },
+      {
+        begin: '\'' + MEC_RE
+      }
+    ]
+  };
+  var QUOTED_ATOM = {
+    variants: [
+      {begin: '\'' + LISP_IDENT_RE},
+      {begin: '#\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}
+    ]
+  };
+  var LIST = {
+    begin: '\\(\\s*', end: '\\)'
+  };
+  var BODY = {
+    endsWithParent: true,
+    relevance: 0
+  };
+  LIST.contains = [
+    {
+      className: 'name',
+      variants: [
+        {
+          begin: LISP_IDENT_RE,
+          relevance: 0,
+        },
+        {begin: MEC_RE}
+      ]
+    },
+    BODY
+  ];
+  BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];
+
+  return {
+    name: 'Lisp',
+    illegal: /\S/,
+    contains: [
+      NUMBER,
+      hljs.SHEBANG(),
+      LITERAL,
+      STRING,
+      COMMENT,
+      QUOTED,
+      QUOTED_ATOM,
+      LIST,
+      IDENT
+    ]
+  };
+}
+
+module.exports = lisp;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/livecodeserver.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/livecodeserver.js ***!
+  \*******************************************************************/
+/***/ ((module) => {
+
+/*
+Language: LiveCode
+Author: Ralf Bitter 
+Description: Language definition for LiveCode server accounting for revIgniter (a web application framework) characteristics.
+Version: 1.1
+Date: 2019-04-17
+Category: enterprise
+*/
+
+function livecodeserver(hljs) {
+  const VARIABLE = {
+    className: 'variable',
+    variants: [
+      {
+        begin: '\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)'
+      },
+      {
+        begin: '\\$_[A-Z]+'
+      }
+    ],
+    relevance: 0
+  };
+  const COMMENT_MODES = [
+    hljs.C_BLOCK_COMMENT_MODE,
+    hljs.HASH_COMMENT_MODE,
+    hljs.COMMENT('--', '$'),
+    hljs.COMMENT('[^:]//', '$')
+  ];
+  const TITLE1 = hljs.inherit(hljs.TITLE_MODE, {
+    variants: [
+      {
+        begin: '\\b_*rig[A-Z][A-Za-z0-9_\\-]*'
+      },
+      {
+        begin: '\\b_[a-z0-9\\-]+'
+      }
+    ]
+  });
+  const TITLE2 = hljs.inherit(hljs.TITLE_MODE, {
+    begin: '\\b([A-Za-z0-9_\\-]+)\\b'
+  });
+  return {
+    name: 'LiveCode',
+    case_insensitive: false,
+    keywords: {
+      keyword:
+        '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +
+        'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +
+        'after byte bytes english the until http forever descending using line real8 with seventh ' +
+        'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +
+        'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +
+        'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +
+        'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +
+        'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +
+        'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +
+        'first ftp integer abbreviated abbr abbrev private case while if ' +
+        'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +
+        'contains ends with begins the keys of keys',
+      literal:
+        'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +
+        'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +
+        'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +
+        'quote empty one true return cr linefeed right backslash null seven tab three two ' +
+        'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +
+        'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',
+      built_in:
+        'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +
+        'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +
+        'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +
+        'constantNames cos date dateFormat decompress difference directories ' +
+        'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +
+        'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +
+        'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +
+        'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +
+        'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec ' +
+        'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +
+        'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +
+        'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +
+        'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +
+        'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +
+        'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +
+        'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +
+        'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +
+        'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +
+        'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +
+        'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +
+        'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +
+        'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' +
+        'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' +
+        'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' +
+        'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' +
+        'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' +
+        'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' +
+        'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' +
+        'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' +
+        'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' +
+        'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' +
+        'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' +
+        'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' +
+        'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' +
+        'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' +
+        'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' +
+        'combine constant convert create new alias folder directory decrypt delete variable word line folder ' +
+        'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' +
+        'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver ' +
+        'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' +
+        'libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename ' +
+        'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' +
+        'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' +
+        'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' +
+        'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' +
+        'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' +
+        'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' +
+        'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' +
+        'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' +
+        'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' +
+        'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' +
+        'subtract symmetric union unload vectorDotProduct wait write'
+    },
+    contains: [
+      VARIABLE,
+      {
+        className: 'keyword',
+        begin: '\\bend\\sif\\b'
+      },
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: '$',
+        contains: [
+          VARIABLE,
+          TITLE2,
+          hljs.APOS_STRING_MODE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.BINARY_NUMBER_MODE,
+          hljs.C_NUMBER_MODE,
+          TITLE1
+        ]
+      },
+      {
+        className: 'function',
+        begin: '\\bend\\s+',
+        end: '$',
+        keywords: 'end',
+        contains: [
+          TITLE2,
+          TITLE1
+        ],
+        relevance: 0
+      },
+      {
+        beginKeywords: 'command on',
+        end: '$',
+        contains: [
+          VARIABLE,
+          TITLE2,
+          hljs.APOS_STRING_MODE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.BINARY_NUMBER_MODE,
+          hljs.C_NUMBER_MODE,
+          TITLE1
+        ]
+      },
+      {
+        className: 'meta',
+        variants: [
+          {
+            begin: '<\\?(rev|lc|livecode)',
+            relevance: 10
+          },
+          {
+            begin: '<\\?'
+          },
+          {
+            begin: '\\?>'
+          }
+        ]
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.BINARY_NUMBER_MODE,
+      hljs.C_NUMBER_MODE,
+      TITLE1
+    ].concat(COMMENT_MODES),
+    illegal: ';$|^\\[|^=|&|\\{'
+  };
+}
+
+module.exports = livecodeserver;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/livescript.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/livescript.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+const KEYWORDS = [
+  "as", // for exports
+  "in",
+  "of",
+  "if",
+  "for",
+  "while",
+  "finally",
+  "var",
+  "new",
+  "function",
+  "do",
+  "return",
+  "void",
+  "else",
+  "break",
+  "catch",
+  "instanceof",
+  "with",
+  "throw",
+  "case",
+  "default",
+  "try",
+  "switch",
+  "continue",
+  "typeof",
+  "delete",
+  "let",
+  "yield",
+  "const",
+  "class",
+  // JS handles these with a special rule
+  // "get",
+  // "set",
+  "debugger",
+  "async",
+  "await",
+  "static",
+  "import",
+  "from",
+  "export",
+  "extends"
+];
+const LITERALS = [
+  "true",
+  "false",
+  "null",
+  "undefined",
+  "NaN",
+  "Infinity"
+];
+
+const TYPES = [
+  "Intl",
+  "DataView",
+  "Number",
+  "Math",
+  "Date",
+  "String",
+  "RegExp",
+  "Object",
+  "Function",
+  "Boolean",
+  "Error",
+  "Symbol",
+  "Set",
+  "Map",
+  "WeakSet",
+  "WeakMap",
+  "Proxy",
+  "Reflect",
+  "JSON",
+  "Promise",
+  "Float64Array",
+  "Int16Array",
+  "Int32Array",
+  "Int8Array",
+  "Uint16Array",
+  "Uint32Array",
+  "Float32Array",
+  "Array",
+  "Uint8Array",
+  "Uint8ClampedArray",
+  "ArrayBuffer",
+  "BigInt64Array",
+  "BigUint64Array",
+  "BigInt"
+];
+
+const ERROR_TYPES = [
+  "EvalError",
+  "InternalError",
+  "RangeError",
+  "ReferenceError",
+  "SyntaxError",
+  "TypeError",
+  "URIError"
+];
+
+const BUILT_IN_GLOBALS = [
+  "setInterval",
+  "setTimeout",
+  "clearInterval",
+  "clearTimeout",
+
+  "require",
+  "exports",
+
+  "eval",
+  "isFinite",
+  "isNaN",
+  "parseFloat",
+  "parseInt",
+  "decodeURI",
+  "decodeURIComponent",
+  "encodeURI",
+  "encodeURIComponent",
+  "escape",
+  "unescape"
+];
+
+const BUILT_IN_VARIABLES = [
+  "arguments",
+  "this",
+  "super",
+  "console",
+  "window",
+  "document",
+  "localStorage",
+  "module",
+  "global" // Node.js
+];
+
+const BUILT_INS = [].concat(
+  BUILT_IN_GLOBALS,
+  BUILT_IN_VARIABLES,
+  TYPES,
+  ERROR_TYPES
+);
+
+/*
+Language: LiveScript
+Author: Taneli Vatanen 
+Contributors: Jen Evers-Corvina 
+Origin: coffeescript.js
+Description: LiveScript is a programming language that transcompiles to JavaScript. For info about language see http://livescript.net/
+Website: https://livescript.net
+Category: scripting
+*/
+
+function livescript(hljs) {
+  const LIVESCRIPT_BUILT_INS = [
+    'npm',
+    'print'
+  ];
+  const LIVESCRIPT_LITERALS = [
+    'yes',
+    'no',
+    'on',
+    'off',
+    'it',
+    'that',
+    'void'
+  ];
+  const LIVESCRIPT_KEYWORDS = [
+    'then',
+    'unless',
+    'until',
+    'loop',
+    'of',
+    'by',
+    'when',
+    'and',
+    'or',
+    'is',
+    'isnt',
+    'not',
+    'it',
+    'that',
+    'otherwise',
+    'from',
+    'to',
+    'til',
+    'fallthrough',
+    'case',
+    'enum',
+    'native',
+    'list',
+    'map',
+    '__hasProp',
+    '__extends',
+    '__slice',
+    '__bind',
+    '__indexOf'
+  ];
+  const KEYWORDS$1 = {
+    keyword: KEYWORDS.concat(LIVESCRIPT_KEYWORDS),
+    literal: LITERALS.concat(LIVESCRIPT_LITERALS),
+    built_in: BUILT_INS.concat(LIVESCRIPT_BUILT_INS)
+  };
+  const JS_IDENT_RE = '[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';
+  const TITLE = hljs.inherit(hljs.TITLE_MODE, {
+    begin: JS_IDENT_RE
+  });
+  const SUBST = {
+    className: 'subst',
+    begin: /#\{/,
+    end: /\}/,
+    keywords: KEYWORDS$1
+  };
+  const SUBST_SIMPLE = {
+    className: 'subst',
+    begin: /#[A-Za-z$_]/,
+    end: /(?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,
+    keywords: KEYWORDS$1
+  };
+  const EXPRESSIONS = [
+    hljs.BINARY_NUMBER_MODE,
+    {
+      className: 'number',
+      begin: '(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)',
+      relevance: 0,
+      starts: {
+        end: '(\\s*/)?',
+        relevance: 0
+      } // a number tries to eat the following slash to prevent treating it as a regexp
+    },
+    {
+      className: 'string',
+      variants: [
+        {
+          begin: /'''/,
+          end: /'''/,
+          contains: [hljs.BACKSLASH_ESCAPE]
+        },
+        {
+          begin: /'/,
+          end: /'/,
+          contains: [hljs.BACKSLASH_ESCAPE]
+        },
+        {
+          begin: /"""/,
+          end: /"""/,
+          contains: [
+            hljs.BACKSLASH_ESCAPE,
+            SUBST,
+            SUBST_SIMPLE
+          ]
+        },
+        {
+          begin: /"/,
+          end: /"/,
+          contains: [
+            hljs.BACKSLASH_ESCAPE,
+            SUBST,
+            SUBST_SIMPLE
+          ]
+        },
+        {
+          begin: /\\/,
+          end: /(\s|$)/,
+          excludeEnd: true
+        }
+      ]
+    },
+    {
+      className: 'regexp',
+      variants: [
+        {
+          begin: '//',
+          end: '//[gim]*',
+          contains: [
+            SUBST,
+            hljs.HASH_COMMENT_MODE
+          ]
+        },
+        {
+          // regex can't start with space to parse x / 2 / 3 as two divisions
+          // regex can't start with *, and it supports an "illegal" in the main mode
+          begin: /\/(?![ *])(\\.|[^\\\n])*?\/[gim]*(?=\W)/
+        }
+      ]
+    },
+    {
+      begin: '@' + JS_IDENT_RE
+    },
+    {
+      begin: '``',
+      end: '``',
+      excludeBegin: true,
+      excludeEnd: true,
+      subLanguage: 'javascript'
+    }
+  ];
+  SUBST.contains = EXPRESSIONS;
+
+  const PARAMS = {
+    className: 'params',
+    begin: '\\(',
+    returnBegin: true,
+    /* We need another contained nameless mode to not have every nested
+    pair of parens to be called "params" */
+    contains: [
+      {
+        begin: /\(/,
+        end: /\)/,
+        keywords: KEYWORDS$1,
+        contains: ['self'].concat(EXPRESSIONS)
+      }
+    ]
+  };
+
+  const SYMBOLS = {
+    begin: '(#=>|=>|\\|>>|-?->|!->)'
+  };
+
+  return {
+    name: 'LiveScript',
+    aliases: ['ls'],
+    keywords: KEYWORDS$1,
+    illegal: /\/\*/,
+    contains: EXPRESSIONS.concat([
+      hljs.COMMENT('\\/\\*', '\\*\\/'),
+      hljs.HASH_COMMENT_MODE,
+      SYMBOLS, // relevance booster
+      {
+        className: 'function',
+        contains: [
+          TITLE,
+          PARAMS
+        ],
+        returnBegin: true,
+        variants: [
+          {
+            begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B->\\*?',
+            end: '->\\*?'
+          },
+          {
+            begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?!?(\\(.*\\)\\s*)?\\B[-~]{1,2}>\\*?',
+            end: '[-~]{1,2}>\\*?'
+          },
+          {
+            begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B!?[-~]{1,2}>\\*?',
+            end: '!?[-~]{1,2}>\\*?'
+          }
+        ]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class',
+        end: '$',
+        illegal: /[:="\[\]]/,
+        contains: [
+          {
+            beginKeywords: 'extends',
+            endsWithParent: true,
+            illegal: /[:="\[\]]/,
+            contains: [TITLE]
+          },
+          TITLE
+        ]
+      },
+      {
+        begin: JS_IDENT_RE + ':',
+        end: ':',
+        returnBegin: true,
+        returnEnd: true,
+        relevance: 0
+      }
+    ])
+  };
+}
+
+module.exports = livescript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/llvm.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/llvm.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: LLVM IR
+Author: Michael Rodler 
+Description: language used as intermediate representation in the LLVM compiler framework
+Website: https://llvm.org/docs/LangRef.html
+Category: assembler
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function llvm(hljs) {
+  const IDENT_RE = /([-a-zA-Z$._][\w$.-]*)/;
+  const TYPE = {
+    className: 'type',
+    begin: /\bi\d+(?=\s|\b)/
+  };
+  const OPERATOR = {
+    className: 'operator',
+    relevance: 0,
+    begin: /=/
+  };
+  const PUNCTUATION = {
+    className: 'punctuation',
+    relevance: 0,
+    begin: /,/
+  };
+  const NUMBER = {
+    className: 'number',
+    variants: [
+        { begin: /0[xX][a-fA-F0-9]+/ },
+        { begin: /-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/ }
+    ],
+    relevance: 0
+  };
+  const LABEL = {
+    className: 'symbol',
+    variants: [
+        { begin: /^\s*[a-z]+:/ }, // labels
+    ],
+    relevance: 0
+  };
+  const VARIABLE = {
+    className: 'variable',
+    variants: [
+      { begin: concat(/%/, IDENT_RE) },
+      { begin: /%\d+/ },
+      { begin: /#\d+/ },
+    ]
+  };
+  const FUNCTION = {
+    className: 'title',
+    variants: [
+      { begin: concat(/@/, IDENT_RE) },
+      { begin: /@\d+/ },
+      { begin: concat(/!/, IDENT_RE) },
+      { begin: concat(/!\d+/, IDENT_RE) },
+      // https://llvm.org/docs/LangRef.html#namedmetadatastructure
+      // obviously a single digit can also be used in this fashion
+      { begin: /!\d+/ }
+    ]
+  };
+
+  return {
+    name: 'LLVM IR',
+    // TODO: split into different categories of keywords
+    keywords:
+      'begin end true false declare define global ' +
+      'constant private linker_private internal ' +
+      'available_externally linkonce linkonce_odr weak ' +
+      'weak_odr appending dllimport dllexport common ' +
+      'default hidden protected extern_weak external ' +
+      'thread_local zeroinitializer undef null to tail ' +
+      'target triple datalayout volatile nuw nsw nnan ' +
+      'ninf nsz arcp fast exact inbounds align ' +
+      'addrspace section alias module asm sideeffect ' +
+      'gc dbg linker_private_weak attributes blockaddress ' +
+      'initialexec localdynamic localexec prefix unnamed_addr ' +
+      'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' +
+      'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' +
+      'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' +
+      'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' +
+      'cc c signext zeroext inreg sret nounwind ' +
+      'noreturn noalias nocapture byval nest readnone ' +
+      'readonly inlinehint noinline alwaysinline optsize ssp ' +
+      'sspreq noredzone noimplicitfloat naked builtin cold ' +
+      'nobuiltin noduplicate nonlazybind optnone returns_twice ' +
+      'sanitize_address sanitize_memory sanitize_thread sspstrong ' +
+      'uwtable returned type opaque eq ne slt sgt ' +
+      'sle sge ult ugt ule uge oeq one olt ogt ' +
+      'ole oge ord uno ueq une x acq_rel acquire ' +
+      'alignstack atomic catch cleanup filter inteldialect ' +
+      'max min monotonic nand personality release seq_cst ' +
+      'singlethread umax umin unordered xchg add fadd ' +
+      'sub fsub mul fmul udiv sdiv fdiv urem srem ' +
+      'frem shl lshr ashr and or xor icmp fcmp ' +
+      'phi call trunc zext sext fptrunc fpext uitofp ' +
+      'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' +
+      'addrspacecast select va_arg ret br switch invoke ' +
+      'unwind unreachable indirectbr landingpad resume ' +
+      'malloc alloca free load store getelementptr ' +
+      'extractelement insertelement shufflevector getresult ' +
+      'extractvalue insertvalue atomicrmw cmpxchg fence ' +
+      'argmemonly double',
+    contains: [
+      TYPE,
+      // this matches "empty comments"...
+      // ...because it's far more likely this is a statement terminator in
+      // another language than an actual comment
+      hljs.COMMENT(/;\s*$/, null, { relevance: 0 }),
+      hljs.COMMENT(/;/, /$/),
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        variants: [
+          // Double-quoted string
+          { begin: /"/, end: /[^\\]"/ },
+        ]
+      },
+      FUNCTION,
+      PUNCTUATION,
+      OPERATOR,
+      VARIABLE,
+      LABEL,
+      NUMBER
+    ]
+  };
+}
+
+module.exports = llvm;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/lsl.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/lsl.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: LSL (Linden Scripting Language)
+Description: The Linden Scripting Language is used in Second Life by Linden Labs.
+Author: Builder's Brewery 
+Website: http://wiki.secondlife.com/wiki/LSL_Portal
+Category: scripting
+*/
+
+function lsl(hljs) {
+
+    var LSL_STRING_ESCAPE_CHARS = {
+        className: 'subst',
+        begin: /\\[tn"\\]/
+    };
+
+    var LSL_STRINGS = {
+        className: 'string',
+        begin: '"',
+        end: '"',
+        contains: [
+            LSL_STRING_ESCAPE_CHARS
+        ]
+    };
+
+    var LSL_NUMBERS = {
+        className: 'number',
+        relevance:0,
+        begin: hljs.C_NUMBER_RE
+    };
+
+    var LSL_CONSTANTS = {
+        className: 'literal',
+        variants: [
+            {
+                begin: '\\b(PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b'
+            },
+            {
+                begin: '\\b(XP_ERROR_(EXPERIENCES_DISABLED|EXPERIENCE_(DISABLED|SUSPENDED)|INVALID_(EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(FOUND|PERMITTED(_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(_OBJECT)?|(DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(_(BY_(LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(PARCEL(_OWNER)?|REGION)))?|CAMERA_(PITCH|DISTANCE|BEHINDNESS_(ANGLE|LAG)|(FOCUS|POSITION)(_(THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(ROOT|SET|ALL_(OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(IVE|_(ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(FWD|BACK|(ROT_)?(LEFT|RIGHT)|UP|DOWN|(ML_)?LBUTTON)|PERMISSION_(RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(_START)?|TELEPORT|MEDIA)|OBJECT_(CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(COUNT|EQUIVALENCE)|RETURN_(PARCEL(_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(_TAG)?|CREATOR|ATTACHED_(POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(BODY_SHAPE|PATHFINDING)_TYPE|(RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(MEMORY|TIME))|TYPE_(INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(DEBUG|PUBLIC)_CHANNEL|ATTACH_(AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](SHOULDER|HAND|FOOT|EAR|EYE|[UL](ARM|LEG)|HIP)|(LEFT|RIGHT)_PEC|HUD_(CENTER_[12]|TOP_(RIGHT|CENTER|LEFT)|BOTTOM(_(RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(BASE|TIP)|[LR]WING|FACE_(JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(ONLINE|NAME|BORN|SIM_(POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(ON_FILE|USED)|REMOTE_DATA_(CHANNEL|REQUEST|REPLY)|PSYS_(PART_(BF_(ZERO|ONE(_MINUS_(DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(START|END)_(COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(RIBBON|WIND|INTERP_(COLOR|SCALE)|BOUNCE|FOLLOW_(SRC|VELOCITY)|TARGET_(POS|LINEAR)|EMISSIVE)_MASK)|SRC_(MAX_AGE|PATTERN|ANGLE_(BEGIN|END)|BURST_(RATE|PART_COUNT|RADIUS|SPEED_(MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(DROP|EXPLODE|ANGLE(_CONE(_EMPTY)?)?)))|VEHICLE_(REFERENCE_FRAME|TYPE_(NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(LINEAR|ANGULAR)_(FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(LINEAR|ANGULAR)_(DEFLECTION_(EFFICIENCY|TIMESCALE)|MOTOR_(DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(EFFICIENCY|TIMESCALE)|BANKING_(EFFICIENCY|MIX|TIMESCALE)|FLAG_(NO_DEFLECTION_UP|LIMIT_(ROLL_ONLY|MOTOR_UP)|HOVER_((WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(ALLOW_UNSIT|ALPHA_MODE(_(BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(_(BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(_(STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(NONE|LOW|MEDIUM|HIGH)|BUMP_(NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(TYPE_(SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(MIRROR|INVERT))|PHYSICS(_(SHAPE_(CONVEX|NONE|PRIM|TYPE)))?|(POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(ALT_IMAGE_ENABLE|CONTROLS|(CURRENT|HOME)_URL|AUTO_(LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(WIDTH|HEIGHT)_PIXELS|WHITELIST(_ENABLE)?|PERMS_(INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(STANDARD|MINI)|PERM_(NONE|OWNER|GROUP|ANYONE)|MAX_(URL_LENGTH|WHITELIST_(SIZE|COUNT)|(WIDTH|HEIGHT)_PIXELS)))|MASK_(BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(MEDIA_COMMAND_(STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(ALLOW_(FLY|(GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(GROUP_)?OBJECTS)|USE_(ACCESS_(GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(GROUP|ALL)_OBJECT_ENTRY)|COUNT_(TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(HIDE|DEFAULT)|REGION_FLAG_(ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(METHOD|MIMETYPE|BODY_(MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(INVALID_(AGENT|LINK_OBJECT)|NO(T_EXPERIENCE|_(ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(TRIM(_(HEAD|TAIL))?)|CLICK_ACTION_(NONE|TOUCH|SIT|BUY|PAY|OPEN(_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(NONE|SCRIPT_MEMORY)|RC_(DATA_FLAGS|DETECT_PHANTOM|GET_(LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(TYPES|AGENTS|(NON)?PHYSICAL|LAND))|RCERR_(CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(ALLOWED_(AGENT|GROUP)_(ADD|REMOVE)|BANNED_AGENT_(ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(COMMAND|CMD_(PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(CMD_((SMOOTH_)?STOP|JUMP)|DESIRED_(TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(_([ABCD]|NONE))?|MAX_(DECEL|TURN_RADIUS|(ACCEL|SPEED)))|PURSUIT_(OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(EVADE_(HIDDEN|SPOTTED)|FAILURE_(DYNAMIC_PATHFINDING_DISABLED|INVALID_(GOAL|START)|NO_(NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(PARCEL_)?UNREACHABLE)|(GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(_(FAST|NONE|SLOW))?|CONTENT_TYPE_(ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(RADIUS|STATIC)|(PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b'
+            },
+            {
+                begin: '\\b(FALSE|TRUE)\\b'
+            },
+            {
+                begin: '\\b(ZERO_ROTATION)\\b'
+            },
+            {
+                begin: '\\b(EOF|JSON_(ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(GRANTED|DENIED))\\b'
+            },
+            {
+                begin: '\\b(ZERO_VECTOR|TOUCH_INVALID_(TEXCOORD|VECTOR))\\b'
+            }
+        ]
+    };
+
+    var LSL_FUNCTIONS = {
+        className: 'built_in',
+        begin: '\\b(ll(AgentInExperience|(Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(Details|ErrorMessage)|ReturnObjectsBy(ID|Owner)|Json(2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(Mag|Norm|Dist)|Rot(Between|2(Euler|Fwd|Left|Up))|(Euler|Axes)2Rot|Whisper|(Region|Owner)?Say|Shout|Listen(Control|Remove)?|Sensor(Repeat|Remove)?|Detected(Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|([GS]et)(AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(Scale|Offset|Rotate)Texture|(Rot)?Target(Remove)?|(Stop)?MoveToTarget|Apply(Rotational)?Impulse|Set(KeyframedMotion|ContentType|RegionPos|(Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(Queueing|Radius)|Vehicle(Type|(Float|Vector|Rotation)Param)|(Touch|Sit)?Text|Camera(Eye|At)Offset|PrimitiveParams|ClickAction|Link(Alpha|Color|PrimitiveParams(Fast)?|Texture(Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get((Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(PrimitiveParams|Number(OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(Details|PermMask|PrimCount)|Parcel(MaxPrims|Details|Prim(Count|Owners))|Attached(List)?|(SPMax|Free|Used)Memory|Region(Name|TimeDilation|FPS|Corner|AgentCount)|Root(Position|Rotation)|UnixTime|(Parcel|Region)Flags|(Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(Prims|NotecardLines|Sides)|Animation(List)?|(Camera|Local)(Pos|Rot)|Vel|Accel|Omega|Time(stamp|OfDay)|(Object|CenterOf)?Mass|MassMKS|Energy|Owner|(Owner)?Key|SunDirection|Texture(Offset|Scale|Rot)|Inventory(Number|Name|Key|Type|Creator|PermMask)|Permissions(Key)?|StartParameter|List(Length|EntryType)|Date|Agent(Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(Name|State))|(Get|Reset|GetAndReset)Time|PlaySound(Slave)?|LoopSound(Master|Slave)?|(Trigger|Stop|Preload)Sound|((Get|Delete)Sub|Insert)String|To(Upper|Lower)|Give(InventoryList|Money)|RezObject|(Stop)?LookAt|Sleep|CollisionFilter|(Take|Release)Controls|DetachFromAvatar|AttachToAvatar(Temp)?|InstantMessage|(GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(Length|Trim)|(Start|Stop)Animation|TargetOmega|Request(Experience)?Permissions|(Create|Break)Link|BreakAllLinks|(Give|Remove)Inventory|Water|PassTouches|Request(Agent|Inventory)Data|TeleportAgent(Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(Axis|Angle)|A(cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(CSV|Integer|Json|Float|String|Key|Vector|Rot|List(Strided)?)|DeleteSubList|List(Statistics|Sort|Randomize|(Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(Slope|Normal|Contour)|GroundRepel|(Set|Remove)VehicleFlags|SitOnLink|(AvatarOn)?(Link)?SitTarget|Script(Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(Integer|String)ToBase64|XorBase64|Log(10)?|Base64To(String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(Load|Release|(E|Une)scape)URL|ParcelMedia(CommandList|Query)|ModPow|MapDestination|(RemoveFrom|AddTo|Reset)Land(Pass|Ban)List|(Set|Clear)CameraParams|HTTP(Request|Response)|TextBox|DetectedTouch(UV|Face|Pos|(N|Bin)ormal|ST)|(MD5|SHA1|DumpList2)String|Request(Secure)?URL|Clear(Prim|Link)Media|(Link)?ParticleSystem|(Get|Request)(Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b'
+    };
+
+    return {
+        name: 'LSL (Linden Scripting Language)',
+        illegal: ':',
+        contains: [
+            LSL_STRINGS,
+            {
+                className: 'comment',
+                variants: [
+                    hljs.COMMENT('//', '$'),
+                    hljs.COMMENT('/\\*', '\\*/')
+                ],
+                relevance: 0
+            },
+            LSL_NUMBERS,
+            {
+                className: 'section',
+                variants: [
+                    {
+                        begin: '\\b(state|default)\\b'
+                    },
+                    {
+                        begin: '\\b(state_(entry|exit)|touch(_(start|end))?|(land_)?collision(_(start|end))?|timer|listen|(no_)?sensor|control|(not_)?at_(rot_)?target|money|email|experience_permissions(_denied)?|run_time_permissions|changed|attach|dataserver|moving_(start|end)|link_message|(on|object)_rez|remote_data|http_re(sponse|quest)|path_update|transaction_result)\\b'
+                    }
+                ]
+            },
+            LSL_FUNCTIONS,
+            LSL_CONSTANTS,
+            {
+                className: 'type',
+                begin: '\\b(integer|float|string|key|vector|quaternion|rotation|list)\\b'
+            }
+        ]
+    };
+}
+
+module.exports = lsl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/lua.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/lua.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Lua
+Description: Lua is a powerful, efficient, lightweight, embeddable scripting language.
+Author: Andrew Fedorov 
+Category: common, scripting
+Website: https://www.lua.org
+*/
+
+function lua(hljs) {
+  const OPENING_LONG_BRACKET = '\\[=*\\[';
+  const CLOSING_LONG_BRACKET = '\\]=*\\]';
+  const LONG_BRACKETS = {
+    begin: OPENING_LONG_BRACKET,
+    end: CLOSING_LONG_BRACKET,
+    contains: ['self']
+  };
+  const COMMENTS = [
+    hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),
+    hljs.COMMENT(
+      '--' + OPENING_LONG_BRACKET,
+      CLOSING_LONG_BRACKET,
+      {
+        contains: [LONG_BRACKETS],
+        relevance: 10
+      }
+    )
+  ];
+  return {
+    name: 'Lua',
+    keywords: {
+      $pattern: hljs.UNDERSCORE_IDENT_RE,
+      literal: "true false nil",
+      keyword: "and break do else elseif end for goto if in local not or repeat return then until while",
+      built_in:
+        // Metatags and globals:
+        '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' +
+        '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' +
+        // Standard methods and properties:
+        'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring ' +
+        'module next pairs pcall print rawequal rawget rawset require select setfenv ' +
+        'setmetatable tonumber tostring type unpack xpcall arg self ' +
+        // Library methods and properties (one line per library):
+        'coroutine resume yield status wrap create running debug getupvalue ' +
+        'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' +
+        'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' +
+        'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' +
+        'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' +
+        'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' +
+        'table setn insert getn foreachi maxn foreach concat sort remove'
+    },
+    contains: COMMENTS.concat([
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: '\\)',
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, {
+            begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*'
+          }),
+          {
+            className: 'params',
+            begin: '\\(',
+            endsWithParent: true,
+            contains: COMMENTS
+          }
+        ].concat(COMMENTS)
+      },
+      hljs.C_NUMBER_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        begin: OPENING_LONG_BRACKET,
+        end: CLOSING_LONG_BRACKET,
+        contains: [LONG_BRACKETS],
+        relevance: 5
+      }
+    ])
+  };
+}
+
+module.exports = lua;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/makefile.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/makefile.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Makefile
+Author: Ivan Sagalaev 
+Contributors: Joël Porquet 
+Website: https://www.gnu.org/software/make/manual/html_node/Introduction.html
+Category: common
+*/
+
+function makefile(hljs) {
+  /* Variables: simple (eg $(var)) and special (eg $@) */
+  const VARIABLE = {
+    className: 'variable',
+    variants: [
+      {
+        begin: '\\$\\(' + hljs.UNDERSCORE_IDENT_RE + '\\)',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        begin: /\$[@% {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Markdown
+Requires: xml.js
+Author: John Crepezzi 
+Website: https://daringfireball.net/projects/markdown/
+Category: common, markup
+*/
+
+function markdown(hljs) {
+  const INLINE_HTML = {
+    begin: /<\/?[A-Za-z_]/,
+    end: '>',
+    subLanguage: 'xml',
+    relevance: 0
+  };
+  const HORIZONTAL_RULE = {
+    begin: '^[-\\*]{3,}',
+    end: '$'
+  };
+  const CODE = {
+    className: 'code',
+    variants: [
+      // TODO: fix to allow these to work with sublanguage also
+      {
+        begin: '(`{3,})[^`](.|\\n)*?\\1`*[ ]*'
+      },
+      {
+        begin: '(~{3,})[^~](.|\\n)*?\\1~*[ ]*'
+      },
+      // needed to allow markdown as a sublanguage to work
+      {
+        begin: '```',
+        end: '```+[ ]*$'
+      },
+      {
+        begin: '~~~',
+        end: '~~~+[ ]*$'
+      },
+      {
+        begin: '`.+?`'
+      },
+      {
+        begin: '(?=^( {4}|\\t))',
+        // use contains to gobble up multiple lines to allow the block to be whatever size
+        // but only have a single open/close tag vs one per line
+        contains: [
+          {
+            begin: '^( {4}|\\t)',
+            end: '(\\n)$'
+          }
+        ],
+        relevance: 0
+      }
+    ]
+  };
+  const LIST = {
+    className: 'bullet',
+    begin: '^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)',
+    end: '\\s+',
+    excludeEnd: true
+  };
+  const LINK_REFERENCE = {
+    begin: /^\[[^\n]+\]:/,
+    returnBegin: true,
+    contains: [
+      {
+        className: 'symbol',
+        begin: /\[/,
+        end: /\]/,
+        excludeBegin: true,
+        excludeEnd: true
+      },
+      {
+        className: 'link',
+        begin: /:\s*/,
+        end: /$/,
+        excludeBegin: true
+      }
+    ]
+  };
+  const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;
+  const LINK = {
+    variants: [
+      // too much like nested array access in so many languages
+      // to have any real relevance
+      {
+        begin: /\[.+?\]\[.*?\]/,
+        relevance: 0
+      },
+      // popular internet URLs
+      {
+        begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
+        relevance: 2
+      },
+      {
+        begin: concat(/\[.+?\]\(/, URL_SCHEME, /:\/\/.*?\)/),
+        relevance: 2
+      },
+      // relative urls
+      {
+        begin: /\[.+?\]\([./?&#].*?\)/,
+        relevance: 1
+      },
+      // whatever else, lower relevance (might not be a link at all)
+      {
+        begin: /\[.+?\]\(.*?\)/,
+        relevance: 0
+      }
+    ],
+    returnBegin: true,
+    contains: [
+      {
+        className: 'string',
+        relevance: 0,
+        begin: '\\[',
+        end: '\\]',
+        excludeBegin: true,
+        returnEnd: true
+      },
+      {
+        className: 'link',
+        relevance: 0,
+        begin: '\\]\\(',
+        end: '\\)',
+        excludeBegin: true,
+        excludeEnd: true
+      },
+      {
+        className: 'symbol',
+        relevance: 0,
+        begin: '\\]\\[',
+        end: '\\]',
+        excludeBegin: true,
+        excludeEnd: true
+      }
+    ]
+  };
+  const BOLD = {
+    className: 'strong',
+    contains: [], // defined later
+    variants: [
+      {
+        begin: /_{2}/,
+        end: /_{2}/
+      },
+      {
+        begin: /\*{2}/,
+        end: /\*{2}/
+      }
+    ]
+  };
+  const ITALIC = {
+    className: 'emphasis',
+    contains: [], // defined later
+    variants: [
+      {
+        begin: /\*(?!\*)/,
+        end: /\*/
+      },
+      {
+        begin: /_(?!_)/,
+        end: /_/,
+        relevance: 0
+      }
+    ]
+  };
+  BOLD.contains.push(ITALIC);
+  ITALIC.contains.push(BOLD);
+
+  let CONTAINABLE = [
+    INLINE_HTML,
+    LINK
+  ];
+
+  BOLD.contains = BOLD.contains.concat(CONTAINABLE);
+  ITALIC.contains = ITALIC.contains.concat(CONTAINABLE);
+
+  CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);
+
+  const HEADER = {
+    className: 'section',
+    variants: [
+      {
+        begin: '^#{1,6}',
+        end: '$',
+        contains: CONTAINABLE
+      },
+      {
+        begin: '(?=^.+?\\n[=-]{2,}$)',
+        contains: [
+          {
+            begin: '^[=-]*$'
+          },
+          {
+            begin: '^',
+            end: "\\n",
+            contains: CONTAINABLE
+          }
+        ]
+      }
+    ]
+  };
+
+  const BLOCKQUOTE = {
+    className: 'quote',
+    begin: '^>\\s+',
+    contains: CONTAINABLE,
+    end: '$'
+  };
+
+  return {
+    name: 'Markdown',
+    aliases: [
+      'md',
+      'mkdown',
+      'mkd'
+    ],
+    contains: [
+      HEADER,
+      INLINE_HTML,
+      LIST,
+      BOLD,
+      ITALIC,
+      BLOCKQUOTE,
+      CODE,
+      HORIZONTAL_RULE,
+      LINK,
+      LINK_REFERENCE
+    ]
+  };
+}
+
+module.exports = markdown;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/mathematica.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/mathematica.js ***!
+  \****************************************************************/
+/***/ ((module) => {
+
+const SYSTEM_SYMBOLS = [
+  "AASTriangle",
+  "AbelianGroup",
+  "Abort",
+  "AbortKernels",
+  "AbortProtect",
+  "AbortScheduledTask",
+  "Above",
+  "Abs",
+  "AbsArg",
+  "AbsArgPlot",
+  "Absolute",
+  "AbsoluteCorrelation",
+  "AbsoluteCorrelationFunction",
+  "AbsoluteCurrentValue",
+  "AbsoluteDashing",
+  "AbsoluteFileName",
+  "AbsoluteOptions",
+  "AbsolutePointSize",
+  "AbsoluteThickness",
+  "AbsoluteTime",
+  "AbsoluteTiming",
+  "AcceptanceThreshold",
+  "AccountingForm",
+  "Accumulate",
+  "Accuracy",
+  "AccuracyGoal",
+  "ActionDelay",
+  "ActionMenu",
+  "ActionMenuBox",
+  "ActionMenuBoxOptions",
+  "Activate",
+  "Active",
+  "ActiveClassification",
+  "ActiveClassificationObject",
+  "ActiveItem",
+  "ActivePrediction",
+  "ActivePredictionObject",
+  "ActiveStyle",
+  "AcyclicGraphQ",
+  "AddOnHelpPath",
+  "AddSides",
+  "AddTo",
+  "AddToSearchIndex",
+  "AddUsers",
+  "AdjacencyGraph",
+  "AdjacencyList",
+  "AdjacencyMatrix",
+  "AdjacentMeshCells",
+  "AdjustmentBox",
+  "AdjustmentBoxOptions",
+  "AdjustTimeSeriesForecast",
+  "AdministrativeDivisionData",
+  "AffineHalfSpace",
+  "AffineSpace",
+  "AffineStateSpaceModel",
+  "AffineTransform",
+  "After",
+  "AggregatedEntityClass",
+  "AggregationLayer",
+  "AircraftData",
+  "AirportData",
+  "AirPressureData",
+  "AirTemperatureData",
+  "AiryAi",
+  "AiryAiPrime",
+  "AiryAiZero",
+  "AiryBi",
+  "AiryBiPrime",
+  "AiryBiZero",
+  "AlgebraicIntegerQ",
+  "AlgebraicNumber",
+  "AlgebraicNumberDenominator",
+  "AlgebraicNumberNorm",
+  "AlgebraicNumberPolynomial",
+  "AlgebraicNumberTrace",
+  "AlgebraicRules",
+  "AlgebraicRulesData",
+  "Algebraics",
+  "AlgebraicUnitQ",
+  "Alignment",
+  "AlignmentMarker",
+  "AlignmentPoint",
+  "All",
+  "AllowAdultContent",
+  "AllowedCloudExtraParameters",
+  "AllowedCloudParameterExtensions",
+  "AllowedDimensions",
+  "AllowedFrequencyRange",
+  "AllowedHeads",
+  "AllowGroupClose",
+  "AllowIncomplete",
+  "AllowInlineCells",
+  "AllowKernelInitialization",
+  "AllowLooseGrammar",
+  "AllowReverseGroupClose",
+  "AllowScriptLevelChange",
+  "AllowVersionUpdate",
+  "AllTrue",
+  "Alphabet",
+  "AlphabeticOrder",
+  "AlphabeticSort",
+  "AlphaChannel",
+  "AlternateImage",
+  "AlternatingFactorial",
+  "AlternatingGroup",
+  "AlternativeHypothesis",
+  "Alternatives",
+  "AltitudeMethod",
+  "AmbientLight",
+  "AmbiguityFunction",
+  "AmbiguityList",
+  "Analytic",
+  "AnatomyData",
+  "AnatomyForm",
+  "AnatomyPlot3D",
+  "AnatomySkinStyle",
+  "AnatomyStyling",
+  "AnchoredSearch",
+  "And",
+  "AndersonDarlingTest",
+  "AngerJ",
+  "AngleBisector",
+  "AngleBracket",
+  "AnglePath",
+  "AnglePath3D",
+  "AngleVector",
+  "AngularGauge",
+  "Animate",
+  "AnimationCycleOffset",
+  "AnimationCycleRepetitions",
+  "AnimationDirection",
+  "AnimationDisplayTime",
+  "AnimationRate",
+  "AnimationRepetitions",
+  "AnimationRunning",
+  "AnimationRunTime",
+  "AnimationTimeIndex",
+  "Animator",
+  "AnimatorBox",
+  "AnimatorBoxOptions",
+  "AnimatorElements",
+  "Annotate",
+  "Annotation",
+  "AnnotationDelete",
+  "AnnotationKeys",
+  "AnnotationRules",
+  "AnnotationValue",
+  "Annuity",
+  "AnnuityDue",
+  "Annulus",
+  "AnomalyDetection",
+  "AnomalyDetector",
+  "AnomalyDetectorFunction",
+  "Anonymous",
+  "Antialiasing",
+  "AntihermitianMatrixQ",
+  "Antisymmetric",
+  "AntisymmetricMatrixQ",
+  "Antonyms",
+  "AnyOrder",
+  "AnySubset",
+  "AnyTrue",
+  "Apart",
+  "ApartSquareFree",
+  "APIFunction",
+  "Appearance",
+  "AppearanceElements",
+  "AppearanceRules",
+  "AppellF1",
+  "Append",
+  "AppendCheck",
+  "AppendLayer",
+  "AppendTo",
+  "Apply",
+  "ApplySides",
+  "ArcCos",
+  "ArcCosh",
+  "ArcCot",
+  "ArcCoth",
+  "ArcCsc",
+  "ArcCsch",
+  "ArcCurvature",
+  "ARCHProcess",
+  "ArcLength",
+  "ArcSec",
+  "ArcSech",
+  "ArcSin",
+  "ArcSinDistribution",
+  "ArcSinh",
+  "ArcTan",
+  "ArcTanh",
+  "Area",
+  "Arg",
+  "ArgMax",
+  "ArgMin",
+  "ArgumentCountQ",
+  "ARIMAProcess",
+  "ArithmeticGeometricMean",
+  "ARMAProcess",
+  "Around",
+  "AroundReplace",
+  "ARProcess",
+  "Array",
+  "ArrayComponents",
+  "ArrayDepth",
+  "ArrayFilter",
+  "ArrayFlatten",
+  "ArrayMesh",
+  "ArrayPad",
+  "ArrayPlot",
+  "ArrayQ",
+  "ArrayResample",
+  "ArrayReshape",
+  "ArrayRules",
+  "Arrays",
+  "Arrow",
+  "Arrow3DBox",
+  "ArrowBox",
+  "Arrowheads",
+  "ASATriangle",
+  "Ask",
+  "AskAppend",
+  "AskConfirm",
+  "AskDisplay",
+  "AskedQ",
+  "AskedValue",
+  "AskFunction",
+  "AskState",
+  "AskTemplateDisplay",
+  "AspectRatio",
+  "AspectRatioFixed",
+  "Assert",
+  "AssociateTo",
+  "Association",
+  "AssociationFormat",
+  "AssociationMap",
+  "AssociationQ",
+  "AssociationThread",
+  "AssumeDeterministic",
+  "Assuming",
+  "Assumptions",
+  "AstronomicalData",
+  "Asymptotic",
+  "AsymptoticDSolveValue",
+  "AsymptoticEqual",
+  "AsymptoticEquivalent",
+  "AsymptoticGreater",
+  "AsymptoticGreaterEqual",
+  "AsymptoticIntegrate",
+  "AsymptoticLess",
+  "AsymptoticLessEqual",
+  "AsymptoticOutputTracker",
+  "AsymptoticProduct",
+  "AsymptoticRSolveValue",
+  "AsymptoticSolve",
+  "AsymptoticSum",
+  "Asynchronous",
+  "AsynchronousTaskObject",
+  "AsynchronousTasks",
+  "Atom",
+  "AtomCoordinates",
+  "AtomCount",
+  "AtomDiagramCoordinates",
+  "AtomList",
+  "AtomQ",
+  "AttentionLayer",
+  "Attributes",
+  "Audio",
+  "AudioAmplify",
+  "AudioAnnotate",
+  "AudioAnnotationLookup",
+  "AudioBlockMap",
+  "AudioCapture",
+  "AudioChannelAssignment",
+  "AudioChannelCombine",
+  "AudioChannelMix",
+  "AudioChannels",
+  "AudioChannelSeparate",
+  "AudioData",
+  "AudioDelay",
+  "AudioDelete",
+  "AudioDevice",
+  "AudioDistance",
+  "AudioEncoding",
+  "AudioFade",
+  "AudioFrequencyShift",
+  "AudioGenerator",
+  "AudioIdentify",
+  "AudioInputDevice",
+  "AudioInsert",
+  "AudioInstanceQ",
+  "AudioIntervals",
+  "AudioJoin",
+  "AudioLabel",
+  "AudioLength",
+  "AudioLocalMeasurements",
+  "AudioLooping",
+  "AudioLoudness",
+  "AudioMeasurements",
+  "AudioNormalize",
+  "AudioOutputDevice",
+  "AudioOverlay",
+  "AudioPad",
+  "AudioPan",
+  "AudioPartition",
+  "AudioPause",
+  "AudioPitchShift",
+  "AudioPlay",
+  "AudioPlot",
+  "AudioQ",
+  "AudioRecord",
+  "AudioReplace",
+  "AudioResample",
+  "AudioReverb",
+  "AudioReverse",
+  "AudioSampleRate",
+  "AudioSpectralMap",
+  "AudioSpectralTransformation",
+  "AudioSplit",
+  "AudioStop",
+  "AudioStream",
+  "AudioStreams",
+  "AudioTimeStretch",
+  "AudioTracks",
+  "AudioTrim",
+  "AudioType",
+  "AugmentedPolyhedron",
+  "AugmentedSymmetricPolynomial",
+  "Authenticate",
+  "Authentication",
+  "AuthenticationDialog",
+  "AutoAction",
+  "Autocomplete",
+  "AutocompletionFunction",
+  "AutoCopy",
+  "AutocorrelationTest",
+  "AutoDelete",
+  "AutoEvaluateEvents",
+  "AutoGeneratedPackage",
+  "AutoIndent",
+  "AutoIndentSpacings",
+  "AutoItalicWords",
+  "AutoloadPath",
+  "AutoMatch",
+  "Automatic",
+  "AutomaticImageSize",
+  "AutoMultiplicationSymbol",
+  "AutoNumberFormatting",
+  "AutoOpenNotebooks",
+  "AutoOpenPalettes",
+  "AutoQuoteCharacters",
+  "AutoRefreshed",
+  "AutoRemove",
+  "AutorunSequencing",
+  "AutoScaling",
+  "AutoScroll",
+  "AutoSpacing",
+  "AutoStyleOptions",
+  "AutoStyleWords",
+  "AutoSubmitting",
+  "Axes",
+  "AxesEdge",
+  "AxesLabel",
+  "AxesOrigin",
+  "AxesStyle",
+  "AxiomaticTheory",
+  "Axis",
+  "BabyMonsterGroupB",
+  "Back",
+  "Background",
+  "BackgroundAppearance",
+  "BackgroundTasksSettings",
+  "Backslash",
+  "Backsubstitution",
+  "Backward",
+  "Ball",
+  "Band",
+  "BandpassFilter",
+  "BandstopFilter",
+  "BarabasiAlbertGraphDistribution",
+  "BarChart",
+  "BarChart3D",
+  "BarcodeImage",
+  "BarcodeRecognize",
+  "BaringhausHenzeTest",
+  "BarLegend",
+  "BarlowProschanImportance",
+  "BarnesG",
+  "BarOrigin",
+  "BarSpacing",
+  "BartlettHannWindow",
+  "BartlettWindow",
+  "BaseDecode",
+  "BaseEncode",
+  "BaseForm",
+  "Baseline",
+  "BaselinePosition",
+  "BaseStyle",
+  "BasicRecurrentLayer",
+  "BatchNormalizationLayer",
+  "BatchSize",
+  "BatesDistribution",
+  "BattleLemarieWavelet",
+  "BayesianMaximization",
+  "BayesianMaximizationObject",
+  "BayesianMinimization",
+  "BayesianMinimizationObject",
+  "Because",
+  "BeckmannDistribution",
+  "Beep",
+  "Before",
+  "Begin",
+  "BeginDialogPacket",
+  "BeginFrontEndInteractionPacket",
+  "BeginPackage",
+  "BellB",
+  "BellY",
+  "Below",
+  "BenfordDistribution",
+  "BeniniDistribution",
+  "BenktanderGibratDistribution",
+  "BenktanderWeibullDistribution",
+  "BernoulliB",
+  "BernoulliDistribution",
+  "BernoulliGraphDistribution",
+  "BernoulliProcess",
+  "BernsteinBasis",
+  "BesselFilterModel",
+  "BesselI",
+  "BesselJ",
+  "BesselJZero",
+  "BesselK",
+  "BesselY",
+  "BesselYZero",
+  "Beta",
+  "BetaBinomialDistribution",
+  "BetaDistribution",
+  "BetaNegativeBinomialDistribution",
+  "BetaPrimeDistribution",
+  "BetaRegularized",
+  "Between",
+  "BetweennessCentrality",
+  "BeveledPolyhedron",
+  "BezierCurve",
+  "BezierCurve3DBox",
+  "BezierCurve3DBoxOptions",
+  "BezierCurveBox",
+  "BezierCurveBoxOptions",
+  "BezierFunction",
+  "BilateralFilter",
+  "Binarize",
+  "BinaryDeserialize",
+  "BinaryDistance",
+  "BinaryFormat",
+  "BinaryImageQ",
+  "BinaryRead",
+  "BinaryReadList",
+  "BinarySerialize",
+  "BinaryWrite",
+  "BinCounts",
+  "BinLists",
+  "Binomial",
+  "BinomialDistribution",
+  "BinomialProcess",
+  "BinormalDistribution",
+  "BiorthogonalSplineWavelet",
+  "BipartiteGraphQ",
+  "BiquadraticFilterModel",
+  "BirnbaumImportance",
+  "BirnbaumSaundersDistribution",
+  "BitAnd",
+  "BitClear",
+  "BitGet",
+  "BitLength",
+  "BitNot",
+  "BitOr",
+  "BitSet",
+  "BitShiftLeft",
+  "BitShiftRight",
+  "BitXor",
+  "BiweightLocation",
+  "BiweightMidvariance",
+  "Black",
+  "BlackmanHarrisWindow",
+  "BlackmanNuttallWindow",
+  "BlackmanWindow",
+  "Blank",
+  "BlankForm",
+  "BlankNullSequence",
+  "BlankSequence",
+  "Blend",
+  "Block",
+  "BlockchainAddressData",
+  "BlockchainBase",
+  "BlockchainBlockData",
+  "BlockchainContractValue",
+  "BlockchainData",
+  "BlockchainGet",
+  "BlockchainKeyEncode",
+  "BlockchainPut",
+  "BlockchainTokenData",
+  "BlockchainTransaction",
+  "BlockchainTransactionData",
+  "BlockchainTransactionSign",
+  "BlockchainTransactionSubmit",
+  "BlockMap",
+  "BlockRandom",
+  "BlomqvistBeta",
+  "BlomqvistBetaTest",
+  "Blue",
+  "Blur",
+  "BodePlot",
+  "BohmanWindow",
+  "Bold",
+  "Bond",
+  "BondCount",
+  "BondList",
+  "BondQ",
+  "Bookmarks",
+  "Boole",
+  "BooleanConsecutiveFunction",
+  "BooleanConvert",
+  "BooleanCountingFunction",
+  "BooleanFunction",
+  "BooleanGraph",
+  "BooleanMaxterms",
+  "BooleanMinimize",
+  "BooleanMinterms",
+  "BooleanQ",
+  "BooleanRegion",
+  "Booleans",
+  "BooleanStrings",
+  "BooleanTable",
+  "BooleanVariables",
+  "BorderDimensions",
+  "BorelTannerDistribution",
+  "Bottom",
+  "BottomHatTransform",
+  "BoundaryDiscretizeGraphics",
+  "BoundaryDiscretizeRegion",
+  "BoundaryMesh",
+  "BoundaryMeshRegion",
+  "BoundaryMeshRegionQ",
+  "BoundaryStyle",
+  "BoundedRegionQ",
+  "BoundingRegion",
+  "Bounds",
+  "Box",
+  "BoxBaselineShift",
+  "BoxData",
+  "BoxDimensions",
+  "Boxed",
+  "Boxes",
+  "BoxForm",
+  "BoxFormFormatTypes",
+  "BoxFrame",
+  "BoxID",
+  "BoxMargins",
+  "BoxMatrix",
+  "BoxObject",
+  "BoxRatios",
+  "BoxRotation",
+  "BoxRotationPoint",
+  "BoxStyle",
+  "BoxWhiskerChart",
+  "Bra",
+  "BracketingBar",
+  "BraKet",
+  "BrayCurtisDistance",
+  "BreadthFirstScan",
+  "Break",
+  "BridgeData",
+  "BrightnessEqualize",
+  "BroadcastStationData",
+  "Brown",
+  "BrownForsytheTest",
+  "BrownianBridgeProcess",
+  "BrowserCategory",
+  "BSplineBasis",
+  "BSplineCurve",
+  "BSplineCurve3DBox",
+  "BSplineCurve3DBoxOptions",
+  "BSplineCurveBox",
+  "BSplineCurveBoxOptions",
+  "BSplineFunction",
+  "BSplineSurface",
+  "BSplineSurface3DBox",
+  "BSplineSurface3DBoxOptions",
+  "BubbleChart",
+  "BubbleChart3D",
+  "BubbleScale",
+  "BubbleSizes",
+  "BuildingData",
+  "BulletGauge",
+  "BusinessDayQ",
+  "ButterflyGraph",
+  "ButterworthFilterModel",
+  "Button",
+  "ButtonBar",
+  "ButtonBox",
+  "ButtonBoxOptions",
+  "ButtonCell",
+  "ButtonContents",
+  "ButtonData",
+  "ButtonEvaluator",
+  "ButtonExpandable",
+  "ButtonFrame",
+  "ButtonFunction",
+  "ButtonMargins",
+  "ButtonMinHeight",
+  "ButtonNote",
+  "ButtonNotebook",
+  "ButtonSource",
+  "ButtonStyle",
+  "ButtonStyleMenuListing",
+  "Byte",
+  "ByteArray",
+  "ByteArrayFormat",
+  "ByteArrayQ",
+  "ByteArrayToString",
+  "ByteCount",
+  "ByteOrdering",
+  "C",
+  "CachedValue",
+  "CacheGraphics",
+  "CachePersistence",
+  "CalendarConvert",
+  "CalendarData",
+  "CalendarType",
+  "Callout",
+  "CalloutMarker",
+  "CalloutStyle",
+  "CallPacket",
+  "CanberraDistance",
+  "Cancel",
+  "CancelButton",
+  "CandlestickChart",
+  "CanonicalGraph",
+  "CanonicalizePolygon",
+  "CanonicalizePolyhedron",
+  "CanonicalName",
+  "CanonicalWarpingCorrespondence",
+  "CanonicalWarpingDistance",
+  "CantorMesh",
+  "CantorStaircase",
+  "Cap",
+  "CapForm",
+  "CapitalDifferentialD",
+  "Capitalize",
+  "CapsuleShape",
+  "CaptureRunning",
+  "CardinalBSplineBasis",
+  "CarlemanLinearize",
+  "CarmichaelLambda",
+  "CaseOrdering",
+  "Cases",
+  "CaseSensitive",
+  "Cashflow",
+  "Casoratian",
+  "Catalan",
+  "CatalanNumber",
+  "Catch",
+  "CategoricalDistribution",
+  "Catenate",
+  "CatenateLayer",
+  "CauchyDistribution",
+  "CauchyWindow",
+  "CayleyGraph",
+  "CDF",
+  "CDFDeploy",
+  "CDFInformation",
+  "CDFWavelet",
+  "Ceiling",
+  "CelestialSystem",
+  "Cell",
+  "CellAutoOverwrite",
+  "CellBaseline",
+  "CellBoundingBox",
+  "CellBracketOptions",
+  "CellChangeTimes",
+  "CellContents",
+  "CellContext",
+  "CellDingbat",
+  "CellDynamicExpression",
+  "CellEditDuplicate",
+  "CellElementsBoundingBox",
+  "CellElementSpacings",
+  "CellEpilog",
+  "CellEvaluationDuplicate",
+  "CellEvaluationFunction",
+  "CellEvaluationLanguage",
+  "CellEventActions",
+  "CellFrame",
+  "CellFrameColor",
+  "CellFrameLabelMargins",
+  "CellFrameLabels",
+  "CellFrameMargins",
+  "CellGroup",
+  "CellGroupData",
+  "CellGrouping",
+  "CellGroupingRules",
+  "CellHorizontalScrolling",
+  "CellID",
+  "CellLabel",
+  "CellLabelAutoDelete",
+  "CellLabelMargins",
+  "CellLabelPositioning",
+  "CellLabelStyle",
+  "CellLabelTemplate",
+  "CellMargins",
+  "CellObject",
+  "CellOpen",
+  "CellPrint",
+  "CellProlog",
+  "Cells",
+  "CellSize",
+  "CellStyle",
+  "CellTags",
+  "CellularAutomaton",
+  "CensoredDistribution",
+  "Censoring",
+  "Center",
+  "CenterArray",
+  "CenterDot",
+  "CentralFeature",
+  "CentralMoment",
+  "CentralMomentGeneratingFunction",
+  "Cepstrogram",
+  "CepstrogramArray",
+  "CepstrumArray",
+  "CForm",
+  "ChampernowneNumber",
+  "ChangeOptions",
+  "ChannelBase",
+  "ChannelBrokerAction",
+  "ChannelDatabin",
+  "ChannelHistoryLength",
+  "ChannelListen",
+  "ChannelListener",
+  "ChannelListeners",
+  "ChannelListenerWait",
+  "ChannelObject",
+  "ChannelPreSendFunction",
+  "ChannelReceiverFunction",
+  "ChannelSend",
+  "ChannelSubscribers",
+  "ChanVeseBinarize",
+  "Character",
+  "CharacterCounts",
+  "CharacterEncoding",
+  "CharacterEncodingsPath",
+  "CharacteristicFunction",
+  "CharacteristicPolynomial",
+  "CharacterName",
+  "CharacterNormalize",
+  "CharacterRange",
+  "Characters",
+  "ChartBaseStyle",
+  "ChartElementData",
+  "ChartElementDataFunction",
+  "ChartElementFunction",
+  "ChartElements",
+  "ChartLabels",
+  "ChartLayout",
+  "ChartLegends",
+  "ChartStyle",
+  "Chebyshev1FilterModel",
+  "Chebyshev2FilterModel",
+  "ChebyshevDistance",
+  "ChebyshevT",
+  "ChebyshevU",
+  "Check",
+  "CheckAbort",
+  "CheckAll",
+  "Checkbox",
+  "CheckboxBar",
+  "CheckboxBox",
+  "CheckboxBoxOptions",
+  "ChemicalData",
+  "ChessboardDistance",
+  "ChiDistribution",
+  "ChineseRemainder",
+  "ChiSquareDistribution",
+  "ChoiceButtons",
+  "ChoiceDialog",
+  "CholeskyDecomposition",
+  "Chop",
+  "ChromaticityPlot",
+  "ChromaticityPlot3D",
+  "ChromaticPolynomial",
+  "Circle",
+  "CircleBox",
+  "CircleDot",
+  "CircleMinus",
+  "CirclePlus",
+  "CirclePoints",
+  "CircleThrough",
+  "CircleTimes",
+  "CirculantGraph",
+  "CircularOrthogonalMatrixDistribution",
+  "CircularQuaternionMatrixDistribution",
+  "CircularRealMatrixDistribution",
+  "CircularSymplecticMatrixDistribution",
+  "CircularUnitaryMatrixDistribution",
+  "Circumsphere",
+  "CityData",
+  "ClassifierFunction",
+  "ClassifierInformation",
+  "ClassifierMeasurements",
+  "ClassifierMeasurementsObject",
+  "Classify",
+  "ClassPriors",
+  "Clear",
+  "ClearAll",
+  "ClearAttributes",
+  "ClearCookies",
+  "ClearPermissions",
+  "ClearSystemCache",
+  "ClebschGordan",
+  "ClickPane",
+  "Clip",
+  "ClipboardNotebook",
+  "ClipFill",
+  "ClippingStyle",
+  "ClipPlanes",
+  "ClipPlanesStyle",
+  "ClipRange",
+  "Clock",
+  "ClockGauge",
+  "ClockwiseContourIntegral",
+  "Close",
+  "Closed",
+  "CloseKernels",
+  "ClosenessCentrality",
+  "Closing",
+  "ClosingAutoSave",
+  "ClosingEvent",
+  "ClosingSaveDialog",
+  "CloudAccountData",
+  "CloudBase",
+  "CloudConnect",
+  "CloudConnections",
+  "CloudDeploy",
+  "CloudDirectory",
+  "CloudDisconnect",
+  "CloudEvaluate",
+  "CloudExport",
+  "CloudExpression",
+  "CloudExpressions",
+  "CloudFunction",
+  "CloudGet",
+  "CloudImport",
+  "CloudLoggingData",
+  "CloudObject",
+  "CloudObjectInformation",
+  "CloudObjectInformationData",
+  "CloudObjectNameFormat",
+  "CloudObjects",
+  "CloudObjectURLType",
+  "CloudPublish",
+  "CloudPut",
+  "CloudRenderingMethod",
+  "CloudSave",
+  "CloudShare",
+  "CloudSubmit",
+  "CloudSymbol",
+  "CloudUnshare",
+  "CloudUserID",
+  "ClusterClassify",
+  "ClusterDissimilarityFunction",
+  "ClusteringComponents",
+  "ClusteringTree",
+  "CMYKColor",
+  "Coarse",
+  "CodeAssistOptions",
+  "Coefficient",
+  "CoefficientArrays",
+  "CoefficientDomain",
+  "CoefficientList",
+  "CoefficientRules",
+  "CoifletWavelet",
+  "Collect",
+  "Colon",
+  "ColonForm",
+  "ColorBalance",
+  "ColorCombine",
+  "ColorConvert",
+  "ColorCoverage",
+  "ColorData",
+  "ColorDataFunction",
+  "ColorDetect",
+  "ColorDistance",
+  "ColorFunction",
+  "ColorFunctionScaling",
+  "Colorize",
+  "ColorNegate",
+  "ColorOutput",
+  "ColorProfileData",
+  "ColorQ",
+  "ColorQuantize",
+  "ColorReplace",
+  "ColorRules",
+  "ColorSelectorSettings",
+  "ColorSeparate",
+  "ColorSetter",
+  "ColorSetterBox",
+  "ColorSetterBoxOptions",
+  "ColorSlider",
+  "ColorsNear",
+  "ColorSpace",
+  "ColorToneMapping",
+  "Column",
+  "ColumnAlignments",
+  "ColumnBackgrounds",
+  "ColumnForm",
+  "ColumnLines",
+  "ColumnsEqual",
+  "ColumnSpacings",
+  "ColumnWidths",
+  "CombinedEntityClass",
+  "CombinerFunction",
+  "CometData",
+  "CommonDefaultFormatTypes",
+  "Commonest",
+  "CommonestFilter",
+  "CommonName",
+  "CommonUnits",
+  "CommunityBoundaryStyle",
+  "CommunityGraphPlot",
+  "CommunityLabels",
+  "CommunityRegionStyle",
+  "CompanyData",
+  "CompatibleUnitQ",
+  "CompilationOptions",
+  "CompilationTarget",
+  "Compile",
+  "Compiled",
+  "CompiledCodeFunction",
+  "CompiledFunction",
+  "CompilerOptions",
+  "Complement",
+  "ComplementedEntityClass",
+  "CompleteGraph",
+  "CompleteGraphQ",
+  "CompleteKaryTree",
+  "CompletionsListPacket",
+  "Complex",
+  "ComplexContourPlot",
+  "Complexes",
+  "ComplexExpand",
+  "ComplexInfinity",
+  "ComplexityFunction",
+  "ComplexListPlot",
+  "ComplexPlot",
+  "ComplexPlot3D",
+  "ComplexRegionPlot",
+  "ComplexStreamPlot",
+  "ComplexVectorPlot",
+  "ComponentMeasurements",
+  "ComponentwiseContextMenu",
+  "Compose",
+  "ComposeList",
+  "ComposeSeries",
+  "CompositeQ",
+  "Composition",
+  "CompoundElement",
+  "CompoundExpression",
+  "CompoundPoissonDistribution",
+  "CompoundPoissonProcess",
+  "CompoundRenewalProcess",
+  "Compress",
+  "CompressedData",
+  "CompressionLevel",
+  "ComputeUncertainty",
+  "Condition",
+  "ConditionalExpression",
+  "Conditioned",
+  "Cone",
+  "ConeBox",
+  "ConfidenceLevel",
+  "ConfidenceRange",
+  "ConfidenceTransform",
+  "ConfigurationPath",
+  "ConformAudio",
+  "ConformImages",
+  "Congruent",
+  "ConicHullRegion",
+  "ConicHullRegion3DBox",
+  "ConicHullRegionBox",
+  "ConicOptimization",
+  "Conjugate",
+  "ConjugateTranspose",
+  "Conjunction",
+  "Connect",
+  "ConnectedComponents",
+  "ConnectedGraphComponents",
+  "ConnectedGraphQ",
+  "ConnectedMeshComponents",
+  "ConnectedMoleculeComponents",
+  "ConnectedMoleculeQ",
+  "ConnectionSettings",
+  "ConnectLibraryCallbackFunction",
+  "ConnectSystemModelComponents",
+  "ConnesWindow",
+  "ConoverTest",
+  "ConsoleMessage",
+  "ConsoleMessagePacket",
+  "Constant",
+  "ConstantArray",
+  "ConstantArrayLayer",
+  "ConstantImage",
+  "ConstantPlusLayer",
+  "ConstantRegionQ",
+  "Constants",
+  "ConstantTimesLayer",
+  "ConstellationData",
+  "ConstrainedMax",
+  "ConstrainedMin",
+  "Construct",
+  "Containing",
+  "ContainsAll",
+  "ContainsAny",
+  "ContainsExactly",
+  "ContainsNone",
+  "ContainsOnly",
+  "ContentFieldOptions",
+  "ContentLocationFunction",
+  "ContentObject",
+  "ContentPadding",
+  "ContentsBoundingBox",
+  "ContentSelectable",
+  "ContentSize",
+  "Context",
+  "ContextMenu",
+  "Contexts",
+  "ContextToFileName",
+  "Continuation",
+  "Continue",
+  "ContinuedFraction",
+  "ContinuedFractionK",
+  "ContinuousAction",
+  "ContinuousMarkovProcess",
+  "ContinuousTask",
+  "ContinuousTimeModelQ",
+  "ContinuousWaveletData",
+  "ContinuousWaveletTransform",
+  "ContourDetect",
+  "ContourGraphics",
+  "ContourIntegral",
+  "ContourLabels",
+  "ContourLines",
+  "ContourPlot",
+  "ContourPlot3D",
+  "Contours",
+  "ContourShading",
+  "ContourSmoothing",
+  "ContourStyle",
+  "ContraharmonicMean",
+  "ContrastiveLossLayer",
+  "Control",
+  "ControlActive",
+  "ControlAlignment",
+  "ControlGroupContentsBox",
+  "ControllabilityGramian",
+  "ControllabilityMatrix",
+  "ControllableDecomposition",
+  "ControllableModelQ",
+  "ControllerDuration",
+  "ControllerInformation",
+  "ControllerInformationData",
+  "ControllerLinking",
+  "ControllerManipulate",
+  "ControllerMethod",
+  "ControllerPath",
+  "ControllerState",
+  "ControlPlacement",
+  "ControlsRendering",
+  "ControlType",
+  "Convergents",
+  "ConversionOptions",
+  "ConversionRules",
+  "ConvertToBitmapPacket",
+  "ConvertToPostScript",
+  "ConvertToPostScriptPacket",
+  "ConvexHullMesh",
+  "ConvexPolygonQ",
+  "ConvexPolyhedronQ",
+  "ConvolutionLayer",
+  "Convolve",
+  "ConwayGroupCo1",
+  "ConwayGroupCo2",
+  "ConwayGroupCo3",
+  "CookieFunction",
+  "Cookies",
+  "CoordinateBoundingBox",
+  "CoordinateBoundingBoxArray",
+  "CoordinateBounds",
+  "CoordinateBoundsArray",
+  "CoordinateChartData",
+  "CoordinatesToolOptions",
+  "CoordinateTransform",
+  "CoordinateTransformData",
+  "CoprimeQ",
+  "Coproduct",
+  "CopulaDistribution",
+  "Copyable",
+  "CopyDatabin",
+  "CopyDirectory",
+  "CopyFile",
+  "CopyTag",
+  "CopyToClipboard",
+  "CornerFilter",
+  "CornerNeighbors",
+  "Correlation",
+  "CorrelationDistance",
+  "CorrelationFunction",
+  "CorrelationTest",
+  "Cos",
+  "Cosh",
+  "CoshIntegral",
+  "CosineDistance",
+  "CosineWindow",
+  "CosIntegral",
+  "Cot",
+  "Coth",
+  "Count",
+  "CountDistinct",
+  "CountDistinctBy",
+  "CounterAssignments",
+  "CounterBox",
+  "CounterBoxOptions",
+  "CounterClockwiseContourIntegral",
+  "CounterEvaluator",
+  "CounterFunction",
+  "CounterIncrements",
+  "CounterStyle",
+  "CounterStyleMenuListing",
+  "CountRoots",
+  "CountryData",
+  "Counts",
+  "CountsBy",
+  "Covariance",
+  "CovarianceEstimatorFunction",
+  "CovarianceFunction",
+  "CoxianDistribution",
+  "CoxIngersollRossProcess",
+  "CoxModel",
+  "CoxModelFit",
+  "CramerVonMisesTest",
+  "CreateArchive",
+  "CreateCellID",
+  "CreateChannel",
+  "CreateCloudExpression",
+  "CreateDatabin",
+  "CreateDataStructure",
+  "CreateDataSystemModel",
+  "CreateDialog",
+  "CreateDirectory",
+  "CreateDocument",
+  "CreateFile",
+  "CreateIntermediateDirectories",
+  "CreateManagedLibraryExpression",
+  "CreateNotebook",
+  "CreatePacletArchive",
+  "CreatePalette",
+  "CreatePalettePacket",
+  "CreatePermissionsGroup",
+  "CreateScheduledTask",
+  "CreateSearchIndex",
+  "CreateSystemModel",
+  "CreateTemporary",
+  "CreateUUID",
+  "CreateWindow",
+  "CriterionFunction",
+  "CriticalityFailureImportance",
+  "CriticalitySuccessImportance",
+  "CriticalSection",
+  "Cross",
+  "CrossEntropyLossLayer",
+  "CrossingCount",
+  "CrossingDetect",
+  "CrossingPolygon",
+  "CrossMatrix",
+  "Csc",
+  "Csch",
+  "CTCLossLayer",
+  "Cube",
+  "CubeRoot",
+  "Cubics",
+  "Cuboid",
+  "CuboidBox",
+  "Cumulant",
+  "CumulantGeneratingFunction",
+  "Cup",
+  "CupCap",
+  "Curl",
+  "CurlyDoubleQuote",
+  "CurlyQuote",
+  "CurrencyConvert",
+  "CurrentDate",
+  "CurrentImage",
+  "CurrentlySpeakingPacket",
+  "CurrentNotebookImage",
+  "CurrentScreenImage",
+  "CurrentValue",
+  "Curry",
+  "CurryApplied",
+  "CurvatureFlowFilter",
+  "CurveClosed",
+  "Cyan",
+  "CycleGraph",
+  "CycleIndexPolynomial",
+  "Cycles",
+  "CyclicGroup",
+  "Cyclotomic",
+  "Cylinder",
+  "CylinderBox",
+  "CylindricalDecomposition",
+  "D",
+  "DagumDistribution",
+  "DamData",
+  "DamerauLevenshteinDistance",
+  "DampingFactor",
+  "Darker",
+  "Dashed",
+  "Dashing",
+  "DatabaseConnect",
+  "DatabaseDisconnect",
+  "DatabaseReference",
+  "Databin",
+  "DatabinAdd",
+  "DatabinRemove",
+  "Databins",
+  "DatabinUpload",
+  "DataCompression",
+  "DataDistribution",
+  "DataRange",
+  "DataReversed",
+  "Dataset",
+  "DatasetDisplayPanel",
+  "DataStructure",
+  "DataStructureQ",
+  "Date",
+  "DateBounds",
+  "Dated",
+  "DateDelimiters",
+  "DateDifference",
+  "DatedUnit",
+  "DateFormat",
+  "DateFunction",
+  "DateHistogram",
+  "DateInterval",
+  "DateList",
+  "DateListLogPlot",
+  "DateListPlot",
+  "DateListStepPlot",
+  "DateObject",
+  "DateObjectQ",
+  "DateOverlapsQ",
+  "DatePattern",
+  "DatePlus",
+  "DateRange",
+  "DateReduction",
+  "DateString",
+  "DateTicksFormat",
+  "DateValue",
+  "DateWithinQ",
+  "DaubechiesWavelet",
+  "DavisDistribution",
+  "DawsonF",
+  "DayCount",
+  "DayCountConvention",
+  "DayHemisphere",
+  "DaylightQ",
+  "DayMatchQ",
+  "DayName",
+  "DayNightTerminator",
+  "DayPlus",
+  "DayRange",
+  "DayRound",
+  "DeBruijnGraph",
+  "DeBruijnSequence",
+  "Debug",
+  "DebugTag",
+  "Decapitalize",
+  "Decimal",
+  "DecimalForm",
+  "DeclareKnownSymbols",
+  "DeclarePackage",
+  "Decompose",
+  "DeconvolutionLayer",
+  "Decrement",
+  "Decrypt",
+  "DecryptFile",
+  "DedekindEta",
+  "DeepSpaceProbeData",
+  "Default",
+  "DefaultAxesStyle",
+  "DefaultBaseStyle",
+  "DefaultBoxStyle",
+  "DefaultButton",
+  "DefaultColor",
+  "DefaultControlPlacement",
+  "DefaultDuplicateCellStyle",
+  "DefaultDuration",
+  "DefaultElement",
+  "DefaultFaceGridsStyle",
+  "DefaultFieldHintStyle",
+  "DefaultFont",
+  "DefaultFontProperties",
+  "DefaultFormatType",
+  "DefaultFormatTypeForStyle",
+  "DefaultFrameStyle",
+  "DefaultFrameTicksStyle",
+  "DefaultGridLinesStyle",
+  "DefaultInlineFormatType",
+  "DefaultInputFormatType",
+  "DefaultLabelStyle",
+  "DefaultMenuStyle",
+  "DefaultNaturalLanguage",
+  "DefaultNewCellStyle",
+  "DefaultNewInlineCellStyle",
+  "DefaultNotebook",
+  "DefaultOptions",
+  "DefaultOutputFormatType",
+  "DefaultPrintPrecision",
+  "DefaultStyle",
+  "DefaultStyleDefinitions",
+  "DefaultTextFormatType",
+  "DefaultTextInlineFormatType",
+  "DefaultTicksStyle",
+  "DefaultTooltipStyle",
+  "DefaultValue",
+  "DefaultValues",
+  "Defer",
+  "DefineExternal",
+  "DefineInputStreamMethod",
+  "DefineOutputStreamMethod",
+  "DefineResourceFunction",
+  "Definition",
+  "Degree",
+  "DegreeCentrality",
+  "DegreeGraphDistribution",
+  "DegreeLexicographic",
+  "DegreeReverseLexicographic",
+  "DEigensystem",
+  "DEigenvalues",
+  "Deinitialization",
+  "Del",
+  "DelaunayMesh",
+  "Delayed",
+  "Deletable",
+  "Delete",
+  "DeleteAnomalies",
+  "DeleteBorderComponents",
+  "DeleteCases",
+  "DeleteChannel",
+  "DeleteCloudExpression",
+  "DeleteContents",
+  "DeleteDirectory",
+  "DeleteDuplicates",
+  "DeleteDuplicatesBy",
+  "DeleteFile",
+  "DeleteMissing",
+  "DeleteObject",
+  "DeletePermissionsKey",
+  "DeleteSearchIndex",
+  "DeleteSmallComponents",
+  "DeleteStopwords",
+  "DeleteWithContents",
+  "DeletionWarning",
+  "DelimitedArray",
+  "DelimitedSequence",
+  "Delimiter",
+  "DelimiterFlashTime",
+  "DelimiterMatching",
+  "Delimiters",
+  "DeliveryFunction",
+  "Dendrogram",
+  "Denominator",
+  "DensityGraphics",
+  "DensityHistogram",
+  "DensityPlot",
+  "DensityPlot3D",
+  "DependentVariables",
+  "Deploy",
+  "Deployed",
+  "Depth",
+  "DepthFirstScan",
+  "Derivative",
+  "DerivativeFilter",
+  "DerivedKey",
+  "DescriptorStateSpace",
+  "DesignMatrix",
+  "DestroyAfterEvaluation",
+  "Det",
+  "DeviceClose",
+  "DeviceConfigure",
+  "DeviceExecute",
+  "DeviceExecuteAsynchronous",
+  "DeviceObject",
+  "DeviceOpen",
+  "DeviceOpenQ",
+  "DeviceRead",
+  "DeviceReadBuffer",
+  "DeviceReadLatest",
+  "DeviceReadList",
+  "DeviceReadTimeSeries",
+  "Devices",
+  "DeviceStreams",
+  "DeviceWrite",
+  "DeviceWriteBuffer",
+  "DGaussianWavelet",
+  "DiacriticalPositioning",
+  "Diagonal",
+  "DiagonalizableMatrixQ",
+  "DiagonalMatrix",
+  "DiagonalMatrixQ",
+  "Dialog",
+  "DialogIndent",
+  "DialogInput",
+  "DialogLevel",
+  "DialogNotebook",
+  "DialogProlog",
+  "DialogReturn",
+  "DialogSymbols",
+  "Diamond",
+  "DiamondMatrix",
+  "DiceDissimilarity",
+  "DictionaryLookup",
+  "DictionaryWordQ",
+  "DifferenceDelta",
+  "DifferenceOrder",
+  "DifferenceQuotient",
+  "DifferenceRoot",
+  "DifferenceRootReduce",
+  "Differences",
+  "DifferentialD",
+  "DifferentialRoot",
+  "DifferentialRootReduce",
+  "DifferentiatorFilter",
+  "DigitalSignature",
+  "DigitBlock",
+  "DigitBlockMinimum",
+  "DigitCharacter",
+  "DigitCount",
+  "DigitQ",
+  "DihedralAngle",
+  "DihedralGroup",
+  "Dilation",
+  "DimensionalCombinations",
+  "DimensionalMeshComponents",
+  "DimensionReduce",
+  "DimensionReducerFunction",
+  "DimensionReduction",
+  "Dimensions",
+  "DiracComb",
+  "DiracDelta",
+  "DirectedEdge",
+  "DirectedEdges",
+  "DirectedGraph",
+  "DirectedGraphQ",
+  "DirectedInfinity",
+  "Direction",
+  "Directive",
+  "Directory",
+  "DirectoryName",
+  "DirectoryQ",
+  "DirectoryStack",
+  "DirichletBeta",
+  "DirichletCharacter",
+  "DirichletCondition",
+  "DirichletConvolve",
+  "DirichletDistribution",
+  "DirichletEta",
+  "DirichletL",
+  "DirichletLambda",
+  "DirichletTransform",
+  "DirichletWindow",
+  "DisableConsolePrintPacket",
+  "DisableFormatting",
+  "DiscreteAsymptotic",
+  "DiscreteChirpZTransform",
+  "DiscreteConvolve",
+  "DiscreteDelta",
+  "DiscreteHadamardTransform",
+  "DiscreteIndicator",
+  "DiscreteLimit",
+  "DiscreteLQEstimatorGains",
+  "DiscreteLQRegulatorGains",
+  "DiscreteLyapunovSolve",
+  "DiscreteMarkovProcess",
+  "DiscreteMaxLimit",
+  "DiscreteMinLimit",
+  "DiscretePlot",
+  "DiscretePlot3D",
+  "DiscreteRatio",
+  "DiscreteRiccatiSolve",
+  "DiscreteShift",
+  "DiscreteTimeModelQ",
+  "DiscreteUniformDistribution",
+  "DiscreteVariables",
+  "DiscreteWaveletData",
+  "DiscreteWaveletPacketTransform",
+  "DiscreteWaveletTransform",
+  "DiscretizeGraphics",
+  "DiscretizeRegion",
+  "Discriminant",
+  "DisjointQ",
+  "Disjunction",
+  "Disk",
+  "DiskBox",
+  "DiskMatrix",
+  "DiskSegment",
+  "Dispatch",
+  "DispatchQ",
+  "DispersionEstimatorFunction",
+  "Display",
+  "DisplayAllSteps",
+  "DisplayEndPacket",
+  "DisplayFlushImagePacket",
+  "DisplayForm",
+  "DisplayFunction",
+  "DisplayPacket",
+  "DisplayRules",
+  "DisplaySetSizePacket",
+  "DisplayString",
+  "DisplayTemporary",
+  "DisplayWith",
+  "DisplayWithRef",
+  "DisplayWithVariable",
+  "DistanceFunction",
+  "DistanceMatrix",
+  "DistanceTransform",
+  "Distribute",
+  "Distributed",
+  "DistributedContexts",
+  "DistributeDefinitions",
+  "DistributionChart",
+  "DistributionDomain",
+  "DistributionFitTest",
+  "DistributionParameterAssumptions",
+  "DistributionParameterQ",
+  "Dithering",
+  "Div",
+  "Divergence",
+  "Divide",
+  "DivideBy",
+  "Dividers",
+  "DivideSides",
+  "Divisible",
+  "Divisors",
+  "DivisorSigma",
+  "DivisorSum",
+  "DMSList",
+  "DMSString",
+  "Do",
+  "DockedCells",
+  "DocumentGenerator",
+  "DocumentGeneratorInformation",
+  "DocumentGeneratorInformationData",
+  "DocumentGenerators",
+  "DocumentNotebook",
+  "DocumentWeightingRules",
+  "Dodecahedron",
+  "DomainRegistrationInformation",
+  "DominantColors",
+  "DOSTextFormat",
+  "Dot",
+  "DotDashed",
+  "DotEqual",
+  "DotLayer",
+  "DotPlusLayer",
+  "Dotted",
+  "DoubleBracketingBar",
+  "DoubleContourIntegral",
+  "DoubleDownArrow",
+  "DoubleLeftArrow",
+  "DoubleLeftRightArrow",
+  "DoubleLeftTee",
+  "DoubleLongLeftArrow",
+  "DoubleLongLeftRightArrow",
+  "DoubleLongRightArrow",
+  "DoubleRightArrow",
+  "DoubleRightTee",
+  "DoubleUpArrow",
+  "DoubleUpDownArrow",
+  "DoubleVerticalBar",
+  "DoublyInfinite",
+  "Down",
+  "DownArrow",
+  "DownArrowBar",
+  "DownArrowUpArrow",
+  "DownLeftRightVector",
+  "DownLeftTeeVector",
+  "DownLeftVector",
+  "DownLeftVectorBar",
+  "DownRightTeeVector",
+  "DownRightVector",
+  "DownRightVectorBar",
+  "Downsample",
+  "DownTee",
+  "DownTeeArrow",
+  "DownValues",
+  "DragAndDrop",
+  "DrawEdges",
+  "DrawFrontFaces",
+  "DrawHighlighted",
+  "Drop",
+  "DropoutLayer",
+  "DSolve",
+  "DSolveValue",
+  "Dt",
+  "DualLinearProgramming",
+  "DualPolyhedron",
+  "DualSystemsModel",
+  "DumpGet",
+  "DumpSave",
+  "DuplicateFreeQ",
+  "Duration",
+  "Dynamic",
+  "DynamicBox",
+  "DynamicBoxOptions",
+  "DynamicEvaluationTimeout",
+  "DynamicGeoGraphics",
+  "DynamicImage",
+  "DynamicLocation",
+  "DynamicModule",
+  "DynamicModuleBox",
+  "DynamicModuleBoxOptions",
+  "DynamicModuleParent",
+  "DynamicModuleValues",
+  "DynamicName",
+  "DynamicNamespace",
+  "DynamicReference",
+  "DynamicSetting",
+  "DynamicUpdating",
+  "DynamicWrapper",
+  "DynamicWrapperBox",
+  "DynamicWrapperBoxOptions",
+  "E",
+  "EarthImpactData",
+  "EarthquakeData",
+  "EccentricityCentrality",
+  "Echo",
+  "EchoFunction",
+  "EclipseType",
+  "EdgeAdd",
+  "EdgeBetweennessCentrality",
+  "EdgeCapacity",
+  "EdgeCapForm",
+  "EdgeColor",
+  "EdgeConnectivity",
+  "EdgeContract",
+  "EdgeCost",
+  "EdgeCount",
+  "EdgeCoverQ",
+  "EdgeCycleMatrix",
+  "EdgeDashing",
+  "EdgeDelete",
+  "EdgeDetect",
+  "EdgeForm",
+  "EdgeIndex",
+  "EdgeJoinForm",
+  "EdgeLabeling",
+  "EdgeLabels",
+  "EdgeLabelStyle",
+  "EdgeList",
+  "EdgeOpacity",
+  "EdgeQ",
+  "EdgeRenderingFunction",
+  "EdgeRules",
+  "EdgeShapeFunction",
+  "EdgeStyle",
+  "EdgeTaggedGraph",
+  "EdgeTaggedGraphQ",
+  "EdgeTags",
+  "EdgeThickness",
+  "EdgeWeight",
+  "EdgeWeightedGraphQ",
+  "Editable",
+  "EditButtonSettings",
+  "EditCellTagsSettings",
+  "EditDistance",
+  "EffectiveInterest",
+  "Eigensystem",
+  "Eigenvalues",
+  "EigenvectorCentrality",
+  "Eigenvectors",
+  "Element",
+  "ElementData",
+  "ElementwiseLayer",
+  "ElidedForms",
+  "Eliminate",
+  "EliminationOrder",
+  "Ellipsoid",
+  "EllipticE",
+  "EllipticExp",
+  "EllipticExpPrime",
+  "EllipticF",
+  "EllipticFilterModel",
+  "EllipticK",
+  "EllipticLog",
+  "EllipticNomeQ",
+  "EllipticPi",
+  "EllipticReducedHalfPeriods",
+  "EllipticTheta",
+  "EllipticThetaPrime",
+  "EmbedCode",
+  "EmbeddedHTML",
+  "EmbeddedService",
+  "EmbeddingLayer",
+  "EmbeddingObject",
+  "EmitSound",
+  "EmphasizeSyntaxErrors",
+  "EmpiricalDistribution",
+  "Empty",
+  "EmptyGraphQ",
+  "EmptyRegion",
+  "EnableConsolePrintPacket",
+  "Enabled",
+  "Encode",
+  "Encrypt",
+  "EncryptedObject",
+  "EncryptFile",
+  "End",
+  "EndAdd",
+  "EndDialogPacket",
+  "EndFrontEndInteractionPacket",
+  "EndOfBuffer",
+  "EndOfFile",
+  "EndOfLine",
+  "EndOfString",
+  "EndPackage",
+  "EngineEnvironment",
+  "EngineeringForm",
+  "Enter",
+  "EnterExpressionPacket",
+  "EnterTextPacket",
+  "Entity",
+  "EntityClass",
+  "EntityClassList",
+  "EntityCopies",
+  "EntityFunction",
+  "EntityGroup",
+  "EntityInstance",
+  "EntityList",
+  "EntityPrefetch",
+  "EntityProperties",
+  "EntityProperty",
+  "EntityPropertyClass",
+  "EntityRegister",
+  "EntityStore",
+  "EntityStores",
+  "EntityTypeName",
+  "EntityUnregister",
+  "EntityValue",
+  "Entropy",
+  "EntropyFilter",
+  "Environment",
+  "Epilog",
+  "EpilogFunction",
+  "Equal",
+  "EqualColumns",
+  "EqualRows",
+  "EqualTilde",
+  "EqualTo",
+  "EquatedTo",
+  "Equilibrium",
+  "EquirippleFilterKernel",
+  "Equivalent",
+  "Erf",
+  "Erfc",
+  "Erfi",
+  "ErlangB",
+  "ErlangC",
+  "ErlangDistribution",
+  "Erosion",
+  "ErrorBox",
+  "ErrorBoxOptions",
+  "ErrorNorm",
+  "ErrorPacket",
+  "ErrorsDialogSettings",
+  "EscapeRadius",
+  "EstimatedBackground",
+  "EstimatedDistribution",
+  "EstimatedProcess",
+  "EstimatorGains",
+  "EstimatorRegulator",
+  "EuclideanDistance",
+  "EulerAngles",
+  "EulerCharacteristic",
+  "EulerE",
+  "EulerGamma",
+  "EulerianGraphQ",
+  "EulerMatrix",
+  "EulerPhi",
+  "Evaluatable",
+  "Evaluate",
+  "Evaluated",
+  "EvaluatePacket",
+  "EvaluateScheduledTask",
+  "EvaluationBox",
+  "EvaluationCell",
+  "EvaluationCompletionAction",
+  "EvaluationData",
+  "EvaluationElements",
+  "EvaluationEnvironment",
+  "EvaluationMode",
+  "EvaluationMonitor",
+  "EvaluationNotebook",
+  "EvaluationObject",
+  "EvaluationOrder",
+  "Evaluator",
+  "EvaluatorNames",
+  "EvenQ",
+  "EventData",
+  "EventEvaluator",
+  "EventHandler",
+  "EventHandlerTag",
+  "EventLabels",
+  "EventSeries",
+  "ExactBlackmanWindow",
+  "ExactNumberQ",
+  "ExactRootIsolation",
+  "ExampleData",
+  "Except",
+  "ExcludedForms",
+  "ExcludedLines",
+  "ExcludedPhysicalQuantities",
+  "ExcludePods",
+  "Exclusions",
+  "ExclusionsStyle",
+  "Exists",
+  "Exit",
+  "ExitDialog",
+  "ExoplanetData",
+  "Exp",
+  "Expand",
+  "ExpandAll",
+  "ExpandDenominator",
+  "ExpandFileName",
+  "ExpandNumerator",
+  "Expectation",
+  "ExpectationE",
+  "ExpectedValue",
+  "ExpGammaDistribution",
+  "ExpIntegralE",
+  "ExpIntegralEi",
+  "ExpirationDate",
+  "Exponent",
+  "ExponentFunction",
+  "ExponentialDistribution",
+  "ExponentialFamily",
+  "ExponentialGeneratingFunction",
+  "ExponentialMovingAverage",
+  "ExponentialPowerDistribution",
+  "ExponentPosition",
+  "ExponentStep",
+  "Export",
+  "ExportAutoReplacements",
+  "ExportByteArray",
+  "ExportForm",
+  "ExportPacket",
+  "ExportString",
+  "Expression",
+  "ExpressionCell",
+  "ExpressionGraph",
+  "ExpressionPacket",
+  "ExpressionUUID",
+  "ExpToTrig",
+  "ExtendedEntityClass",
+  "ExtendedGCD",
+  "Extension",
+  "ExtentElementFunction",
+  "ExtentMarkers",
+  "ExtentSize",
+  "ExternalBundle",
+  "ExternalCall",
+  "ExternalDataCharacterEncoding",
+  "ExternalEvaluate",
+  "ExternalFunction",
+  "ExternalFunctionName",
+  "ExternalIdentifier",
+  "ExternalObject",
+  "ExternalOptions",
+  "ExternalSessionObject",
+  "ExternalSessions",
+  "ExternalStorageBase",
+  "ExternalStorageDownload",
+  "ExternalStorageGet",
+  "ExternalStorageObject",
+  "ExternalStoragePut",
+  "ExternalStorageUpload",
+  "ExternalTypeSignature",
+  "ExternalValue",
+  "Extract",
+  "ExtractArchive",
+  "ExtractLayer",
+  "ExtractPacletArchive",
+  "ExtremeValueDistribution",
+  "FaceAlign",
+  "FaceForm",
+  "FaceGrids",
+  "FaceGridsStyle",
+  "FacialFeatures",
+  "Factor",
+  "FactorComplete",
+  "Factorial",
+  "Factorial2",
+  "FactorialMoment",
+  "FactorialMomentGeneratingFunction",
+  "FactorialPower",
+  "FactorInteger",
+  "FactorList",
+  "FactorSquareFree",
+  "FactorSquareFreeList",
+  "FactorTerms",
+  "FactorTermsList",
+  "Fail",
+  "Failure",
+  "FailureAction",
+  "FailureDistribution",
+  "FailureQ",
+  "False",
+  "FareySequence",
+  "FARIMAProcess",
+  "FeatureDistance",
+  "FeatureExtract",
+  "FeatureExtraction",
+  "FeatureExtractor",
+  "FeatureExtractorFunction",
+  "FeatureNames",
+  "FeatureNearest",
+  "FeatureSpacePlot",
+  "FeatureSpacePlot3D",
+  "FeatureTypes",
+  "FEDisableConsolePrintPacket",
+  "FeedbackLinearize",
+  "FeedbackSector",
+  "FeedbackSectorStyle",
+  "FeedbackType",
+  "FEEnableConsolePrintPacket",
+  "FetalGrowthData",
+  "Fibonacci",
+  "Fibonorial",
+  "FieldCompletionFunction",
+  "FieldHint",
+  "FieldHintStyle",
+  "FieldMasked",
+  "FieldSize",
+  "File",
+  "FileBaseName",
+  "FileByteCount",
+  "FileConvert",
+  "FileDate",
+  "FileExistsQ",
+  "FileExtension",
+  "FileFormat",
+  "FileHandler",
+  "FileHash",
+  "FileInformation",
+  "FileName",
+  "FileNameDepth",
+  "FileNameDialogSettings",
+  "FileNameDrop",
+  "FileNameForms",
+  "FileNameJoin",
+  "FileNames",
+  "FileNameSetter",
+  "FileNameSplit",
+  "FileNameTake",
+  "FilePrint",
+  "FileSize",
+  "FileSystemMap",
+  "FileSystemScan",
+  "FileTemplate",
+  "FileTemplateApply",
+  "FileType",
+  "FilledCurve",
+  "FilledCurveBox",
+  "FilledCurveBoxOptions",
+  "Filling",
+  "FillingStyle",
+  "FillingTransform",
+  "FilteredEntityClass",
+  "FilterRules",
+  "FinancialBond",
+  "FinancialData",
+  "FinancialDerivative",
+  "FinancialIndicator",
+  "Find",
+  "FindAnomalies",
+  "FindArgMax",
+  "FindArgMin",
+  "FindChannels",
+  "FindClique",
+  "FindClusters",
+  "FindCookies",
+  "FindCurvePath",
+  "FindCycle",
+  "FindDevices",
+  "FindDistribution",
+  "FindDistributionParameters",
+  "FindDivisions",
+  "FindEdgeCover",
+  "FindEdgeCut",
+  "FindEdgeIndependentPaths",
+  "FindEquationalProof",
+  "FindEulerianCycle",
+  "FindExternalEvaluators",
+  "FindFaces",
+  "FindFile",
+  "FindFit",
+  "FindFormula",
+  "FindFundamentalCycles",
+  "FindGeneratingFunction",
+  "FindGeoLocation",
+  "FindGeometricConjectures",
+  "FindGeometricTransform",
+  "FindGraphCommunities",
+  "FindGraphIsomorphism",
+  "FindGraphPartition",
+  "FindHamiltonianCycle",
+  "FindHamiltonianPath",
+  "FindHiddenMarkovStates",
+  "FindImageText",
+  "FindIndependentEdgeSet",
+  "FindIndependentVertexSet",
+  "FindInstance",
+  "FindIntegerNullVector",
+  "FindKClan",
+  "FindKClique",
+  "FindKClub",
+  "FindKPlex",
+  "FindLibrary",
+  "FindLinearRecurrence",
+  "FindList",
+  "FindMatchingColor",
+  "FindMaximum",
+  "FindMaximumCut",
+  "FindMaximumFlow",
+  "FindMaxValue",
+  "FindMeshDefects",
+  "FindMinimum",
+  "FindMinimumCostFlow",
+  "FindMinimumCut",
+  "FindMinValue",
+  "FindMoleculeSubstructure",
+  "FindPath",
+  "FindPeaks",
+  "FindPermutation",
+  "FindPostmanTour",
+  "FindProcessParameters",
+  "FindRepeat",
+  "FindRoot",
+  "FindSequenceFunction",
+  "FindSettings",
+  "FindShortestPath",
+  "FindShortestTour",
+  "FindSpanningTree",
+  "FindSystemModelEquilibrium",
+  "FindTextualAnswer",
+  "FindThreshold",
+  "FindTransientRepeat",
+  "FindVertexCover",
+  "FindVertexCut",
+  "FindVertexIndependentPaths",
+  "Fine",
+  "FinishDynamic",
+  "FiniteAbelianGroupCount",
+  "FiniteGroupCount",
+  "FiniteGroupData",
+  "First",
+  "FirstCase",
+  "FirstPassageTimeDistribution",
+  "FirstPosition",
+  "FischerGroupFi22",
+  "FischerGroupFi23",
+  "FischerGroupFi24Prime",
+  "FisherHypergeometricDistribution",
+  "FisherRatioTest",
+  "FisherZDistribution",
+  "Fit",
+  "FitAll",
+  "FitRegularization",
+  "FittedModel",
+  "FixedOrder",
+  "FixedPoint",
+  "FixedPointList",
+  "FlashSelection",
+  "Flat",
+  "Flatten",
+  "FlattenAt",
+  "FlattenLayer",
+  "FlatTopWindow",
+  "FlipView",
+  "Floor",
+  "FlowPolynomial",
+  "FlushPrintOutputPacket",
+  "Fold",
+  "FoldList",
+  "FoldPair",
+  "FoldPairList",
+  "FollowRedirects",
+  "Font",
+  "FontColor",
+  "FontFamily",
+  "FontForm",
+  "FontName",
+  "FontOpacity",
+  "FontPostScriptName",
+  "FontProperties",
+  "FontReencoding",
+  "FontSize",
+  "FontSlant",
+  "FontSubstitutions",
+  "FontTracking",
+  "FontVariations",
+  "FontWeight",
+  "For",
+  "ForAll",
+  "ForceVersionInstall",
+  "Format",
+  "FormatRules",
+  "FormatType",
+  "FormatTypeAutoConvert",
+  "FormatValues",
+  "FormBox",
+  "FormBoxOptions",
+  "FormControl",
+  "FormFunction",
+  "FormLayoutFunction",
+  "FormObject",
+  "FormPage",
+  "FormTheme",
+  "FormulaData",
+  "FormulaLookup",
+  "FortranForm",
+  "Forward",
+  "ForwardBackward",
+  "Fourier",
+  "FourierCoefficient",
+  "FourierCosCoefficient",
+  "FourierCosSeries",
+  "FourierCosTransform",
+  "FourierDCT",
+  "FourierDCTFilter",
+  "FourierDCTMatrix",
+  "FourierDST",
+  "FourierDSTMatrix",
+  "FourierMatrix",
+  "FourierParameters",
+  "FourierSequenceTransform",
+  "FourierSeries",
+  "FourierSinCoefficient",
+  "FourierSinSeries",
+  "FourierSinTransform",
+  "FourierTransform",
+  "FourierTrigSeries",
+  "FractionalBrownianMotionProcess",
+  "FractionalGaussianNoiseProcess",
+  "FractionalPart",
+  "FractionBox",
+  "FractionBoxOptions",
+  "FractionLine",
+  "Frame",
+  "FrameBox",
+  "FrameBoxOptions",
+  "Framed",
+  "FrameInset",
+  "FrameLabel",
+  "Frameless",
+  "FrameMargins",
+  "FrameRate",
+  "FrameStyle",
+  "FrameTicks",
+  "FrameTicksStyle",
+  "FRatioDistribution",
+  "FrechetDistribution",
+  "FreeQ",
+  "FrenetSerretSystem",
+  "FrequencySamplingFilterKernel",
+  "FresnelC",
+  "FresnelF",
+  "FresnelG",
+  "FresnelS",
+  "Friday",
+  "FrobeniusNumber",
+  "FrobeniusSolve",
+  "FromAbsoluteTime",
+  "FromCharacterCode",
+  "FromCoefficientRules",
+  "FromContinuedFraction",
+  "FromDate",
+  "FromDigits",
+  "FromDMS",
+  "FromEntity",
+  "FromJulianDate",
+  "FromLetterNumber",
+  "FromPolarCoordinates",
+  "FromRomanNumeral",
+  "FromSphericalCoordinates",
+  "FromUnixTime",
+  "Front",
+  "FrontEndDynamicExpression",
+  "FrontEndEventActions",
+  "FrontEndExecute",
+  "FrontEndObject",
+  "FrontEndResource",
+  "FrontEndResourceString",
+  "FrontEndStackSize",
+  "FrontEndToken",
+  "FrontEndTokenExecute",
+  "FrontEndValueCache",
+  "FrontEndVersion",
+  "FrontFaceColor",
+  "FrontFaceOpacity",
+  "Full",
+  "FullAxes",
+  "FullDefinition",
+  "FullForm",
+  "FullGraphics",
+  "FullInformationOutputRegulator",
+  "FullOptions",
+  "FullRegion",
+  "FullSimplify",
+  "Function",
+  "FunctionCompile",
+  "FunctionCompileExport",
+  "FunctionCompileExportByteArray",
+  "FunctionCompileExportLibrary",
+  "FunctionCompileExportString",
+  "FunctionDomain",
+  "FunctionExpand",
+  "FunctionInterpolation",
+  "FunctionPeriod",
+  "FunctionRange",
+  "FunctionSpace",
+  "FussellVeselyImportance",
+  "GaborFilter",
+  "GaborMatrix",
+  "GaborWavelet",
+  "GainMargins",
+  "GainPhaseMargins",
+  "GalaxyData",
+  "GalleryView",
+  "Gamma",
+  "GammaDistribution",
+  "GammaRegularized",
+  "GapPenalty",
+  "GARCHProcess",
+  "GatedRecurrentLayer",
+  "Gather",
+  "GatherBy",
+  "GaugeFaceElementFunction",
+  "GaugeFaceStyle",
+  "GaugeFrameElementFunction",
+  "GaugeFrameSize",
+  "GaugeFrameStyle",
+  "GaugeLabels",
+  "GaugeMarkers",
+  "GaugeStyle",
+  "GaussianFilter",
+  "GaussianIntegers",
+  "GaussianMatrix",
+  "GaussianOrthogonalMatrixDistribution",
+  "GaussianSymplecticMatrixDistribution",
+  "GaussianUnitaryMatrixDistribution",
+  "GaussianWindow",
+  "GCD",
+  "GegenbauerC",
+  "General",
+  "GeneralizedLinearModelFit",
+  "GenerateAsymmetricKeyPair",
+  "GenerateConditions",
+  "GeneratedCell",
+  "GeneratedDocumentBinding",
+  "GenerateDerivedKey",
+  "GenerateDigitalSignature",
+  "GenerateDocument",
+  "GeneratedParameters",
+  "GeneratedQuantityMagnitudes",
+  "GenerateFileSignature",
+  "GenerateHTTPResponse",
+  "GenerateSecuredAuthenticationKey",
+  "GenerateSymmetricKey",
+  "GeneratingFunction",
+  "GeneratorDescription",
+  "GeneratorHistoryLength",
+  "GeneratorOutputType",
+  "Generic",
+  "GenericCylindricalDecomposition",
+  "GenomeData",
+  "GenomeLookup",
+  "GeoAntipode",
+  "GeoArea",
+  "GeoArraySize",
+  "GeoBackground",
+  "GeoBoundingBox",
+  "GeoBounds",
+  "GeoBoundsRegion",
+  "GeoBubbleChart",
+  "GeoCenter",
+  "GeoCircle",
+  "GeoContourPlot",
+  "GeoDensityPlot",
+  "GeodesicClosing",
+  "GeodesicDilation",
+  "GeodesicErosion",
+  "GeodesicOpening",
+  "GeoDestination",
+  "GeodesyData",
+  "GeoDirection",
+  "GeoDisk",
+  "GeoDisplacement",
+  "GeoDistance",
+  "GeoDistanceList",
+  "GeoElevationData",
+  "GeoEntities",
+  "GeoGraphics",
+  "GeogravityModelData",
+  "GeoGridDirectionDifference",
+  "GeoGridLines",
+  "GeoGridLinesStyle",
+  "GeoGridPosition",
+  "GeoGridRange",
+  "GeoGridRangePadding",
+  "GeoGridUnitArea",
+  "GeoGridUnitDistance",
+  "GeoGridVector",
+  "GeoGroup",
+  "GeoHemisphere",
+  "GeoHemisphereBoundary",
+  "GeoHistogram",
+  "GeoIdentify",
+  "GeoImage",
+  "GeoLabels",
+  "GeoLength",
+  "GeoListPlot",
+  "GeoLocation",
+  "GeologicalPeriodData",
+  "GeomagneticModelData",
+  "GeoMarker",
+  "GeometricAssertion",
+  "GeometricBrownianMotionProcess",
+  "GeometricDistribution",
+  "GeometricMean",
+  "GeometricMeanFilter",
+  "GeometricOptimization",
+  "GeometricScene",
+  "GeometricTransformation",
+  "GeometricTransformation3DBox",
+  "GeometricTransformation3DBoxOptions",
+  "GeometricTransformationBox",
+  "GeometricTransformationBoxOptions",
+  "GeoModel",
+  "GeoNearest",
+  "GeoPath",
+  "GeoPosition",
+  "GeoPositionENU",
+  "GeoPositionXYZ",
+  "GeoProjection",
+  "GeoProjectionData",
+  "GeoRange",
+  "GeoRangePadding",
+  "GeoRegionValuePlot",
+  "GeoResolution",
+  "GeoScaleBar",
+  "GeoServer",
+  "GeoSmoothHistogram",
+  "GeoStreamPlot",
+  "GeoStyling",
+  "GeoStylingImageFunction",
+  "GeoVariant",
+  "GeoVector",
+  "GeoVectorENU",
+  "GeoVectorPlot",
+  "GeoVectorXYZ",
+  "GeoVisibleRegion",
+  "GeoVisibleRegionBoundary",
+  "GeoWithinQ",
+  "GeoZoomLevel",
+  "GestureHandler",
+  "GestureHandlerTag",
+  "Get",
+  "GetBoundingBoxSizePacket",
+  "GetContext",
+  "GetEnvironment",
+  "GetFileName",
+  "GetFrontEndOptionsDataPacket",
+  "GetLinebreakInformationPacket",
+  "GetMenusPacket",
+  "GetPageBreakInformationPacket",
+  "Glaisher",
+  "GlobalClusteringCoefficient",
+  "GlobalPreferences",
+  "GlobalSession",
+  "Glow",
+  "GoldenAngle",
+  "GoldenRatio",
+  "GompertzMakehamDistribution",
+  "GoochShading",
+  "GoodmanKruskalGamma",
+  "GoodmanKruskalGammaTest",
+  "Goto",
+  "Grad",
+  "Gradient",
+  "GradientFilter",
+  "GradientOrientationFilter",
+  "GrammarApply",
+  "GrammarRules",
+  "GrammarToken",
+  "Graph",
+  "Graph3D",
+  "GraphAssortativity",
+  "GraphAutomorphismGroup",
+  "GraphCenter",
+  "GraphComplement",
+  "GraphData",
+  "GraphDensity",
+  "GraphDiameter",
+  "GraphDifference",
+  "GraphDisjointUnion",
+  "GraphDistance",
+  "GraphDistanceMatrix",
+  "GraphElementData",
+  "GraphEmbedding",
+  "GraphHighlight",
+  "GraphHighlightStyle",
+  "GraphHub",
+  "Graphics",
+  "Graphics3D",
+  "Graphics3DBox",
+  "Graphics3DBoxOptions",
+  "GraphicsArray",
+  "GraphicsBaseline",
+  "GraphicsBox",
+  "GraphicsBoxOptions",
+  "GraphicsColor",
+  "GraphicsColumn",
+  "GraphicsComplex",
+  "GraphicsComplex3DBox",
+  "GraphicsComplex3DBoxOptions",
+  "GraphicsComplexBox",
+  "GraphicsComplexBoxOptions",
+  "GraphicsContents",
+  "GraphicsData",
+  "GraphicsGrid",
+  "GraphicsGridBox",
+  "GraphicsGroup",
+  "GraphicsGroup3DBox",
+  "GraphicsGroup3DBoxOptions",
+  "GraphicsGroupBox",
+  "GraphicsGroupBoxOptions",
+  "GraphicsGrouping",
+  "GraphicsHighlightColor",
+  "GraphicsRow",
+  "GraphicsSpacing",
+  "GraphicsStyle",
+  "GraphIntersection",
+  "GraphLayout",
+  "GraphLinkEfficiency",
+  "GraphPeriphery",
+  "GraphPlot",
+  "GraphPlot3D",
+  "GraphPower",
+  "GraphPropertyDistribution",
+  "GraphQ",
+  "GraphRadius",
+  "GraphReciprocity",
+  "GraphRoot",
+  "GraphStyle",
+  "GraphUnion",
+  "Gray",
+  "GrayLevel",
+  "Greater",
+  "GreaterEqual",
+  "GreaterEqualLess",
+  "GreaterEqualThan",
+  "GreaterFullEqual",
+  "GreaterGreater",
+  "GreaterLess",
+  "GreaterSlantEqual",
+  "GreaterThan",
+  "GreaterTilde",
+  "Green",
+  "GreenFunction",
+  "Grid",
+  "GridBaseline",
+  "GridBox",
+  "GridBoxAlignment",
+  "GridBoxBackground",
+  "GridBoxDividers",
+  "GridBoxFrame",
+  "GridBoxItemSize",
+  "GridBoxItemStyle",
+  "GridBoxOptions",
+  "GridBoxSpacings",
+  "GridCreationSettings",
+  "GridDefaultElement",
+  "GridElementStyleOptions",
+  "GridFrame",
+  "GridFrameMargins",
+  "GridGraph",
+  "GridLines",
+  "GridLinesStyle",
+  "GroebnerBasis",
+  "GroupActionBase",
+  "GroupBy",
+  "GroupCentralizer",
+  "GroupElementFromWord",
+  "GroupElementPosition",
+  "GroupElementQ",
+  "GroupElements",
+  "GroupElementToWord",
+  "GroupGenerators",
+  "Groupings",
+  "GroupMultiplicationTable",
+  "GroupOrbits",
+  "GroupOrder",
+  "GroupPageBreakWithin",
+  "GroupSetwiseStabilizer",
+  "GroupStabilizer",
+  "GroupStabilizerChain",
+  "GroupTogetherGrouping",
+  "GroupTogetherNestedGrouping",
+  "GrowCutComponents",
+  "Gudermannian",
+  "GuidedFilter",
+  "GumbelDistribution",
+  "HaarWavelet",
+  "HadamardMatrix",
+  "HalfLine",
+  "HalfNormalDistribution",
+  "HalfPlane",
+  "HalfSpace",
+  "HalftoneShading",
+  "HamiltonianGraphQ",
+  "HammingDistance",
+  "HammingWindow",
+  "HandlerFunctions",
+  "HandlerFunctionsKeys",
+  "HankelH1",
+  "HankelH2",
+  "HankelMatrix",
+  "HankelTransform",
+  "HannPoissonWindow",
+  "HannWindow",
+  "HaradaNortonGroupHN",
+  "HararyGraph",
+  "HarmonicMean",
+  "HarmonicMeanFilter",
+  "HarmonicNumber",
+  "Hash",
+  "HatchFilling",
+  "HatchShading",
+  "Haversine",
+  "HazardFunction",
+  "Head",
+  "HeadCompose",
+  "HeaderAlignment",
+  "HeaderBackground",
+  "HeaderDisplayFunction",
+  "HeaderLines",
+  "HeaderSize",
+  "HeaderStyle",
+  "Heads",
+  "HeavisideLambda",
+  "HeavisidePi",
+  "HeavisideTheta",
+  "HeldGroupHe",
+  "HeldPart",
+  "HelpBrowserLookup",
+  "HelpBrowserNotebook",
+  "HelpBrowserSettings",
+  "Here",
+  "HermiteDecomposition",
+  "HermiteH",
+  "HermitianMatrixQ",
+  "HessenbergDecomposition",
+  "Hessian",
+  "HeunB",
+  "HeunBPrime",
+  "HeunC",
+  "HeunCPrime",
+  "HeunD",
+  "HeunDPrime",
+  "HeunG",
+  "HeunGPrime",
+  "HeunT",
+  "HeunTPrime",
+  "HexadecimalCharacter",
+  "Hexahedron",
+  "HexahedronBox",
+  "HexahedronBoxOptions",
+  "HiddenItems",
+  "HiddenMarkovProcess",
+  "HiddenSurface",
+  "Highlighted",
+  "HighlightGraph",
+  "HighlightImage",
+  "HighlightMesh",
+  "HighpassFilter",
+  "HigmanSimsGroupHS",
+  "HilbertCurve",
+  "HilbertFilter",
+  "HilbertMatrix",
+  "Histogram",
+  "Histogram3D",
+  "HistogramDistribution",
+  "HistogramList",
+  "HistogramTransform",
+  "HistogramTransformInterpolation",
+  "HistoricalPeriodData",
+  "HitMissTransform",
+  "HITSCentrality",
+  "HjorthDistribution",
+  "HodgeDual",
+  "HoeffdingD",
+  "HoeffdingDTest",
+  "Hold",
+  "HoldAll",
+  "HoldAllComplete",
+  "HoldComplete",
+  "HoldFirst",
+  "HoldForm",
+  "HoldPattern",
+  "HoldRest",
+  "HolidayCalendar",
+  "HomeDirectory",
+  "HomePage",
+  "Horizontal",
+  "HorizontalForm",
+  "HorizontalGauge",
+  "HorizontalScrollPosition",
+  "HornerForm",
+  "HostLookup",
+  "HotellingTSquareDistribution",
+  "HoytDistribution",
+  "HTMLSave",
+  "HTTPErrorResponse",
+  "HTTPRedirect",
+  "HTTPRequest",
+  "HTTPRequestData",
+  "HTTPResponse",
+  "Hue",
+  "HumanGrowthData",
+  "HumpDownHump",
+  "HumpEqual",
+  "HurwitzLerchPhi",
+  "HurwitzZeta",
+  "HyperbolicDistribution",
+  "HypercubeGraph",
+  "HyperexponentialDistribution",
+  "Hyperfactorial",
+  "Hypergeometric0F1",
+  "Hypergeometric0F1Regularized",
+  "Hypergeometric1F1",
+  "Hypergeometric1F1Regularized",
+  "Hypergeometric2F1",
+  "Hypergeometric2F1Regularized",
+  "HypergeometricDistribution",
+  "HypergeometricPFQ",
+  "HypergeometricPFQRegularized",
+  "HypergeometricU",
+  "Hyperlink",
+  "HyperlinkAction",
+  "HyperlinkCreationSettings",
+  "Hyperplane",
+  "Hyphenation",
+  "HyphenationOptions",
+  "HypoexponentialDistribution",
+  "HypothesisTestData",
+  "I",
+  "IconData",
+  "Iconize",
+  "IconizedObject",
+  "IconRules",
+  "Icosahedron",
+  "Identity",
+  "IdentityMatrix",
+  "If",
+  "IgnoreCase",
+  "IgnoreDiacritics",
+  "IgnorePunctuation",
+  "IgnoreSpellCheck",
+  "IgnoringInactive",
+  "Im",
+  "Image",
+  "Image3D",
+  "Image3DProjection",
+  "Image3DSlices",
+  "ImageAccumulate",
+  "ImageAdd",
+  "ImageAdjust",
+  "ImageAlign",
+  "ImageApply",
+  "ImageApplyIndexed",
+  "ImageAspectRatio",
+  "ImageAssemble",
+  "ImageAugmentationLayer",
+  "ImageBoundingBoxes",
+  "ImageCache",
+  "ImageCacheValid",
+  "ImageCapture",
+  "ImageCaptureFunction",
+  "ImageCases",
+  "ImageChannels",
+  "ImageClip",
+  "ImageCollage",
+  "ImageColorSpace",
+  "ImageCompose",
+  "ImageContainsQ",
+  "ImageContents",
+  "ImageConvolve",
+  "ImageCooccurrence",
+  "ImageCorners",
+  "ImageCorrelate",
+  "ImageCorrespondingPoints",
+  "ImageCrop",
+  "ImageData",
+  "ImageDeconvolve",
+  "ImageDemosaic",
+  "ImageDifference",
+  "ImageDimensions",
+  "ImageDisplacements",
+  "ImageDistance",
+  "ImageEffect",
+  "ImageExposureCombine",
+  "ImageFeatureTrack",
+  "ImageFileApply",
+  "ImageFileFilter",
+  "ImageFileScan",
+  "ImageFilter",
+  "ImageFocusCombine",
+  "ImageForestingComponents",
+  "ImageFormattingWidth",
+  "ImageForwardTransformation",
+  "ImageGraphics",
+  "ImageHistogram",
+  "ImageIdentify",
+  "ImageInstanceQ",
+  "ImageKeypoints",
+  "ImageLabels",
+  "ImageLegends",
+  "ImageLevels",
+  "ImageLines",
+  "ImageMargins",
+  "ImageMarker",
+  "ImageMarkers",
+  "ImageMeasurements",
+  "ImageMesh",
+  "ImageMultiply",
+  "ImageOffset",
+  "ImagePad",
+  "ImagePadding",
+  "ImagePartition",
+  "ImagePeriodogram",
+  "ImagePerspectiveTransformation",
+  "ImagePosition",
+  "ImagePreviewFunction",
+  "ImagePyramid",
+  "ImagePyramidApply",
+  "ImageQ",
+  "ImageRangeCache",
+  "ImageRecolor",
+  "ImageReflect",
+  "ImageRegion",
+  "ImageResize",
+  "ImageResolution",
+  "ImageRestyle",
+  "ImageRotate",
+  "ImageRotated",
+  "ImageSaliencyFilter",
+  "ImageScaled",
+  "ImageScan",
+  "ImageSize",
+  "ImageSizeAction",
+  "ImageSizeCache",
+  "ImageSizeMultipliers",
+  "ImageSizeRaw",
+  "ImageSubtract",
+  "ImageTake",
+  "ImageTransformation",
+  "ImageTrim",
+  "ImageType",
+  "ImageValue",
+  "ImageValuePositions",
+  "ImagingDevice",
+  "ImplicitRegion",
+  "Implies",
+  "Import",
+  "ImportAutoReplacements",
+  "ImportByteArray",
+  "ImportOptions",
+  "ImportString",
+  "ImprovementImportance",
+  "In",
+  "Inactivate",
+  "Inactive",
+  "IncidenceGraph",
+  "IncidenceList",
+  "IncidenceMatrix",
+  "IncludeAromaticBonds",
+  "IncludeConstantBasis",
+  "IncludeDefinitions",
+  "IncludeDirectories",
+  "IncludeFileExtension",
+  "IncludeGeneratorTasks",
+  "IncludeHydrogens",
+  "IncludeInflections",
+  "IncludeMetaInformation",
+  "IncludePods",
+  "IncludeQuantities",
+  "IncludeRelatedTables",
+  "IncludeSingularTerm",
+  "IncludeWindowTimes",
+  "Increment",
+  "IndefiniteMatrixQ",
+  "Indent",
+  "IndentingNewlineSpacings",
+  "IndentMaxFraction",
+  "IndependenceTest",
+  "IndependentEdgeSetQ",
+  "IndependentPhysicalQuantity",
+  "IndependentUnit",
+  "IndependentUnitDimension",
+  "IndependentVertexSetQ",
+  "Indeterminate",
+  "IndeterminateThreshold",
+  "IndexCreationOptions",
+  "Indexed",
+  "IndexEdgeTaggedGraph",
+  "IndexGraph",
+  "IndexTag",
+  "Inequality",
+  "InexactNumberQ",
+  "InexactNumbers",
+  "InfiniteFuture",
+  "InfiniteLine",
+  "InfinitePast",
+  "InfinitePlane",
+  "Infinity",
+  "Infix",
+  "InflationAdjust",
+  "InflationMethod",
+  "Information",
+  "InformationData",
+  "InformationDataGrid",
+  "Inherited",
+  "InheritScope",
+  "InhomogeneousPoissonProcess",
+  "InitialEvaluationHistory",
+  "Initialization",
+  "InitializationCell",
+  "InitializationCellEvaluation",
+  "InitializationCellWarning",
+  "InitializationObjects",
+  "InitializationValue",
+  "Initialize",
+  "InitialSeeding",
+  "InlineCounterAssignments",
+  "InlineCounterIncrements",
+  "InlineRules",
+  "Inner",
+  "InnerPolygon",
+  "InnerPolyhedron",
+  "Inpaint",
+  "Input",
+  "InputAliases",
+  "InputAssumptions",
+  "InputAutoReplacements",
+  "InputField",
+  "InputFieldBox",
+  "InputFieldBoxOptions",
+  "InputForm",
+  "InputGrouping",
+  "InputNamePacket",
+  "InputNotebook",
+  "InputPacket",
+  "InputSettings",
+  "InputStream",
+  "InputString",
+  "InputStringPacket",
+  "InputToBoxFormPacket",
+  "Insert",
+  "InsertionFunction",
+  "InsertionPointObject",
+  "InsertLinebreaks",
+  "InsertResults",
+  "Inset",
+  "Inset3DBox",
+  "Inset3DBoxOptions",
+  "InsetBox",
+  "InsetBoxOptions",
+  "Insphere",
+  "Install",
+  "InstallService",
+  "InstanceNormalizationLayer",
+  "InString",
+  "Integer",
+  "IntegerDigits",
+  "IntegerExponent",
+  "IntegerLength",
+  "IntegerName",
+  "IntegerPart",
+  "IntegerPartitions",
+  "IntegerQ",
+  "IntegerReverse",
+  "Integers",
+  "IntegerString",
+  "Integral",
+  "Integrate",
+  "Interactive",
+  "InteractiveTradingChart",
+  "Interlaced",
+  "Interleaving",
+  "InternallyBalancedDecomposition",
+  "InterpolatingFunction",
+  "InterpolatingPolynomial",
+  "Interpolation",
+  "InterpolationOrder",
+  "InterpolationPoints",
+  "InterpolationPrecision",
+  "Interpretation",
+  "InterpretationBox",
+  "InterpretationBoxOptions",
+  "InterpretationFunction",
+  "Interpreter",
+  "InterpretTemplate",
+  "InterquartileRange",
+  "Interrupt",
+  "InterruptSettings",
+  "IntersectedEntityClass",
+  "IntersectingQ",
+  "Intersection",
+  "Interval",
+  "IntervalIntersection",
+  "IntervalMarkers",
+  "IntervalMarkersStyle",
+  "IntervalMemberQ",
+  "IntervalSlider",
+  "IntervalUnion",
+  "Into",
+  "Inverse",
+  "InverseBetaRegularized",
+  "InverseCDF",
+  "InverseChiSquareDistribution",
+  "InverseContinuousWaveletTransform",
+  "InverseDistanceTransform",
+  "InverseEllipticNomeQ",
+  "InverseErf",
+  "InverseErfc",
+  "InverseFourier",
+  "InverseFourierCosTransform",
+  "InverseFourierSequenceTransform",
+  "InverseFourierSinTransform",
+  "InverseFourierTransform",
+  "InverseFunction",
+  "InverseFunctions",
+  "InverseGammaDistribution",
+  "InverseGammaRegularized",
+  "InverseGaussianDistribution",
+  "InverseGudermannian",
+  "InverseHankelTransform",
+  "InverseHaversine",
+  "InverseImagePyramid",
+  "InverseJacobiCD",
+  "InverseJacobiCN",
+  "InverseJacobiCS",
+  "InverseJacobiDC",
+  "InverseJacobiDN",
+  "InverseJacobiDS",
+  "InverseJacobiNC",
+  "InverseJacobiND",
+  "InverseJacobiNS",
+  "InverseJacobiSC",
+  "InverseJacobiSD",
+  "InverseJacobiSN",
+  "InverseLaplaceTransform",
+  "InverseMellinTransform",
+  "InversePermutation",
+  "InverseRadon",
+  "InverseRadonTransform",
+  "InverseSeries",
+  "InverseShortTimeFourier",
+  "InverseSpectrogram",
+  "InverseSurvivalFunction",
+  "InverseTransformedRegion",
+  "InverseWaveletTransform",
+  "InverseWeierstrassP",
+  "InverseWishartMatrixDistribution",
+  "InverseZTransform",
+  "Invisible",
+  "InvisibleApplication",
+  "InvisibleTimes",
+  "IPAddress",
+  "IrreduciblePolynomialQ",
+  "IslandData",
+  "IsolatingInterval",
+  "IsomorphicGraphQ",
+  "IsotopeData",
+  "Italic",
+  "Item",
+  "ItemAspectRatio",
+  "ItemBox",
+  "ItemBoxOptions",
+  "ItemDisplayFunction",
+  "ItemSize",
+  "ItemStyle",
+  "ItoProcess",
+  "JaccardDissimilarity",
+  "JacobiAmplitude",
+  "Jacobian",
+  "JacobiCD",
+  "JacobiCN",
+  "JacobiCS",
+  "JacobiDC",
+  "JacobiDN",
+  "JacobiDS",
+  "JacobiNC",
+  "JacobiND",
+  "JacobiNS",
+  "JacobiP",
+  "JacobiSC",
+  "JacobiSD",
+  "JacobiSN",
+  "JacobiSymbol",
+  "JacobiZeta",
+  "JankoGroupJ1",
+  "JankoGroupJ2",
+  "JankoGroupJ3",
+  "JankoGroupJ4",
+  "JarqueBeraALMTest",
+  "JohnsonDistribution",
+  "Join",
+  "JoinAcross",
+  "Joined",
+  "JoinedCurve",
+  "JoinedCurveBox",
+  "JoinedCurveBoxOptions",
+  "JoinForm",
+  "JordanDecomposition",
+  "JordanModelDecomposition",
+  "JulianDate",
+  "JuliaSetBoettcher",
+  "JuliaSetIterationCount",
+  "JuliaSetPlot",
+  "JuliaSetPoints",
+  "K",
+  "KagiChart",
+  "KaiserBesselWindow",
+  "KaiserWindow",
+  "KalmanEstimator",
+  "KalmanFilter",
+  "KarhunenLoeveDecomposition",
+  "KaryTree",
+  "KatzCentrality",
+  "KCoreComponents",
+  "KDistribution",
+  "KEdgeConnectedComponents",
+  "KEdgeConnectedGraphQ",
+  "KeepExistingVersion",
+  "KelvinBei",
+  "KelvinBer",
+  "KelvinKei",
+  "KelvinKer",
+  "KendallTau",
+  "KendallTauTest",
+  "KernelExecute",
+  "KernelFunction",
+  "KernelMixtureDistribution",
+  "KernelObject",
+  "Kernels",
+  "Ket",
+  "Key",
+  "KeyCollisionFunction",
+  "KeyComplement",
+  "KeyDrop",
+  "KeyDropFrom",
+  "KeyExistsQ",
+  "KeyFreeQ",
+  "KeyIntersection",
+  "KeyMap",
+  "KeyMemberQ",
+  "KeypointStrength",
+  "Keys",
+  "KeySelect",
+  "KeySort",
+  "KeySortBy",
+  "KeyTake",
+  "KeyUnion",
+  "KeyValueMap",
+  "KeyValuePattern",
+  "Khinchin",
+  "KillProcess",
+  "KirchhoffGraph",
+  "KirchhoffMatrix",
+  "KleinInvariantJ",
+  "KnapsackSolve",
+  "KnightTourGraph",
+  "KnotData",
+  "KnownUnitQ",
+  "KochCurve",
+  "KolmogorovSmirnovTest",
+  "KroneckerDelta",
+  "KroneckerModelDecomposition",
+  "KroneckerProduct",
+  "KroneckerSymbol",
+  "KuiperTest",
+  "KumaraswamyDistribution",
+  "Kurtosis",
+  "KuwaharaFilter",
+  "KVertexConnectedComponents",
+  "KVertexConnectedGraphQ",
+  "LABColor",
+  "Label",
+  "Labeled",
+  "LabeledSlider",
+  "LabelingFunction",
+  "LabelingSize",
+  "LabelStyle",
+  "LabelVisibility",
+  "LaguerreL",
+  "LakeData",
+  "LambdaComponents",
+  "LambertW",
+  "LaminaData",
+  "LanczosWindow",
+  "LandauDistribution",
+  "Language",
+  "LanguageCategory",
+  "LanguageData",
+  "LanguageIdentify",
+  "LanguageOptions",
+  "LaplaceDistribution",
+  "LaplaceTransform",
+  "Laplacian",
+  "LaplacianFilter",
+  "LaplacianGaussianFilter",
+  "Large",
+  "Larger",
+  "Last",
+  "Latitude",
+  "LatitudeLongitude",
+  "LatticeData",
+  "LatticeReduce",
+  "Launch",
+  "LaunchKernels",
+  "LayeredGraphPlot",
+  "LayerSizeFunction",
+  "LayoutInformation",
+  "LCHColor",
+  "LCM",
+  "LeaderSize",
+  "LeafCount",
+  "LeapYearQ",
+  "LearnDistribution",
+  "LearnedDistribution",
+  "LearningRate",
+  "LearningRateMultipliers",
+  "LeastSquares",
+  "LeastSquaresFilterKernel",
+  "Left",
+  "LeftArrow",
+  "LeftArrowBar",
+  "LeftArrowRightArrow",
+  "LeftDownTeeVector",
+  "LeftDownVector",
+  "LeftDownVectorBar",
+  "LeftRightArrow",
+  "LeftRightVector",
+  "LeftTee",
+  "LeftTeeArrow",
+  "LeftTeeVector",
+  "LeftTriangle",
+  "LeftTriangleBar",
+  "LeftTriangleEqual",
+  "LeftUpDownVector",
+  "LeftUpTeeVector",
+  "LeftUpVector",
+  "LeftUpVectorBar",
+  "LeftVector",
+  "LeftVectorBar",
+  "LegendAppearance",
+  "Legended",
+  "LegendFunction",
+  "LegendLabel",
+  "LegendLayout",
+  "LegendMargins",
+  "LegendMarkers",
+  "LegendMarkerSize",
+  "LegendreP",
+  "LegendreQ",
+  "LegendreType",
+  "Length",
+  "LengthWhile",
+  "LerchPhi",
+  "Less",
+  "LessEqual",
+  "LessEqualGreater",
+  "LessEqualThan",
+  "LessFullEqual",
+  "LessGreater",
+  "LessLess",
+  "LessSlantEqual",
+  "LessThan",
+  "LessTilde",
+  "LetterCharacter",
+  "LetterCounts",
+  "LetterNumber",
+  "LetterQ",
+  "Level",
+  "LeveneTest",
+  "LeviCivitaTensor",
+  "LevyDistribution",
+  "Lexicographic",
+  "LibraryDataType",
+  "LibraryFunction",
+  "LibraryFunctionError",
+  "LibraryFunctionInformation",
+  "LibraryFunctionLoad",
+  "LibraryFunctionUnload",
+  "LibraryLoad",
+  "LibraryUnload",
+  "LicenseID",
+  "LiftingFilterData",
+  "LiftingWaveletTransform",
+  "LightBlue",
+  "LightBrown",
+  "LightCyan",
+  "Lighter",
+  "LightGray",
+  "LightGreen",
+  "Lighting",
+  "LightingAngle",
+  "LightMagenta",
+  "LightOrange",
+  "LightPink",
+  "LightPurple",
+  "LightRed",
+  "LightSources",
+  "LightYellow",
+  "Likelihood",
+  "Limit",
+  "LimitsPositioning",
+  "LimitsPositioningTokens",
+  "LindleyDistribution",
+  "Line",
+  "Line3DBox",
+  "Line3DBoxOptions",
+  "LinearFilter",
+  "LinearFractionalOptimization",
+  "LinearFractionalTransform",
+  "LinearGradientImage",
+  "LinearizingTransformationData",
+  "LinearLayer",
+  "LinearModelFit",
+  "LinearOffsetFunction",
+  "LinearOptimization",
+  "LinearProgramming",
+  "LinearRecurrence",
+  "LinearSolve",
+  "LinearSolveFunction",
+  "LineBox",
+  "LineBoxOptions",
+  "LineBreak",
+  "LinebreakAdjustments",
+  "LineBreakChart",
+  "LinebreakSemicolonWeighting",
+  "LineBreakWithin",
+  "LineColor",
+  "LineGraph",
+  "LineIndent",
+  "LineIndentMaxFraction",
+  "LineIntegralConvolutionPlot",
+  "LineIntegralConvolutionScale",
+  "LineLegend",
+  "LineOpacity",
+  "LineSpacing",
+  "LineWrapParts",
+  "LinkActivate",
+  "LinkClose",
+  "LinkConnect",
+  "LinkConnectedQ",
+  "LinkCreate",
+  "LinkError",
+  "LinkFlush",
+  "LinkFunction",
+  "LinkHost",
+  "LinkInterrupt",
+  "LinkLaunch",
+  "LinkMode",
+  "LinkObject",
+  "LinkOpen",
+  "LinkOptions",
+  "LinkPatterns",
+  "LinkProtocol",
+  "LinkRankCentrality",
+  "LinkRead",
+  "LinkReadHeld",
+  "LinkReadyQ",
+  "Links",
+  "LinkService",
+  "LinkWrite",
+  "LinkWriteHeld",
+  "LiouvilleLambda",
+  "List",
+  "Listable",
+  "ListAnimate",
+  "ListContourPlot",
+  "ListContourPlot3D",
+  "ListConvolve",
+  "ListCorrelate",
+  "ListCurvePathPlot",
+  "ListDeconvolve",
+  "ListDensityPlot",
+  "ListDensityPlot3D",
+  "Listen",
+  "ListFormat",
+  "ListFourierSequenceTransform",
+  "ListInterpolation",
+  "ListLineIntegralConvolutionPlot",
+  "ListLinePlot",
+  "ListLogLinearPlot",
+  "ListLogLogPlot",
+  "ListLogPlot",
+  "ListPicker",
+  "ListPickerBox",
+  "ListPickerBoxBackground",
+  "ListPickerBoxOptions",
+  "ListPlay",
+  "ListPlot",
+  "ListPlot3D",
+  "ListPointPlot3D",
+  "ListPolarPlot",
+  "ListQ",
+  "ListSliceContourPlot3D",
+  "ListSliceDensityPlot3D",
+  "ListSliceVectorPlot3D",
+  "ListStepPlot",
+  "ListStreamDensityPlot",
+  "ListStreamPlot",
+  "ListSurfacePlot3D",
+  "ListVectorDensityPlot",
+  "ListVectorPlot",
+  "ListVectorPlot3D",
+  "ListZTransform",
+  "Literal",
+  "LiteralSearch",
+  "LocalAdaptiveBinarize",
+  "LocalCache",
+  "LocalClusteringCoefficient",
+  "LocalizeDefinitions",
+  "LocalizeVariables",
+  "LocalObject",
+  "LocalObjects",
+  "LocalResponseNormalizationLayer",
+  "LocalSubmit",
+  "LocalSymbol",
+  "LocalTime",
+  "LocalTimeZone",
+  "LocationEquivalenceTest",
+  "LocationTest",
+  "Locator",
+  "LocatorAutoCreate",
+  "LocatorBox",
+  "LocatorBoxOptions",
+  "LocatorCentering",
+  "LocatorPane",
+  "LocatorPaneBox",
+  "LocatorPaneBoxOptions",
+  "LocatorRegion",
+  "Locked",
+  "Log",
+  "Log10",
+  "Log2",
+  "LogBarnesG",
+  "LogGamma",
+  "LogGammaDistribution",
+  "LogicalExpand",
+  "LogIntegral",
+  "LogisticDistribution",
+  "LogisticSigmoid",
+  "LogitModelFit",
+  "LogLikelihood",
+  "LogLinearPlot",
+  "LogLogisticDistribution",
+  "LogLogPlot",
+  "LogMultinormalDistribution",
+  "LogNormalDistribution",
+  "LogPlot",
+  "LogRankTest",
+  "LogSeriesDistribution",
+  "LongEqual",
+  "Longest",
+  "LongestCommonSequence",
+  "LongestCommonSequencePositions",
+  "LongestCommonSubsequence",
+  "LongestCommonSubsequencePositions",
+  "LongestMatch",
+  "LongestOrderedSequence",
+  "LongForm",
+  "Longitude",
+  "LongLeftArrow",
+  "LongLeftRightArrow",
+  "LongRightArrow",
+  "LongShortTermMemoryLayer",
+  "Lookup",
+  "Loopback",
+  "LoopFreeGraphQ",
+  "Looping",
+  "LossFunction",
+  "LowerCaseQ",
+  "LowerLeftArrow",
+  "LowerRightArrow",
+  "LowerTriangularize",
+  "LowerTriangularMatrixQ",
+  "LowpassFilter",
+  "LQEstimatorGains",
+  "LQGRegulator",
+  "LQOutputRegulatorGains",
+  "LQRegulatorGains",
+  "LUBackSubstitution",
+  "LucasL",
+  "LuccioSamiComponents",
+  "LUDecomposition",
+  "LunarEclipse",
+  "LUVColor",
+  "LyapunovSolve",
+  "LyonsGroupLy",
+  "MachineID",
+  "MachineName",
+  "MachineNumberQ",
+  "MachinePrecision",
+  "MacintoshSystemPageSetup",
+  "Magenta",
+  "Magnification",
+  "Magnify",
+  "MailAddressValidation",
+  "MailExecute",
+  "MailFolder",
+  "MailItem",
+  "MailReceiverFunction",
+  "MailResponseFunction",
+  "MailSearch",
+  "MailServerConnect",
+  "MailServerConnection",
+  "MailSettings",
+  "MainSolve",
+  "MaintainDynamicCaches",
+  "Majority",
+  "MakeBoxes",
+  "MakeExpression",
+  "MakeRules",
+  "ManagedLibraryExpressionID",
+  "ManagedLibraryExpressionQ",
+  "MandelbrotSetBoettcher",
+  "MandelbrotSetDistance",
+  "MandelbrotSetIterationCount",
+  "MandelbrotSetMemberQ",
+  "MandelbrotSetPlot",
+  "MangoldtLambda",
+  "ManhattanDistance",
+  "Manipulate",
+  "Manipulator",
+  "MannedSpaceMissionData",
+  "MannWhitneyTest",
+  "MantissaExponent",
+  "Manual",
+  "Map",
+  "MapAll",
+  "MapAt",
+  "MapIndexed",
+  "MAProcess",
+  "MapThread",
+  "MarchenkoPasturDistribution",
+  "MarcumQ",
+  "MardiaCombinedTest",
+  "MardiaKurtosisTest",
+  "MardiaSkewnessTest",
+  "MarginalDistribution",
+  "MarkovProcessProperties",
+  "Masking",
+  "MatchingDissimilarity",
+  "MatchLocalNameQ",
+  "MatchLocalNames",
+  "MatchQ",
+  "Material",
+  "MathematicalFunctionData",
+  "MathematicaNotation",
+  "MathieuC",
+  "MathieuCharacteristicA",
+  "MathieuCharacteristicB",
+  "MathieuCharacteristicExponent",
+  "MathieuCPrime",
+  "MathieuGroupM11",
+  "MathieuGroupM12",
+  "MathieuGroupM22",
+  "MathieuGroupM23",
+  "MathieuGroupM24",
+  "MathieuS",
+  "MathieuSPrime",
+  "MathMLForm",
+  "MathMLText",
+  "Matrices",
+  "MatrixExp",
+  "MatrixForm",
+  "MatrixFunction",
+  "MatrixLog",
+  "MatrixNormalDistribution",
+  "MatrixPlot",
+  "MatrixPower",
+  "MatrixPropertyDistribution",
+  "MatrixQ",
+  "MatrixRank",
+  "MatrixTDistribution",
+  "Max",
+  "MaxBend",
+  "MaxCellMeasure",
+  "MaxColorDistance",
+  "MaxDate",
+  "MaxDetect",
+  "MaxDuration",
+  "MaxExtraBandwidths",
+  "MaxExtraConditions",
+  "MaxFeatureDisplacement",
+  "MaxFeatures",
+  "MaxFilter",
+  "MaximalBy",
+  "Maximize",
+  "MaxItems",
+  "MaxIterations",
+  "MaxLimit",
+  "MaxMemoryUsed",
+  "MaxMixtureKernels",
+  "MaxOverlapFraction",
+  "MaxPlotPoints",
+  "MaxPoints",
+  "MaxRecursion",
+  "MaxStableDistribution",
+  "MaxStepFraction",
+  "MaxSteps",
+  "MaxStepSize",
+  "MaxTrainingRounds",
+  "MaxValue",
+  "MaxwellDistribution",
+  "MaxWordGap",
+  "McLaughlinGroupMcL",
+  "Mean",
+  "MeanAbsoluteLossLayer",
+  "MeanAround",
+  "MeanClusteringCoefficient",
+  "MeanDegreeConnectivity",
+  "MeanDeviation",
+  "MeanFilter",
+  "MeanGraphDistance",
+  "MeanNeighborDegree",
+  "MeanShift",
+  "MeanShiftFilter",
+  "MeanSquaredLossLayer",
+  "Median",
+  "MedianDeviation",
+  "MedianFilter",
+  "MedicalTestData",
+  "Medium",
+  "MeijerG",
+  "MeijerGReduce",
+  "MeixnerDistribution",
+  "MellinConvolve",
+  "MellinTransform",
+  "MemberQ",
+  "MemoryAvailable",
+  "MemoryConstrained",
+  "MemoryConstraint",
+  "MemoryInUse",
+  "MengerMesh",
+  "Menu",
+  "MenuAppearance",
+  "MenuCommandKey",
+  "MenuEvaluator",
+  "MenuItem",
+  "MenuList",
+  "MenuPacket",
+  "MenuSortingValue",
+  "MenuStyle",
+  "MenuView",
+  "Merge",
+  "MergeDifferences",
+  "MergingFunction",
+  "MersennePrimeExponent",
+  "MersennePrimeExponentQ",
+  "Mesh",
+  "MeshCellCentroid",
+  "MeshCellCount",
+  "MeshCellHighlight",
+  "MeshCellIndex",
+  "MeshCellLabel",
+  "MeshCellMarker",
+  "MeshCellMeasure",
+  "MeshCellQuality",
+  "MeshCells",
+  "MeshCellShapeFunction",
+  "MeshCellStyle",
+  "MeshConnectivityGraph",
+  "MeshCoordinates",
+  "MeshFunctions",
+  "MeshPrimitives",
+  "MeshQualityGoal",
+  "MeshRange",
+  "MeshRefinementFunction",
+  "MeshRegion",
+  "MeshRegionQ",
+  "MeshShading",
+  "MeshStyle",
+  "Message",
+  "MessageDialog",
+  "MessageList",
+  "MessageName",
+  "MessageObject",
+  "MessageOptions",
+  "MessagePacket",
+  "Messages",
+  "MessagesNotebook",
+  "MetaCharacters",
+  "MetaInformation",
+  "MeteorShowerData",
+  "Method",
+  "MethodOptions",
+  "MexicanHatWavelet",
+  "MeyerWavelet",
+  "Midpoint",
+  "Min",
+  "MinColorDistance",
+  "MinDate",
+  "MinDetect",
+  "MineralData",
+  "MinFilter",
+  "MinimalBy",
+  "MinimalPolynomial",
+  "MinimalStateSpaceModel",
+  "Minimize",
+  "MinimumTimeIncrement",
+  "MinIntervalSize",
+  "MinkowskiQuestionMark",
+  "MinLimit",
+  "MinMax",
+  "MinorPlanetData",
+  "Minors",
+  "MinRecursion",
+  "MinSize",
+  "MinStableDistribution",
+  "Minus",
+  "MinusPlus",
+  "MinValue",
+  "Missing",
+  "MissingBehavior",
+  "MissingDataMethod",
+  "MissingDataRules",
+  "MissingQ",
+  "MissingString",
+  "MissingStyle",
+  "MissingValuePattern",
+  "MittagLefflerE",
+  "MixedFractionParts",
+  "MixedGraphQ",
+  "MixedMagnitude",
+  "MixedRadix",
+  "MixedRadixQuantity",
+  "MixedUnit",
+  "MixtureDistribution",
+  "Mod",
+  "Modal",
+  "Mode",
+  "Modular",
+  "ModularInverse",
+  "ModularLambda",
+  "Module",
+  "Modulus",
+  "MoebiusMu",
+  "Molecule",
+  "MoleculeContainsQ",
+  "MoleculeEquivalentQ",
+  "MoleculeGraph",
+  "MoleculeModify",
+  "MoleculePattern",
+  "MoleculePlot",
+  "MoleculePlot3D",
+  "MoleculeProperty",
+  "MoleculeQ",
+  "MoleculeRecognize",
+  "MoleculeValue",
+  "Moment",
+  "Momentary",
+  "MomentConvert",
+  "MomentEvaluate",
+  "MomentGeneratingFunction",
+  "MomentOfInertia",
+  "Monday",
+  "Monitor",
+  "MonomialList",
+  "MonomialOrder",
+  "MonsterGroupM",
+  "MoonPhase",
+  "MoonPosition",
+  "MorletWavelet",
+  "MorphologicalBinarize",
+  "MorphologicalBranchPoints",
+  "MorphologicalComponents",
+  "MorphologicalEulerNumber",
+  "MorphologicalGraph",
+  "MorphologicalPerimeter",
+  "MorphologicalTransform",
+  "MortalityData",
+  "Most",
+  "MountainData",
+  "MouseAnnotation",
+  "MouseAppearance",
+  "MouseAppearanceTag",
+  "MouseButtons",
+  "Mouseover",
+  "MousePointerNote",
+  "MousePosition",
+  "MovieData",
+  "MovingAverage",
+  "MovingMap",
+  "MovingMedian",
+  "MoyalDistribution",
+  "Multicolumn",
+  "MultiedgeStyle",
+  "MultigraphQ",
+  "MultilaunchWarning",
+  "MultiLetterItalics",
+  "MultiLetterStyle",
+  "MultilineFunction",
+  "Multinomial",
+  "MultinomialDistribution",
+  "MultinormalDistribution",
+  "MultiplicativeOrder",
+  "Multiplicity",
+  "MultiplySides",
+  "Multiselection",
+  "MultivariateHypergeometricDistribution",
+  "MultivariatePoissonDistribution",
+  "MultivariateTDistribution",
+  "N",
+  "NakagamiDistribution",
+  "NameQ",
+  "Names",
+  "NamespaceBox",
+  "NamespaceBoxOptions",
+  "Nand",
+  "NArgMax",
+  "NArgMin",
+  "NBernoulliB",
+  "NBodySimulation",
+  "NBodySimulationData",
+  "NCache",
+  "NDEigensystem",
+  "NDEigenvalues",
+  "NDSolve",
+  "NDSolveValue",
+  "Nearest",
+  "NearestFunction",
+  "NearestMeshCells",
+  "NearestNeighborGraph",
+  "NearestTo",
+  "NebulaData",
+  "NeedCurrentFrontEndPackagePacket",
+  "NeedCurrentFrontEndSymbolsPacket",
+  "NeedlemanWunschSimilarity",
+  "Needs",
+  "Negative",
+  "NegativeBinomialDistribution",
+  "NegativeDefiniteMatrixQ",
+  "NegativeIntegers",
+  "NegativeMultinomialDistribution",
+  "NegativeRationals",
+  "NegativeReals",
+  "NegativeSemidefiniteMatrixQ",
+  "NeighborhoodData",
+  "NeighborhoodGraph",
+  "Nest",
+  "NestedGreaterGreater",
+  "NestedLessLess",
+  "NestedScriptRules",
+  "NestGraph",
+  "NestList",
+  "NestWhile",
+  "NestWhileList",
+  "NetAppend",
+  "NetBidirectionalOperator",
+  "NetChain",
+  "NetDecoder",
+  "NetDelete",
+  "NetDrop",
+  "NetEncoder",
+  "NetEvaluationMode",
+  "NetExtract",
+  "NetFlatten",
+  "NetFoldOperator",
+  "NetGANOperator",
+  "NetGraph",
+  "NetInformation",
+  "NetInitialize",
+  "NetInsert",
+  "NetInsertSharedArrays",
+  "NetJoin",
+  "NetMapOperator",
+  "NetMapThreadOperator",
+  "NetMeasurements",
+  "NetModel",
+  "NetNestOperator",
+  "NetPairEmbeddingOperator",
+  "NetPort",
+  "NetPortGradient",
+  "NetPrepend",
+  "NetRename",
+  "NetReplace",
+  "NetReplacePart",
+  "NetSharedArray",
+  "NetStateObject",
+  "NetTake",
+  "NetTrain",
+  "NetTrainResultsObject",
+  "NetworkPacketCapture",
+  "NetworkPacketRecording",
+  "NetworkPacketRecordingDuring",
+  "NetworkPacketTrace",
+  "NeumannValue",
+  "NevilleThetaC",
+  "NevilleThetaD",
+  "NevilleThetaN",
+  "NevilleThetaS",
+  "NewPrimitiveStyle",
+  "NExpectation",
+  "Next",
+  "NextCell",
+  "NextDate",
+  "NextPrime",
+  "NextScheduledTaskTime",
+  "NHoldAll",
+  "NHoldFirst",
+  "NHoldRest",
+  "NicholsGridLines",
+  "NicholsPlot",
+  "NightHemisphere",
+  "NIntegrate",
+  "NMaximize",
+  "NMaxValue",
+  "NMinimize",
+  "NMinValue",
+  "NominalVariables",
+  "NonAssociative",
+  "NoncentralBetaDistribution",
+  "NoncentralChiSquareDistribution",
+  "NoncentralFRatioDistribution",
+  "NoncentralStudentTDistribution",
+  "NonCommutativeMultiply",
+  "NonConstants",
+  "NondimensionalizationTransform",
+  "None",
+  "NoneTrue",
+  "NonlinearModelFit",
+  "NonlinearStateSpaceModel",
+  "NonlocalMeansFilter",
+  "NonNegative",
+  "NonNegativeIntegers",
+  "NonNegativeRationals",
+  "NonNegativeReals",
+  "NonPositive",
+  "NonPositiveIntegers",
+  "NonPositiveRationals",
+  "NonPositiveReals",
+  "Nor",
+  "NorlundB",
+  "Norm",
+  "Normal",
+  "NormalDistribution",
+  "NormalGrouping",
+  "NormalizationLayer",
+  "Normalize",
+  "Normalized",
+  "NormalizedSquaredEuclideanDistance",
+  "NormalMatrixQ",
+  "NormalsFunction",
+  "NormFunction",
+  "Not",
+  "NotCongruent",
+  "NotCupCap",
+  "NotDoubleVerticalBar",
+  "Notebook",
+  "NotebookApply",
+  "NotebookAutoSave",
+  "NotebookClose",
+  "NotebookConvertSettings",
+  "NotebookCreate",
+  "NotebookCreateReturnObject",
+  "NotebookDefault",
+  "NotebookDelete",
+  "NotebookDirectory",
+  "NotebookDynamicExpression",
+  "NotebookEvaluate",
+  "NotebookEventActions",
+  "NotebookFileName",
+  "NotebookFind",
+  "NotebookFindReturnObject",
+  "NotebookGet",
+  "NotebookGetLayoutInformationPacket",
+  "NotebookGetMisspellingsPacket",
+  "NotebookImport",
+  "NotebookInformation",
+  "NotebookInterfaceObject",
+  "NotebookLocate",
+  "NotebookObject",
+  "NotebookOpen",
+  "NotebookOpenReturnObject",
+  "NotebookPath",
+  "NotebookPrint",
+  "NotebookPut",
+  "NotebookPutReturnObject",
+  "NotebookRead",
+  "NotebookResetGeneratedCells",
+  "Notebooks",
+  "NotebookSave",
+  "NotebookSaveAs",
+  "NotebookSelection",
+  "NotebookSetupLayoutInformationPacket",
+  "NotebooksMenu",
+  "NotebookTemplate",
+  "NotebookWrite",
+  "NotElement",
+  "NotEqualTilde",
+  "NotExists",
+  "NotGreater",
+  "NotGreaterEqual",
+  "NotGreaterFullEqual",
+  "NotGreaterGreater",
+  "NotGreaterLess",
+  "NotGreaterSlantEqual",
+  "NotGreaterTilde",
+  "Nothing",
+  "NotHumpDownHump",
+  "NotHumpEqual",
+  "NotificationFunction",
+  "NotLeftTriangle",
+  "NotLeftTriangleBar",
+  "NotLeftTriangleEqual",
+  "NotLess",
+  "NotLessEqual",
+  "NotLessFullEqual",
+  "NotLessGreater",
+  "NotLessLess",
+  "NotLessSlantEqual",
+  "NotLessTilde",
+  "NotNestedGreaterGreater",
+  "NotNestedLessLess",
+  "NotPrecedes",
+  "NotPrecedesEqual",
+  "NotPrecedesSlantEqual",
+  "NotPrecedesTilde",
+  "NotReverseElement",
+  "NotRightTriangle",
+  "NotRightTriangleBar",
+  "NotRightTriangleEqual",
+  "NotSquareSubset",
+  "NotSquareSubsetEqual",
+  "NotSquareSuperset",
+  "NotSquareSupersetEqual",
+  "NotSubset",
+  "NotSubsetEqual",
+  "NotSucceeds",
+  "NotSucceedsEqual",
+  "NotSucceedsSlantEqual",
+  "NotSucceedsTilde",
+  "NotSuperset",
+  "NotSupersetEqual",
+  "NotTilde",
+  "NotTildeEqual",
+  "NotTildeFullEqual",
+  "NotTildeTilde",
+  "NotVerticalBar",
+  "Now",
+  "NoWhitespace",
+  "NProbability",
+  "NProduct",
+  "NProductFactors",
+  "NRoots",
+  "NSolve",
+  "NSum",
+  "NSumTerms",
+  "NuclearExplosionData",
+  "NuclearReactorData",
+  "Null",
+  "NullRecords",
+  "NullSpace",
+  "NullWords",
+  "Number",
+  "NumberCompose",
+  "NumberDecompose",
+  "NumberExpand",
+  "NumberFieldClassNumber",
+  "NumberFieldDiscriminant",
+  "NumberFieldFundamentalUnits",
+  "NumberFieldIntegralBasis",
+  "NumberFieldNormRepresentatives",
+  "NumberFieldRegulator",
+  "NumberFieldRootsOfUnity",
+  "NumberFieldSignature",
+  "NumberForm",
+  "NumberFormat",
+  "NumberLinePlot",
+  "NumberMarks",
+  "NumberMultiplier",
+  "NumberPadding",
+  "NumberPoint",
+  "NumberQ",
+  "NumberSeparator",
+  "NumberSigns",
+  "NumberString",
+  "Numerator",
+  "NumeratorDenominator",
+  "NumericalOrder",
+  "NumericalSort",
+  "NumericArray",
+  "NumericArrayQ",
+  "NumericArrayType",
+  "NumericFunction",
+  "NumericQ",
+  "NuttallWindow",
+  "NValues",
+  "NyquistGridLines",
+  "NyquistPlot",
+  "O",
+  "ObservabilityGramian",
+  "ObservabilityMatrix",
+  "ObservableDecomposition",
+  "ObservableModelQ",
+  "OceanData",
+  "Octahedron",
+  "OddQ",
+  "Off",
+  "Offset",
+  "OLEData",
+  "On",
+  "ONanGroupON",
+  "Once",
+  "OneIdentity",
+  "Opacity",
+  "OpacityFunction",
+  "OpacityFunctionScaling",
+  "Open",
+  "OpenAppend",
+  "Opener",
+  "OpenerBox",
+  "OpenerBoxOptions",
+  "OpenerView",
+  "OpenFunctionInspectorPacket",
+  "Opening",
+  "OpenRead",
+  "OpenSpecialOptions",
+  "OpenTemporary",
+  "OpenWrite",
+  "Operate",
+  "OperatingSystem",
+  "OperatorApplied",
+  "OptimumFlowData",
+  "Optional",
+  "OptionalElement",
+  "OptionInspectorSettings",
+  "OptionQ",
+  "Options",
+  "OptionsPacket",
+  "OptionsPattern",
+  "OptionValue",
+  "OptionValueBox",
+  "OptionValueBoxOptions",
+  "Or",
+  "Orange",
+  "Order",
+  "OrderDistribution",
+  "OrderedQ",
+  "Ordering",
+  "OrderingBy",
+  "OrderingLayer",
+  "Orderless",
+  "OrderlessPatternSequence",
+  "OrnsteinUhlenbeckProcess",
+  "Orthogonalize",
+  "OrthogonalMatrixQ",
+  "Out",
+  "Outer",
+  "OuterPolygon",
+  "OuterPolyhedron",
+  "OutputAutoOverwrite",
+  "OutputControllabilityMatrix",
+  "OutputControllableModelQ",
+  "OutputForm",
+  "OutputFormData",
+  "OutputGrouping",
+  "OutputMathEditExpression",
+  "OutputNamePacket",
+  "OutputResponse",
+  "OutputSizeLimit",
+  "OutputStream",
+  "Over",
+  "OverBar",
+  "OverDot",
+  "Overflow",
+  "OverHat",
+  "Overlaps",
+  "Overlay",
+  "OverlayBox",
+  "OverlayBoxOptions",
+  "Overscript",
+  "OverscriptBox",
+  "OverscriptBoxOptions",
+  "OverTilde",
+  "OverVector",
+  "OverwriteTarget",
+  "OwenT",
+  "OwnValues",
+  "Package",
+  "PackingMethod",
+  "PackPaclet",
+  "PacletDataRebuild",
+  "PacletDirectoryAdd",
+  "PacletDirectoryLoad",
+  "PacletDirectoryRemove",
+  "PacletDirectoryUnload",
+  "PacletDisable",
+  "PacletEnable",
+  "PacletFind",
+  "PacletFindRemote",
+  "PacletInformation",
+  "PacletInstall",
+  "PacletInstallSubmit",
+  "PacletNewerQ",
+  "PacletObject",
+  "PacletObjectQ",
+  "PacletSite",
+  "PacletSiteObject",
+  "PacletSiteRegister",
+  "PacletSites",
+  "PacletSiteUnregister",
+  "PacletSiteUpdate",
+  "PacletUninstall",
+  "PacletUpdate",
+  "PaddedForm",
+  "Padding",
+  "PaddingLayer",
+  "PaddingSize",
+  "PadeApproximant",
+  "PadLeft",
+  "PadRight",
+  "PageBreakAbove",
+  "PageBreakBelow",
+  "PageBreakWithin",
+  "PageFooterLines",
+  "PageFooters",
+  "PageHeaderLines",
+  "PageHeaders",
+  "PageHeight",
+  "PageRankCentrality",
+  "PageTheme",
+  "PageWidth",
+  "Pagination",
+  "PairedBarChart",
+  "PairedHistogram",
+  "PairedSmoothHistogram",
+  "PairedTTest",
+  "PairedZTest",
+  "PaletteNotebook",
+  "PalettePath",
+  "PalindromeQ",
+  "Pane",
+  "PaneBox",
+  "PaneBoxOptions",
+  "Panel",
+  "PanelBox",
+  "PanelBoxOptions",
+  "Paneled",
+  "PaneSelector",
+  "PaneSelectorBox",
+  "PaneSelectorBoxOptions",
+  "PaperWidth",
+  "ParabolicCylinderD",
+  "ParagraphIndent",
+  "ParagraphSpacing",
+  "ParallelArray",
+  "ParallelCombine",
+  "ParallelDo",
+  "Parallelepiped",
+  "ParallelEvaluate",
+  "Parallelization",
+  "Parallelize",
+  "ParallelMap",
+  "ParallelNeeds",
+  "Parallelogram",
+  "ParallelProduct",
+  "ParallelSubmit",
+  "ParallelSum",
+  "ParallelTable",
+  "ParallelTry",
+  "Parameter",
+  "ParameterEstimator",
+  "ParameterMixtureDistribution",
+  "ParameterVariables",
+  "ParametricFunction",
+  "ParametricNDSolve",
+  "ParametricNDSolveValue",
+  "ParametricPlot",
+  "ParametricPlot3D",
+  "ParametricRampLayer",
+  "ParametricRegion",
+  "ParentBox",
+  "ParentCell",
+  "ParentConnect",
+  "ParentDirectory",
+  "ParentForm",
+  "Parenthesize",
+  "ParentList",
+  "ParentNotebook",
+  "ParetoDistribution",
+  "ParetoPickandsDistribution",
+  "ParkData",
+  "Part",
+  "PartBehavior",
+  "PartialCorrelationFunction",
+  "PartialD",
+  "ParticleAcceleratorData",
+  "ParticleData",
+  "Partition",
+  "PartitionGranularity",
+  "PartitionsP",
+  "PartitionsQ",
+  "PartLayer",
+  "PartOfSpeech",
+  "PartProtection",
+  "ParzenWindow",
+  "PascalDistribution",
+  "PassEventsDown",
+  "PassEventsUp",
+  "Paste",
+  "PasteAutoQuoteCharacters",
+  "PasteBoxFormInlineCells",
+  "PasteButton",
+  "Path",
+  "PathGraph",
+  "PathGraphQ",
+  "Pattern",
+  "PatternFilling",
+  "PatternSequence",
+  "PatternTest",
+  "PauliMatrix",
+  "PaulWavelet",
+  "Pause",
+  "PausedTime",
+  "PDF",
+  "PeakDetect",
+  "PeanoCurve",
+  "PearsonChiSquareTest",
+  "PearsonCorrelationTest",
+  "PearsonDistribution",
+  "PercentForm",
+  "PerfectNumber",
+  "PerfectNumberQ",
+  "PerformanceGoal",
+  "Perimeter",
+  "PeriodicBoundaryCondition",
+  "PeriodicInterpolation",
+  "Periodogram",
+  "PeriodogramArray",
+  "Permanent",
+  "Permissions",
+  "PermissionsGroup",
+  "PermissionsGroupMemberQ",
+  "PermissionsGroups",
+  "PermissionsKey",
+  "PermissionsKeys",
+  "PermutationCycles",
+  "PermutationCyclesQ",
+  "PermutationGroup",
+  "PermutationLength",
+  "PermutationList",
+  "PermutationListQ",
+  "PermutationMax",
+  "PermutationMin",
+  "PermutationOrder",
+  "PermutationPower",
+  "PermutationProduct",
+  "PermutationReplace",
+  "Permutations",
+  "PermutationSupport",
+  "Permute",
+  "PeronaMalikFilter",
+  "Perpendicular",
+  "PerpendicularBisector",
+  "PersistenceLocation",
+  "PersistenceTime",
+  "PersistentObject",
+  "PersistentObjects",
+  "PersistentValue",
+  "PersonData",
+  "PERTDistribution",
+  "PetersenGraph",
+  "PhaseMargins",
+  "PhaseRange",
+  "PhysicalSystemData",
+  "Pi",
+  "Pick",
+  "PIDData",
+  "PIDDerivativeFilter",
+  "PIDFeedforward",
+  "PIDTune",
+  "Piecewise",
+  "PiecewiseExpand",
+  "PieChart",
+  "PieChart3D",
+  "PillaiTrace",
+  "PillaiTraceTest",
+  "PingTime",
+  "Pink",
+  "PitchRecognize",
+  "Pivoting",
+  "PixelConstrained",
+  "PixelValue",
+  "PixelValuePositions",
+  "Placed",
+  "Placeholder",
+  "PlaceholderReplace",
+  "Plain",
+  "PlanarAngle",
+  "PlanarGraph",
+  "PlanarGraphQ",
+  "PlanckRadiationLaw",
+  "PlaneCurveData",
+  "PlanetaryMoonData",
+  "PlanetData",
+  "PlantData",
+  "Play",
+  "PlayRange",
+  "Plot",
+  "Plot3D",
+  "Plot3Matrix",
+  "PlotDivision",
+  "PlotJoined",
+  "PlotLabel",
+  "PlotLabels",
+  "PlotLayout",
+  "PlotLegends",
+  "PlotMarkers",
+  "PlotPoints",
+  "PlotRange",
+  "PlotRangeClipping",
+  "PlotRangeClipPlanesStyle",
+  "PlotRangePadding",
+  "PlotRegion",
+  "PlotStyle",
+  "PlotTheme",
+  "Pluralize",
+  "Plus",
+  "PlusMinus",
+  "Pochhammer",
+  "PodStates",
+  "PodWidth",
+  "Point",
+  "Point3DBox",
+  "Point3DBoxOptions",
+  "PointBox",
+  "PointBoxOptions",
+  "PointFigureChart",
+  "PointLegend",
+  "PointSize",
+  "PoissonConsulDistribution",
+  "PoissonDistribution",
+  "PoissonProcess",
+  "PoissonWindow",
+  "PolarAxes",
+  "PolarAxesOrigin",
+  "PolarGridLines",
+  "PolarPlot",
+  "PolarTicks",
+  "PoleZeroMarkers",
+  "PolyaAeppliDistribution",
+  "PolyGamma",
+  "Polygon",
+  "Polygon3DBox",
+  "Polygon3DBoxOptions",
+  "PolygonalNumber",
+  "PolygonAngle",
+  "PolygonBox",
+  "PolygonBoxOptions",
+  "PolygonCoordinates",
+  "PolygonDecomposition",
+  "PolygonHoleScale",
+  "PolygonIntersections",
+  "PolygonScale",
+  "Polyhedron",
+  "PolyhedronAngle",
+  "PolyhedronCoordinates",
+  "PolyhedronData",
+  "PolyhedronDecomposition",
+  "PolyhedronGenus",
+  "PolyLog",
+  "PolynomialExtendedGCD",
+  "PolynomialForm",
+  "PolynomialGCD",
+  "PolynomialLCM",
+  "PolynomialMod",
+  "PolynomialQ",
+  "PolynomialQuotient",
+  "PolynomialQuotientRemainder",
+  "PolynomialReduce",
+  "PolynomialRemainder",
+  "Polynomials",
+  "PoolingLayer",
+  "PopupMenu",
+  "PopupMenuBox",
+  "PopupMenuBoxOptions",
+  "PopupView",
+  "PopupWindow",
+  "Position",
+  "PositionIndex",
+  "Positive",
+  "PositiveDefiniteMatrixQ",
+  "PositiveIntegers",
+  "PositiveRationals",
+  "PositiveReals",
+  "PositiveSemidefiniteMatrixQ",
+  "PossibleZeroQ",
+  "Postfix",
+  "PostScript",
+  "Power",
+  "PowerDistribution",
+  "PowerExpand",
+  "PowerMod",
+  "PowerModList",
+  "PowerRange",
+  "PowerSpectralDensity",
+  "PowersRepresentations",
+  "PowerSymmetricPolynomial",
+  "Precedence",
+  "PrecedenceForm",
+  "Precedes",
+  "PrecedesEqual",
+  "PrecedesSlantEqual",
+  "PrecedesTilde",
+  "Precision",
+  "PrecisionGoal",
+  "PreDecrement",
+  "Predict",
+  "PredictionRoot",
+  "PredictorFunction",
+  "PredictorInformation",
+  "PredictorMeasurements",
+  "PredictorMeasurementsObject",
+  "PreemptProtect",
+  "PreferencesPath",
+  "Prefix",
+  "PreIncrement",
+  "Prepend",
+  "PrependLayer",
+  "PrependTo",
+  "PreprocessingRules",
+  "PreserveColor",
+  "PreserveImageOptions",
+  "Previous",
+  "PreviousCell",
+  "PreviousDate",
+  "PriceGraphDistribution",
+  "PrimaryPlaceholder",
+  "Prime",
+  "PrimeNu",
+  "PrimeOmega",
+  "PrimePi",
+  "PrimePowerQ",
+  "PrimeQ",
+  "Primes",
+  "PrimeZetaP",
+  "PrimitivePolynomialQ",
+  "PrimitiveRoot",
+  "PrimitiveRootList",
+  "PrincipalComponents",
+  "PrincipalValue",
+  "Print",
+  "PrintableASCIIQ",
+  "PrintAction",
+  "PrintForm",
+  "PrintingCopies",
+  "PrintingOptions",
+  "PrintingPageRange",
+  "PrintingStartingPageNumber",
+  "PrintingStyleEnvironment",
+  "Printout3D",
+  "Printout3DPreviewer",
+  "PrintPrecision",
+  "PrintTemporary",
+  "Prism",
+  "PrismBox",
+  "PrismBoxOptions",
+  "PrivateCellOptions",
+  "PrivateEvaluationOptions",
+  "PrivateFontOptions",
+  "PrivateFrontEndOptions",
+  "PrivateKey",
+  "PrivateNotebookOptions",
+  "PrivatePaths",
+  "Probability",
+  "ProbabilityDistribution",
+  "ProbabilityPlot",
+  "ProbabilityPr",
+  "ProbabilityScalePlot",
+  "ProbitModelFit",
+  "ProcessConnection",
+  "ProcessDirectory",
+  "ProcessEnvironment",
+  "Processes",
+  "ProcessEstimator",
+  "ProcessInformation",
+  "ProcessObject",
+  "ProcessParameterAssumptions",
+  "ProcessParameterQ",
+  "ProcessStateDomain",
+  "ProcessStatus",
+  "ProcessTimeDomain",
+  "Product",
+  "ProductDistribution",
+  "ProductLog",
+  "ProgressIndicator",
+  "ProgressIndicatorBox",
+  "ProgressIndicatorBoxOptions",
+  "Projection",
+  "Prolog",
+  "PromptForm",
+  "ProofObject",
+  "Properties",
+  "Property",
+  "PropertyList",
+  "PropertyValue",
+  "Proportion",
+  "Proportional",
+  "Protect",
+  "Protected",
+  "ProteinData",
+  "Pruning",
+  "PseudoInverse",
+  "PsychrometricPropertyData",
+  "PublicKey",
+  "PublisherID",
+  "PulsarData",
+  "PunctuationCharacter",
+  "Purple",
+  "Put",
+  "PutAppend",
+  "Pyramid",
+  "PyramidBox",
+  "PyramidBoxOptions",
+  "QBinomial",
+  "QFactorial",
+  "QGamma",
+  "QHypergeometricPFQ",
+  "QnDispersion",
+  "QPochhammer",
+  "QPolyGamma",
+  "QRDecomposition",
+  "QuadraticIrrationalQ",
+  "QuadraticOptimization",
+  "Quantile",
+  "QuantilePlot",
+  "Quantity",
+  "QuantityArray",
+  "QuantityDistribution",
+  "QuantityForm",
+  "QuantityMagnitude",
+  "QuantityQ",
+  "QuantityUnit",
+  "QuantityVariable",
+  "QuantityVariableCanonicalUnit",
+  "QuantityVariableDimensions",
+  "QuantityVariableIdentifier",
+  "QuantityVariablePhysicalQuantity",
+  "Quartics",
+  "QuartileDeviation",
+  "Quartiles",
+  "QuartileSkewness",
+  "Query",
+  "QueueingNetworkProcess",
+  "QueueingProcess",
+  "QueueProperties",
+  "Quiet",
+  "Quit",
+  "Quotient",
+  "QuotientRemainder",
+  "RadialGradientImage",
+  "RadialityCentrality",
+  "RadicalBox",
+  "RadicalBoxOptions",
+  "RadioButton",
+  "RadioButtonBar",
+  "RadioButtonBox",
+  "RadioButtonBoxOptions",
+  "Radon",
+  "RadonTransform",
+  "RamanujanTau",
+  "RamanujanTauL",
+  "RamanujanTauTheta",
+  "RamanujanTauZ",
+  "Ramp",
+  "Random",
+  "RandomChoice",
+  "RandomColor",
+  "RandomComplex",
+  "RandomEntity",
+  "RandomFunction",
+  "RandomGeoPosition",
+  "RandomGraph",
+  "RandomImage",
+  "RandomInstance",
+  "RandomInteger",
+  "RandomPermutation",
+  "RandomPoint",
+  "RandomPolygon",
+  "RandomPolyhedron",
+  "RandomPrime",
+  "RandomReal",
+  "RandomSample",
+  "RandomSeed",
+  "RandomSeeding",
+  "RandomVariate",
+  "RandomWalkProcess",
+  "RandomWord",
+  "Range",
+  "RangeFilter",
+  "RangeSpecification",
+  "RankedMax",
+  "RankedMin",
+  "RarerProbability",
+  "Raster",
+  "Raster3D",
+  "Raster3DBox",
+  "Raster3DBoxOptions",
+  "RasterArray",
+  "RasterBox",
+  "RasterBoxOptions",
+  "Rasterize",
+  "RasterSize",
+  "Rational",
+  "RationalFunctions",
+  "Rationalize",
+  "Rationals",
+  "Ratios",
+  "RawArray",
+  "RawBoxes",
+  "RawData",
+  "RawMedium",
+  "RayleighDistribution",
+  "Re",
+  "Read",
+  "ReadByteArray",
+  "ReadLine",
+  "ReadList",
+  "ReadProtected",
+  "ReadString",
+  "Real",
+  "RealAbs",
+  "RealBlockDiagonalForm",
+  "RealDigits",
+  "RealExponent",
+  "Reals",
+  "RealSign",
+  "Reap",
+  "RebuildPacletData",
+  "RecognitionPrior",
+  "RecognitionThreshold",
+  "Record",
+  "RecordLists",
+  "RecordSeparators",
+  "Rectangle",
+  "RectangleBox",
+  "RectangleBoxOptions",
+  "RectangleChart",
+  "RectangleChart3D",
+  "RectangularRepeatingElement",
+  "RecurrenceFilter",
+  "RecurrenceTable",
+  "RecurringDigitsForm",
+  "Red",
+  "Reduce",
+  "RefBox",
+  "ReferenceLineStyle",
+  "ReferenceMarkers",
+  "ReferenceMarkerStyle",
+  "Refine",
+  "ReflectionMatrix",
+  "ReflectionTransform",
+  "Refresh",
+  "RefreshRate",
+  "Region",
+  "RegionBinarize",
+  "RegionBoundary",
+  "RegionBoundaryStyle",
+  "RegionBounds",
+  "RegionCentroid",
+  "RegionDifference",
+  "RegionDimension",
+  "RegionDisjoint",
+  "RegionDistance",
+  "RegionDistanceFunction",
+  "RegionEmbeddingDimension",
+  "RegionEqual",
+  "RegionFillingStyle",
+  "RegionFunction",
+  "RegionImage",
+  "RegionIntersection",
+  "RegionMeasure",
+  "RegionMember",
+  "RegionMemberFunction",
+  "RegionMoment",
+  "RegionNearest",
+  "RegionNearestFunction",
+  "RegionPlot",
+  "RegionPlot3D",
+  "RegionProduct",
+  "RegionQ",
+  "RegionResize",
+  "RegionSize",
+  "RegionSymmetricDifference",
+  "RegionUnion",
+  "RegionWithin",
+  "RegisterExternalEvaluator",
+  "RegularExpression",
+  "Regularization",
+  "RegularlySampledQ",
+  "RegularPolygon",
+  "ReIm",
+  "ReImLabels",
+  "ReImPlot",
+  "ReImStyle",
+  "Reinstall",
+  "RelationalDatabase",
+  "RelationGraph",
+  "Release",
+  "ReleaseHold",
+  "ReliabilityDistribution",
+  "ReliefImage",
+  "ReliefPlot",
+  "RemoteAuthorizationCaching",
+  "RemoteConnect",
+  "RemoteConnectionObject",
+  "RemoteFile",
+  "RemoteRun",
+  "RemoteRunProcess",
+  "Remove",
+  "RemoveAlphaChannel",
+  "RemoveAsynchronousTask",
+  "RemoveAudioStream",
+  "RemoveBackground",
+  "RemoveChannelListener",
+  "RemoveChannelSubscribers",
+  "Removed",
+  "RemoveDiacritics",
+  "RemoveInputStreamMethod",
+  "RemoveOutputStreamMethod",
+  "RemoveProperty",
+  "RemoveScheduledTask",
+  "RemoveUsers",
+  "RemoveVideoStream",
+  "RenameDirectory",
+  "RenameFile",
+  "RenderAll",
+  "RenderingOptions",
+  "RenewalProcess",
+  "RenkoChart",
+  "RepairMesh",
+  "Repeated",
+  "RepeatedNull",
+  "RepeatedString",
+  "RepeatedTiming",
+  "RepeatingElement",
+  "Replace",
+  "ReplaceAll",
+  "ReplaceHeldPart",
+  "ReplaceImageValue",
+  "ReplaceList",
+  "ReplacePart",
+  "ReplacePixelValue",
+  "ReplaceRepeated",
+  "ReplicateLayer",
+  "RequiredPhysicalQuantities",
+  "Resampling",
+  "ResamplingAlgorithmData",
+  "ResamplingMethod",
+  "Rescale",
+  "RescalingTransform",
+  "ResetDirectory",
+  "ResetMenusPacket",
+  "ResetScheduledTask",
+  "ReshapeLayer",
+  "Residue",
+  "ResizeLayer",
+  "Resolve",
+  "ResourceAcquire",
+  "ResourceData",
+  "ResourceFunction",
+  "ResourceObject",
+  "ResourceRegister",
+  "ResourceRemove",
+  "ResourceSearch",
+  "ResourceSubmissionObject",
+  "ResourceSubmit",
+  "ResourceSystemBase",
+  "ResourceSystemPath",
+  "ResourceUpdate",
+  "ResourceVersion",
+  "ResponseForm",
+  "Rest",
+  "RestartInterval",
+  "Restricted",
+  "Resultant",
+  "ResumePacket",
+  "Return",
+  "ReturnEntersInput",
+  "ReturnExpressionPacket",
+  "ReturnInputFormPacket",
+  "ReturnPacket",
+  "ReturnReceiptFunction",
+  "ReturnTextPacket",
+  "Reverse",
+  "ReverseApplied",
+  "ReverseBiorthogonalSplineWavelet",
+  "ReverseElement",
+  "ReverseEquilibrium",
+  "ReverseGraph",
+  "ReverseSort",
+  "ReverseSortBy",
+  "ReverseUpEquilibrium",
+  "RevolutionAxis",
+  "RevolutionPlot3D",
+  "RGBColor",
+  "RiccatiSolve",
+  "RiceDistribution",
+  "RidgeFilter",
+  "RiemannR",
+  "RiemannSiegelTheta",
+  "RiemannSiegelZ",
+  "RiemannXi",
+  "Riffle",
+  "Right",
+  "RightArrow",
+  "RightArrowBar",
+  "RightArrowLeftArrow",
+  "RightComposition",
+  "RightCosetRepresentative",
+  "RightDownTeeVector",
+  "RightDownVector",
+  "RightDownVectorBar",
+  "RightTee",
+  "RightTeeArrow",
+  "RightTeeVector",
+  "RightTriangle",
+  "RightTriangleBar",
+  "RightTriangleEqual",
+  "RightUpDownVector",
+  "RightUpTeeVector",
+  "RightUpVector",
+  "RightUpVectorBar",
+  "RightVector",
+  "RightVectorBar",
+  "RiskAchievementImportance",
+  "RiskReductionImportance",
+  "RogersTanimotoDissimilarity",
+  "RollPitchYawAngles",
+  "RollPitchYawMatrix",
+  "RomanNumeral",
+  "Root",
+  "RootApproximant",
+  "RootIntervals",
+  "RootLocusPlot",
+  "RootMeanSquare",
+  "RootOfUnityQ",
+  "RootReduce",
+  "Roots",
+  "RootSum",
+  "Rotate",
+  "RotateLabel",
+  "RotateLeft",
+  "RotateRight",
+  "RotationAction",
+  "RotationBox",
+  "RotationBoxOptions",
+  "RotationMatrix",
+  "RotationTransform",
+  "Round",
+  "RoundImplies",
+  "RoundingRadius",
+  "Row",
+  "RowAlignments",
+  "RowBackgrounds",
+  "RowBox",
+  "RowHeights",
+  "RowLines",
+  "RowMinHeight",
+  "RowReduce",
+  "RowsEqual",
+  "RowSpacings",
+  "RSolve",
+  "RSolveValue",
+  "RudinShapiro",
+  "RudvalisGroupRu",
+  "Rule",
+  "RuleCondition",
+  "RuleDelayed",
+  "RuleForm",
+  "RulePlot",
+  "RulerUnits",
+  "Run",
+  "RunProcess",
+  "RunScheduledTask",
+  "RunThrough",
+  "RuntimeAttributes",
+  "RuntimeOptions",
+  "RussellRaoDissimilarity",
+  "SameQ",
+  "SameTest",
+  "SameTestProperties",
+  "SampledEntityClass",
+  "SampleDepth",
+  "SampledSoundFunction",
+  "SampledSoundList",
+  "SampleRate",
+  "SamplingPeriod",
+  "SARIMAProcess",
+  "SARMAProcess",
+  "SASTriangle",
+  "SatelliteData",
+  "SatisfiabilityCount",
+  "SatisfiabilityInstances",
+  "SatisfiableQ",
+  "Saturday",
+  "Save",
+  "Saveable",
+  "SaveAutoDelete",
+  "SaveConnection",
+  "SaveDefinitions",
+  "SavitzkyGolayMatrix",
+  "SawtoothWave",
+  "Scale",
+  "Scaled",
+  "ScaleDivisions",
+  "ScaledMousePosition",
+  "ScaleOrigin",
+  "ScalePadding",
+  "ScaleRanges",
+  "ScaleRangeStyle",
+  "ScalingFunctions",
+  "ScalingMatrix",
+  "ScalingTransform",
+  "Scan",
+  "ScheduledTask",
+  "ScheduledTaskActiveQ",
+  "ScheduledTaskInformation",
+  "ScheduledTaskInformationData",
+  "ScheduledTaskObject",
+  "ScheduledTasks",
+  "SchurDecomposition",
+  "ScientificForm",
+  "ScientificNotationThreshold",
+  "ScorerGi",
+  "ScorerGiPrime",
+  "ScorerHi",
+  "ScorerHiPrime",
+  "ScreenRectangle",
+  "ScreenStyleEnvironment",
+  "ScriptBaselineShifts",
+  "ScriptForm",
+  "ScriptLevel",
+  "ScriptMinSize",
+  "ScriptRules",
+  "ScriptSizeMultipliers",
+  "Scrollbars",
+  "ScrollingOptions",
+  "ScrollPosition",
+  "SearchAdjustment",
+  "SearchIndexObject",
+  "SearchIndices",
+  "SearchQueryString",
+  "SearchResultObject",
+  "Sec",
+  "Sech",
+  "SechDistribution",
+  "SecondOrderConeOptimization",
+  "SectionGrouping",
+  "SectorChart",
+  "SectorChart3D",
+  "SectorOrigin",
+  "SectorSpacing",
+  "SecuredAuthenticationKey",
+  "SecuredAuthenticationKeys",
+  "SeedRandom",
+  "Select",
+  "Selectable",
+  "SelectComponents",
+  "SelectedCells",
+  "SelectedNotebook",
+  "SelectFirst",
+  "Selection",
+  "SelectionAnimate",
+  "SelectionCell",
+  "SelectionCellCreateCell",
+  "SelectionCellDefaultStyle",
+  "SelectionCellParentStyle",
+  "SelectionCreateCell",
+  "SelectionDebuggerTag",
+  "SelectionDuplicateCell",
+  "SelectionEvaluate",
+  "SelectionEvaluateCreateCell",
+  "SelectionMove",
+  "SelectionPlaceholder",
+  "SelectionSetStyle",
+  "SelectWithContents",
+  "SelfLoops",
+  "SelfLoopStyle",
+  "SemanticImport",
+  "SemanticImportString",
+  "SemanticInterpretation",
+  "SemialgebraicComponentInstances",
+  "SemidefiniteOptimization",
+  "SendMail",
+  "SendMessage",
+  "Sequence",
+  "SequenceAlignment",
+  "SequenceAttentionLayer",
+  "SequenceCases",
+  "SequenceCount",
+  "SequenceFold",
+  "SequenceFoldList",
+  "SequenceForm",
+  "SequenceHold",
+  "SequenceLastLayer",
+  "SequenceMostLayer",
+  "SequencePosition",
+  "SequencePredict",
+  "SequencePredictorFunction",
+  "SequenceReplace",
+  "SequenceRestLayer",
+  "SequenceReverseLayer",
+  "SequenceSplit",
+  "Series",
+  "SeriesCoefficient",
+  "SeriesData",
+  "SeriesTermGoal",
+  "ServiceConnect",
+  "ServiceDisconnect",
+  "ServiceExecute",
+  "ServiceObject",
+  "ServiceRequest",
+  "ServiceResponse",
+  "ServiceSubmit",
+  "SessionSubmit",
+  "SessionTime",
+  "Set",
+  "SetAccuracy",
+  "SetAlphaChannel",
+  "SetAttributes",
+  "Setbacks",
+  "SetBoxFormNamesPacket",
+  "SetCloudDirectory",
+  "SetCookies",
+  "SetDelayed",
+  "SetDirectory",
+  "SetEnvironment",
+  "SetEvaluationNotebook",
+  "SetFileDate",
+  "SetFileLoadingContext",
+  "SetNotebookStatusLine",
+  "SetOptions",
+  "SetOptionsPacket",
+  "SetPermissions",
+  "SetPrecision",
+  "SetProperty",
+  "SetSecuredAuthenticationKey",
+  "SetSelectedNotebook",
+  "SetSharedFunction",
+  "SetSharedVariable",
+  "SetSpeechParametersPacket",
+  "SetStreamPosition",
+  "SetSystemModel",
+  "SetSystemOptions",
+  "Setter",
+  "SetterBar",
+  "SetterBox",
+  "SetterBoxOptions",
+  "Setting",
+  "SetUsers",
+  "SetValue",
+  "Shading",
+  "Shallow",
+  "ShannonWavelet",
+  "ShapiroWilkTest",
+  "Share",
+  "SharingList",
+  "Sharpen",
+  "ShearingMatrix",
+  "ShearingTransform",
+  "ShellRegion",
+  "ShenCastanMatrix",
+  "ShiftedGompertzDistribution",
+  "ShiftRegisterSequence",
+  "Short",
+  "ShortDownArrow",
+  "Shortest",
+  "ShortestMatch",
+  "ShortestPathFunction",
+  "ShortLeftArrow",
+  "ShortRightArrow",
+  "ShortTimeFourier",
+  "ShortTimeFourierData",
+  "ShortUpArrow",
+  "Show",
+  "ShowAutoConvert",
+  "ShowAutoSpellCheck",
+  "ShowAutoStyles",
+  "ShowCellBracket",
+  "ShowCellLabel",
+  "ShowCellTags",
+  "ShowClosedCellArea",
+  "ShowCodeAssist",
+  "ShowContents",
+  "ShowControls",
+  "ShowCursorTracker",
+  "ShowGroupOpenCloseIcon",
+  "ShowGroupOpener",
+  "ShowInvisibleCharacters",
+  "ShowPageBreaks",
+  "ShowPredictiveInterface",
+  "ShowSelection",
+  "ShowShortBoxForm",
+  "ShowSpecialCharacters",
+  "ShowStringCharacters",
+  "ShowSyntaxStyles",
+  "ShrinkingDelay",
+  "ShrinkWrapBoundingBox",
+  "SiderealTime",
+  "SiegelTheta",
+  "SiegelTukeyTest",
+  "SierpinskiCurve",
+  "SierpinskiMesh",
+  "Sign",
+  "Signature",
+  "SignedRankTest",
+  "SignedRegionDistance",
+  "SignificanceLevel",
+  "SignPadding",
+  "SignTest",
+  "SimilarityRules",
+  "SimpleGraph",
+  "SimpleGraphQ",
+  "SimplePolygonQ",
+  "SimplePolyhedronQ",
+  "Simplex",
+  "Simplify",
+  "Sin",
+  "Sinc",
+  "SinghMaddalaDistribution",
+  "SingleEvaluation",
+  "SingleLetterItalics",
+  "SingleLetterStyle",
+  "SingularValueDecomposition",
+  "SingularValueList",
+  "SingularValuePlot",
+  "SingularValues",
+  "Sinh",
+  "SinhIntegral",
+  "SinIntegral",
+  "SixJSymbol",
+  "Skeleton",
+  "SkeletonTransform",
+  "SkellamDistribution",
+  "Skewness",
+  "SkewNormalDistribution",
+  "SkinStyle",
+  "Skip",
+  "SliceContourPlot3D",
+  "SliceDensityPlot3D",
+  "SliceDistribution",
+  "SliceVectorPlot3D",
+  "Slider",
+  "Slider2D",
+  "Slider2DBox",
+  "Slider2DBoxOptions",
+  "SliderBox",
+  "SliderBoxOptions",
+  "SlideView",
+  "Slot",
+  "SlotSequence",
+  "Small",
+  "SmallCircle",
+  "Smaller",
+  "SmithDecomposition",
+  "SmithDelayCompensator",
+  "SmithWatermanSimilarity",
+  "SmoothDensityHistogram",
+  "SmoothHistogram",
+  "SmoothHistogram3D",
+  "SmoothKernelDistribution",
+  "SnDispersion",
+  "Snippet",
+  "SnubPolyhedron",
+  "SocialMediaData",
+  "Socket",
+  "SocketConnect",
+  "SocketListen",
+  "SocketListener",
+  "SocketObject",
+  "SocketOpen",
+  "SocketReadMessage",
+  "SocketReadyQ",
+  "Sockets",
+  "SocketWaitAll",
+  "SocketWaitNext",
+  "SoftmaxLayer",
+  "SokalSneathDissimilarity",
+  "SolarEclipse",
+  "SolarSystemFeatureData",
+  "SolidAngle",
+  "SolidData",
+  "SolidRegionQ",
+  "Solve",
+  "SolveAlways",
+  "SolveDelayed",
+  "Sort",
+  "SortBy",
+  "SortedBy",
+  "SortedEntityClass",
+  "Sound",
+  "SoundAndGraphics",
+  "SoundNote",
+  "SoundVolume",
+  "SourceLink",
+  "Sow",
+  "Space",
+  "SpaceCurveData",
+  "SpaceForm",
+  "Spacer",
+  "Spacings",
+  "Span",
+  "SpanAdjustments",
+  "SpanCharacterRounding",
+  "SpanFromAbove",
+  "SpanFromBoth",
+  "SpanFromLeft",
+  "SpanLineThickness",
+  "SpanMaxSize",
+  "SpanMinSize",
+  "SpanningCharacters",
+  "SpanSymmetric",
+  "SparseArray",
+  "SpatialGraphDistribution",
+  "SpatialMedian",
+  "SpatialTransformationLayer",
+  "Speak",
+  "SpeakerMatchQ",
+  "SpeakTextPacket",
+  "SpearmanRankTest",
+  "SpearmanRho",
+  "SpeciesData",
+  "SpecificityGoal",
+  "SpectralLineData",
+  "Spectrogram",
+  "SpectrogramArray",
+  "Specularity",
+  "SpeechCases",
+  "SpeechInterpreter",
+  "SpeechRecognize",
+  "SpeechSynthesize",
+  "SpellingCorrection",
+  "SpellingCorrectionList",
+  "SpellingDictionaries",
+  "SpellingDictionariesPath",
+  "SpellingOptions",
+  "SpellingSuggestionsPacket",
+  "Sphere",
+  "SphereBox",
+  "SpherePoints",
+  "SphericalBesselJ",
+  "SphericalBesselY",
+  "SphericalHankelH1",
+  "SphericalHankelH2",
+  "SphericalHarmonicY",
+  "SphericalPlot3D",
+  "SphericalRegion",
+  "SphericalShell",
+  "SpheroidalEigenvalue",
+  "SpheroidalJoiningFactor",
+  "SpheroidalPS",
+  "SpheroidalPSPrime",
+  "SpheroidalQS",
+  "SpheroidalQSPrime",
+  "SpheroidalRadialFactor",
+  "SpheroidalS1",
+  "SpheroidalS1Prime",
+  "SpheroidalS2",
+  "SpheroidalS2Prime",
+  "Splice",
+  "SplicedDistribution",
+  "SplineClosed",
+  "SplineDegree",
+  "SplineKnots",
+  "SplineWeights",
+  "Split",
+  "SplitBy",
+  "SpokenString",
+  "Sqrt",
+  "SqrtBox",
+  "SqrtBoxOptions",
+  "Square",
+  "SquaredEuclideanDistance",
+  "SquareFreeQ",
+  "SquareIntersection",
+  "SquareMatrixQ",
+  "SquareRepeatingElement",
+  "SquaresR",
+  "SquareSubset",
+  "SquareSubsetEqual",
+  "SquareSuperset",
+  "SquareSupersetEqual",
+  "SquareUnion",
+  "SquareWave",
+  "SSSTriangle",
+  "StabilityMargins",
+  "StabilityMarginsStyle",
+  "StableDistribution",
+  "Stack",
+  "StackBegin",
+  "StackComplete",
+  "StackedDateListPlot",
+  "StackedListPlot",
+  "StackInhibit",
+  "StadiumShape",
+  "StandardAtmosphereData",
+  "StandardDeviation",
+  "StandardDeviationFilter",
+  "StandardForm",
+  "Standardize",
+  "Standardized",
+  "StandardOceanData",
+  "StandbyDistribution",
+  "Star",
+  "StarClusterData",
+  "StarData",
+  "StarGraph",
+  "StartAsynchronousTask",
+  "StartExternalSession",
+  "StartingStepSize",
+  "StartOfLine",
+  "StartOfString",
+  "StartProcess",
+  "StartScheduledTask",
+  "StartupSound",
+  "StartWebSession",
+  "StateDimensions",
+  "StateFeedbackGains",
+  "StateOutputEstimator",
+  "StateResponse",
+  "StateSpaceModel",
+  "StateSpaceRealization",
+  "StateSpaceTransform",
+  "StateTransformationLinearize",
+  "StationaryDistribution",
+  "StationaryWaveletPacketTransform",
+  "StationaryWaveletTransform",
+  "StatusArea",
+  "StatusCentrality",
+  "StepMonitor",
+  "StereochemistryElements",
+  "StieltjesGamma",
+  "StippleShading",
+  "StirlingS1",
+  "StirlingS2",
+  "StopAsynchronousTask",
+  "StoppingPowerData",
+  "StopScheduledTask",
+  "StrataVariables",
+  "StratonovichProcess",
+  "StreamColorFunction",
+  "StreamColorFunctionScaling",
+  "StreamDensityPlot",
+  "StreamMarkers",
+  "StreamPlot",
+  "StreamPoints",
+  "StreamPosition",
+  "Streams",
+  "StreamScale",
+  "StreamStyle",
+  "String",
+  "StringBreak",
+  "StringByteCount",
+  "StringCases",
+  "StringContainsQ",
+  "StringCount",
+  "StringDelete",
+  "StringDrop",
+  "StringEndsQ",
+  "StringExpression",
+  "StringExtract",
+  "StringForm",
+  "StringFormat",
+  "StringFreeQ",
+  "StringInsert",
+  "StringJoin",
+  "StringLength",
+  "StringMatchQ",
+  "StringPadLeft",
+  "StringPadRight",
+  "StringPart",
+  "StringPartition",
+  "StringPosition",
+  "StringQ",
+  "StringRepeat",
+  "StringReplace",
+  "StringReplaceList",
+  "StringReplacePart",
+  "StringReverse",
+  "StringRiffle",
+  "StringRotateLeft",
+  "StringRotateRight",
+  "StringSkeleton",
+  "StringSplit",
+  "StringStartsQ",
+  "StringTake",
+  "StringTemplate",
+  "StringToByteArray",
+  "StringToStream",
+  "StringTrim",
+  "StripBoxes",
+  "StripOnInput",
+  "StripWrapperBoxes",
+  "StrokeForm",
+  "StructuralImportance",
+  "StructuredArray",
+  "StructuredArrayHeadQ",
+  "StructuredSelection",
+  "StruveH",
+  "StruveL",
+  "Stub",
+  "StudentTDistribution",
+  "Style",
+  "StyleBox",
+  "StyleBoxAutoDelete",
+  "StyleData",
+  "StyleDefinitions",
+  "StyleForm",
+  "StyleHints",
+  "StyleKeyMapping",
+  "StyleMenuListing",
+  "StyleNameDialogSettings",
+  "StyleNames",
+  "StylePrint",
+  "StyleSheetPath",
+  "Subdivide",
+  "Subfactorial",
+  "Subgraph",
+  "SubMinus",
+  "SubPlus",
+  "SubresultantPolynomialRemainders",
+  "SubresultantPolynomials",
+  "Subresultants",
+  "Subscript",
+  "SubscriptBox",
+  "SubscriptBoxOptions",
+  "Subscripted",
+  "Subsequences",
+  "Subset",
+  "SubsetCases",
+  "SubsetCount",
+  "SubsetEqual",
+  "SubsetMap",
+  "SubsetPosition",
+  "SubsetQ",
+  "SubsetReplace",
+  "Subsets",
+  "SubStar",
+  "SubstitutionSystem",
+  "Subsuperscript",
+  "SubsuperscriptBox",
+  "SubsuperscriptBoxOptions",
+  "SubtitleEncoding",
+  "SubtitleTracks",
+  "Subtract",
+  "SubtractFrom",
+  "SubtractSides",
+  "SubValues",
+  "Succeeds",
+  "SucceedsEqual",
+  "SucceedsSlantEqual",
+  "SucceedsTilde",
+  "Success",
+  "SuchThat",
+  "Sum",
+  "SumConvergence",
+  "SummationLayer",
+  "Sunday",
+  "SunPosition",
+  "Sunrise",
+  "Sunset",
+  "SuperDagger",
+  "SuperMinus",
+  "SupernovaData",
+  "SuperPlus",
+  "Superscript",
+  "SuperscriptBox",
+  "SuperscriptBoxOptions",
+  "Superset",
+  "SupersetEqual",
+  "SuperStar",
+  "Surd",
+  "SurdForm",
+  "SurfaceAppearance",
+  "SurfaceArea",
+  "SurfaceColor",
+  "SurfaceData",
+  "SurfaceGraphics",
+  "SurvivalDistribution",
+  "SurvivalFunction",
+  "SurvivalModel",
+  "SurvivalModelFit",
+  "SuspendPacket",
+  "SuzukiDistribution",
+  "SuzukiGroupSuz",
+  "SwatchLegend",
+  "Switch",
+  "Symbol",
+  "SymbolName",
+  "SymletWavelet",
+  "Symmetric",
+  "SymmetricGroup",
+  "SymmetricKey",
+  "SymmetricMatrixQ",
+  "SymmetricPolynomial",
+  "SymmetricReduction",
+  "Symmetrize",
+  "SymmetrizedArray",
+  "SymmetrizedArrayRules",
+  "SymmetrizedDependentComponents",
+  "SymmetrizedIndependentComponents",
+  "SymmetrizedReplacePart",
+  "SynchronousInitialization",
+  "SynchronousUpdating",
+  "Synonyms",
+  "Syntax",
+  "SyntaxForm",
+  "SyntaxInformation",
+  "SyntaxLength",
+  "SyntaxPacket",
+  "SyntaxQ",
+  "SynthesizeMissingValues",
+  "SystemCredential",
+  "SystemCredentialData",
+  "SystemCredentialKey",
+  "SystemCredentialKeys",
+  "SystemCredentialStoreObject",
+  "SystemDialogInput",
+  "SystemException",
+  "SystemGet",
+  "SystemHelpPath",
+  "SystemInformation",
+  "SystemInformationData",
+  "SystemInstall",
+  "SystemModel",
+  "SystemModeler",
+  "SystemModelExamples",
+  "SystemModelLinearize",
+  "SystemModelParametricSimulate",
+  "SystemModelPlot",
+  "SystemModelProgressReporting",
+  "SystemModelReliability",
+  "SystemModels",
+  "SystemModelSimulate",
+  "SystemModelSimulateSensitivity",
+  "SystemModelSimulationData",
+  "SystemOpen",
+  "SystemOptions",
+  "SystemProcessData",
+  "SystemProcesses",
+  "SystemsConnectionsModel",
+  "SystemsModelDelay",
+  "SystemsModelDelayApproximate",
+  "SystemsModelDelete",
+  "SystemsModelDimensions",
+  "SystemsModelExtract",
+  "SystemsModelFeedbackConnect",
+  "SystemsModelLabels",
+  "SystemsModelLinearity",
+  "SystemsModelMerge",
+  "SystemsModelOrder",
+  "SystemsModelParallelConnect",
+  "SystemsModelSeriesConnect",
+  "SystemsModelStateFeedbackConnect",
+  "SystemsModelVectorRelativeOrders",
+  "SystemStub",
+  "SystemTest",
+  "Tab",
+  "TabFilling",
+  "Table",
+  "TableAlignments",
+  "TableDepth",
+  "TableDirections",
+  "TableForm",
+  "TableHeadings",
+  "TableSpacing",
+  "TableView",
+  "TableViewBox",
+  "TableViewBoxBackground",
+  "TableViewBoxItemSize",
+  "TableViewBoxOptions",
+  "TabSpacings",
+  "TabView",
+  "TabViewBox",
+  "TabViewBoxOptions",
+  "TagBox",
+  "TagBoxNote",
+  "TagBoxOptions",
+  "TaggingRules",
+  "TagSet",
+  "TagSetDelayed",
+  "TagStyle",
+  "TagUnset",
+  "Take",
+  "TakeDrop",
+  "TakeLargest",
+  "TakeLargestBy",
+  "TakeList",
+  "TakeSmallest",
+  "TakeSmallestBy",
+  "TakeWhile",
+  "Tally",
+  "Tan",
+  "Tanh",
+  "TargetDevice",
+  "TargetFunctions",
+  "TargetSystem",
+  "TargetUnits",
+  "TaskAbort",
+  "TaskExecute",
+  "TaskObject",
+  "TaskRemove",
+  "TaskResume",
+  "Tasks",
+  "TaskSuspend",
+  "TaskWait",
+  "TautologyQ",
+  "TelegraphProcess",
+  "TemplateApply",
+  "TemplateArgBox",
+  "TemplateBox",
+  "TemplateBoxOptions",
+  "TemplateEvaluate",
+  "TemplateExpression",
+  "TemplateIf",
+  "TemplateObject",
+  "TemplateSequence",
+  "TemplateSlot",
+  "TemplateSlotSequence",
+  "TemplateUnevaluated",
+  "TemplateVerbatim",
+  "TemplateWith",
+  "TemporalData",
+  "TemporalRegularity",
+  "Temporary",
+  "TemporaryVariable",
+  "TensorContract",
+  "TensorDimensions",
+  "TensorExpand",
+  "TensorProduct",
+  "TensorQ",
+  "TensorRank",
+  "TensorReduce",
+  "TensorSymmetry",
+  "TensorTranspose",
+  "TensorWedge",
+  "TestID",
+  "TestReport",
+  "TestReportObject",
+  "TestResultObject",
+  "Tetrahedron",
+  "TetrahedronBox",
+  "TetrahedronBoxOptions",
+  "TeXForm",
+  "TeXSave",
+  "Text",
+  "Text3DBox",
+  "Text3DBoxOptions",
+  "TextAlignment",
+  "TextBand",
+  "TextBoundingBox",
+  "TextBox",
+  "TextCases",
+  "TextCell",
+  "TextClipboardType",
+  "TextContents",
+  "TextData",
+  "TextElement",
+  "TextForm",
+  "TextGrid",
+  "TextJustification",
+  "TextLine",
+  "TextPacket",
+  "TextParagraph",
+  "TextPosition",
+  "TextRecognize",
+  "TextSearch",
+  "TextSearchReport",
+  "TextSentences",
+  "TextString",
+  "TextStructure",
+  "TextStyle",
+  "TextTranslation",
+  "Texture",
+  "TextureCoordinateFunction",
+  "TextureCoordinateScaling",
+  "TextWords",
+  "Therefore",
+  "ThermodynamicData",
+  "ThermometerGauge",
+  "Thick",
+  "Thickness",
+  "Thin",
+  "Thinning",
+  "ThisLink",
+  "ThompsonGroupTh",
+  "Thread",
+  "ThreadingLayer",
+  "ThreeJSymbol",
+  "Threshold",
+  "Through",
+  "Throw",
+  "ThueMorse",
+  "Thumbnail",
+  "Thursday",
+  "Ticks",
+  "TicksStyle",
+  "TideData",
+  "Tilde",
+  "TildeEqual",
+  "TildeFullEqual",
+  "TildeTilde",
+  "TimeConstrained",
+  "TimeConstraint",
+  "TimeDirection",
+  "TimeFormat",
+  "TimeGoal",
+  "TimelinePlot",
+  "TimeObject",
+  "TimeObjectQ",
+  "TimeRemaining",
+  "Times",
+  "TimesBy",
+  "TimeSeries",
+  "TimeSeriesAggregate",
+  "TimeSeriesForecast",
+  "TimeSeriesInsert",
+  "TimeSeriesInvertibility",
+  "TimeSeriesMap",
+  "TimeSeriesMapThread",
+  "TimeSeriesModel",
+  "TimeSeriesModelFit",
+  "TimeSeriesResample",
+  "TimeSeriesRescale",
+  "TimeSeriesShift",
+  "TimeSeriesThread",
+  "TimeSeriesWindow",
+  "TimeUsed",
+  "TimeValue",
+  "TimeWarpingCorrespondence",
+  "TimeWarpingDistance",
+  "TimeZone",
+  "TimeZoneConvert",
+  "TimeZoneOffset",
+  "Timing",
+  "Tiny",
+  "TitleGrouping",
+  "TitsGroupT",
+  "ToBoxes",
+  "ToCharacterCode",
+  "ToColor",
+  "ToContinuousTimeModel",
+  "ToDate",
+  "Today",
+  "ToDiscreteTimeModel",
+  "ToEntity",
+  "ToeplitzMatrix",
+  "ToExpression",
+  "ToFileName",
+  "Together",
+  "Toggle",
+  "ToggleFalse",
+  "Toggler",
+  "TogglerBar",
+  "TogglerBox",
+  "TogglerBoxOptions",
+  "ToHeldExpression",
+  "ToInvertibleTimeSeries",
+  "TokenWords",
+  "Tolerance",
+  "ToLowerCase",
+  "Tomorrow",
+  "ToNumberField",
+  "TooBig",
+  "Tooltip",
+  "TooltipBox",
+  "TooltipBoxOptions",
+  "TooltipDelay",
+  "TooltipStyle",
+  "ToonShading",
+  "Top",
+  "TopHatTransform",
+  "ToPolarCoordinates",
+  "TopologicalSort",
+  "ToRadicals",
+  "ToRules",
+  "ToSphericalCoordinates",
+  "ToString",
+  "Total",
+  "TotalHeight",
+  "TotalLayer",
+  "TotalVariationFilter",
+  "TotalWidth",
+  "TouchPosition",
+  "TouchscreenAutoZoom",
+  "TouchscreenControlPlacement",
+  "ToUpperCase",
+  "Tr",
+  "Trace",
+  "TraceAbove",
+  "TraceAction",
+  "TraceBackward",
+  "TraceDepth",
+  "TraceDialog",
+  "TraceForward",
+  "TraceInternal",
+  "TraceLevel",
+  "TraceOff",
+  "TraceOn",
+  "TraceOriginal",
+  "TracePrint",
+  "TraceScan",
+  "TrackedSymbols",
+  "TrackingFunction",
+  "TracyWidomDistribution",
+  "TradingChart",
+  "TraditionalForm",
+  "TraditionalFunctionNotation",
+  "TraditionalNotation",
+  "TraditionalOrder",
+  "TrainingProgressCheckpointing",
+  "TrainingProgressFunction",
+  "TrainingProgressMeasurements",
+  "TrainingProgressReporting",
+  "TrainingStoppingCriterion",
+  "TrainingUpdateSchedule",
+  "TransferFunctionCancel",
+  "TransferFunctionExpand",
+  "TransferFunctionFactor",
+  "TransferFunctionModel",
+  "TransferFunctionPoles",
+  "TransferFunctionTransform",
+  "TransferFunctionZeros",
+  "TransformationClass",
+  "TransformationFunction",
+  "TransformationFunctions",
+  "TransformationMatrix",
+  "TransformedDistribution",
+  "TransformedField",
+  "TransformedProcess",
+  "TransformedRegion",
+  "TransitionDirection",
+  "TransitionDuration",
+  "TransitionEffect",
+  "TransitiveClosureGraph",
+  "TransitiveReductionGraph",
+  "Translate",
+  "TranslationOptions",
+  "TranslationTransform",
+  "Transliterate",
+  "Transparent",
+  "TransparentColor",
+  "Transpose",
+  "TransposeLayer",
+  "TrapSelection",
+  "TravelDirections",
+  "TravelDirectionsData",
+  "TravelDistance",
+  "TravelDistanceList",
+  "TravelMethod",
+  "TravelTime",
+  "TreeForm",
+  "TreeGraph",
+  "TreeGraphQ",
+  "TreePlot",
+  "TrendStyle",
+  "Triangle",
+  "TriangleCenter",
+  "TriangleConstruct",
+  "TriangleMeasurement",
+  "TriangleWave",
+  "TriangularDistribution",
+  "TriangulateMesh",
+  "Trig",
+  "TrigExpand",
+  "TrigFactor",
+  "TrigFactorList",
+  "Trigger",
+  "TrigReduce",
+  "TrigToExp",
+  "TrimmedMean",
+  "TrimmedVariance",
+  "TropicalStormData",
+  "True",
+  "TrueQ",
+  "TruncatedDistribution",
+  "TruncatedPolyhedron",
+  "TsallisQExponentialDistribution",
+  "TsallisQGaussianDistribution",
+  "TTest",
+  "Tube",
+  "TubeBezierCurveBox",
+  "TubeBezierCurveBoxOptions",
+  "TubeBox",
+  "TubeBoxOptions",
+  "TubeBSplineCurveBox",
+  "TubeBSplineCurveBoxOptions",
+  "Tuesday",
+  "TukeyLambdaDistribution",
+  "TukeyWindow",
+  "TunnelData",
+  "Tuples",
+  "TuranGraph",
+  "TuringMachine",
+  "TuttePolynomial",
+  "TwoWayRule",
+  "Typed",
+  "TypeSpecifier",
+  "UnateQ",
+  "Uncompress",
+  "UnconstrainedParameters",
+  "Undefined",
+  "UnderBar",
+  "Underflow",
+  "Underlined",
+  "Underoverscript",
+  "UnderoverscriptBox",
+  "UnderoverscriptBoxOptions",
+  "Underscript",
+  "UnderscriptBox",
+  "UnderscriptBoxOptions",
+  "UnderseaFeatureData",
+  "UndirectedEdge",
+  "UndirectedGraph",
+  "UndirectedGraphQ",
+  "UndoOptions",
+  "UndoTrackedVariables",
+  "Unequal",
+  "UnequalTo",
+  "Unevaluated",
+  "UniformDistribution",
+  "UniformGraphDistribution",
+  "UniformPolyhedron",
+  "UniformSumDistribution",
+  "Uninstall",
+  "Union",
+  "UnionedEntityClass",
+  "UnionPlus",
+  "Unique",
+  "UnitaryMatrixQ",
+  "UnitBox",
+  "UnitConvert",
+  "UnitDimensions",
+  "Unitize",
+  "UnitRootTest",
+  "UnitSimplify",
+  "UnitStep",
+  "UnitSystem",
+  "UnitTriangle",
+  "UnitVector",
+  "UnitVectorLayer",
+  "UnityDimensions",
+  "UniverseModelData",
+  "UniversityData",
+  "UnixTime",
+  "Unprotect",
+  "UnregisterExternalEvaluator",
+  "UnsameQ",
+  "UnsavedVariables",
+  "Unset",
+  "UnsetShared",
+  "UntrackedVariables",
+  "Up",
+  "UpArrow",
+  "UpArrowBar",
+  "UpArrowDownArrow",
+  "Update",
+  "UpdateDynamicObjects",
+  "UpdateDynamicObjectsSynchronous",
+  "UpdateInterval",
+  "UpdatePacletSites",
+  "UpdateSearchIndex",
+  "UpDownArrow",
+  "UpEquilibrium",
+  "UpperCaseQ",
+  "UpperLeftArrow",
+  "UpperRightArrow",
+  "UpperTriangularize",
+  "UpperTriangularMatrixQ",
+  "Upsample",
+  "UpSet",
+  "UpSetDelayed",
+  "UpTee",
+  "UpTeeArrow",
+  "UpTo",
+  "UpValues",
+  "URL",
+  "URLBuild",
+  "URLDecode",
+  "URLDispatcher",
+  "URLDownload",
+  "URLDownloadSubmit",
+  "URLEncode",
+  "URLExecute",
+  "URLExpand",
+  "URLFetch",
+  "URLFetchAsynchronous",
+  "URLParse",
+  "URLQueryDecode",
+  "URLQueryEncode",
+  "URLRead",
+  "URLResponseTime",
+  "URLSave",
+  "URLSaveAsynchronous",
+  "URLShorten",
+  "URLSubmit",
+  "UseGraphicsRange",
+  "UserDefinedWavelet",
+  "Using",
+  "UsingFrontEnd",
+  "UtilityFunction",
+  "V2Get",
+  "ValenceErrorHandling",
+  "ValidationLength",
+  "ValidationSet",
+  "Value",
+  "ValueBox",
+  "ValueBoxOptions",
+  "ValueDimensions",
+  "ValueForm",
+  "ValuePreprocessingFunction",
+  "ValueQ",
+  "Values",
+  "ValuesData",
+  "Variables",
+  "Variance",
+  "VarianceEquivalenceTest",
+  "VarianceEstimatorFunction",
+  "VarianceGammaDistribution",
+  "VarianceTest",
+  "VectorAngle",
+  "VectorAround",
+  "VectorAspectRatio",
+  "VectorColorFunction",
+  "VectorColorFunctionScaling",
+  "VectorDensityPlot",
+  "VectorGlyphData",
+  "VectorGreater",
+  "VectorGreaterEqual",
+  "VectorLess",
+  "VectorLessEqual",
+  "VectorMarkers",
+  "VectorPlot",
+  "VectorPlot3D",
+  "VectorPoints",
+  "VectorQ",
+  "VectorRange",
+  "Vectors",
+  "VectorScale",
+  "VectorScaling",
+  "VectorSizes",
+  "VectorStyle",
+  "Vee",
+  "Verbatim",
+  "Verbose",
+  "VerboseConvertToPostScriptPacket",
+  "VerificationTest",
+  "VerifyConvergence",
+  "VerifyDerivedKey",
+  "VerifyDigitalSignature",
+  "VerifyFileSignature",
+  "VerifyInterpretation",
+  "VerifySecurityCertificates",
+  "VerifySolutions",
+  "VerifyTestAssumptions",
+  "Version",
+  "VersionedPreferences",
+  "VersionNumber",
+  "VertexAdd",
+  "VertexCapacity",
+  "VertexColors",
+  "VertexComponent",
+  "VertexConnectivity",
+  "VertexContract",
+  "VertexCoordinateRules",
+  "VertexCoordinates",
+  "VertexCorrelationSimilarity",
+  "VertexCosineSimilarity",
+  "VertexCount",
+  "VertexCoverQ",
+  "VertexDataCoordinates",
+  "VertexDegree",
+  "VertexDelete",
+  "VertexDiceSimilarity",
+  "VertexEccentricity",
+  "VertexInComponent",
+  "VertexInDegree",
+  "VertexIndex",
+  "VertexJaccardSimilarity",
+  "VertexLabeling",
+  "VertexLabels",
+  "VertexLabelStyle",
+  "VertexList",
+  "VertexNormals",
+  "VertexOutComponent",
+  "VertexOutDegree",
+  "VertexQ",
+  "VertexRenderingFunction",
+  "VertexReplace",
+  "VertexShape",
+  "VertexShapeFunction",
+  "VertexSize",
+  "VertexStyle",
+  "VertexTextureCoordinates",
+  "VertexWeight",
+  "VertexWeightedGraphQ",
+  "Vertical",
+  "VerticalBar",
+  "VerticalForm",
+  "VerticalGauge",
+  "VerticalSeparator",
+  "VerticalSlider",
+  "VerticalTilde",
+  "Video",
+  "VideoEncoding",
+  "VideoExtractFrames",
+  "VideoFrameList",
+  "VideoFrameMap",
+  "VideoPause",
+  "VideoPlay",
+  "VideoQ",
+  "VideoStop",
+  "VideoStream",
+  "VideoStreams",
+  "VideoTimeSeries",
+  "VideoTracks",
+  "VideoTrim",
+  "ViewAngle",
+  "ViewCenter",
+  "ViewMatrix",
+  "ViewPoint",
+  "ViewPointSelectorSettings",
+  "ViewPort",
+  "ViewProjection",
+  "ViewRange",
+  "ViewVector",
+  "ViewVertical",
+  "VirtualGroupData",
+  "Visible",
+  "VisibleCell",
+  "VoiceStyleData",
+  "VoigtDistribution",
+  "VolcanoData",
+  "Volume",
+  "VonMisesDistribution",
+  "VoronoiMesh",
+  "WaitAll",
+  "WaitAsynchronousTask",
+  "WaitNext",
+  "WaitUntil",
+  "WakebyDistribution",
+  "WalleniusHypergeometricDistribution",
+  "WaringYuleDistribution",
+  "WarpingCorrespondence",
+  "WarpingDistance",
+  "WatershedComponents",
+  "WatsonUSquareTest",
+  "WattsStrogatzGraphDistribution",
+  "WaveletBestBasis",
+  "WaveletFilterCoefficients",
+  "WaveletImagePlot",
+  "WaveletListPlot",
+  "WaveletMapIndexed",
+  "WaveletMatrixPlot",
+  "WaveletPhi",
+  "WaveletPsi",
+  "WaveletScale",
+  "WaveletScalogram",
+  "WaveletThreshold",
+  "WeaklyConnectedComponents",
+  "WeaklyConnectedGraphComponents",
+  "WeaklyConnectedGraphQ",
+  "WeakStationarity",
+  "WeatherData",
+  "WeatherForecastData",
+  "WebAudioSearch",
+  "WebElementObject",
+  "WeberE",
+  "WebExecute",
+  "WebImage",
+  "WebImageSearch",
+  "WebSearch",
+  "WebSessionObject",
+  "WebSessions",
+  "WebWindowObject",
+  "Wedge",
+  "Wednesday",
+  "WeibullDistribution",
+  "WeierstrassE1",
+  "WeierstrassE2",
+  "WeierstrassE3",
+  "WeierstrassEta1",
+  "WeierstrassEta2",
+  "WeierstrassEta3",
+  "WeierstrassHalfPeriods",
+  "WeierstrassHalfPeriodW1",
+  "WeierstrassHalfPeriodW2",
+  "WeierstrassHalfPeriodW3",
+  "WeierstrassInvariantG2",
+  "WeierstrassInvariantG3",
+  "WeierstrassInvariants",
+  "WeierstrassP",
+  "WeierstrassPPrime",
+  "WeierstrassSigma",
+  "WeierstrassZeta",
+  "WeightedAdjacencyGraph",
+  "WeightedAdjacencyMatrix",
+  "WeightedData",
+  "WeightedGraphQ",
+  "Weights",
+  "WelchWindow",
+  "WheelGraph",
+  "WhenEvent",
+  "Which",
+  "While",
+  "White",
+  "WhiteNoiseProcess",
+  "WhitePoint",
+  "Whitespace",
+  "WhitespaceCharacter",
+  "WhittakerM",
+  "WhittakerW",
+  "WienerFilter",
+  "WienerProcess",
+  "WignerD",
+  "WignerSemicircleDistribution",
+  "WikidataData",
+  "WikidataSearch",
+  "WikipediaData",
+  "WikipediaSearch",
+  "WilksW",
+  "WilksWTest",
+  "WindDirectionData",
+  "WindingCount",
+  "WindingPolygon",
+  "WindowClickSelect",
+  "WindowElements",
+  "WindowFloating",
+  "WindowFrame",
+  "WindowFrameElements",
+  "WindowMargins",
+  "WindowMovable",
+  "WindowOpacity",
+  "WindowPersistentStyles",
+  "WindowSelected",
+  "WindowSize",
+  "WindowStatusArea",
+  "WindowTitle",
+  "WindowToolbars",
+  "WindowWidth",
+  "WindSpeedData",
+  "WindVectorData",
+  "WinsorizedMean",
+  "WinsorizedVariance",
+  "WishartMatrixDistribution",
+  "With",
+  "WolframAlpha",
+  "WolframAlphaDate",
+  "WolframAlphaQuantity",
+  "WolframAlphaResult",
+  "WolframLanguageData",
+  "Word",
+  "WordBoundary",
+  "WordCharacter",
+  "WordCloud",
+  "WordCount",
+  "WordCounts",
+  "WordData",
+  "WordDefinition",
+  "WordFrequency",
+  "WordFrequencyData",
+  "WordList",
+  "WordOrientation",
+  "WordSearch",
+  "WordSelectionFunction",
+  "WordSeparators",
+  "WordSpacings",
+  "WordStem",
+  "WordTranslation",
+  "WorkingPrecision",
+  "WrapAround",
+  "Write",
+  "WriteLine",
+  "WriteString",
+  "Wronskian",
+  "XMLElement",
+  "XMLObject",
+  "XMLTemplate",
+  "Xnor",
+  "Xor",
+  "XYZColor",
+  "Yellow",
+  "Yesterday",
+  "YuleDissimilarity",
+  "ZernikeR",
+  "ZeroSymmetric",
+  "ZeroTest",
+  "ZeroWidthTimes",
+  "Zeta",
+  "ZetaZero",
+  "ZIPCodeData",
+  "ZipfDistribution",
+  "ZoomCenter",
+  "ZoomFactor",
+  "ZTest",
+  "ZTransform",
+  "$Aborted",
+  "$ActivationGroupID",
+  "$ActivationKey",
+  "$ActivationUserRegistered",
+  "$AddOnsDirectory",
+  "$AllowDataUpdates",
+  "$AllowExternalChannelFunctions",
+  "$AllowInternet",
+  "$AssertFunction",
+  "$Assumptions",
+  "$AsynchronousTask",
+  "$AudioDecoders",
+  "$AudioEncoders",
+  "$AudioInputDevices",
+  "$AudioOutputDevices",
+  "$BaseDirectory",
+  "$BasePacletsDirectory",
+  "$BatchInput",
+  "$BatchOutput",
+  "$BlockchainBase",
+  "$BoxForms",
+  "$ByteOrdering",
+  "$CacheBaseDirectory",
+  "$Canceled",
+  "$ChannelBase",
+  "$CharacterEncoding",
+  "$CharacterEncodings",
+  "$CloudAccountName",
+  "$CloudBase",
+  "$CloudConnected",
+  "$CloudConnection",
+  "$CloudCreditsAvailable",
+  "$CloudEvaluation",
+  "$CloudExpressionBase",
+  "$CloudObjectNameFormat",
+  "$CloudObjectURLType",
+  "$CloudRootDirectory",
+  "$CloudSymbolBase",
+  "$CloudUserID",
+  "$CloudUserUUID",
+  "$CloudVersion",
+  "$CloudVersionNumber",
+  "$CloudWolframEngineVersionNumber",
+  "$CommandLine",
+  "$CompilationTarget",
+  "$ConditionHold",
+  "$ConfiguredKernels",
+  "$Context",
+  "$ContextPath",
+  "$ControlActiveSetting",
+  "$Cookies",
+  "$CookieStore",
+  "$CreationDate",
+  "$CurrentLink",
+  "$CurrentTask",
+  "$CurrentWebSession",
+  "$DataStructures",
+  "$DateStringFormat",
+  "$DefaultAudioInputDevice",
+  "$DefaultAudioOutputDevice",
+  "$DefaultFont",
+  "$DefaultFrontEnd",
+  "$DefaultImagingDevice",
+  "$DefaultLocalBase",
+  "$DefaultMailbox",
+  "$DefaultNetworkInterface",
+  "$DefaultPath",
+  "$DefaultProxyRules",
+  "$DefaultSystemCredentialStore",
+  "$Display",
+  "$DisplayFunction",
+  "$DistributedContexts",
+  "$DynamicEvaluation",
+  "$Echo",
+  "$EmbedCodeEnvironments",
+  "$EmbeddableServices",
+  "$EntityStores",
+  "$Epilog",
+  "$EvaluationCloudBase",
+  "$EvaluationCloudObject",
+  "$EvaluationEnvironment",
+  "$ExportFormats",
+  "$ExternalIdentifierTypes",
+  "$ExternalStorageBase",
+  "$Failed",
+  "$FinancialDataSource",
+  "$FontFamilies",
+  "$FormatType",
+  "$FrontEnd",
+  "$FrontEndSession",
+  "$GeoEntityTypes",
+  "$GeoLocation",
+  "$GeoLocationCity",
+  "$GeoLocationCountry",
+  "$GeoLocationPrecision",
+  "$GeoLocationSource",
+  "$HistoryLength",
+  "$HomeDirectory",
+  "$HTMLExportRules",
+  "$HTTPCookies",
+  "$HTTPRequest",
+  "$IgnoreEOF",
+  "$ImageFormattingWidth",
+  "$ImageResolution",
+  "$ImagingDevice",
+  "$ImagingDevices",
+  "$ImportFormats",
+  "$IncomingMailSettings",
+  "$InitialDirectory",
+  "$Initialization",
+  "$InitializationContexts",
+  "$Input",
+  "$InputFileName",
+  "$InputStreamMethods",
+  "$Inspector",
+  "$InstallationDate",
+  "$InstallationDirectory",
+  "$InterfaceEnvironment",
+  "$InterpreterTypes",
+  "$IterationLimit",
+  "$KernelCount",
+  "$KernelID",
+  "$Language",
+  "$LaunchDirectory",
+  "$LibraryPath",
+  "$LicenseExpirationDate",
+  "$LicenseID",
+  "$LicenseProcesses",
+  "$LicenseServer",
+  "$LicenseSubprocesses",
+  "$LicenseType",
+  "$Line",
+  "$Linked",
+  "$LinkSupported",
+  "$LoadedFiles",
+  "$LocalBase",
+  "$LocalSymbolBase",
+  "$MachineAddresses",
+  "$MachineDomain",
+  "$MachineDomains",
+  "$MachineEpsilon",
+  "$MachineID",
+  "$MachineName",
+  "$MachinePrecision",
+  "$MachineType",
+  "$MaxExtraPrecision",
+  "$MaxLicenseProcesses",
+  "$MaxLicenseSubprocesses",
+  "$MaxMachineNumber",
+  "$MaxNumber",
+  "$MaxPiecewiseCases",
+  "$MaxPrecision",
+  "$MaxRootDegree",
+  "$MessageGroups",
+  "$MessageList",
+  "$MessagePrePrint",
+  "$Messages",
+  "$MinMachineNumber",
+  "$MinNumber",
+  "$MinorReleaseNumber",
+  "$MinPrecision",
+  "$MobilePhone",
+  "$ModuleNumber",
+  "$NetworkConnected",
+  "$NetworkInterfaces",
+  "$NetworkLicense",
+  "$NewMessage",
+  "$NewSymbol",
+  "$NotebookInlineStorageLimit",
+  "$Notebooks",
+  "$NoValue",
+  "$NumberMarks",
+  "$Off",
+  "$OperatingSystem",
+  "$Output",
+  "$OutputForms",
+  "$OutputSizeLimit",
+  "$OutputStreamMethods",
+  "$Packages",
+  "$ParentLink",
+  "$ParentProcessID",
+  "$PasswordFile",
+  "$PatchLevelID",
+  "$Path",
+  "$PathnameSeparator",
+  "$PerformanceGoal",
+  "$Permissions",
+  "$PermissionsGroupBase",
+  "$PersistenceBase",
+  "$PersistencePath",
+  "$PipeSupported",
+  "$PlotTheme",
+  "$Post",
+  "$Pre",
+  "$PreferencesDirectory",
+  "$PreInitialization",
+  "$PrePrint",
+  "$PreRead",
+  "$PrintForms",
+  "$PrintLiteral",
+  "$Printout3DPreviewer",
+  "$ProcessID",
+  "$ProcessorCount",
+  "$ProcessorType",
+  "$ProductInformation",
+  "$ProgramName",
+  "$PublisherID",
+  "$RandomState",
+  "$RecursionLimit",
+  "$RegisteredDeviceClasses",
+  "$RegisteredUserName",
+  "$ReleaseNumber",
+  "$RequesterAddress",
+  "$RequesterWolframID",
+  "$RequesterWolframUUID",
+  "$RootDirectory",
+  "$ScheduledTask",
+  "$ScriptCommandLine",
+  "$ScriptInputString",
+  "$SecuredAuthenticationKeyTokens",
+  "$ServiceCreditsAvailable",
+  "$Services",
+  "$SessionID",
+  "$SetParentLink",
+  "$SharedFunctions",
+  "$SharedVariables",
+  "$SoundDisplay",
+  "$SoundDisplayFunction",
+  "$SourceLink",
+  "$SSHAuthentication",
+  "$SubtitleDecoders",
+  "$SubtitleEncoders",
+  "$SummaryBoxDataSizeLimit",
+  "$SuppressInputFormHeads",
+  "$SynchronousEvaluation",
+  "$SyntaxHandler",
+  "$System",
+  "$SystemCharacterEncoding",
+  "$SystemCredentialStore",
+  "$SystemID",
+  "$SystemMemory",
+  "$SystemShell",
+  "$SystemTimeZone",
+  "$SystemWordLength",
+  "$TemplatePath",
+  "$TemporaryDirectory",
+  "$TemporaryPrefix",
+  "$TestFileName",
+  "$TextStyle",
+  "$TimedOut",
+  "$TimeUnit",
+  "$TimeZone",
+  "$TimeZoneEntity",
+  "$TopDirectory",
+  "$TraceOff",
+  "$TraceOn",
+  "$TracePattern",
+  "$TracePostAction",
+  "$TracePreAction",
+  "$UnitSystem",
+  "$Urgent",
+  "$UserAddOnsDirectory",
+  "$UserAgentLanguages",
+  "$UserAgentMachine",
+  "$UserAgentName",
+  "$UserAgentOperatingSystem",
+  "$UserAgentString",
+  "$UserAgentVersion",
+  "$UserBaseDirectory",
+  "$UserBasePacletsDirectory",
+  "$UserDocumentsDirectory",
+  "$Username",
+  "$UserName",
+  "$UserURLBase",
+  "$Version",
+  "$VersionNumber",
+  "$VideoDecoders",
+  "$VideoEncoders",
+  "$VoiceStyles",
+  "$WolframDocumentsDirectory",
+  "$WolframID",
+  "$WolframUUID"
+];
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: Wolfram Language
+Description: The Wolfram Language is the programming language used in Wolfram Mathematica, a modern technical computing system spanning most areas of technical computing.
+Authors: Patrick Scheibe , Robert Jacobson 
+Website: https://www.wolfram.com/mathematica/
+Category: scientific
+*/
+
+/** @type LanguageFn */
+function mathematica(hljs) {
+  /*
+  This rather scary looking matching of Mathematica numbers is carefully explained by Robert Jacobson here:
+  https://wltools.github.io/LanguageSpec/Specification/Syntax/Number-representations/
+   */
+  const BASE_RE = /([2-9]|[1-2]\d|[3][0-5])\^\^/;
+  const BASE_DIGITS_RE = /(\w*\.\w+|\w+\.\w*|\w+)/;
+  const NUMBER_RE = /(\d*\.\d+|\d+\.\d*|\d+)/;
+  const BASE_NUMBER_RE = either(concat(BASE_RE, BASE_DIGITS_RE), NUMBER_RE);
+
+  const ACCURACY_RE = /``[+-]?(\d*\.\d+|\d+\.\d*|\d+)/;
+  const PRECISION_RE = /`([+-]?(\d*\.\d+|\d+\.\d*|\d+))?/;
+  const APPROXIMATE_NUMBER_RE = either(ACCURACY_RE, PRECISION_RE);
+
+  const SCIENTIFIC_NOTATION_RE = /\*\^[+-]?\d+/;
+
+  const MATHEMATICA_NUMBER_RE = concat(
+    BASE_NUMBER_RE,
+    optional(APPROXIMATE_NUMBER_RE),
+    optional(SCIENTIFIC_NOTATION_RE)
+  );
+
+  const NUMBERS = {
+    className: 'number',
+    relevance: 0,
+    begin: MATHEMATICA_NUMBER_RE
+  };
+
+  const SYMBOL_RE = /[a-zA-Z$][a-zA-Z0-9$]*/;
+  const SYSTEM_SYMBOLS_SET = new Set(SYSTEM_SYMBOLS);
+  /** @type {Mode} */
+  const SYMBOLS = {
+    variants: [
+      {
+        className: 'builtin-symbol',
+        begin: SYMBOL_RE,
+        // for performance out of fear of regex.either(...Mathematica.SYSTEM_SYMBOLS)
+        "on:begin": (match, response) => {
+          if (!SYSTEM_SYMBOLS_SET.has(match[0])) response.ignoreMatch();
+        }
+      },
+      {
+        className: 'symbol',
+        relevance: 0,
+        begin: SYMBOL_RE
+      }
+    ]
+  };
+
+  const NAMED_CHARACTER = {
+    className: 'named-character',
+    begin: /\\\[[$a-zA-Z][$a-zA-Z0-9]+\]/
+  };
+
+  const OPERATORS = {
+    className: 'operator',
+    relevance: 0,
+    begin: /[+\-*/,;.:@~=><&|_`'^?!%]+/
+  };
+  const PATTERNS = {
+    className: 'pattern',
+    relevance: 0,
+    begin: /([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/
+  };
+
+  const SLOTS = {
+    className: 'slot',
+    relevance: 0,
+    begin: /#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/
+  };
+
+  const BRACES = {
+    className: 'brace',
+    relevance: 0,
+    begin: /[[\](){}]/
+  };
+
+  const MESSAGES = {
+    className: 'message-name',
+    relevance: 0,
+    begin: concat("::", SYMBOL_RE)
+  };
+
+  return {
+    name: 'Mathematica',
+    aliases: [
+      'mma',
+      'wl'
+    ],
+    classNameAliases: {
+      brace: 'punctuation',
+      pattern: 'type',
+      slot: 'type',
+      symbol: 'variable',
+      'named-character': 'variable',
+      'builtin-symbol': 'built_in',
+      'message-name': 'string'
+    },
+    contains: [
+      hljs.COMMENT(/\(\*/, /\*\)/, {
+        contains: [ 'self' ]
+      }),
+      PATTERNS,
+      SLOTS,
+      MESSAGES,
+      SYMBOLS,
+      NAMED_CHARACTER,
+      hljs.QUOTE_STRING_MODE,
+      NUMBERS,
+      OPERATORS,
+      BRACES
+    ]
+  };
+}
+
+module.exports = mathematica;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/matlab.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/matlab.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Matlab
+Author: Denis Bardadym 
+Contributors: Eugene Nizhibitsky , Egor Rogov 
+Website: https://www.mathworks.com/products/matlab.html
+Category: scientific
+*/
+
+/*
+  Formal syntax is not published, helpful link:
+  https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf
+*/
+function matlab(hljs) {
+
+  var TRANSPOSE_RE = '(\'|\\.\')+';
+  var TRANSPOSE = {
+    relevance: 0,
+    contains: [
+      { begin: TRANSPOSE_RE }
+    ]
+  };
+
+  return {
+    name: 'Matlab',
+    keywords: {
+      keyword:
+        'arguments break case catch classdef continue else elseif end enumeration events for function ' +
+        'global if methods otherwise parfor persistent properties return spmd switch try while',
+      built_in:
+        'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' +
+        'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' +
+        'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' +
+        'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' +
+        'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' +
+        'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' +
+        'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' +
+        'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' +
+        'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' +
+        'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' +
+        'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' +
+        'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan ' +
+        'isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal ' +
+        'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' +
+        'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' +
+        'legend intersect ismember procrustes hold num2cell '
+    },
+    illegal: '(//|"|#|/\\*|\\s+/\\w+)',
+    contains: [
+      {
+        className: 'function',
+        beginKeywords: 'function', end: '$',
+        contains: [
+          hljs.UNDERSCORE_TITLE_MODE,
+          {
+            className: 'params',
+            variants: [
+              {begin: '\\(', end: '\\)'},
+              {begin: '\\[', end: '\\]'}
+            ]
+          }
+        ]
+      },
+      {
+        className: 'built_in',
+        begin: /true|false/,
+        relevance: 0,
+        starts: TRANSPOSE
+      },
+      {
+        begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,
+        relevance: 0
+      },
+      {
+        className: 'number',
+        begin: hljs.C_NUMBER_RE,
+        relevance: 0,
+        starts: TRANSPOSE
+      },
+      {
+        className: 'string',
+        begin: '\'', end: '\'',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          {begin: '\'\''}]
+      },
+      {
+        begin: /\]|\}|\)/,
+        relevance: 0,
+        starts: TRANSPOSE
+      },
+      {
+        className: 'string',
+        begin: '"', end: '"',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          {begin: '""'}
+        ],
+        starts: TRANSPOSE
+      },
+      hljs.COMMENT('^\\s*%\\{\\s*$', '^\\s*%\\}\\s*$'),
+      hljs.COMMENT('%', '$')
+    ]
+  };
+}
+
+module.exports = matlab;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/maxima.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/maxima.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Maxima
+Author: Robert Dodier 
+Website: http://maxima.sourceforge.net
+Category: scientific
+*/
+
+function maxima(hljs) {
+  const KEYWORDS =
+    'if then else elseif for thru do while unless step in and or not';
+  const LITERALS =
+    'true false unknown inf minf ind und %e %i %pi %phi %gamma';
+  const BUILTIN_FUNCTIONS =
+    ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate' +
+    ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix' +
+    ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type' +
+    ' alias allroots alphacharp alphanumericp amortization %and annuity_fv' +
+    ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2' +
+    ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply' +
+    ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger' +
+    ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order' +
+    ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method' +
+    ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode' +
+    ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx' +
+    ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify' +
+    ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized' +
+    ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp' +
+    ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition' +
+    ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description' +
+    ' break bug_report build_info|10 buildq build_sample burn cabs canform canten' +
+    ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli' +
+    ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform' +
+    ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel' +
+    ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial' +
+    ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson' +
+    ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay' +
+    ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic' +
+    ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2' +
+    ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps' +
+    ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph' +
+    ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph' +
+    ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse' +
+    ' collectterms columnop columnspace columnswap columnvector combination combine' +
+    ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph' +
+    ' complete_graph complex_number_p components compose_functions concan concat' +
+    ' conjugate conmetderiv connected_components connect_vertices cons constant' +
+    ' constantp constituent constvalue cont2part content continuous_freq contortion' +
+    ' contour_plot contract contract_edge contragrad contrib_ode convert coord' +
+    ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1' +
+    ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline' +
+    ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph' +
+    ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate' +
+    ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions' +
+    ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion' +
+    ' declare_units declare_weights decsym defcon define define_alt_display define_variable' +
+    ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten' +
+    ' delta demo demoivre denom depends derivdegree derivlist describe desolve' +
+    ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag' +
+    ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export' +
+    ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct' +
+    ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform' +
+    ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum' +
+    ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart' +
+    ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring' +
+    ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth' +
+    ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome' +
+    ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using' +
+    ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi' +
+    ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp' +
+    ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors' +
+    ' euler ev eval_string evenp every evolution evolution2d evundiff example exp' +
+    ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci' +
+    ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li' +
+    ' expintegral_shi expintegral_si explicit explose exponentialize express expt' +
+    ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum' +
+    ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements' +
+    ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge' +
+    ' file_search file_type fillarray findde find_root find_root_abs find_root_error' +
+    ' find_root_rel first fix flatten flength float floatnump floor flower_snark' +
+    ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran' +
+    ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp' +
+    ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s' +
+    ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp' +
+    ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units' +
+    ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized' +
+    ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide' +
+    ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym' +
+    ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean' +
+    ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string' +
+    ' get_pixel get_plot_option get_tex_environment get_tex_environment_default' +
+    ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close' +
+    ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum' +
+    ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import' +
+    ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery' +
+    ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph' +
+    ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path' +
+    ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite' +
+    ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description' +
+    ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph' +
+    ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy' +
+    ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart' +
+    ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices' +
+    ' induced_subgraph inferencep inference_result infix info_display init_atensor' +
+    ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions' +
+    ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2' +
+    ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc' +
+    ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns' +
+    ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint' +
+    ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph' +
+    ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate' +
+    ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph' +
+    ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc' +
+    ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd' +
+    ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill' +
+    ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis' +
+    ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform' +
+    ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete' +
+    ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace' +
+    ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2' +
+    ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson' +
+    ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange' +
+    ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp' +
+    ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length' +
+    ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit' +
+    ' Lindstedt linear linearinterpol linear_program linear_regression line_graph' +
+    ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials' +
+    ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry' +
+    ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst' +
+    ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact' +
+    ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub' +
+    ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma' +
+    ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country' +
+    ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream' +
+    ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom' +
+    ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display' +
+    ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker' +
+    ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching' +
+    ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform' +
+    ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete' +
+    ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic' +
+    ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t' +
+    ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull' +
+    ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree' +
+    ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor' +
+    ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton' +
+    ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions' +
+    ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff' +
+    ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary' +
+    ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext' +
+    ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices' +
+    ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp' +
+    ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst' +
+    ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets' +
+    ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai' +
+    ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin' +
+    ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary' +
+    ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless' +
+    ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap' +
+    ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface' +
+    ' parg parGosper parse_string parse_timedate part part2cont partfrac partition' +
+    ' partition_set partpol path_digraph path_graph pathname_directory pathname_name' +
+    ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform' +
+    ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete' +
+    ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal' +
+    ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal' +
+    ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t' +
+    ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph' +
+    ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding' +
+    ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff' +
+    ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar' +
+    ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion' +
+    ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal' +
+    ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal' +
+    ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation' +
+    ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm' +
+    ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form' +
+    ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part' +
+    ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension' +
+    ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod' +
+    ' powerseries powerset prefix prev_prime primep primes principal_components' +
+    ' print printf printfile print_graph printpois printprops prodrac product properties' +
+    ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct' +
+    ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp' +
+    ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile' +
+    ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2' +
+    ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f' +
+    ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel' +
+    ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal' +
+    ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t' +
+    ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t' +
+    ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan' +
+    ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph' +
+    ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform' +
+    ' random_exp random_f random_gamma random_general_finite_discrete random_geometric' +
+    ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace' +
+    ' random_logistic random_lognormal random_negative_binomial random_network' +
+    ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto' +
+    ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t' +
+    ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom' +
+    ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump' +
+    ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array' +
+    ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline' +
+    ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate' +
+    ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar' +
+    ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus' +
+    ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction' +
+    ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions' +
+    ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule' +
+    ' remsym remvalue rename rename_file reset reset_displays residue resolvante' +
+    ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein' +
+    ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer' +
+    ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann' +
+    ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row' +
+    ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i' +
+    ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description' +
+    ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second' +
+    ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight' +
+    ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state' +
+    ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications' +
+    ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path' +
+    ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform' +
+    ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert' +
+    ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial' +
+    ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp' +
+    ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric' +
+    ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic' +
+    ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t' +
+    ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t' +
+    ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph' +
+    ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve' +
+    ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export' +
+    ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1' +
+    ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition' +
+    ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus' +
+    ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot' +
+    ' starplot_description status std std1 std_bernoulli std_beta std_binomial' +
+    ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma' +
+    ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace' +
+    ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t' +
+    ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull' +
+    ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout' +
+    ' stringp strong_components struve_h struve_l sublis sublist sublist_indices' +
+    ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart' +
+    ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext' +
+    ' symbolp symmdifference symmetricp system take_channel take_inference tan' +
+    ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract' +
+    ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference' +
+    ' test_normality test_proportion test_proportions_difference test_rank_sum' +
+    ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display' +
+    ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter' +
+    ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep' +
+    ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample' +
+    ' translate translate_file transpose treefale tree_reduce treillis treinat' +
+    ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate' +
+    ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph' +
+    ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget' +
+    ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp' +
+    ' units unit_step unitvector unorder unsum untellrat untimer' +
+    ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli' +
+    ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform' +
+    ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel' +
+    ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial' +
+    ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson' +
+    ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp' +
+    ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance' +
+    ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle' +
+    ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j' +
+    ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian' +
+    ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta' +
+    ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors' +
+    ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table' +
+    ' absboxchar activecontexts adapt_depth additive adim aform algebraic' +
+    ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic' +
+    ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar' +
+    ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top' +
+    ' azimuth background background_color backsubst berlefact bernstein_explicit' +
+    ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest' +
+    ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange' +
+    ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics' +
+    ' colorbox columns commutative complex cone context contexts contour contour_levels' +
+    ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp' +
+    ' cube current_let_rule_package cylinder data_file_name debugmode decreasing' +
+    ' default_let_rule_package delay dependencies derivabbrev derivsubst detout' +
+    ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal' +
+    ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor' +
+    ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules' +
+    ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart' +
+    ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag' +
+    ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer' +
+    ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type' +
+    ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand' +
+    ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine' +
+    ' factlim factorflag factorial_expand factors_only fb feature features' +
+    ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10' +
+    ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color' +
+    ' fill_density filled_func fixed_vertices flipflag float2bf font font_size' +
+    ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim' +
+    ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command' +
+    ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command' +
+    ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command' +
+    ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble' +
+    ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args' +
+    ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both' +
+    ' head_length head_type height hypergeometric_representation %iargs ibase' +
+    ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form' +
+    ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval' +
+    ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued' +
+    ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color' +
+    ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr' +
+    ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment' +
+    ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max' +
+    ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear' +
+    ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params' +
+    ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname' +
+    ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx' +
+    ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros' +
+    ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult' +
+    ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10' +
+    ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint' +
+    ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp' +
+    ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver' +
+    ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag' +
+    ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc' +
+    ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np' +
+    ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties' +
+    ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals' +
+    ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution' +
+    ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart' +
+    ' png_file pochhammer_max_index points pointsize point_size points_joined point_type' +
+    ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm' +
+    ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list' +
+    ' poly_secondary_elimination_order poly_top_reduction_only posfun position' +
+    ' powerdisp pred prederror primep_number_of_tests product_use_gamma program' +
+    ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand' +
+    ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof' +
+    ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann' +
+    ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw' +
+    ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs' +
+    ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy' +
+    ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck' +
+    ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width' +
+    ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type' +
+    ' show_vertices show_weight simp simplified_output simplify_products simpproduct' +
+    ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn' +
+    ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag' +
+    ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda' +
+    ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric' +
+    ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials' +
+    ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch' +
+    ' tr track transcompile transform transform_xy translate_fast_arrays transparent' +
+    ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex' +
+    ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign' +
+    ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars' +
+    ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode' +
+    ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes' +
+    ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble' +
+    ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition' +
+    ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface' +
+    ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel' +
+    ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate' +
+    ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel' +
+    ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width' +
+    ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis' +
+    ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis' +
+    ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob' +
+    ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest';
+  const SYMBOLS = '_ __ %|0 %%|0';
+
+  return {
+    name: 'Maxima',
+    keywords: {
+      $pattern: '[A-Za-z_%][0-9A-Za-z_%]*',
+      keyword: KEYWORDS,
+      literal: LITERALS,
+      built_in: BUILTIN_FUNCTIONS,
+      symbol: SYMBOLS
+    },
+    contains: [
+      {
+        className: 'comment',
+        begin: '/\\*',
+        end: '\\*/',
+        contains: [ 'self' ]
+      },
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'number',
+        relevance: 0,
+        variants: [
+          {
+            // float number w/ exponent
+            // hmm, I wonder if we ought to include other exponent markers?
+            begin: '\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b'
+          },
+          {
+            // bigfloat number
+            begin: '\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b',
+            relevance: 10
+          },
+          {
+            // float number w/out exponent
+            // Doesn't seem to recognize floats which start with '.'
+            begin: '\\b(\\.\\d+|\\d+\\.\\d+)\\b'
+          },
+          {
+            // integer in base up to 36
+            // Doesn't seem to recognize integers which end with '.'
+            begin: '\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b'
+          }
+        ]
+      }
+    ],
+    illegal: /@/
+  };
+}
+
+module.exports = maxima;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/mel.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/mel.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: MEL
+Description: Maya Embedded Language
+Author: Shuen-Huei Guan 
+Website: http://www.autodesk.com/products/autodesk-maya/overview
+Category: graphics
+*/
+
+function mel(hljs) {
+  return {
+    name: 'MEL',
+    keywords:
+      'int float string vector matrix if else switch case default while do for in break ' +
+      'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' +
+      'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' +
+      'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' +
+      'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' +
+      'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' +
+      'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' +
+      'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' +
+      'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' +
+      'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' +
+      'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' +
+      'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' +
+      'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' +
+      'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' +
+      'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' +
+      'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' +
+      'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' +
+      'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' +
+      'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' +
+      'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' +
+      'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' +
+      'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' +
+      'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' +
+      'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' +
+      'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' +
+      'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' +
+      'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' +
+      'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' +
+      'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' +
+      'constrainValue constructionHistory container containsMultibyte contextInfo control ' +
+      'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' +
+      'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' +
+      'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' +
+      'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' +
+      'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' +
+      'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' +
+      'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' +
+      'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' +
+      'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' +
+      'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' +
+      'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' +
+      'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' +
+      'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' +
+      'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' +
+      'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' +
+      'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' +
+      'displaySmoothness displayStats displayString displaySurface distanceDimContext ' +
+      'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' +
+      'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' +
+      'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' +
+      'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' +
+      'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' +
+      'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' +
+      'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' +
+      'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' +
+      'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' +
+      'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' +
+      'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' +
+      'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' +
+      'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' +
+      'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' +
+      'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' +
+      'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' +
+      'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' +
+      'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' +
+      'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' +
+      'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' +
+      'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' +
+      'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' +
+      'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' +
+      'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' +
+      'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' +
+      'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' +
+      'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' +
+      'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' +
+      'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' +
+      'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' +
+      'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' +
+      'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' +
+      'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' +
+      'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' +
+      'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' +
+      'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' +
+      'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' +
+      'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' +
+      'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' +
+      'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' +
+      'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' +
+      'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' +
+      'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' +
+      'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' +
+      'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' +
+      'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' +
+      'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' +
+      'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' +
+      'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' +
+      'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' +
+      'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' +
+      'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' +
+      'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' +
+      'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' +
+      'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' +
+      'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' +
+      'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' +
+      'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' +
+      'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' +
+      'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' +
+      'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' +
+      'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' +
+      'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' +
+      'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' +
+      'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' +
+      'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' +
+      'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' +
+      'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' +
+      'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' +
+      'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' +
+      'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' +
+      'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' +
+      'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' +
+      'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' +
+      'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' +
+      'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' +
+      'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' +
+      'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' +
+      'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' +
+      'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' +
+      'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' +
+      'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' +
+      'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' +
+      'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' +
+      'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' +
+      'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' +
+      'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' +
+      'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' +
+      'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' +
+      'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' +
+      'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' +
+      'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' +
+      'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' +
+      'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' +
+      'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' +
+      'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' +
+      'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' +
+      'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' +
+      'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' +
+      'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' +
+      'removePanelCategory rename renameAttr renameSelectionList renameUI render ' +
+      'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' +
+      'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' +
+      'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' +
+      'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' +
+      'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' +
+      'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' +
+      'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' +
+      'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' +
+      'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' +
+      'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' +
+      'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' +
+      'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' +
+      'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' +
+      'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' +
+      'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' +
+      'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' +
+      'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' +
+      'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' +
+      'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' +
+      'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' +
+      'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' +
+      'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' +
+      'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' +
+      'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' +
+      'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' +
+      'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' +
+      'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' +
+      'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' +
+      'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' +
+      'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' +
+      'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' +
+      'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' +
+      'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' +
+      'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' +
+      'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' +
+      'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' +
+      'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' +
+      'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' +
+      'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' +
+      'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' +
+      'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' +
+      'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' +
+      'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' +
+      'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' +
+      'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' +
+      'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' +
+      'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' +
+      'trace track trackCtx transferAttributes transformCompare transformLimits translator ' +
+      'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' +
+      'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' +
+      'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' +
+      'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' +
+      'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' +
+      'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' +
+      'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform',
+    illegal: ' {
+
+/*
+Language: Mercury
+Author: mucaho 
+Description: Mercury is a logic/functional programming language which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features.
+Website: https://www.mercurylang.org
+*/
+
+function mercury(hljs) {
+  const KEYWORDS = {
+    keyword:
+      'module use_module import_module include_module end_module initialise ' +
+      'mutable initialize finalize finalise interface implementation pred ' +
+      'mode func type inst solver any_pred any_func is semidet det nondet ' +
+      'multi erroneous failure cc_nondet cc_multi typeclass instance where ' +
+      'pragma promise external trace atomic or_else require_complete_switch ' +
+      'require_det require_semidet require_multi require_nondet ' +
+      'require_cc_multi require_cc_nondet require_erroneous require_failure',
+    meta:
+      // pragma
+      'inline no_inline type_spec source_file fact_table obsolete memo ' +
+      'loop_check minimal_model terminates does_not_terminate ' +
+      'check_termination promise_equivalent_clauses ' +
+      // preprocessor
+      'foreign_proc foreign_decl foreign_code foreign_type ' +
+      'foreign_import_module foreign_export_enum foreign_export ' +
+      'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' +
+      'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' +
+      'tabled_for_io local untrailed trailed attach_to_io_state ' +
+      'can_pass_as_mercury_type stable will_not_throw_exception ' +
+      'may_modify_trail will_not_modify_trail may_duplicate ' +
+      'may_not_duplicate affects_liveness does_not_affect_liveness ' +
+      'doesnt_affect_liveness no_sharing unknown_sharing sharing',
+    built_in:
+      'some all not if then else true fail false try catch catch_any ' +
+      'semidet_true semidet_false semidet_fail impure_true impure semipure'
+  };
+
+  const COMMENT = hljs.COMMENT('%', '$');
+
+  const NUMCODE = {
+    className: 'number',
+    begin: "0'.\\|0[box][0-9a-fA-F]*"
+  };
+
+  const ATOM = hljs.inherit(hljs.APOS_STRING_MODE, {
+    relevance: 0
+  });
+  const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {
+    relevance: 0
+  });
+  const STRING_FMT = {
+    className: 'subst',
+    begin: '\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]',
+    relevance: 0
+  };
+  STRING.contains = STRING.contains.slice(); // we need our own copy of contains
+  STRING.contains.push(STRING_FMT);
+
+  const IMPLICATION = {
+    className: 'built_in',
+    variants: [
+      {
+        begin: '<=>'
+      },
+      {
+        begin: '<=',
+        relevance: 0
+      },
+      {
+        begin: '=>',
+        relevance: 0
+      },
+      {
+        begin: '/\\\\'
+      },
+      {
+        begin: '\\\\/'
+      }
+    ]
+  };
+
+  const HEAD_BODY_CONJUNCTION = {
+    className: 'built_in',
+    variants: [
+      {
+        begin: ':-\\|-->'
+      },
+      {
+        begin: '=',
+        relevance: 0
+      }
+    ]
+  };
+
+  return {
+    name: 'Mercury',
+    aliases: [
+      'm',
+      'moo'
+    ],
+    keywords: KEYWORDS,
+    contains: [
+      IMPLICATION,
+      HEAD_BODY_CONJUNCTION,
+      COMMENT,
+      hljs.C_BLOCK_COMMENT_MODE,
+      NUMCODE,
+      hljs.NUMBER_MODE,
+      ATOM,
+      STRING,
+      { // relevance booster
+        begin: /:-/
+      },
+      { // relevance booster
+        begin: /\.$/
+      }
+    ]
+  };
+}
+
+module.exports = mercury;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/mipsasm.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/mipsasm.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: MIPS Assembly
+Author: Nebuleon Fumika 
+Description: MIPS Assembly (up to MIPS32R2)
+Website: https://en.wikipedia.org/wiki/MIPS_architecture
+Category: assembler
+*/
+
+function mipsasm(hljs) {
+  // local labels: %?[FB]?[AT]?\d{1,2}\w+
+  return {
+    name: 'MIPS Assembly',
+    case_insensitive: true,
+    aliases: [ 'mips' ],
+    keywords: {
+      $pattern: '\\.?' + hljs.IDENT_RE,
+      meta:
+        // GNU preprocs
+        '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',
+      built_in:
+        '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' + // integer registers
+        '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' + // integer registers
+        'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' + // integer register aliases
+        't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' + // integer register aliases
+        'k0 k1 gp sp fp ra ' + // integer register aliases
+        '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' + // floating-point registers
+        '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' + // floating-point registers
+        'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' + // Coprocessor 0 registers
+        'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' + // Coprocessor 0 registers
+        'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' + // Coprocessor 0 registers
+        'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers
+    },
+    contains: [
+      {
+        className: 'keyword',
+        begin: '\\b(' + // mnemonics
+            // 32-bit integer instructions
+            'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' +
+            'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' +
+            'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' +
+            'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' +
+            'srlv?|subu?|sw[lr]?|xori?|wsbh|' +
+            // floating-point instructions
+            'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' +
+            'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' +
+            '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' +
+            'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' +
+            'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' +
+            'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' +
+            'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' +
+            'swx?c1|' +
+            // system control instructions
+            'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' +
+            'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' +
+            'tlti?u?|tnei?|wait|wrpgpr' +
+        ')',
+        end: '\\s'
+      },
+      // lines ending with ; or # aren't really comments, probably auto-detect fail
+      hljs.COMMENT('[;#](?!\\s*$)', '$'),
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        begin: '\'',
+        end: '[^\\\\]\'',
+        relevance: 0
+      },
+      {
+        className: 'title',
+        begin: '\\|',
+        end: '\\|',
+        illegal: '\\n',
+        relevance: 0
+      },
+      {
+        className: 'number',
+        variants: [
+          { // hex
+            begin: '0x[0-9a-f]+'
+          },
+          { // bare number
+            begin: '\\b-?\\d+'
+          }
+        ],
+        relevance: 0
+      },
+      {
+        className: 'symbol',
+        variants: [
+          { // GNU MIPS syntax
+            begin: '^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:'
+          },
+          { // numbered local labels
+            begin: '^\\s*[0-9]+:'
+          },
+          { // number local label reference (backwards, forwards)
+            begin: '[0-9]+[bf]'
+          }
+        ],
+        relevance: 0
+      }
+    ],
+    // forward slashes are not allowed
+    illegal: /\//
+  };
+}
+
+module.exports = mipsasm;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/mizar.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/mizar.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Mizar
+Description: The Mizar Language is a formal language derived from the mathematical vernacular.
+Author: Kelley van Evert 
+Website: http://mizar.org/language/
+Category: scientific
+*/
+
+function mizar(hljs) {
+  return {
+    name: 'Mizar',
+    keywords:
+      'environ vocabularies notations constructors definitions ' +
+      'registrations theorems schemes requirements begin end definition ' +
+      'registration cluster existence pred func defpred deffunc theorem ' +
+      'proof let take assume then thus hence ex for st holds consider ' +
+      'reconsider such that and in provided of as from be being by means ' +
+      'equals implies iff redefine define now not or attr is mode ' +
+      'suppose per cases set thesis contradiction scheme reserve struct ' +
+      'correctness compatibility coherence symmetry assymetry ' +
+      'reflexivity irreflexivity connectedness uniqueness commutativity ' +
+      'idempotence involutiveness projectivity',
+    contains: [
+      hljs.COMMENT('::', '$')
+    ]
+  };
+}
+
+module.exports = mizar;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/mojolicious.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/mojolicious.js ***!
+  \****************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Mojolicious
+Requires: xml.js, perl.js
+Author: Dotan Dimet 
+Description: Mojolicious .ep (Embedded Perl) templates
+Website: https://mojolicious.org
+Category: template
+*/
+function mojolicious(hljs) {
+  return {
+    name: 'Mojolicious',
+    subLanguage: 'xml',
+    contains: [
+      {
+        className: 'meta',
+        begin: '^__(END|DATA)__$'
+      },
+      // mojolicious line
+      {
+        begin: "^\\s*%{1,2}={0,2}",
+        end: '$',
+        subLanguage: 'perl'
+      },
+      // mojolicious block
+      {
+        begin: "<%{1,2}={0,2}",
+        end: "={0,1}%>",
+        subLanguage: 'perl',
+        excludeBegin: true,
+        excludeEnd: true
+      }
+    ]
+  };
+}
+
+module.exports = mojolicious;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/monkey.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/monkey.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Monkey
+Description: Monkey2 is an easy to use, cross platform, games oriented programming language from Blitz Research.
+Author: Arthur Bikmullin 
+Website: https://blitzresearch.itch.io/monkey2
+*/
+
+function monkey(hljs) {
+  const NUMBER = {
+    className: 'number',
+    relevance: 0,
+    variants: [
+      {
+        begin: '[$][a-fA-F0-9]+'
+      },
+      hljs.NUMBER_MODE
+    ]
+  };
+
+  return {
+    name: 'Monkey',
+    case_insensitive: true,
+    keywords: {
+      keyword: 'public private property continue exit extern new try catch ' +
+        'eachin not abstract final select case default const local global field ' +
+        'end if then else elseif endif while wend repeat until forever for ' +
+        'to step next return module inline throw import',
+
+      built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +
+        'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',
+
+      literal: 'true false null and or shl shr mod'
+    },
+    illegal: /\/\*/,
+    contains: [
+      hljs.COMMENT('#rem', '#end'),
+      hljs.COMMENT(
+        "'",
+        '$',
+        {
+          relevance: 0
+        }
+      ),
+      {
+        className: 'function',
+        beginKeywords: 'function method',
+        end: '[(=:]|$',
+        illegal: /\n/,
+        contains: [ hljs.UNDERSCORE_TITLE_MODE ]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class interface',
+        end: '$',
+        contains: [
+          {
+            beginKeywords: 'extends implements'
+          },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      {
+        className: 'built_in',
+        begin: '\\b(self|super)\\b'
+      },
+      {
+        className: 'meta',
+        begin: '\\s*#',
+        end: '$',
+        keywords: {
+          'meta-keyword': 'if else elseif endif end then'
+        }
+      },
+      {
+        className: 'meta',
+        begin: '^\\s*strict\\b'
+      },
+      {
+        beginKeywords: 'alias',
+        end: '=',
+        contains: [ hljs.UNDERSCORE_TITLE_MODE ]
+      },
+      hljs.QUOTE_STRING_MODE,
+      NUMBER
+    ]
+  };
+}
+
+module.exports = monkey;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/moonscript.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/moonscript.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: MoonScript
+Author: Billy Quith 
+Description: MoonScript is a programming language that transcompiles to Lua.
+Origin: coffeescript.js
+Website: http://moonscript.org/
+Category: scripting
+*/
+
+function moonscript(hljs) {
+  const KEYWORDS = {
+    keyword:
+      // Moonscript keywords
+      'if then not for in while do return else elseif break continue switch and or ' +
+      'unless when class extends super local import export from using',
+    literal:
+      'true false nil',
+    built_in:
+      '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +
+      'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +
+      'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +
+      'io math os package string table'
+  };
+  const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';
+  const SUBST = {
+    className: 'subst',
+    begin: /#\{/,
+    end: /\}/,
+    keywords: KEYWORDS
+  };
+  const EXPRESSIONS = [
+    hljs.inherit(hljs.C_NUMBER_MODE,
+      {
+        starts: {
+          end: '(\\s*/)?',
+          relevance: 0
+        }
+      }), // a number tries to eat the following slash to prevent treating it as a regexp
+    {
+      className: 'string',
+      variants: [
+        {
+          begin: /'/,
+          end: /'/,
+          contains: [ hljs.BACKSLASH_ESCAPE ]
+        },
+        {
+          begin: /"/,
+          end: /"/,
+          contains: [
+            hljs.BACKSLASH_ESCAPE,
+            SUBST
+          ]
+        }
+      ]
+    },
+    {
+      className: 'built_in',
+      begin: '@__' + hljs.IDENT_RE
+    },
+    {
+      begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript
+    },
+    {
+      begin: hljs.IDENT_RE + '\\\\' + hljs.IDENT_RE // inst\method
+    }
+  ];
+  SUBST.contains = EXPRESSIONS;
+
+  const TITLE = hljs.inherit(hljs.TITLE_MODE, {
+    begin: JS_IDENT_RE
+  });
+  const POSSIBLE_PARAMS_RE = '(\\(.*\\)\\s*)?\\B[-=]>';
+  const PARAMS = {
+    className: 'params',
+    begin: '\\([^\\(]',
+    returnBegin: true,
+    /* We need another contained nameless mode to not have every nested
+    pair of parens to be called "params" */
+    contains: [
+      {
+        begin: /\(/,
+        end: /\)/,
+        keywords: KEYWORDS,
+        contains: [ 'self' ].concat(EXPRESSIONS)
+      }
+    ]
+  };
+
+  return {
+    name: 'MoonScript',
+    aliases: [ 'moon' ],
+    keywords: KEYWORDS,
+    illegal: /\/\*/,
+    contains: EXPRESSIONS.concat([
+      hljs.COMMENT('--', '$'),
+      {
+        className: 'function', // function: -> =>
+        begin: '^\\s*' + JS_IDENT_RE + '\\s*=\\s*' + POSSIBLE_PARAMS_RE,
+        end: '[-=]>',
+        returnBegin: true,
+        contains: [
+          TITLE,
+          PARAMS
+        ]
+      },
+      {
+        begin: /[\(,:=]\s*/, // anonymous function start
+        relevance: 0,
+        contains: [
+          {
+            className: 'function',
+            begin: POSSIBLE_PARAMS_RE,
+            end: '[-=]>',
+            returnBegin: true,
+            contains: [ PARAMS ]
+          }
+        ]
+      },
+      {
+        className: 'class',
+        beginKeywords: 'class',
+        end: '$',
+        illegal: /[:="\[\]]/,
+        contains: [
+          {
+            beginKeywords: 'extends',
+            endsWithParent: true,
+            illegal: /[:="\[\]]/,
+            contains: [ TITLE ]
+          },
+          TITLE
+        ]
+      },
+      {
+        className: 'name', // table
+        begin: JS_IDENT_RE + ':',
+        end: ':',
+        returnBegin: true,
+        returnEnd: true,
+        relevance: 0
+      }
+    ])
+  };
+}
+
+module.exports = moonscript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/n1ql.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/n1ql.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+ Language: N1QL
+ Author: Andres Täht 
+ Contributors: Rene Saarsoo 
+ Description: Couchbase query language
+ Website: https://www.couchbase.com/products/n1ql
+ */
+
+function n1ql(hljs) {
+  return {
+    name: 'N1QL',
+    case_insensitive: true,
+    contains: [
+      {
+        beginKeywords:
+          'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',
+        end: /;/, endsWithParent: true,
+        keywords: {
+          // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html
+          keyword:
+            'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' +
+            'case cast cluster collate collection commit connect continue correlate cover create database ' +
+            'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' +
+            'else end every except exclude execute exists explain fetch first flatten for force from ' +
+            'function grant group gsi having if ignore ilike in include increment index infer inline inner ' +
+            'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' +
+            'mapping matched materialized merge minus namespace nest not number object offset on ' +
+            'option or order outer over parse partition password path pool prepare primary private privilege ' +
+            'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' +
+            'schema select self semi set show some start statistics string system then to transaction trigger ' +
+            'truncate under union unique unknown unnest unset update upsert use user using validate value ' +
+            'valued values via view when where while with within work xor',
+          // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html
+          literal:
+            'true false null missing|5',
+          // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html
+          built_in:
+            'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' +
+            'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' +
+            'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' +
+            'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' +
+            'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' +
+            'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' +
+            'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' +
+            'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' +
+            'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' +
+            'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' +
+            'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' +
+            'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring'
+        },
+        contains: [
+          {
+            className: 'string',
+            begin: '\'', end: '\'',
+            contains: [hljs.BACKSLASH_ESCAPE]
+          },
+          {
+            className: 'string',
+            begin: '"', end: '"',
+            contains: [hljs.BACKSLASH_ESCAPE]
+          },
+          {
+            className: 'symbol',
+            begin: '`', end: '`',
+            contains: [hljs.BACKSLASH_ESCAPE],
+            relevance: 2
+          },
+          hljs.C_NUMBER_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = n1ql;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/nginx.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/nginx.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Nginx config
+Author: Peter Leonov 
+Contributors: Ivan Sagalaev 
+Category: common, config
+Website: https://www.nginx.com
+*/
+
+function nginx(hljs) {
+  const VAR = {
+    className: 'variable',
+    variants: [
+      {
+        begin: /\$\d+/
+      },
+      {
+        begin: /\$\{/,
+        end: /\}/
+      },
+      {
+        begin: /[$@]/ + hljs.UNDERSCORE_IDENT_RE
+      }
+    ]
+  };
+  const DEFAULT = {
+    endsWithParent: true,
+    keywords: {
+      $pattern: '[a-z/_]+',
+      literal:
+        'on off yes no true false none blocked debug info notice warn error crit ' +
+        'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'
+    },
+    relevance: 0,
+    illegal: '=>',
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      {
+        className: 'string',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          VAR
+        ],
+        variants: [
+          {
+            begin: /"/,
+            end: /"/
+          },
+          {
+            begin: /'/,
+            end: /'/
+          }
+        ]
+      },
+      // this swallows entire URLs to avoid detecting numbers within
+      {
+        begin: '([a-z]+):/',
+        end: '\\s',
+        endsWithParent: true,
+        excludeEnd: true,
+        contains: [ VAR ]
+      },
+      {
+        className: 'regexp',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          VAR
+        ],
+        variants: [
+          {
+            begin: "\\s\\^",
+            end: "\\s|\\{|;",
+            returnEnd: true
+          },
+          // regexp locations (~, ~*)
+          {
+            begin: "~\\*?\\s+",
+            end: "\\s|\\{|;",
+            returnEnd: true
+          },
+          // *.example.com
+          {
+            begin: "\\*(\\.[a-z\\-]+)+"
+          },
+          // sub.example.*
+          {
+            begin: "([a-z\\-]+\\.)+\\*"
+          }
+        ]
+      },
+      // IP
+      {
+        className: 'number',
+        begin: '\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b'
+      },
+      // units
+      {
+        className: 'number',
+        begin: '\\b\\d+[kKmMgGdshdwy]*\\b',
+        relevance: 0
+      },
+      VAR
+    ]
+  };
+
+  return {
+    name: 'Nginx config',
+    aliases: [ 'nginxconf' ],
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      {
+        begin: hljs.UNDERSCORE_IDENT_RE + '\\s+\\{',
+        returnBegin: true,
+        end: /\{/,
+        contains: [
+          {
+            className: 'section',
+            begin: hljs.UNDERSCORE_IDENT_RE
+          }
+        ],
+        relevance: 0
+      },
+      {
+        begin: hljs.UNDERSCORE_IDENT_RE + '\\s',
+        end: ';|\\{',
+        returnBegin: true,
+        contains: [
+          {
+            className: 'attribute',
+            begin: hljs.UNDERSCORE_IDENT_RE,
+            starts: DEFAULT
+          }
+        ],
+        relevance: 0
+      }
+    ],
+    illegal: '[^\\s\\}]'
+  };
+}
+
+module.exports = nginx;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/nim.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/nim.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Nim
+Description: Nim is a statically typed compiled systems programming language.
+Website: https://nim-lang.org
+Category: system
+*/
+
+function nim(hljs) {
+  return {
+    name: 'Nim',
+    keywords: {
+      keyword:
+        'addr and as asm bind block break case cast const continue converter ' +
+        'discard distinct div do elif else end enum except export finally ' +
+        'for from func generic if import in include interface is isnot iterator ' +
+        'let macro method mixin mod nil not notin object of or out proc ptr ' +
+        'raise ref return shl shr static template try tuple type using var ' +
+        'when while with without xor yield',
+      literal:
+        'shared guarded stdin stdout stderr result true false',
+      built_in:
+        'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +
+        'float32 float64 bool char string cstring pointer expr stmt void ' +
+        'auto any range array openarray varargs seq set clong culong cchar ' +
+        'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +
+        'cuchar cushort cuint culonglong cstringarray semistatic'
+    },
+    contains: [
+      {
+        className: 'meta', // Actually pragma
+        begin: /\{\./,
+        end: /\.\}/,
+        relevance: 10
+      },
+      {
+        className: 'string',
+        begin: /[a-zA-Z]\w*"/,
+        end: /"/,
+        contains: [
+          {
+            begin: /""/
+          }
+        ]
+      },
+      {
+        className: 'string',
+        begin: /([a-zA-Z]\w*)?"""/,
+        end: /"""/
+      },
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'type',
+        begin: /\b[A-Z]\w+\b/,
+        relevance: 0
+      },
+      {
+        className: 'number',
+        relevance: 0,
+        variants: [
+          {
+            begin: /\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/
+          },
+          {
+            begin: /\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/
+          },
+          {
+            begin: /\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/
+          },
+          {
+            begin: /\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/
+          }
+        ]
+      },
+      hljs.HASH_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = nim;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/nix.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/nix.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Nix
+Author: Domen Kožar 
+Description: Nix functional language
+Website: http://nixos.org/nix
+*/
+
+function nix(hljs) {
+  const NIX_KEYWORDS = {
+    keyword:
+      'rec with let in inherit assert if else then',
+    literal:
+      'true false or and null',
+    built_in:
+      'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +
+      'toString derivation'
+  };
+  const ANTIQUOTE = {
+    className: 'subst',
+    begin: /\$\{/,
+    end: /\}/,
+    keywords: NIX_KEYWORDS
+  };
+  const ATTRS = {
+    begin: /[a-zA-Z0-9-_]+(\s*=)/,
+    returnBegin: true,
+    relevance: 0,
+    contains: [
+      {
+        className: 'attr',
+        begin: /\S+/
+      }
+    ]
+  };
+  const STRING = {
+    className: 'string',
+    contains: [ ANTIQUOTE ],
+    variants: [
+      {
+        begin: "''",
+        end: "''"
+      },
+      {
+        begin: '"',
+        end: '"'
+      }
+    ]
+  };
+  const EXPRESSIONS = [
+    hljs.NUMBER_MODE,
+    hljs.HASH_COMMENT_MODE,
+    hljs.C_BLOCK_COMMENT_MODE,
+    STRING,
+    ATTRS
+  ];
+  ANTIQUOTE.contains = EXPRESSIONS;
+  return {
+    name: 'Nix',
+    aliases: [ "nixos" ],
+    keywords: NIX_KEYWORDS,
+    contains: EXPRESSIONS
+  };
+}
+
+module.exports = nix;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/node-repl.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/node-repl.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Node REPL
+Requires: javascript.js
+Author: Marat Nagayev 
+Category: scripting
+*/
+
+/** @type LanguageFn */
+function nodeRepl(hljs) {
+  return {
+    name: 'Node REPL',
+    contains: [
+      {
+        className: 'meta',
+        starts: {
+          // a space separates the REPL prefix from the actual code
+          // this is purely for cleaner HTML output
+          end: / |$/,
+          starts: {
+            end: '$',
+            subLanguage: 'javascript'
+          }
+        },
+        variants: [
+          {
+            begin: /^>(?=[ ]|$)/
+          },
+          {
+            begin: /^\.\.\.(?=[ ]|$)/
+          }
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = nodeRepl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/nsis.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/nsis.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: NSIS
+Description: Nullsoft Scriptable Install System
+Author: Jan T. Sott 
+Website: https://nsis.sourceforge.io/Main_Page
+*/
+
+function nsis(hljs) {
+  const CONSTANTS = {
+    className: 'variable',
+    begin: /\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/
+  };
+
+  const DEFINES = {
+    // ${defines}
+    className: 'variable',
+    begin: /\$+\{[\w.:-]+\}/
+  };
+
+  const VARIABLES = {
+    // $variables
+    className: 'variable',
+    begin: /\$+\w+/,
+    illegal: /\(\)\{\}/
+  };
+
+  const LANGUAGES = {
+    // $(language_strings)
+    className: 'variable',
+    begin: /\$+\([\w^.:-]+\)/
+  };
+
+  const PARAMETERS = {
+    // command parameters
+    className: 'params',
+    begin: '(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)'
+  };
+
+  const COMPILER = {
+    // !compiler_flags
+    className: 'keyword',
+    begin: /!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/
+  };
+
+  const METACHARS = {
+    // $\n, $\r, $\t, $$
+    className: 'meta',
+    begin: /\$(\\[nrt]|\$)/
+  };
+
+  const PLUGINS = {
+    // plug::ins
+    className: 'class',
+    begin: /\w+::\w+/
+  };
+
+  const STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: '"',
+        end: '"'
+      },
+      {
+        begin: '\'',
+        end: '\''
+      },
+      {
+        begin: '`',
+        end: '`'
+      }
+    ],
+    illegal: /\n/,
+    contains: [
+      METACHARS,
+      CONSTANTS,
+      DEFINES,
+      VARIABLES,
+      LANGUAGES
+    ]
+  };
+
+  return {
+    name: 'NSIS',
+    case_insensitive: false,
+    keywords: {
+      keyword:
+      'Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileWriteUTF16LE FileSeek FileWrite FileWriteByte FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetKnownFolderPath GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfRtlLanguage IfShellVarContextAll IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadAndSetImage LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestLongPathAware ManifestMaxVersionTested ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PEAddResource PEDllCharacteristics PERemoveResource PESubsysVer Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle',
+      literal:
+      'admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib'
+    },
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.COMMENT(
+        ';',
+        '$',
+        {
+          relevance: 0
+        }
+      ),
+      {
+        className: 'function',
+        beginKeywords: 'Function PageEx Section SectionGroup',
+        end: '$'
+      },
+      STRING,
+      COMPILER,
+      DEFINES,
+      VARIABLES,
+      LANGUAGES,
+      PARAMETERS,
+      PLUGINS,
+      hljs.NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = nsis;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/objectivec.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/objectivec.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Objective-C
+Author: Valerii Hiora 
+Contributors: Angel G. Olloqui , Matt Diephouse , Andrew Farmer , Minh Nguyễn 
+Website: https://developer.apple.com/documentation/objectivec
+Category: common
+*/
+
+function objectivec(hljs) {
+  const API_CLASS = {
+    className: 'built_in',
+    begin: '\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+'
+  };
+  const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/;
+  const OBJC_KEYWORDS = {
+    $pattern: IDENTIFIER_RE,
+    keyword:
+      'int float while char export sizeof typedef const struct for union ' +
+      'unsigned long volatile static bool mutable if do return goto void ' +
+      'enum else break extern asm case short default double register explicit ' +
+      'signed typename this switch continue wchar_t inline readonly assign ' +
+      'readwrite self @synchronized id typeof ' +
+      'nonatomic super unichar IBOutlet IBAction strong weak copy ' +
+      'in out inout bycopy byref oneway __strong __weak __block __autoreleasing ' +
+      '@private @protected @public @try @property @end @throw @catch @finally ' +
+      '@autoreleasepool @synthesize @dynamic @selector @optional @required ' +
+      '@encode @package @import @defs @compatibility_alias ' +
+      '__bridge __bridge_transfer __bridge_retained __bridge_retain ' +
+      '__covariant __contravariant __kindof ' +
+      '_Nonnull _Nullable _Null_unspecified ' +
+      '__FUNCTION__ __PRETTY_FUNCTION__ __attribute__ ' +
+      'getter setter retain unsafe_unretained ' +
+      'nonnull nullable null_unspecified null_resettable class instancetype ' +
+      'NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER ' +
+      'NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED ' +
+      'NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE ' +
+      'NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END ' +
+      'NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW ' +
+      'NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',
+    literal:
+      'false true FALSE TRUE nil YES NO NULL',
+    built_in:
+      'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'
+  };
+  const CLASS_KEYWORDS = {
+    $pattern: IDENTIFIER_RE,
+    keyword: '@interface @class @protocol @implementation'
+  };
+  return {
+    name: 'Objective-C',
+    aliases: [
+      'mm',
+      'objc',
+      'obj-c',
+      'obj-c++',
+      'objective-c++'
+    ],
+    keywords: OBJC_KEYWORDS,
+    illegal: '/,
+            end: /$/,
+            illegal: '\\n'
+          },
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE
+        ]
+      },
+      {
+        className: 'class',
+        begin: '(' + CLASS_KEYWORDS.keyword.split(' ').join('|') + ')\\b',
+        end: /(\{|$)/,
+        excludeEnd: true,
+        keywords: CLASS_KEYWORDS,
+        contains: [ hljs.UNDERSCORE_TITLE_MODE ]
+      },
+      {
+        begin: '\\.' + hljs.UNDERSCORE_IDENT_RE,
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = objectivec;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/ocaml.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/ocaml.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: OCaml
+Author: Mehdi Dogguy 
+Contributors: Nicolas Braud-Santoni , Mickael Delahaye 
+Description: OCaml language definition.
+Website: https://ocaml.org
+Category: functional
+*/
+
+function ocaml(hljs) {
+  /* missing support for heredoc-like string (OCaml 4.0.2+) */
+  return {
+    name: 'OCaml',
+    aliases: ['ml'],
+    keywords: {
+      $pattern: '[a-z_]\\w*!?',
+      keyword:
+        'and as assert asr begin class constraint do done downto else end ' +
+        'exception external for fun function functor if in include ' +
+        'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' +
+        'mod module mutable new object of open! open or private rec sig struct ' +
+        'then to try type val! val virtual when while with ' +
+        /* camlp4 */
+        'parser value',
+      built_in:
+        /* built-in types */
+        'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' +
+        /* (some) types in Pervasives */
+        'in_channel out_channel ref',
+      literal:
+        'true false'
+    },
+    illegal: /\/\/|>>/,
+    contains: [
+      {
+        className: 'literal',
+        begin: '\\[(\\|\\|)?\\]|\\(\\)',
+        relevance: 0
+      },
+      hljs.COMMENT(
+        '\\(\\*',
+        '\\*\\)',
+        {
+          contains: ['self']
+        }
+      ),
+      { /* type variable */
+        className: 'symbol',
+        begin: '\'[A-Za-z_](?!\')[\\w\']*'
+        /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */
+      },
+      { /* polymorphic variant */
+        className: 'type',
+        begin: '`[A-Z][\\w\']*'
+      },
+      { /* module or constructor */
+        className: 'type',
+        begin: '\\b[A-Z][\\w\']*',
+        relevance: 0
+      },
+      { /* don't color identifiers, but safely catch all identifiers with '*/
+        begin: '[a-z_]\\w*\'[\\w\']*', relevance: 0
+      },
+      hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),
+      {
+        className: 'number',
+        begin:
+          '\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +
+          '0[oO][0-7_]+[Lln]?|' +
+          '0[bB][01_]+[Lln]?|' +
+          '[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',
+        relevance: 0
+      },
+      {
+        begin: /->/ // relevance booster
+      }
+    ]
+  }
+}
+
+module.exports = ocaml;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/openscad.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/openscad.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/*
+Language: OpenSCAD
+Author: Dan Panzarella 
+Description: OpenSCAD is a language for the 3D CAD modeling software of the same name.
+Website: https://www.openscad.org
+Category: scientific
+*/
+
+function openscad(hljs) {
+  const SPECIAL_VARS = {
+    className: 'keyword',
+    begin: '\\$(f[asn]|t|vp[rtd]|children)'
+  };
+  const LITERALS = {
+    className: 'literal',
+    begin: 'false|true|PI|undef'
+  };
+  const NUMBERS = {
+    className: 'number',
+    begin: '\\b\\d+(\\.\\d+)?(e-?\\d+)?', // adds 1e5, 1e-10
+    relevance: 0
+  };
+  const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {
+    illegal: null
+  });
+  const PREPRO = {
+    className: 'meta',
+    keywords: {
+      'meta-keyword': 'include use'
+    },
+    begin: 'include|use <',
+    end: '>'
+  };
+  const PARAMS = {
+    className: 'params',
+    begin: '\\(',
+    end: '\\)',
+    contains: [
+      'self',
+      NUMBERS,
+      STRING,
+      SPECIAL_VARS,
+      LITERALS
+    ]
+  };
+  const MODIFIERS = {
+    begin: '[*!#%]',
+    relevance: 0
+  };
+  const FUNCTIONS = {
+    className: 'function',
+    beginKeywords: 'module function',
+    end: /=|\{/,
+    contains: [
+      PARAMS,
+      hljs.UNDERSCORE_TITLE_MODE
+    ]
+  };
+
+  return {
+    name: 'OpenSCAD',
+    aliases: [ 'scad' ],
+    keywords: {
+      keyword: 'function module include use for intersection_for if else \\%',
+      literal: 'false true PI undef',
+      built_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      NUMBERS,
+      PREPRO,
+      STRING,
+      SPECIAL_VARS,
+      MODIFIERS,
+      FUNCTIONS
+    ]
+  };
+}
+
+module.exports = openscad;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/oxygene.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/oxygene.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Oxygene
+Author: Carlo Kok 
+Description: Oxygene is built on the foundation of Object Pascal, revamped and extended to be a modern language for the twenty-first century.
+Website: https://www.elementscompiler.com/elements/default.aspx
+*/
+
+function oxygene(hljs) {
+  const OXYGENE_KEYWORDS = {
+    $pattern: /\.?\w+/,
+    keyword:
+      'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue ' +
+      'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false ' +
+      'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited ' +
+      'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of ' +
+      'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly ' +
+      'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple ' +
+      'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal ' +
+      'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained'
+  };
+  const CURLY_COMMENT = hljs.COMMENT(
+    /\{/,
+    /\}/,
+    {
+      relevance: 0
+    }
+  );
+  const PAREN_COMMENT = hljs.COMMENT(
+    '\\(\\*',
+    '\\*\\)',
+    {
+      relevance: 10
+    }
+  );
+  const STRING = {
+    className: 'string',
+    begin: '\'',
+    end: '\'',
+    contains: [
+      {
+        begin: '\'\''
+      }
+    ]
+  };
+  const CHAR_STRING = {
+    className: 'string',
+    begin: '(#\\d+)+'
+  };
+  const FUNCTION = {
+    className: 'function',
+    beginKeywords: 'function constructor destructor procedure method',
+    end: '[:;]',
+    keywords: 'function constructor|10 destructor|10 procedure|10 method|10',
+    contains: [
+      hljs.TITLE_MODE,
+      {
+        className: 'params',
+        begin: '\\(',
+        end: '\\)',
+        keywords: OXYGENE_KEYWORDS,
+        contains: [
+          STRING,
+          CHAR_STRING
+        ]
+      },
+      CURLY_COMMENT,
+      PAREN_COMMENT
+    ]
+  };
+  return {
+    name: 'Oxygene',
+    case_insensitive: true,
+    keywords: OXYGENE_KEYWORDS,
+    illegal: '("|\\$[G-Zg-z]|\\/\\*||->)',
+    contains: [
+      CURLY_COMMENT,
+      PAREN_COMMENT,
+      hljs.C_LINE_COMMENT_MODE,
+      STRING,
+      CHAR_STRING,
+      hljs.NUMBER_MODE,
+      FUNCTION,
+      {
+        className: 'class',
+        begin: '=\\bclass\\b',
+        end: 'end;',
+        keywords: OXYGENE_KEYWORDS,
+        contains: [
+          STRING,
+          CHAR_STRING,
+          CURLY_COMMENT,
+          PAREN_COMMENT,
+          hljs.C_LINE_COMMENT_MODE,
+          FUNCTION
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = oxygene;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/parser3.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/parser3.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Parser3
+Requires: xml.js
+Author: Oleg Volchkov 
+Website: https://www.parser.ru/en/
+Category: template
+*/
+
+function parser3(hljs) {
+  const CURLY_SUBCOMMENT = hljs.COMMENT(
+    /\{/,
+    /\}/,
+    {
+      contains: [ 'self' ]
+    }
+  );
+  return {
+    name: 'Parser3',
+    subLanguage: 'xml',
+    relevance: 0,
+    contains: [
+      hljs.COMMENT('^#', '$'),
+      hljs.COMMENT(
+        /\^rem\{/,
+        /\}/,
+        {
+          relevance: 10,
+          contains: [ CURLY_SUBCOMMENT ]
+        }
+      ),
+      {
+        className: 'meta',
+        begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',
+        relevance: 10
+      },
+      {
+        className: 'title',
+        begin: '@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$'
+      },
+      {
+        className: 'variable',
+        begin: /\$\{?[\w\-.:]+\}?/
+      },
+      {
+        className: 'keyword',
+        begin: /\^[\w\-.:]+/
+      },
+      {
+        className: 'number',
+        begin: '\\^#[0-9a-fA-F]+'
+      },
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = parser3;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/perl.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/perl.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: Perl
+Author: Peter Leonov 
+Website: https://www.perl.org
+Category: common
+*/
+
+/** @type LanguageFn */
+function perl(hljs) {
+  const KEYWORDS = [
+    'abs',
+    'accept',
+    'alarm',
+    'and',
+    'atan2',
+    'bind',
+    'binmode',
+    'bless',
+    'break',
+    'caller',
+    'chdir',
+    'chmod',
+    'chomp',
+    'chop',
+    'chown',
+    'chr',
+    'chroot',
+    'close',
+    'closedir',
+    'connect',
+    'continue',
+    'cos',
+    'crypt',
+    'dbmclose',
+    'dbmopen',
+    'defined',
+    'delete',
+    'die',
+    'do',
+    'dump',
+    'each',
+    'else',
+    'elsif',
+    'endgrent',
+    'endhostent',
+    'endnetent',
+    'endprotoent',
+    'endpwent',
+    'endservent',
+    'eof',
+    'eval',
+    'exec',
+    'exists',
+    'exit',
+    'exp',
+    'fcntl',
+    'fileno',
+    'flock',
+    'for',
+    'foreach',
+    'fork',
+    'format',
+    'formline',
+    'getc',
+    'getgrent',
+    'getgrgid',
+    'getgrnam',
+    'gethostbyaddr',
+    'gethostbyname',
+    'gethostent',
+    'getlogin',
+    'getnetbyaddr',
+    'getnetbyname',
+    'getnetent',
+    'getpeername',
+    'getpgrp',
+    'getpriority',
+    'getprotobyname',
+    'getprotobynumber',
+    'getprotoent',
+    'getpwent',
+    'getpwnam',
+    'getpwuid',
+    'getservbyname',
+    'getservbyport',
+    'getservent',
+    'getsockname',
+    'getsockopt',
+    'given',
+    'glob',
+    'gmtime',
+    'goto',
+    'grep',
+    'gt',
+    'hex',
+    'if',
+    'index',
+    'int',
+    'ioctl',
+    'join',
+    'keys',
+    'kill',
+    'last',
+    'lc',
+    'lcfirst',
+    'length',
+    'link',
+    'listen',
+    'local',
+    'localtime',
+    'log',
+    'lstat',
+    'lt',
+    'ma',
+    'map',
+    'mkdir',
+    'msgctl',
+    'msgget',
+    'msgrcv',
+    'msgsnd',
+    'my',
+    'ne',
+    'next',
+    'no',
+    'not',
+    'oct',
+    'open',
+    'opendir',
+    'or',
+    'ord',
+    'our',
+    'pack',
+    'package',
+    'pipe',
+    'pop',
+    'pos',
+    'print',
+    'printf',
+    'prototype',
+    'push',
+    'q|0',
+    'qq',
+    'quotemeta',
+    'qw',
+    'qx',
+    'rand',
+    'read',
+    'readdir',
+    'readline',
+    'readlink',
+    'readpipe',
+    'recv',
+    'redo',
+    'ref',
+    'rename',
+    'require',
+    'reset',
+    'return',
+    'reverse',
+    'rewinddir',
+    'rindex',
+    'rmdir',
+    'say',
+    'scalar',
+    'seek',
+    'seekdir',
+    'select',
+    'semctl',
+    'semget',
+    'semop',
+    'send',
+    'setgrent',
+    'sethostent',
+    'setnetent',
+    'setpgrp',
+    'setpriority',
+    'setprotoent',
+    'setpwent',
+    'setservent',
+    'setsockopt',
+    'shift',
+    'shmctl',
+    'shmget',
+    'shmread',
+    'shmwrite',
+    'shutdown',
+    'sin',
+    'sleep',
+    'socket',
+    'socketpair',
+    'sort',
+    'splice',
+    'split',
+    'sprintf',
+    'sqrt',
+    'srand',
+    'stat',
+    'state',
+    'study',
+    'sub',
+    'substr',
+    'symlink',
+    'syscall',
+    'sysopen',
+    'sysread',
+    'sysseek',
+    'system',
+    'syswrite',
+    'tell',
+    'telldir',
+    'tie',
+    'tied',
+    'time',
+    'times',
+    'tr',
+    'truncate',
+    'uc',
+    'ucfirst',
+    'umask',
+    'undef',
+    'unless',
+    'unlink',
+    'unpack',
+    'unshift',
+    'untie',
+    'until',
+    'use',
+    'utime',
+    'values',
+    'vec',
+    'wait',
+    'waitpid',
+    'wantarray',
+    'warn',
+    'when',
+    'while',
+    'write',
+    'x|0',
+    'xor',
+    'y|0'
+  ];
+
+  // https://perldoc.perl.org/perlre#Modifiers
+  const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12
+  const PERL_KEYWORDS = {
+    $pattern: /[\w.]+/,
+    keyword: KEYWORDS.join(" ")
+  };
+  const SUBST = {
+    className: 'subst',
+    begin: '[$@]\\{',
+    end: '\\}',
+    keywords: PERL_KEYWORDS
+  };
+  const METHOD = {
+    begin: /->\{/,
+    end: /\}/
+    // contains defined later
+  };
+  const VAR = {
+    variants: [
+      {
+        begin: /\$\d/
+      },
+      {
+        begin: concat(
+          /[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,
+          // negative look-ahead tries to avoid matching patterns that are not
+          // Perl at all like $ident$, @ident@, etc.
+          `(?![A-Za-z])(?![@$%])`
+        )
+      },
+      {
+        begin: /[$%@][^\s\w{]/,
+        relevance: 0
+      }
+    ]
+  };
+  const STRING_CONTAINS = [
+    hljs.BACKSLASH_ESCAPE,
+    SUBST,
+    VAR
+  ];
+  const REGEX_DELIMS = [
+    /!/,
+    /\//,
+    /\|/,
+    /\?/,
+    /'/,
+    /"/, // valid but infrequent and weird
+    /#/ // valid but infrequent and weird
+  ];
+  /**
+   * @param {string|RegExp} prefix
+   * @param {string|RegExp} open
+   * @param {string|RegExp} close
+   */
+  const PAIRED_DOUBLE_RE = (prefix, open, close = '\\1') => {
+    const middle = (close === '\\1')
+      ? close
+      : concat(close, open);
+    return concat(
+      concat("(?:", prefix, ")"),
+      open,
+      /(?:\\.|[^\\\/])*?/,
+      middle,
+      /(?:\\.|[^\\\/])*?/,
+      close,
+      REGEX_MODIFIERS
+    );
+  };
+  /**
+   * @param {string|RegExp} prefix
+   * @param {string|RegExp} open
+   * @param {string|RegExp} close
+   */
+  const PAIRED_RE = (prefix, open, close) => {
+    return concat(
+      concat("(?:", prefix, ")"),
+      open,
+      /(?:\\.|[^\\\/])*?/,
+      close,
+      REGEX_MODIFIERS
+    );
+  };
+  const PERL_DEFAULT_CONTAINS = [
+    VAR,
+    hljs.HASH_COMMENT_MODE,
+    hljs.COMMENT(
+      /^=\w/,
+      /=cut/,
+      {
+        endsWithParent: true
+      }
+    ),
+    METHOD,
+    {
+      className: 'string',
+      contains: STRING_CONTAINS,
+      variants: [
+        {
+          begin: 'q[qwxr]?\\s*\\(',
+          end: '\\)',
+          relevance: 5
+        },
+        {
+          begin: 'q[qwxr]?\\s*\\[',
+          end: '\\]',
+          relevance: 5
+        },
+        {
+          begin: 'q[qwxr]?\\s*\\{',
+          end: '\\}',
+          relevance: 5
+        },
+        {
+          begin: 'q[qwxr]?\\s*\\|',
+          end: '\\|',
+          relevance: 5
+        },
+        {
+          begin: 'q[qwxr]?\\s*<',
+          end: '>',
+          relevance: 5
+        },
+        {
+          begin: 'qw\\s+q',
+          end: 'q',
+          relevance: 5
+        },
+        {
+          begin: '\'',
+          end: '\'',
+          contains: [ hljs.BACKSLASH_ESCAPE ]
+        },
+        {
+          begin: '"',
+          end: '"'
+        },
+        {
+          begin: '`',
+          end: '`',
+          contains: [ hljs.BACKSLASH_ESCAPE ]
+        },
+        {
+          begin: /\{\w+\}/,
+          relevance: 0
+        },
+        {
+          begin: '-?\\w+\\s*=>',
+          relevance: 0
+        }
+      ]
+    },
+    {
+      className: 'number',
+      begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b',
+      relevance: 0
+    },
+    { // regexp container
+      begin: '(\\/\\/|' + hljs.RE_STARTERS_RE + '|\\b(split|return|print|reverse|grep)\\b)\\s*',
+      keywords: 'split return print reverse grep',
+      relevance: 0,
+      contains: [
+        hljs.HASH_COMMENT_MODE,
+        {
+          className: 'regexp',
+          variants: [
+            // allow matching common delimiters
+            { begin: PAIRED_DOUBLE_RE("s|tr|y", either(...REGEX_DELIMS)) },
+            // and then paired delmis
+            { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\(", "\\)") },
+            { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\[", "\\]") },
+            { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\{", "\\}") }
+          ],
+          relevance: 2
+        },
+        {
+          className: 'regexp',
+          variants: [
+            {
+              // could be a comment in many languages so do not count
+              // as relevant
+              begin: /(m|qr)\/\//,
+              relevance: 0
+            },
+            // prefix is optional with /regex/
+            { begin: PAIRED_RE("(?:m|qr)?", /\//, /\//)},
+            // allow matching common delimiters
+            { begin: PAIRED_RE("m|qr", either(...REGEX_DELIMS), /\1/)},
+            // allow common paired delmins
+            { begin: PAIRED_RE("m|qr", /\(/, /\)/)},
+            { begin: PAIRED_RE("m|qr", /\[/, /\]/)},
+            { begin: PAIRED_RE("m|qr", /\{/, /\}/)}
+          ]
+        }
+      ]
+    },
+    {
+      className: 'function',
+      beginKeywords: 'sub',
+      end: '(\\s*\\(.*?\\))?[;{]',
+      excludeEnd: true,
+      relevance: 5,
+      contains: [ hljs.TITLE_MODE ]
+    },
+    {
+      begin: '-\\w\\b',
+      relevance: 0
+    },
+    {
+      begin: "^__DATA__$",
+      end: "^__END__$",
+      subLanguage: 'mojolicious',
+      contains: [
+        {
+          begin: "^@@.*",
+          end: "$",
+          className: "comment"
+        }
+      ]
+    }
+  ];
+  SUBST.contains = PERL_DEFAULT_CONTAINS;
+  METHOD.contains = PERL_DEFAULT_CONTAINS;
+
+  return {
+    name: 'Perl',
+    aliases: [
+      'pl',
+      'pm'
+    ],
+    keywords: PERL_KEYWORDS,
+    contains: PERL_DEFAULT_CONTAINS
+  };
+}
+
+module.exports = perl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/pf.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/pf.js ***!
+  \*******************************************************/
+/***/ ((module) => {
+
+/*
+Language: Packet Filter config
+Description: pf.conf — packet filter configuration file (OpenBSD)
+Author: Peter Piwowarski 
+Website: http://man.openbsd.org/pf.conf
+Category: config
+*/
+
+function pf(hljs) {
+  const MACRO = {
+    className: 'variable',
+    begin: /\$[\w\d#@][\w\d_]*/
+  };
+  const TABLE = {
+    className: 'variable',
+    begin: /<(?!\/)/,
+    end: />/
+  };
+
+  return {
+    name: 'Packet Filter config',
+    aliases: [ 'pf.conf' ],
+    keywords: {
+      $pattern: /[a-z0-9_<>-]+/,
+      built_in: /* block match pass are "actions" in pf.conf(5), the rest are
+                 * lexically similar top-level commands.
+                 */
+        'block match pass load anchor|5 antispoof|10 set table',
+      keyword:
+        'in out log quick on rdomain inet inet6 proto from port os to route ' +
+        'allow-opts divert-packet divert-reply divert-to flags group icmp-type ' +
+        'icmp6-type label once probability recieved-on rtable prio queue ' +
+        'tos tag tagged user keep fragment for os drop ' +
+        'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin ' +
+        'source-hash static-port ' +
+        'dup-to reply-to route-to ' +
+        'parent bandwidth default min max qlimit ' +
+        'block-policy debug fingerprints hostid limit loginterface optimization ' +
+        'reassemble ruleset-optimization basic none profile skip state-defaults ' +
+        'state-policy timeout ' +
+        'const counters persist ' +
+        'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy ' +
+        'source-track global rule max-src-nodes max-src-states max-src-conn ' +
+        'max-src-conn-rate overload flush ' +
+        'scrub|5 max-mss min-ttl no-df|10 random-id',
+      literal:
+        'all any no-route self urpf-failed egress|5 unknown'
+    },
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      hljs.NUMBER_MODE,
+      hljs.QUOTE_STRING_MODE,
+      MACRO,
+      TABLE
+    ]
+  };
+}
+
+module.exports = pf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/pgsql.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/pgsql.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: PostgreSQL and PL/pgSQL
+Author: Egor Rogov (e.rogov@postgrespro.ru)
+Website: https://www.postgresql.org/docs/11/sql.html
+Description:
+    This language incorporates both PostgreSQL SQL dialect and PL/pgSQL language.
+    It is based on PostgreSQL version 11. Some notes:
+    - Text in double-dollar-strings is _always_ interpreted as some programming code. Text
+      in ordinary quotes is _never_ interpreted that way and highlighted just as a string.
+    - There are quite a bit "special cases". That's because many keywords are not strictly
+      they are keywords in some contexts and ordinary identifiers in others. Only some
+      of such cases are handled; you still can get some of your identifiers highlighted
+      wrong way.
+    - Function names deliberately are not highlighted. There is no way to tell function
+      call from other constructs, hence we can't highlight _all_ function names. And
+      some names highlighted while others not looks ugly.
+*/
+
+function pgsql(hljs) {
+  const COMMENT_MODE = hljs.COMMENT('--', '$');
+  const UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*';
+  const DOLLAR_STRING = '\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$';
+  const LABEL = '<<\\s*' + UNQUOTED_IDENT + '\\s*>>';
+
+  const SQL_KW =
+    // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html
+    // https://www.postgresql.org/docs/11/static/sql-commands.html
+    // SQL commands (starting words)
+    'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' +
+    'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' +
+    'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' +
+    'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' +
+    // SQL commands (others)
+    'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' +
+    'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' +
+    'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' +
+    'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' +
+    'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' +
+    'INDEX PROCEDURE ASSERTION ' +
+    // additional reserved key words
+    'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' +
+    'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' +
+    'DEFERRABLE RANGE ' +
+    'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' +
+    'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' +
+    'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' +
+    'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' +
+    'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' +
+    // some of non-reserved (which are used in clauses or as PL/pgSQL keyword)
+    'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' +
+    'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' +
+    'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' +
+    'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' +
+    'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' +
+    'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' +
+    'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' +
+    'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' +
+    'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' +
+    'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' +
+    'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' +
+    // some parameters of VACUUM/ANALYZE/EXPLAIN
+    'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' +
+    //
+    'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' +
+    'OF NOTHING NONE EXCLUDE ATTRIBUTE ' +
+    // from GRANT (not keywords actually)
+    'USAGE ROUTINES ' +
+    // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc)
+    'TRUE FALSE NAN INFINITY ';
+
+  const ROLE_ATTRS = // only those not in keywrods already
+    'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' +
+    'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ';
+
+  const PLPGSQL_KW =
+    'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' +
+    'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' +
+    'OPEN ';
+
+  const TYPES =
+    // https://www.postgresql.org/docs/11/static/datatype.html
+    'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' +
+    'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' +
+    'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' +
+    'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' +
+    'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' +
+    'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' +
+    // pseudotypes
+    'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' +
+    'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' +
+    // spec. type
+    'NAME ' +
+    // OID-types
+    'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' +
+    'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// +
+
+  const TYPES_RE =
+    TYPES.trim()
+      .split(' ')
+      .map(function(val) { return val.split('|')[0]; })
+      .join('|');
+
+  const SQL_BI =
+    'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' +
+    'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ';
+
+  const PLPGSQL_BI =
+    'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' +
+    'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' +
+    // get diagnostics
+    'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' +
+    'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' +
+    'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ';
+
+  const PLPGSQL_EXCEPTIONS =
+    // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html
+    'SQLSTATE SQLERRM|10 ' +
+    'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' +
+    'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' +
+    'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' +
+    'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' +
+    'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' +
+    'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' +
+    'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' +
+    'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' +
+    'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' +
+    'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' +
+    'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' +
+    'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' +
+    'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' +
+    'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' +
+    'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' +
+    'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' +
+    'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' +
+    'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' +
+    'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' +
+    'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' +
+    'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' +
+    'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' +
+    'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' +
+    'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' +
+    'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' +
+    'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' +
+    'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' +
+    'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' +
+    'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' +
+    'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' +
+    'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' +
+    'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' +
+    'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' +
+    'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' +
+    'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' +
+    'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' +
+    'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' +
+    'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' +
+    'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' +
+    'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' +
+    'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' +
+    'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' +
+    'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' +
+    'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' +
+    'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' +
+    'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' +
+    'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' +
+    'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' +
+    'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' +
+    'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' +
+    'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' +
+    'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' +
+    'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' +
+    'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' +
+    'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' +
+    'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' +
+    'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' +
+    'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' +
+    'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' +
+    'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' +
+    'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' +
+    'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' +
+    'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' +
+    'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' +
+    'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' +
+    'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' +
+    'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' +
+    'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' +
+    'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' +
+    'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' +
+    'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' +
+    'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' +
+    'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' +
+    'INDEX_CORRUPTED ';
+
+  const FUNCTIONS =
+    // https://www.postgresql.org/docs/11/static/functions-aggregate.html
+    'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' +
+    'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' +
+    'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' +
+    'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' +
+    'PERCENTILE_CONT PERCENTILE_DISC ' +
+    // https://www.postgresql.org/docs/11/static/functions-window.html
+    'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' +
+    // https://www.postgresql.org/docs/11/static/functions-comparison.html
+    'NUM_NONNULLS NUM_NULLS ' +
+    // https://www.postgresql.org/docs/11/static/functions-math.html
+    'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' +
+    'TRUNC WIDTH_BUCKET ' +
+    'RANDOM SETSEED ' +
+    'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' +
+    // https://www.postgresql.org/docs/11/static/functions-string.html
+    'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' +
+    'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP ' +
+    'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' +
+    'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' +
+    'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' +
+    'TO_ASCII TO_HEX TRANSLATE ' +
+    // https://www.postgresql.org/docs/11/static/functions-binarystring.html
+    'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' +
+    // https://www.postgresql.org/docs/11/static/functions-formatting.html
+    'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' +
+    // https://www.postgresql.org/docs/11/static/functions-datetime.html
+    'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' +
+    'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' +
+    'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' +
+    // https://www.postgresql.org/docs/11/static/functions-enum.html
+    'ENUM_FIRST ENUM_LAST ENUM_RANGE ' +
+    // https://www.postgresql.org/docs/11/static/functions-geometry.html
+    'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' +
+    'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' +
+    // https://www.postgresql.org/docs/11/static/functions-net.html
+    'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY ' +
+    'INET_MERGE MACADDR8_SET7BIT ' +
+    // https://www.postgresql.org/docs/11/static/functions-textsearch.html
+    'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' +
+    'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' +
+    'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' +
+    'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' +
+    // https://www.postgresql.org/docs/11/static/functions-xml.html
+    'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' +
+    'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' +
+    'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' +
+    'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' +
+    'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' +
+    'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' +
+    'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' +
+    'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' +
+    'XMLATTRIBUTES ' +
+    // https://www.postgresql.org/docs/11/static/functions-json.html
+    'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' +
+    'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' +
+    'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' +
+    'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' +
+    'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' +
+    'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' +
+    'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' +
+    // https://www.postgresql.org/docs/11/static/functions-sequence.html
+    'CURRVAL LASTVAL NEXTVAL SETVAL ' +
+    // https://www.postgresql.org/docs/11/static/functions-conditional.html
+    'COALESCE NULLIF GREATEST LEAST ' +
+    // https://www.postgresql.org/docs/11/static/functions-array.html
+    'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' +
+    'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' +
+    'STRING_TO_ARRAY UNNEST ' +
+    // https://www.postgresql.org/docs/11/static/functions-range.html
+    'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' +
+    // https://www.postgresql.org/docs/11/static/functions-srf.html
+    'GENERATE_SERIES GENERATE_SUBSCRIPTS ' +
+    // https://www.postgresql.org/docs/11/static/functions-info.html
+    'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' +
+    'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' +
+    'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' +
+    'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' +
+    'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' +
+    'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' +
+    // https://www.postgresql.org/docs/11/static/functions-admin.html
+    'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' +
+    'GIN_CLEAN_PENDING_LIST ' +
+    // https://www.postgresql.org/docs/11/static/functions-trigger.html
+    'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' +
+    // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html
+    'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' +
+    //
+    'GROUPING CAST ';
+
+  const FUNCTIONS_RE =
+      FUNCTIONS.trim()
+        .split(' ')
+        .map(function(val) { return val.split('|')[0]; })
+        .join('|');
+
+  return {
+    name: 'PostgreSQL',
+    aliases: [
+      'postgres',
+      'postgresql'
+    ],
+    case_insensitive: true,
+    keywords: {
+      keyword:
+            SQL_KW + PLPGSQL_KW + ROLE_ATTRS,
+      built_in:
+            SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS
+    },
+    // Forbid some cunstructs from other languages to improve autodetect. In fact
+    // "[a-z]:" is legal (as part of array slice), but improbabal.
+    illegal: /:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/,
+    contains: [
+      // special handling of some words, which are reserved only in some contexts
+      {
+        className: 'keyword',
+        variants: [
+          {
+            begin: /\bTEXT\s*SEARCH\b/
+          },
+          {
+            begin: /\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/
+          },
+          {
+            begin: /\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/
+          },
+          {
+            begin: /\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/
+          },
+          {
+            begin: /\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/
+          },
+          {
+            begin: /\bNULLS\s+(FIRST|LAST)\b/
+          },
+          {
+            begin: /\bEVENT\s+TRIGGER\b/
+          },
+          {
+            begin: /\b(MAPPING|OR)\s+REPLACE\b/
+          },
+          {
+            begin: /\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/
+          },
+          {
+            begin: /\b(SHARE|EXCLUSIVE)\s+MODE\b/
+          },
+          {
+            begin: /\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/
+          },
+          {
+            begin: /\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/
+          },
+          {
+            begin: /\bPRESERVE\s+ROWS\b/
+          },
+          {
+            begin: /\bDISCARD\s+PLANS\b/
+          },
+          {
+            begin: /\bREFERENCING\s+(OLD|NEW)\b/
+          },
+          {
+            begin: /\bSKIP\s+LOCKED\b/
+          },
+          {
+            begin: /\bGROUPING\s+SETS\b/
+          },
+          {
+            begin: /\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/
+          },
+          {
+            begin: /\b(WITH|WITHOUT)\s+HOLD\b/
+          },
+          {
+            begin: /\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/
+          },
+          {
+            begin: /\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/
+          },
+          {
+            begin: /\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/
+          },
+          {
+            begin: /\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/
+          },
+          {
+            begin: /\bIS\s+(NOT\s+)?UNKNOWN\b/
+          },
+          {
+            begin: /\bSECURITY\s+LABEL\b/
+          },
+          {
+            begin: /\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/
+          },
+          {
+            begin: /\bWITH\s+(NO\s+)?DATA\b/
+          },
+          {
+            begin: /\b(FOREIGN|SET)\s+DATA\b/
+          },
+          {
+            begin: /\bSET\s+(CATALOG|CONSTRAINTS)\b/
+          },
+          {
+            begin: /\b(WITH|FOR)\s+ORDINALITY\b/
+          },
+          {
+            begin: /\bIS\s+(NOT\s+)?DOCUMENT\b/
+          },
+          {
+            begin: /\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/
+          },
+          {
+            begin: /\b(STRIP|PRESERVE)\s+WHITESPACE\b/
+          },
+          {
+            begin: /\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/
+          },
+          {
+            begin: /\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/
+          },
+          {
+            begin: /\bAT\s+TIME\s+ZONE\b/
+          },
+          {
+            begin: /\bGRANTED\s+BY\b/
+          },
+          {
+            begin: /\bRETURN\s+(QUERY|NEXT)\b/
+          },
+          {
+            begin: /\b(ATTACH|DETACH)\s+PARTITION\b/
+          },
+          {
+            begin: /\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/
+          },
+          {
+            begin: /\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/
+          },
+          {
+            begin: /\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/
+          }
+        ]
+      },
+      // functions named as keywords, followed by '('
+      {
+        begin: /\b(FORMAT|FAMILY|VERSION)\s*\(/
+        // keywords: { built_in: 'FORMAT FAMILY VERSION' }
+      },
+      // INCLUDE ( ... ) in index_parameters in CREATE TABLE
+      {
+        begin: /\bINCLUDE\s*\(/,
+        keywords: 'INCLUDE'
+      },
+      // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory)
+      {
+        begin: /\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/
+      },
+      // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE
+      // and in PL/pgSQL RAISE ... USING
+      {
+        begin: /\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/
+      },
+      // PG_smth; HAS_some_PRIVILEGE
+      {
+        // className: 'built_in',
+        begin: /\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,
+        relevance: 10
+      },
+      // extract
+      {
+        begin: /\bEXTRACT\s*\(/,
+        end: /\bFROM\b/,
+        returnEnd: true,
+        keywords: {
+          // built_in: 'EXTRACT',
+          type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' +
+                        'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' +
+                        'TIMEZONE_MINUTE WEEK YEAR'
+        }
+      },
+      // xmlelement, xmlpi - special NAME
+      {
+        begin: /\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,
+        keywords: {
+          // built_in: 'XMLELEMENT XMLPI',
+          keyword: 'NAME'
+        }
+      },
+      // xmlparse, xmlserialize
+      {
+        begin: /\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,
+        keywords: {
+          // built_in: 'XMLPARSE XMLSERIALIZE',
+          keyword: 'DOCUMENT CONTENT'
+        }
+      },
+      // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and
+      // nearest following numeric constant. Without with trick we find a lot of "keywords"
+      // in 'avrasm' autodetection test...
+      {
+        beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE',
+        end: hljs.C_NUMBER_RE,
+        returnEnd: true,
+        keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE'
+      },
+      // WITH|WITHOUT TIME ZONE as part of datatype
+      {
+        className: 'type',
+        begin: /\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/
+      },
+      // INTERVAL optional fields
+      {
+        className: 'type',
+        begin: /\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/
+      },
+      // Pseudo-types which allowed only as return type
+      {
+        begin: /\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,
+        keywords: {
+          keyword: 'RETURNS',
+          type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER'
+        }
+      },
+      // Known functions - only when followed by '('
+      {
+        begin: '\\b(' + FUNCTIONS_RE + ')\\s*\\('
+        // keywords: { built_in: FUNCTIONS }
+      },
+      // Types
+      {
+        begin: '\\.(' + TYPES_RE + ')\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid'
+      },
+      {
+        begin: '\\b(' + TYPES_RE + ')\\s+PATH\\b', // in XMLTABLE
+        keywords: {
+          keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE...
+          type: TYPES.replace('PATH ', '')
+        }
+      },
+      {
+        className: 'type',
+        begin: '\\b(' + TYPES_RE + ')\\b'
+      },
+      // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS
+      {
+        className: 'string',
+        begin: '\'',
+        end: '\'',
+        contains: [
+          {
+            begin: '\'\''
+          }
+        ]
+      },
+      {
+        className: 'string',
+        begin: '(e|E|u&|U&)\'',
+        end: '\'',
+        contains: [
+          {
+            begin: '\\\\.'
+          }
+        ],
+        relevance: 10
+      },
+      hljs.END_SAME_AS_BEGIN({
+        begin: DOLLAR_STRING,
+        end: DOLLAR_STRING,
+        contains: [
+          {
+            // actually we want them all except SQL; listed are those with known implementations
+            // and XML + JSON just in case
+            subLanguage: [
+              'pgsql',
+              'perl',
+              'python',
+              'tcl',
+              'r',
+              'lua',
+              'java',
+              'php',
+              'ruby',
+              'bash',
+              'scheme',
+              'xml',
+              'json'
+            ],
+            endsWithParent: true
+          }
+        ]
+      }),
+      // identifiers in quotes
+      {
+        begin: '"',
+        end: '"',
+        contains: [
+          {
+            begin: '""'
+          }
+        ]
+      },
+      // numbers
+      hljs.C_NUMBER_MODE,
+      // comments
+      hljs.C_BLOCK_COMMENT_MODE,
+      COMMENT_MODE,
+      // PL/pgSQL staff
+      // %ROWTYPE, %TYPE, $n
+      {
+        className: 'meta',
+        variants: [
+          { // %TYPE, %ROWTYPE
+            begin: '%(ROW)?TYPE',
+            relevance: 10
+          },
+          { // $n
+            begin: '\\$\\d+'
+          },
+          { // #compiler option
+            begin: '^#\\w',
+            end: '$'
+          }
+        ]
+      },
+      // <>
+      {
+        className: 'symbol',
+        begin: LABEL,
+        relevance: 10
+      }
+    ]
+  };
+}
+
+module.exports = pgsql;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/php-template.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/php-template.js ***!
+  \*****************************************************************/
+/***/ ((module) => {
+
+/*
+Language: PHP Template
+Requires: xml.js, php.js
+Author: Josh Goebel 
+Website: https://www.php.net
+Category: common
+*/
+
+function phpTemplate(hljs) {
+  return {
+    name: "PHP template",
+    subLanguage: 'xml',
+    contains: [
+      {
+        begin: /<\?(php|=)?/,
+        end: /\?>/,
+        subLanguage: 'php',
+        contains: [
+          // We don't want the php closing tag ?> to close the PHP block when
+          // inside any of the following blocks:
+          {
+            begin: '/\\*',
+            end: '\\*/',
+            skip: true
+          },
+          {
+            begin: 'b"',
+            end: '"',
+            skip: true
+          },
+          {
+            begin: 'b\'',
+            end: '\'',
+            skip: true
+          },
+          hljs.inherit(hljs.APOS_STRING_MODE, {
+            illegal: null,
+            className: null,
+            contains: null,
+            skip: true
+          }),
+          hljs.inherit(hljs.QUOTE_STRING_MODE, {
+            illegal: null,
+            className: null,
+            contains: null,
+            skip: true
+          })
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = phpTemplate;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/php.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/php.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: PHP
+Author: Victor Karamzin 
+Contributors: Evgeny Stepanischev , Ivan Sagalaev 
+Website: https://www.php.net
+Category: common
+*/
+
+/**
+ * @param {HLJSApi} hljs
+ * @returns {LanguageDetail}
+ * */
+function php(hljs) {
+  const VARIABLE = {
+    className: 'variable',
+    begin: '\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' +
+      // negative look-ahead tries to avoid matching patterns that are not
+      // Perl at all like $ident$, @ident@, etc.
+      `(?![A-Za-z0-9])(?![$])`
+  };
+  const PREPROCESSOR = {
+    className: 'meta',
+    variants: [
+      { begin: /<\?php/, relevance: 10 }, // boost for obvious PHP
+      { begin: /<\?[=]?/ },
+      { begin: /\?>/ } // end php tag
+    ]
+  };
+  const SUBST = {
+    className: 'subst',
+    variants: [
+      { begin: /\$\w+/ },
+      { begin: /\{\$/, end: /\}/ }
+    ]
+  };
+  const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, {
+    illegal: null,
+  });
+  const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {
+    illegal: null,
+    contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),
+  });
+  const HEREDOC = hljs.END_SAME_AS_BEGIN({
+    begin: /<<<[ \t]*(\w+)\n/,
+    end: /[ \t]*(\w+)\b/,
+    contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),
+  });
+  const STRING = {
+    className: 'string',
+    contains: [hljs.BACKSLASH_ESCAPE, PREPROCESSOR],
+    variants: [
+      hljs.inherit(SINGLE_QUOTED, {
+        begin: "b'", end: "'",
+      }),
+      hljs.inherit(DOUBLE_QUOTED, {
+        begin: 'b"', end: '"',
+      }),
+      DOUBLE_QUOTED,
+      SINGLE_QUOTED,
+      HEREDOC
+    ]
+  };
+  const NUMBER = {
+    className: 'number',
+    variants: [
+      { begin: `\\b0b[01]+(?:_[01]+)*\\b` }, // Binary w/ underscore support
+      { begin: `\\b0o[0-7]+(?:_[0-7]+)*\\b` }, // Octals w/ underscore support
+      { begin: `\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b` }, // Hex w/ underscore support
+      // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.
+      { begin: `(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?` }
+    ],
+    relevance: 0
+  };
+  const KEYWORDS = {
+    keyword:
+    // Magic constants:
+    // 
+    '__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ ' +
+    // Function that look like language construct or language construct that look like function:
+    // List of keywords that may not require parenthesis
+    'die echo exit include include_once print require require_once ' +
+    // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table
+    // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' +
+    // Other keywords:
+    // 
+    // 
+    'array abstract and as binary bool boolean break callable case catch class clone const continue declare ' +
+    'default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends ' +
+    'final finally float for foreach from global goto if implements instanceof insteadof int integer interface ' +
+    'isset iterable list match|0 mixed new object or private protected public real return string switch throw trait ' +
+    'try unset use var void while xor yield',
+    literal: 'false null true',
+    built_in:
+    // Standard PHP library:
+    // 
+    'Error|0 ' + // error is too common a name esp since PHP is case in-sensitive
+    'AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ' +
+    // Reserved interfaces:
+    // 
+    'ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap ' +
+    // Reserved classes:
+    // 
+    'Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass'
+  };
+  return {
+    aliases: ['php3', 'php4', 'php5', 'php6', 'php7', 'php8'],
+    case_insensitive: true,
+    keywords: KEYWORDS,
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      hljs.COMMENT('//', '$', {contains: [PREPROCESSOR]}),
+      hljs.COMMENT(
+        '/\\*',
+        '\\*/',
+        {
+          contains: [
+            {
+              className: 'doctag',
+              begin: '@[A-Za-z]+'
+            }
+          ]
+        }
+      ),
+      hljs.COMMENT(
+        '__halt_compiler.+?;',
+        false,
+        {
+          endsWithParent: true,
+          keywords: '__halt_compiler'
+        }
+      ),
+      PREPROCESSOR,
+      {
+        className: 'keyword', begin: /\$this\b/
+      },
+      VARIABLE,
+      {
+        // swallow composed identifiers to avoid parsing them as keywords
+        begin: /(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/
+      },
+      {
+        className: 'function',
+        relevance: 0,
+        beginKeywords: 'fn function', end: /[;{]/, excludeEnd: true,
+        illegal: '[$%\\[]',
+        contains: [
+          {
+            beginKeywords: 'use',
+          },
+          hljs.UNDERSCORE_TITLE_MODE,
+          {
+            begin: '=>', // No markup, just a relevance booster
+            endsParent: true
+          },
+          {
+            className: 'params',
+            begin: '\\(', end: '\\)',
+            excludeBegin: true,
+            excludeEnd: true,
+            keywords: KEYWORDS,
+            contains: [
+              'self',
+              VARIABLE,
+              hljs.C_BLOCK_COMMENT_MODE,
+              STRING,
+              NUMBER
+            ]
+          }
+        ]
+      },
+      {
+        className: 'class',
+        variants: [
+          { beginKeywords: "enum", illegal: /[($"]/ },
+          { beginKeywords: "class interface trait", illegal: /[:($"]/ }
+        ],
+        relevance: 0,
+        end: /\{/,
+        excludeEnd: true,
+        contains: [
+          {beginKeywords: 'extends implements'},
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      {
+        beginKeywords: 'namespace',
+        relevance: 0,
+        end: ';',
+        illegal: /[.']/,
+        contains: [hljs.UNDERSCORE_TITLE_MODE]
+      },
+      {
+        beginKeywords: 'use',
+        relevance: 0,
+        end: ';',
+        contains: [hljs.UNDERSCORE_TITLE_MODE]
+      },
+      STRING,
+      NUMBER
+    ]
+  };
+}
+
+module.exports = php;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/plaintext.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/plaintext.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Plain text
+Author: Egor Rogov (e.rogov@postgrespro.ru)
+Description: Plain text without any highlighting.
+Category: common
+*/
+
+function plaintext(hljs) {
+  return {
+    name: 'Plain text',
+    aliases: [
+      'text',
+      'txt'
+    ],
+    disableAutodetect: true
+  };
+}
+
+module.exports = plaintext;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/pony.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/pony.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Pony
+Author: Joe Eli McIlvain 
+Description: Pony is an open-source, object-oriented, actor-model,
+             capabilities-secure, high performance programming language.
+Website: https://www.ponylang.io
+*/
+
+function pony(hljs) {
+  const KEYWORDS = {
+    keyword:
+      'actor addressof and as be break class compile_error compile_intrinsic ' +
+      'consume continue delegate digestof do else elseif embed end error ' +
+      'for fun if ifdef in interface is isnt lambda let match new not object ' +
+      'or primitive recover repeat return struct then trait try type until ' +
+      'use var where while with xor',
+    meta:
+      'iso val tag trn box ref',
+    literal:
+      'this false true'
+  };
+
+  const TRIPLE_QUOTE_STRING_MODE = {
+    className: 'string',
+    begin: '"""',
+    end: '"""',
+    relevance: 10
+  };
+
+  const QUOTE_STRING_MODE = {
+    className: 'string',
+    begin: '"',
+    end: '"',
+    contains: [ hljs.BACKSLASH_ESCAPE ]
+  };
+
+  const SINGLE_QUOTE_CHAR_MODE = {
+    className: 'string',
+    begin: '\'',
+    end: '\'',
+    contains: [ hljs.BACKSLASH_ESCAPE ],
+    relevance: 0
+  };
+
+  const TYPE_NAME = {
+    className: 'type',
+    begin: '\\b_?[A-Z][\\w]*',
+    relevance: 0
+  };
+
+  const PRIMED_NAME = {
+    begin: hljs.IDENT_RE + '\'',
+    relevance: 0
+  };
+
+  const NUMBER_MODE = {
+    className: 'number',
+    begin: '(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)',
+    relevance: 0
+  };
+
+  /**
+   * The `FUNCTION` and `CLASS` modes were intentionally removed to simplify
+   * highlighting and fix cases like
+   * ```
+   * interface Iterator[A: A]
+   *   fun has_next(): Bool
+   *   fun next(): A?
+   * ```
+   * where it is valid to have a function head without a body
+   */
+
+  return {
+    name: 'Pony',
+    keywords: KEYWORDS,
+    contains: [
+      TYPE_NAME,
+      TRIPLE_QUOTE_STRING_MODE,
+      QUOTE_STRING_MODE,
+      SINGLE_QUOTE_CHAR_MODE,
+      PRIMED_NAME,
+      NUMBER_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = pony;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/powershell.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/powershell.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: PowerShell
+Description: PowerShell is a task-based command-line shell and scripting language built on .NET.
+Author: David Mohundro 
+Contributors: Nicholas Blumhardt , Victor Zhou , Nicolas Le Gall 
+Website: https://docs.microsoft.com/en-us/powershell/
+*/
+
+function powershell(hljs) {
+  const TYPES = [
+    "string",
+    "char",
+    "byte",
+    "int",
+    "long",
+    "bool",
+    "decimal",
+    "single",
+    "double",
+    "DateTime",
+    "xml",
+    "array",
+    "hashtable",
+    "void"
+  ];
+
+  // https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands
+  const VALID_VERBS =
+    'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|' +
+    'Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|' +
+    'Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|' +
+    'Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|' +
+    'ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|' +
+    'Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|' +
+    'Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|' +
+    'Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|' +
+    'Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|' +
+    'Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|' +
+    'Unprotect|Use|ForEach|Sort|Tee|Where';
+
+  const COMPARISON_OPERATORS =
+    '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|' +
+    '-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|' +
+    '-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|' +
+    '-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|' +
+    '-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|' +
+    '-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|' +
+    '-split|-wildcard|-xor';
+
+  const KEYWORDS = {
+    $pattern: /-?[A-z\.\-]+\b/,
+    keyword:
+      'if else foreach return do while until elseif begin for trap data dynamicparam ' +
+      'end break throw param continue finally in switch exit filter try process catch ' +
+      'hidden static parameter',
+    // "echo" relevance has been set to 0 to avoid auto-detect conflicts with shell transcripts
+    built_in:
+      'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp ' +
+      'cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx ' +
+      'fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group ' +
+      'gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi ' +
+      'iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh ' +
+      'popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp ' +
+      'rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp ' +
+      'spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write'
+    // TODO: 'validate[A-Z]+' can't work in keywords
+  };
+
+  const TITLE_NAME_RE = /\w[\w\d]*((-)[\w\d]+)*/;
+
+  const BACKTICK_ESCAPE = {
+    begin: '`[\\s\\S]',
+    relevance: 0
+  };
+
+  const VAR = {
+    className: 'variable',
+    variants: [
+      {
+        begin: /\$\B/
+      },
+      {
+        className: 'keyword',
+        begin: /\$this/
+      },
+      {
+        begin: /\$[\w\d][\w\d_:]*/
+      }
+    ]
+  };
+
+  const LITERAL = {
+    className: 'literal',
+    begin: /\$(null|true|false)\b/
+  };
+
+  const QUOTE_STRING = {
+    className: "string",
+    variants: [
+      {
+        begin: /"/,
+        end: /"/
+      },
+      {
+        begin: /@"/,
+        end: /^"@/
+      }
+    ],
+    contains: [
+      BACKTICK_ESCAPE,
+      VAR,
+      {
+        className: 'variable',
+        begin: /\$[A-z]/,
+        end: /[^A-z]/
+      }
+    ]
+  };
+
+  const APOS_STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: /'/,
+        end: /'/
+      },
+      {
+        begin: /@'/,
+        end: /^'@/
+      }
+    ]
+  };
+
+  const PS_HELPTAGS = {
+    className: "doctag",
+    variants: [
+      /* no paramater help tags */
+      {
+        begin: /\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/
+      },
+      /* one parameter help tags */
+      {
+        begin: /\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/
+      }
+    ]
+  };
+
+  const PS_COMMENT = hljs.inherit(
+    hljs.COMMENT(null, null),
+    {
+      variants: [
+        /* single-line comment */
+        {
+          begin: /#/,
+          end: /$/
+        },
+        /* multi-line comment */
+        {
+          begin: /<#/,
+          end: /#>/
+        }
+      ],
+      contains: [ PS_HELPTAGS ]
+    }
+  );
+
+  const CMDLETS = {
+    className: 'built_in',
+    variants: [
+      {
+        begin: '('.concat(VALID_VERBS, ')+(-)[\\w\\d]+')
+      }
+    ]
+  };
+
+  const PS_CLASS = {
+    className: 'class',
+    beginKeywords: 'class enum',
+    end: /\s*[{]/,
+    excludeEnd: true,
+    relevance: 0,
+    contains: [ hljs.TITLE_MODE ]
+  };
+
+  const PS_FUNCTION = {
+    className: 'function',
+    begin: /function\s+/,
+    end: /\s*\{|$/,
+    excludeEnd: true,
+    returnBegin: true,
+    relevance: 0,
+    contains: [
+      {
+        begin: "function",
+        relevance: 0,
+        className: "keyword"
+      },
+      {
+        className: "title",
+        begin: TITLE_NAME_RE,
+        relevance: 0
+      },
+      {
+        begin: /\(/,
+        end: /\)/,
+        className: "params",
+        relevance: 0,
+        contains: [ VAR ]
+      }
+      // CMDLETS
+    ]
+  };
+
+  // Using statment, plus type, plus assembly name.
+  const PS_USING = {
+    begin: /using\s/,
+    end: /$/,
+    returnBegin: true,
+    contains: [
+      QUOTE_STRING,
+      APOS_STRING,
+      {
+        className: 'keyword',
+        begin: /(using|assembly|command|module|namespace|type)/
+      }
+    ]
+  };
+
+  // Comperison operators & function named parameters.
+  const PS_ARGUMENTS = {
+    variants: [
+      // PS literals are pretty verbose so it's a good idea to accent them a bit.
+      {
+        className: 'operator',
+        begin: '('.concat(COMPARISON_OPERATORS, ')\\b')
+      },
+      {
+        className: 'literal',
+        begin: /(-)[\w\d]+/,
+        relevance: 0
+      }
+    ]
+  };
+
+  const HASH_SIGNS = {
+    className: 'selector-tag',
+    begin: /@\B/,
+    relevance: 0
+  };
+
+  // It's a very general rule so I'll narrow it a bit with some strict boundaries
+  // to avoid any possible false-positive collisions!
+  const PS_METHODS = {
+    className: 'function',
+    begin: /\[.*\]\s*[\w]+[ ]??\(/,
+    end: /$/,
+    returnBegin: true,
+    relevance: 0,
+    contains: [
+      {
+        className: 'keyword',
+        begin: '('.concat(
+          KEYWORDS.keyword.toString().replace(/\s/g, '|'
+          ), ')\\b'),
+        endsParent: true,
+        relevance: 0
+      },
+      hljs.inherit(hljs.TITLE_MODE, {
+        endsParent: true
+      })
+    ]
+  };
+
+  const GENTLEMANS_SET = [
+    // STATIC_MEMBER,
+    PS_METHODS,
+    PS_COMMENT,
+    BACKTICK_ESCAPE,
+    hljs.NUMBER_MODE,
+    QUOTE_STRING,
+    APOS_STRING,
+    // PS_NEW_OBJECT_TYPE,
+    CMDLETS,
+    VAR,
+    LITERAL,
+    HASH_SIGNS
+  ];
+
+  const PS_TYPE = {
+    begin: /\[/,
+    end: /\]/,
+    excludeBegin: true,
+    excludeEnd: true,
+    relevance: 0,
+    contains: [].concat(
+      'self',
+      GENTLEMANS_SET,
+      {
+        begin: "(" + TYPES.join("|") + ")",
+        className: "built_in",
+        relevance: 0
+      },
+      {
+        className: 'type',
+        begin: /[\.\w\d]+/,
+        relevance: 0
+      }
+    )
+  };
+
+  PS_METHODS.contains.unshift(PS_TYPE);
+
+  return {
+    name: 'PowerShell',
+    aliases: [
+      "ps",
+      "ps1"
+    ],
+    case_insensitive: true,
+    keywords: KEYWORDS,
+    contains: GENTLEMANS_SET.concat(
+      PS_CLASS,
+      PS_FUNCTION,
+      PS_USING,
+      PS_ARGUMENTS,
+      PS_TYPE
+    )
+  };
+}
+
+module.exports = powershell;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/processing.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/processing.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Processing
+Description: Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.
+Author: Erik Paluka 
+Website: https://processing.org
+Category: graphics
+*/
+
+function processing(hljs) {
+  return {
+    name: 'Processing',
+    keywords: {
+      keyword: 'BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color ' +
+        'double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject ' +
+        'Object StringDict StringList Table TableRow XML ' +
+        // Java keywords
+        'false synchronized int abstract float private char boolean static null if const ' +
+        'for true while long throw strictfp finally protected import native final return void ' +
+        'enum else break transient new catch instanceof byte super volatile case assert short ' +
+        'package default double public try this switch continue throws protected public private',
+      literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI',
+      title: 'setup draw',
+      built_in: 'displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key ' +
+        'keyCode pixels focused frameCount frameRate height width ' +
+        'size createGraphics beginDraw createShape loadShape PShape arc ellipse line point ' +
+        'quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint ' +
+        'curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex ' +
+        'endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap ' +
+        'strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased ' +
+        'mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour ' +
+        'millis minute month second year background clear colorMode fill noFill noStroke stroke alpha ' +
+        'blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY ' +
+        'screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ' +
+        'ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle ' +
+        'pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf ' +
+        'nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset ' +
+        'box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings ' +
+        'loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput ' +
+        'createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings ' +
+        'saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale ' +
+        'shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal ' +
+        'pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap ' +
+        'blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont ' +
+        'loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil ' +
+        'constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees ' +
+        'radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = processing;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/profile.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/profile.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Python profiler
+Description: Python profiler results
+Author: Brian Beck 
+*/
+
+function profile(hljs) {
+  return {
+    name: 'Python profiler',
+    contains: [
+      hljs.C_NUMBER_MODE,
+      {
+        begin: '[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}',
+        end: ':',
+        excludeEnd: true
+      },
+      {
+        begin: '(ncalls|tottime|cumtime)',
+        end: '$',
+        keywords: 'ncalls tottime|10 cumtime|10 filename',
+        relevance: 10
+      },
+      {
+        begin: 'function calls',
+        end: '$',
+        contains: [ hljs.C_NUMBER_MODE ],
+        relevance: 10
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        begin: '\\(',
+        end: '\\)$',
+        excludeBegin: true,
+        excludeEnd: true,
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = profile;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/prolog.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/prolog.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Prolog
+Description: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.
+Author: Raivo Laanemets 
+Website: https://en.wikipedia.org/wiki/Prolog
+*/
+
+function prolog(hljs) {
+  const ATOM = {
+
+    begin: /[a-z][A-Za-z0-9_]*/,
+    relevance: 0
+  };
+
+  const VAR = {
+
+    className: 'symbol',
+    variants: [
+      {
+        begin: /[A-Z][a-zA-Z0-9_]*/
+      },
+      {
+        begin: /_[A-Za-z0-9_]*/
+      }
+    ],
+    relevance: 0
+  };
+
+  const PARENTED = {
+
+    begin: /\(/,
+    end: /\)/,
+    relevance: 0
+  };
+
+  const LIST = {
+
+    begin: /\[/,
+    end: /\]/
+  };
+
+  const LINE_COMMENT = {
+
+    className: 'comment',
+    begin: /%/,
+    end: /$/,
+    contains: [ hljs.PHRASAL_WORDS_MODE ]
+  };
+
+  const BACKTICK_STRING = {
+
+    className: 'string',
+    begin: /`/,
+    end: /`/,
+    contains: [ hljs.BACKSLASH_ESCAPE ]
+  };
+
+  const CHAR_CODE = {
+    className: 'string', // 0'a etc.
+    begin: /0'(\\'|.)/
+  };
+
+  const SPACE_CODE = {
+    className: 'string',
+    begin: /0'\\s/ // 0'\s
+  };
+
+  const PRED_OP = { // relevance booster
+    begin: /:-/
+  };
+
+  const inner = [
+
+    ATOM,
+    VAR,
+    PARENTED,
+    PRED_OP,
+    LIST,
+    LINE_COMMENT,
+    hljs.C_BLOCK_COMMENT_MODE,
+    hljs.QUOTE_STRING_MODE,
+    hljs.APOS_STRING_MODE,
+    BACKTICK_STRING,
+    CHAR_CODE,
+    SPACE_CODE,
+    hljs.C_NUMBER_MODE
+  ];
+
+  PARENTED.contains = inner;
+  LIST.contains = inner;
+
+  return {
+    name: 'Prolog',
+    contains: inner.concat([
+      { // relevance booster
+        begin: /\.$/
+      }
+    ])
+  };
+}
+
+module.exports = prolog;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/properties.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/properties.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+/*
+Language: .properties
+Contributors: Valentin Aitken , Egor Rogov 
+Website: https://en.wikipedia.org/wiki/.properties
+Category: common, config
+*/
+
+function properties(hljs) {
+
+  // whitespaces: space, tab, formfeed
+  var WS0 = '[ \\t\\f]*';
+  var WS1 = '[ \\t\\f]+';
+  // delimiter
+  var EQUAL_DELIM = WS0+'[:=]'+WS0;
+  var WS_DELIM = WS1;
+  var DELIM = '(' + EQUAL_DELIM + '|' + WS_DELIM + ')';
+  var KEY_ALPHANUM = '([^\\\\\\W:= \\t\\f\\n]|\\\\.)+';
+  var KEY_OTHER = '([^\\\\:= \\t\\f\\n]|\\\\.)+';
+
+  var DELIM_AND_VALUE = {
+          // skip DELIM
+          end: DELIM,
+          relevance: 0,
+          starts: {
+            // value: everything until end of line (again, taking into account backslashes)
+            className: 'string',
+            end: /$/,
+            relevance: 0,
+            contains: [
+              { begin: '\\\\\\\\'},
+              { begin: '\\\\\\n' }
+            ]
+          }
+        };
+
+  return {
+    name: '.properties',
+    case_insensitive: true,
+    illegal: /\S/,
+    contains: [
+      hljs.COMMENT('^\\s*[!#]', '$'),
+      // key: everything until whitespace or = or : (taking into account backslashes)
+      // case of a "normal" key
+      {
+        returnBegin: true,
+        variants: [
+          { begin: KEY_ALPHANUM + EQUAL_DELIM, relevance: 1 },
+          { begin: KEY_ALPHANUM + WS_DELIM, relevance: 0 }
+        ],
+        contains: [
+          {
+            className: 'attr',
+            begin: KEY_ALPHANUM,
+            endsParent: true,
+            relevance: 0
+          }
+        ],
+        starts: DELIM_AND_VALUE
+      },
+      // case of key containing non-alphanumeric chars => relevance = 0
+      {
+        begin: KEY_OTHER + DELIM,
+        returnBegin: true,
+        relevance: 0,
+        contains: [
+          {
+            className: 'meta',
+            begin: KEY_OTHER,
+            endsParent: true,
+            relevance: 0
+          }
+        ],
+        starts: DELIM_AND_VALUE
+      },
+      // case of an empty key
+      {
+        className: 'attr',
+        relevance: 0,
+        begin: KEY_OTHER + WS0 + '$'
+      }
+    ]
+  };
+}
+
+module.exports = properties;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/protobuf.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/protobuf.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Protocol Buffers
+Author: Dan Tao 
+Description: Protocol buffer message definition format
+Website: https://developers.google.com/protocol-buffers/docs/proto3
+Category: protocols
+*/
+
+function protobuf(hljs) {
+  return {
+    name: 'Protocol Buffers',
+    keywords: {
+      keyword: 'package import option optional required repeated group oneof',
+      built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +
+        'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',
+      literal: 'true false'
+    },
+    contains: [
+      hljs.QUOTE_STRING_MODE,
+      hljs.NUMBER_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'class',
+        beginKeywords: 'message enum service', end: /\{/,
+        illegal: /\n/,
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, {
+            starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title
+          })
+        ]
+      },
+      {
+        className: 'function',
+        beginKeywords: 'rpc',
+        end: /[{;]/, excludeEnd: true,
+        keywords: 'rpc returns'
+      },
+      { // match enum items (relevance)
+        // BLAH = ...;
+        begin: /^\s*[A-Z_]+(?=\s*=[^\n]+;$)/
+      }
+    ]
+  };
+}
+
+module.exports = protobuf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/puppet.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/puppet.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Puppet
+Author: Jose Molina Colmenero 
+Website: https://puppet.com/docs
+Category: config
+*/
+
+function puppet(hljs) {
+  const PUPPET_KEYWORDS = {
+    keyword:
+    /* language keywords */
+      'and case default else elsif false if in import enherits node or true undef unless main settings $string ',
+    literal:
+    /* metaparameters */
+      'alias audit before loglevel noop require subscribe tag ' +
+      /* normal attributes */
+      'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +
+      'en_address ip_address realname command environment hour monute month monthday special target weekday ' +
+      'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +
+      'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +
+      'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ' +
+      'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +
+      'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +
+      'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +
+      'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +
+      'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +
+      'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +
+      'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +
+      'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +
+      'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +
+      'sslverify mounted',
+    built_in:
+    /* core facts */
+      'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +
+      'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ' +
+      'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +
+      'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +
+      'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +
+      'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease ' +
+      'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion ' +
+      'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced ' +
+      'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime ' +
+      'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'
+  };
+
+  const COMMENT = hljs.COMMENT('#', '$');
+
+  const IDENT_RE = '([A-Za-z_]|::)(\\w|::)*';
+
+  const TITLE = hljs.inherit(hljs.TITLE_MODE, {
+    begin: IDENT_RE
+  });
+
+  const VARIABLE = {
+    className: 'variable',
+    begin: '\\$' + IDENT_RE
+  };
+
+  const STRING = {
+    className: 'string',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      VARIABLE
+    ],
+    variants: [
+      {
+        begin: /'/,
+        end: /'/
+      },
+      {
+        begin: /"/,
+        end: /"/
+      }
+    ]
+  };
+
+  return {
+    name: 'Puppet',
+    aliases: [ 'pp' ],
+    contains: [
+      COMMENT,
+      VARIABLE,
+      STRING,
+      {
+        beginKeywords: 'class',
+        end: '\\{|;',
+        illegal: /=/,
+        contains: [
+          TITLE,
+          COMMENT
+        ]
+      },
+      {
+        beginKeywords: 'define',
+        end: /\{/,
+        contains: [
+          {
+            className: 'section',
+            begin: hljs.IDENT_RE,
+            endsParent: true
+          }
+        ]
+      },
+      {
+        begin: hljs.IDENT_RE + '\\s+\\{',
+        returnBegin: true,
+        end: /\S/,
+        contains: [
+          {
+            className: 'keyword',
+            begin: hljs.IDENT_RE
+          },
+          {
+            begin: /\{/,
+            end: /\}/,
+            keywords: PUPPET_KEYWORDS,
+            relevance: 0,
+            contains: [
+              STRING,
+              COMMENT,
+              {
+                begin: '[a-zA-Z_]+\\s*=>',
+                returnBegin: true,
+                end: '=>',
+                contains: [
+                  {
+                    className: 'attr',
+                    begin: hljs.IDENT_RE
+                  }
+                ]
+              },
+              {
+                className: 'number',
+                begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b',
+                relevance: 0
+              },
+              VARIABLE
+            ]
+          }
+        ],
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = puppet;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/purebasic.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/purebasic.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/*
+Language: PureBASIC
+Author: Tristano Ajmone 
+Description: Syntax highlighting for PureBASIC (v.5.00-5.60). No inline ASM highlighting. (v.1.2, May 2017)
+Credits: I've taken inspiration from the PureBasic language file for GeSHi, created by Gustavo Julio Fiorenza (GuShH).
+Website: https://www.purebasic.com
+*/
+
+// Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;
+
+function purebasic(hljs) {
+  const STRINGS = { // PB IDE color: #0080FF (Azure Radiance)
+    className: 'string',
+    begin: '(~)?"',
+    end: '"',
+    illegal: '\\n'
+  };
+  const CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)
+    //  "#" + a letter or underscore + letters, digits or underscores + (optional) "$"
+    className: 'symbol',
+    begin: '#[a-zA-Z_]\\w*\\$?'
+  };
+
+  return {
+    name: 'PureBASIC',
+    aliases: [
+      'pb',
+      'pbi'
+    ],
+    keywords: // PB IDE color: #006666 (Blue Stone) + Bold
+      // Keywords from all version of PureBASIC 5.00 upward ...
+      'Align And Array As Break CallDebugger Case CompilerCase CompilerDefault ' +
+      'CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError ' +
+      'CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug ' +
+      'DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default ' +
+      'Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +
+      'EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration ' +
+      'EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect ' +
+      'EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends ' +
+      'FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC ' +
+      'IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount ' +
+      'Map Module NewList NewMap Next Not Or Procedure ProcedureC ' +
+      'ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim ' +
+      'Read Repeat Restore Return Runtime Select Shared Static Step Structure ' +
+      'StructureUnion Swap Threaded To UndefineMacro Until Until  UnuseModule ' +
+      'UseModule Wend While With XIncludeFile XOr',
+    contains: [
+      // COMMENTS | PB IDE color: #00AAAA (Persian Green)
+      hljs.COMMENT(';', '$', {
+        relevance: 0
+      }),
+
+      { // PROCEDURES DEFINITIONS
+        className: 'function',
+        begin: '\\b(Procedure|Declare)(C|CDLL|DLL)?\\b',
+        end: '\\(',
+        excludeEnd: true,
+        returnBegin: true,
+        contains: [
+          { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold
+            className: 'keyword',
+            begin: '(Procedure|Declare)(C|CDLL|DLL)?',
+            excludeEnd: true
+          },
+          { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)
+            className: 'type',
+            begin: '\\.\\w*'
+            // end: ' ',
+          },
+          hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)
+        ]
+      },
+      STRINGS,
+      CONSTANTS
+    ]
+  };
+}
+
+/*  ==============================================================================
+                                      CHANGELOG
+    ==============================================================================
+    - v.1.2 (2017-05-12)
+        -- BUG-FIX: Some keywords were accidentally joyned together. Now fixed.
+    - v.1.1 (2017-04-30)
+        -- Updated to PureBASIC 5.60.
+        -- Keywords list now built by extracting them from the PureBASIC SDK's
+           "SyntaxHilighting.dll" (from each PureBASIC version). Tokens from each
+           version are added to the list, and renamed or removed tokens are kept
+           for the sake of covering all versions of the language from PureBASIC
+           v5.00 upward. (NOTE: currently, there are no renamed or deprecated
+           tokens in the keywords list). For more info, see:
+           -- http://www.purebasic.fr/english/viewtopic.php?&p=506269
+           -- https://github.com/tajmone/purebasic-archives/tree/master/syntax-highlighting/guidelines
+    - v.1.0 (April 2016)
+        -- First release
+        -- Keywords list taken and adapted from GuShH's (Gustavo Julio Fiorenza)
+           PureBasic language file for GeSHi:
+           -- https://github.com/easybook/geshi/blob/master/geshi/purebasic.php
+*/
+
+module.exports = purebasic;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/python-repl.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/python-repl.js ***!
+  \****************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Python REPL
+Requires: python.js
+Author: Josh Goebel 
+Category: common
+*/
+
+function pythonRepl(hljs) {
+  return {
+    aliases: [ 'pycon' ],
+    contains: [
+      {
+        className: 'meta',
+        starts: {
+          // a space separates the REPL prefix from the actual code
+          // this is purely for cleaner HTML output
+          end: / |$/,
+          starts: {
+            end: '$',
+            subLanguage: 'python'
+          }
+        },
+        variants: [
+          {
+            begin: /^>>>(?=[ ]|$)/
+          },
+          {
+            begin: /^\.\.\.(?=[ ]|$)/
+          }
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = pythonRepl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/python.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/python.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Python
+Description: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.
+Website: https://www.python.org
+Category: common
+*/
+
+function python(hljs) {
+  const RESERVED_WORDS = [
+    'and',
+    'as',
+    'assert',
+    'async',
+    'await',
+    'break',
+    'class',
+    'continue',
+    'def',
+    'del',
+    'elif',
+    'else',
+    'except',
+    'finally',
+    'for',
+    'from',
+    'global',
+    'if',
+    'import',
+    'in',
+    'is',
+    'lambda',
+    'nonlocal|10',
+    'not',
+    'or',
+    'pass',
+    'raise',
+    'return',
+    'try',
+    'while',
+    'with',
+    'yield'
+  ];
+
+  const BUILT_INS = [
+    '__import__',
+    'abs',
+    'all',
+    'any',
+    'ascii',
+    'bin',
+    'bool',
+    'breakpoint',
+    'bytearray',
+    'bytes',
+    'callable',
+    'chr',
+    'classmethod',
+    'compile',
+    'complex',
+    'delattr',
+    'dict',
+    'dir',
+    'divmod',
+    'enumerate',
+    'eval',
+    'exec',
+    'filter',
+    'float',
+    'format',
+    'frozenset',
+    'getattr',
+    'globals',
+    'hasattr',
+    'hash',
+    'help',
+    'hex',
+    'id',
+    'input',
+    'int',
+    'isinstance',
+    'issubclass',
+    'iter',
+    'len',
+    'list',
+    'locals',
+    'map',
+    'max',
+    'memoryview',
+    'min',
+    'next',
+    'object',
+    'oct',
+    'open',
+    'ord',
+    'pow',
+    'print',
+    'property',
+    'range',
+    'repr',
+    'reversed',
+    'round',
+    'set',
+    'setattr',
+    'slice',
+    'sorted',
+    'staticmethod',
+    'str',
+    'sum',
+    'super',
+    'tuple',
+    'type',
+    'vars',
+    'zip'
+  ];
+
+  const LITERALS = [
+    '__debug__',
+    'Ellipsis',
+    'False',
+    'None',
+    'NotImplemented',
+    'True'
+  ];
+
+  // https://docs.python.org/3/library/typing.html
+  // TODO: Could these be supplemented by a CamelCase matcher in certain
+  // contexts, leaving these remaining only for relevance hinting?
+  const TYPES = [
+    "Any",
+    "Callable",
+    "Coroutine",
+    "Dict",
+    "List",
+    "Literal",
+    "Generic",
+    "Optional",
+    "Sequence",
+    "Set",
+    "Tuple",
+    "Type",
+    "Union"
+  ];
+
+  const KEYWORDS = {
+    $pattern: /[A-Za-z]\w+|__\w+__/,
+    keyword: RESERVED_WORDS,
+    built_in: BUILT_INS,
+    literal: LITERALS,
+    type: TYPES
+  };
+
+  const PROMPT = {
+    className: 'meta',
+    begin: /^(>>>|\.\.\.) /
+  };
+
+  const SUBST = {
+    className: 'subst',
+    begin: /\{/,
+    end: /\}/,
+    keywords: KEYWORDS,
+    illegal: /#/
+  };
+
+  const LITERAL_BRACKET = {
+    begin: /\{\{/,
+    relevance: 0
+  };
+
+  const STRING = {
+    className: 'string',
+    contains: [ hljs.BACKSLASH_ESCAPE ],
+    variants: [
+      {
+        begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,
+        end: /'''/,
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          PROMPT
+        ],
+        relevance: 10
+      },
+      {
+        begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,
+        end: /"""/,
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          PROMPT
+        ],
+        relevance: 10
+      },
+      {
+        begin: /([fF][rR]|[rR][fF]|[fF])'''/,
+        end: /'''/,
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          PROMPT,
+          LITERAL_BRACKET,
+          SUBST
+        ]
+      },
+      {
+        begin: /([fF][rR]|[rR][fF]|[fF])"""/,
+        end: /"""/,
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          PROMPT,
+          LITERAL_BRACKET,
+          SUBST
+        ]
+      },
+      {
+        begin: /([uU]|[rR])'/,
+        end: /'/,
+        relevance: 10
+      },
+      {
+        begin: /([uU]|[rR])"/,
+        end: /"/,
+        relevance: 10
+      },
+      {
+        begin: /([bB]|[bB][rR]|[rR][bB])'/,
+        end: /'/
+      },
+      {
+        begin: /([bB]|[bB][rR]|[rR][bB])"/,
+        end: /"/
+      },
+      {
+        begin: /([fF][rR]|[rR][fF]|[fF])'/,
+        end: /'/,
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          LITERAL_BRACKET,
+          SUBST
+        ]
+      },
+      {
+        begin: /([fF][rR]|[rR][fF]|[fF])"/,
+        end: /"/,
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          LITERAL_BRACKET,
+          SUBST
+        ]
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE
+    ]
+  };
+
+  // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals
+  const digitpart = '[0-9](_?[0-9])*';
+  const pointfloat = `(\\b(${digitpart}))?\\.(${digitpart})|\\b(${digitpart})\\.`;
+  const NUMBER = {
+    className: 'number',
+    relevance: 0,
+    variants: [
+      // exponentfloat, pointfloat
+      // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals
+      // optionally imaginary
+      // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals
+      // Note: no leading \b because floats can start with a decimal point
+      // and we don't want to mishandle e.g. `fn(.5)`,
+      // no trailing \b for pointfloat because it can end with a decimal point
+      // and we don't want to mishandle e.g. `0..hex()`; this should be safe
+      // because both MUST contain a decimal point and so cannot be confused with
+      // the interior part of an identifier
+      {
+        begin: `(\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?\\b`
+      },
+      {
+        begin: `(${pointfloat})[jJ]?`
+      },
+
+      // decinteger, bininteger, octinteger, hexinteger
+      // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals
+      // optionally "long" in Python 2
+      // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals
+      // decinteger is optionally imaginary
+      // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals
+      {
+        begin: '\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b'
+      },
+      {
+        begin: '\\b0[bB](_?[01])+[lL]?\\b'
+      },
+      {
+        begin: '\\b0[oO](_?[0-7])+[lL]?\\b'
+      },
+      {
+        begin: '\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b'
+      },
+
+      // imagnumber (digitpart-based)
+      // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals
+      {
+        begin: `\\b(${digitpart})[jJ]\\b`
+      }
+    ]
+  };
+  const COMMENT_TYPE = {
+    className: "comment",
+    begin: lookahead(/# type:/),
+    end: /$/,
+    keywords: KEYWORDS,
+    contains: [
+      { // prevent keywords from coloring `type`
+        begin: /# type:/
+      },
+      // comment within a datatype comment includes no keywords
+      {
+        begin: /#/,
+        end: /\b\B/,
+        endsWithParent: true
+      }
+    ]
+  };
+  const PARAMS = {
+    className: 'params',
+    variants: [
+      // Exclude params in functions without params
+      {
+        className: "",
+        begin: /\(\s*\)/,
+        skip: true
+      },
+      {
+        begin: /\(/,
+        end: /\)/,
+        excludeBegin: true,
+        excludeEnd: true,
+        keywords: KEYWORDS,
+        contains: [
+          'self',
+          PROMPT,
+          NUMBER,
+          STRING,
+          hljs.HASH_COMMENT_MODE
+        ]
+      }
+    ]
+  };
+  SUBST.contains = [
+    STRING,
+    NUMBER,
+    PROMPT
+  ];
+
+  return {
+    name: 'Python',
+    aliases: [
+      'py',
+      'gyp',
+      'ipython'
+    ],
+    keywords: KEYWORDS,
+    illegal: /(<\/|->|\?)|=>/,
+    contains: [
+      PROMPT,
+      NUMBER,
+      {
+        // very common convention
+        begin: /\bself\b/
+      },
+      {
+        // eat "if" prior to string so that it won't accidentally be
+        // labeled as an f-string
+        beginKeywords: "if",
+        relevance: 0
+      },
+      STRING,
+      COMMENT_TYPE,
+      hljs.HASH_COMMENT_MODE,
+      {
+        variants: [
+          {
+            className: 'function',
+            beginKeywords: 'def'
+          },
+          {
+            className: 'class',
+            beginKeywords: 'class'
+          }
+        ],
+        end: /:/,
+        illegal: /[${=;\n,]/,
+        contains: [
+          hljs.UNDERSCORE_TITLE_MODE,
+          PARAMS,
+          {
+            begin: /->/,
+            endsWithParent: true,
+            keywords: KEYWORDS
+          }
+        ]
+      },
+      {
+        className: 'meta',
+        begin: /^[\t ]*@/,
+        end: /(?=#)|$/,
+        contains: [
+          NUMBER,
+          PARAMS,
+          STRING
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = python;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/q.js":
+/*!******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/q.js ***!
+  \******************************************************/
+/***/ ((module) => {
+
+/*
+Language: Q
+Description: Q is a vector-based functional paradigm programming language built into the kdb+ database.
+             (K/Q/Kdb+ from Kx Systems)
+Author: Sergey Vidyuk 
+Website: https://kx.com/connect-with-us/developers/
+*/
+
+function q(hljs) {
+  const KEYWORDS = {
+    $pattern: /(`?)[A-Za-z0-9_]+\b/,
+    keyword:
+      'do while select delete by update from',
+    literal:
+      '0b 1b',
+    built_in:
+      'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',
+    type:
+      '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'
+  };
+
+  return {
+    name: 'Q',
+    aliases: [
+      'k',
+      'kdb'
+    ],
+    keywords: KEYWORDS,
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = q;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/qml.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/qml.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: QML
+Requires: javascript.js, xml.js
+Author: John Foster 
+Description: Syntax highlighting for the Qt Quick QML scripting language, based mostly off
+             the JavaScript parser.
+Website: https://doc.qt.io/qt-5/qmlapplications.html
+Category: scripting
+*/
+
+function qml(hljs) {
+  const KEYWORDS = {
+    keyword:
+      'in of on if for while finally var new function do return void else break catch ' +
+      'instanceof with throw case default try this switch continue typeof delete ' +
+      'let yield const export super debugger as async await import',
+    literal:
+      'true false null undefined NaN Infinity',
+    built_in:
+      'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +
+      'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +
+      'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +
+      'TypeError URIError Number Math Date String RegExp Array Float32Array ' +
+      'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +
+      'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +
+      'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +
+      'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +
+      'geoshape int list matrix4x4 parent point quaternion real rect ' +
+      'size string url variant vector2d vector3d vector4d ' +
+      'Promise'
+  };
+
+  const QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\._]*';
+
+  // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.
+  // Use property class.
+  const PROPERTY = {
+    className: 'keyword',
+    begin: '\\bproperty\\b',
+    starts: {
+      className: 'string',
+      end: '(:|=|;|,|//|/\\*|$)',
+      returnEnd: true
+    }
+  };
+
+  // Isolate signal statements. Ends at a ) a comment or end of line.
+  // Use property class.
+  const SIGNAL = {
+    className: 'keyword',
+    begin: '\\bsignal\\b',
+    starts: {
+      className: 'string',
+      end: '(\\(|:|=|;|,|//|/\\*|$)',
+      returnEnd: true
+    }
+  };
+
+  // id: is special in QML. When we see id: we want to mark the id: as attribute and
+  // emphasize the token following.
+  const ID_ID = {
+    className: 'attribute',
+    begin: '\\bid\\s*:',
+    starts: {
+      className: 'string',
+      end: QML_IDENT_RE,
+      returnEnd: false
+    }
+  };
+
+  // Find QML object attribute. An attribute is a QML identifier followed by :.
+  // Unfortunately it's hard to know where it ends, as it may contain scalars,
+  // objects, object definitions, or javascript. The true end is either when the parent
+  // ends or the next attribute is detected.
+  const QML_ATTRIBUTE = {
+    begin: QML_IDENT_RE + '\\s*:',
+    returnBegin: true,
+    contains: [
+      {
+        className: 'attribute',
+        begin: QML_IDENT_RE,
+        end: '\\s*:',
+        excludeEnd: true,
+        relevance: 0
+      }
+    ],
+    relevance: 0
+  };
+
+  // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.
+  // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.
+  const QML_OBJECT = {
+    begin: concat(QML_IDENT_RE, /\s*\{/),
+    end: /\{/,
+    returnBegin: true,
+    relevance: 0,
+    contains: [
+      hljs.inherit(hljs.TITLE_MODE, {
+        begin: QML_IDENT_RE
+      })
+    ]
+  };
+
+  return {
+    name: 'QML',
+    aliases: [ 'qt' ],
+    case_insensitive: false,
+    keywords: KEYWORDS,
+    contains: [
+      {
+        className: 'meta',
+        begin: /^\s*['"]use (strict|asm)['"]/
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      { // template string
+        className: 'string',
+        begin: '`',
+        end: '`',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          {
+            className: 'subst',
+            begin: '\\$\\{',
+            end: '\\}'
+          }
+        ]
+      },
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'number',
+        variants: [
+          {
+            begin: '\\b(0[bB][01]+)'
+          },
+          {
+            begin: '\\b(0[oO][0-7]+)'
+          },
+          {
+            begin: hljs.C_NUMBER_RE
+          }
+        ],
+        relevance: 0
+      },
+      { // "value" container
+        begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*',
+        keywords: 'return throw case',
+        contains: [
+          hljs.C_LINE_COMMENT_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          hljs.REGEXP_MODE,
+          { // E4X / JSX
+            begin: /\s*[);\]]/,
+            relevance: 0,
+            subLanguage: 'xml'
+          }
+        ],
+        relevance: 0
+      },
+      SIGNAL,
+      PROPERTY,
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: /\{/,
+        excludeEnd: true,
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, {
+            begin: /[A-Za-z$_][0-9A-Za-z$_]*/
+          }),
+          {
+            className: 'params',
+            begin: /\(/,
+            end: /\)/,
+            excludeBegin: true,
+            excludeEnd: true,
+            contains: [
+              hljs.C_LINE_COMMENT_MODE,
+              hljs.C_BLOCK_COMMENT_MODE
+            ]
+          }
+        ],
+        illegal: /\[|%/
+      },
+      {
+        // hack: prevents detection of keywords after dots
+        begin: '\\.' + hljs.IDENT_RE,
+        relevance: 0
+      },
+      ID_ID,
+      QML_ATTRIBUTE,
+      QML_OBJECT
+    ],
+    illegal: /#/
+  };
+}
+
+module.exports = qml;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/r.js":
+/*!******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/r.js ***!
+  \******************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: R
+Description: R is a free software environment for statistical computing and graphics.
+Author: Joe Cheng 
+Contributors: Konrad Rudolph 
+Website: https://www.r-project.org
+Category: common,scientific
+*/
+
+/** @type LanguageFn */
+function r(hljs) {
+  // Identifiers in R cannot start with `_`, but they can start with `.` if it
+  // is not immediately followed by a digit.
+  // R also supports quoted identifiers, which are near-arbitrary sequences
+  // delimited by backticks (`…`), which may contain escape sequences. These are
+  // handled in a separate mode. See `test/markup/r/names.txt` for examples.
+  // FIXME: Support Unicode identifiers.
+  const IDENT_RE = /(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;
+  const SIMPLE_IDENT = /[a-zA-Z][a-zA-Z_0-9]*/;
+
+  return {
+    name: 'R',
+
+    // only in Haskell, not R
+    illegal: /->/,
+    keywords: {
+      $pattern: IDENT_RE,
+      keyword:
+        'function if in break next repeat else for while',
+      literal:
+        'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 ' +
+        'NA_character_|10 NA_complex_|10',
+      built_in:
+        // Builtin constants
+        'LETTERS letters month.abb month.name pi T F ' +
+        // Primitive functions
+        // These are all the functions in `base` that are implemented as a
+        // `.Primitive`, minus those functions that are also keywords.
+        'abs acos acosh all any anyNA Arg as.call as.character ' +
+        'as.complex as.double as.environment as.integer as.logical ' +
+        'as.null.default as.numeric as.raw asin asinh atan atanh attr ' +
+        'attributes baseenv browser c call ceiling class Conj cos cosh ' +
+        'cospi cummax cummin cumprod cumsum digamma dim dimnames ' +
+        'emptyenv exp expression floor forceAndCall gamma gc.time ' +
+        'globalenv Im interactive invisible is.array is.atomic is.call ' +
+        'is.character is.complex is.double is.environment is.expression ' +
+        'is.finite is.function is.infinite is.integer is.language ' +
+        'is.list is.logical is.matrix is.na is.name is.nan is.null ' +
+        'is.numeric is.object is.pairlist is.raw is.recursive is.single ' +
+        'is.symbol lazyLoadDBfetch length lgamma list log max min ' +
+        'missing Mod names nargs nzchar oldClass on.exit pos.to.env ' +
+        'proc.time prod quote range Re rep retracemem return round ' +
+        'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt ' +
+        'standardGeneric substitute sum switch tan tanh tanpi tracemem ' +
+        'trigamma trunc unclass untracemem UseMethod xtfrm',
+    },
+    compilerExtensions: [
+      // allow beforeMatch to act as a "qualifier" for the match
+      // the full match begin must be [beforeMatch][begin]
+      (mode, parent) => {
+        if (!mode.beforeMatch) return;
+        // starts conflicts with endsParent which we need to make sure the child
+        // rule is not matched multiple times
+        if (mode.starts) throw new Error("beforeMatch cannot be used with starts");
+
+        const originalMode = Object.assign({}, mode);
+        Object.keys(mode).forEach((key) => { delete mode[key]; });
+
+        mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));
+        mode.starts = {
+          relevance: 0,
+          contains: [
+            Object.assign(originalMode, { endsParent: true })
+          ]
+        };
+        mode.relevance = 0;
+
+        delete originalMode.beforeMatch;
+      }
+    ],
+    contains: [
+      // Roxygen comments
+      hljs.COMMENT(
+        /#'/,
+        /$/,
+        {
+          contains: [
+            {
+              // Handle `@examples` separately to cause all subsequent code
+              // until the next `@`-tag on its own line to be kept as-is,
+              // preventing highlighting. This code is example R code, so nested
+              // doctags shouldn’t be treated as such. See
+              // `test/markup/r/roxygen.txt` for an example.
+              className: 'doctag',
+              begin: '@examples',
+              starts: {
+                contains: [
+                  { begin: /\n/ },
+                  {
+                    begin: /#'\s*(?=@[a-zA-Z]+)/,
+                    endsParent: true,
+                  },
+                  {
+                    begin: /#'/,
+                    end: /$/,
+                    excludeBegin: true,
+                  }
+                ]
+              }
+            },
+            {
+              // Handle `@param` to highlight the parameter name following
+              // after.
+              className: 'doctag',
+              begin: '@param',
+              end: /$/,
+              contains: [
+                {
+                  className: 'variable',
+                  variants: [
+                    { begin: IDENT_RE },
+                    { begin: /`(?:\\.|[^`\\])+`/ }
+                  ],
+                  endsParent: true
+                }
+              ]
+            },
+            {
+              className: 'doctag',
+              begin: /@[a-zA-Z]+/
+            },
+            {
+              className: 'meta-keyword',
+              begin: /\\[a-zA-Z]+/,
+            }
+          ]
+        }
+      ),
+
+      hljs.HASH_COMMENT_MODE,
+
+      {
+        className: 'string',
+        contains: [hljs.BACKSLASH_ESCAPE],
+        variants: [
+          hljs.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\(/, end: /\)(-*)"/ }),
+          hljs.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\{/, end: /\}(-*)"/ }),
+          hljs.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\[/, end: /\](-*)"/ }),
+          hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\(/, end: /\)(-*)'/ }),
+          hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\{/, end: /\}(-*)'/ }),
+          hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\[/, end: /\](-*)'/ }),
+          {begin: '"', end: '"', relevance: 0},
+          {begin: "'", end: "'", relevance: 0}
+        ],
+      },
+      {
+        className: 'number',
+        relevance: 0,
+        beforeMatch: /([^a-zA-Z0-9._])/, // not part of an identifier
+        variants: [
+          // TODO: replace with negative look-behind when available
+          // { begin: /(? {
+
+/*
+Language: ReasonML
+Description: Reason lets you write simple, fast and quality type safe code while leveraging both the JavaScript & OCaml ecosystems.
+Website: https://reasonml.github.io
+Author: Gidi Meir Morris 
+Category: functional
+*/
+function reasonml(hljs) {
+  function orReValues(ops) {
+    return ops
+      .map(function(op) {
+        return op
+          .split('')
+          .map(function(char) {
+            return '\\' + char;
+          })
+          .join('');
+      })
+      .join('|');
+  }
+
+  const RE_IDENT = '~?[a-z$_][0-9a-zA-Z$_]*';
+  const RE_MODULE_IDENT = '`?[A-Z$_][0-9a-zA-Z$_]*';
+
+  const RE_PARAM_TYPEPARAM = '\'?[a-z$_][0-9a-z$_]*';
+  const RE_PARAM_TYPE = '\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*(' + RE_PARAM_TYPEPARAM + '\\s*(,' + RE_PARAM_TYPEPARAM + '\\s*)*)?\\))?';
+  const RE_PARAM = RE_IDENT + '(' + RE_PARAM_TYPE + '){0,2}';
+  const RE_OPERATOR = "(" + orReValues([
+    '||',
+    '++',
+    '**',
+    '+.',
+    '*',
+    '/',
+    '*.',
+    '/.',
+    '...'
+  ]) + "|\\|>|&&|==|===)";
+  const RE_OPERATOR_SPACED = "\\s+" + RE_OPERATOR + "\\s+";
+
+  const KEYWORDS = {
+    keyword:
+      'and as asr assert begin class constraint do done downto else end exception external ' +
+      'for fun function functor if in include inherit initializer ' +
+      'land lazy let lor lsl lsr lxor match method mod module mutable new nonrec ' +
+      'object of open or private rec sig struct then to try type val virtual when while with',
+    built_in:
+      'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ',
+    literal:
+      'true false'
+  };
+
+  const RE_NUMBER = '\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +
+    '0[oO][0-7_]+[Lln]?|' +
+    '0[bB][01_]+[Lln]?|' +
+    '[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)';
+
+  const NUMBER_MODE = {
+    className: 'number',
+    relevance: 0,
+    variants: [
+      {
+        begin: RE_NUMBER
+      },
+      {
+        begin: '\\(-' + RE_NUMBER + '\\)'
+      }
+    ]
+  };
+
+  const OPERATOR_MODE = {
+    className: 'operator',
+    relevance: 0,
+    begin: RE_OPERATOR
+  };
+  const LIST_CONTENTS_MODES = [
+    {
+      className: 'identifier',
+      relevance: 0,
+      begin: RE_IDENT
+    },
+    OPERATOR_MODE,
+    NUMBER_MODE
+  ];
+
+  const MODULE_ACCESS_CONTENTS = [
+    hljs.QUOTE_STRING_MODE,
+    OPERATOR_MODE,
+    {
+      className: 'module',
+      begin: "\\b" + RE_MODULE_IDENT,
+      returnBegin: true,
+      end: "\.",
+      contains: [
+        {
+          className: 'identifier',
+          begin: RE_MODULE_IDENT,
+          relevance: 0
+        }
+      ]
+    }
+  ];
+
+  const PARAMS_CONTENTS = [
+    {
+      className: 'module',
+      begin: "\\b" + RE_MODULE_IDENT,
+      returnBegin: true,
+      end: "\.",
+      relevance: 0,
+      contains: [
+        {
+          className: 'identifier',
+          begin: RE_MODULE_IDENT,
+          relevance: 0
+        }
+      ]
+    }
+  ];
+
+  const PARAMS_MODE = {
+    begin: RE_IDENT,
+    end: '(,|\\n|\\))',
+    relevance: 0,
+    contains: [
+      OPERATOR_MODE,
+      {
+        className: 'typing',
+        begin: ':',
+        end: '(,|\\n)',
+        returnBegin: true,
+        relevance: 0,
+        contains: PARAMS_CONTENTS
+      }
+    ]
+  };
+
+  const FUNCTION_BLOCK_MODE = {
+    className: 'function',
+    relevance: 0,
+    keywords: KEYWORDS,
+    variants: [
+      {
+        begin: '\\s(\\(\\.?.*?\\)|' + RE_IDENT + ')\\s*=>',
+        end: '\\s*=>',
+        returnBegin: true,
+        relevance: 0,
+        contains: [
+          {
+            className: 'params',
+            variants: [
+              {
+                begin: RE_IDENT
+              },
+              {
+                begin: RE_PARAM
+              },
+              {
+                begin: /\(\s*\)/
+              }
+            ]
+          }
+        ]
+      },
+      {
+        begin: '\\s\\(\\.?[^;\\|]*\\)\\s*=>',
+        end: '\\s=>',
+        returnBegin: true,
+        relevance: 0,
+        contains: [
+          {
+            className: 'params',
+            relevance: 0,
+            variants: [ PARAMS_MODE ]
+          }
+        ]
+      },
+      {
+        begin: '\\(\\.\\s' + RE_IDENT + '\\)\\s*=>'
+      }
+    ]
+  };
+  MODULE_ACCESS_CONTENTS.push(FUNCTION_BLOCK_MODE);
+
+  const CONSTRUCTOR_MODE = {
+    className: 'constructor',
+    begin: RE_MODULE_IDENT + '\\(',
+    end: '\\)',
+    illegal: '\\n',
+    keywords: KEYWORDS,
+    contains: [
+      hljs.QUOTE_STRING_MODE,
+      OPERATOR_MODE,
+      {
+        className: 'params',
+        begin: '\\b' + RE_IDENT
+      }
+    ]
+  };
+
+  const PATTERN_MATCH_BLOCK_MODE = {
+    className: 'pattern-match',
+    begin: '\\|',
+    returnBegin: true,
+    keywords: KEYWORDS,
+    end: '=>',
+    relevance: 0,
+    contains: [
+      CONSTRUCTOR_MODE,
+      OPERATOR_MODE,
+      {
+        relevance: 0,
+        className: 'constructor',
+        begin: RE_MODULE_IDENT
+      }
+    ]
+  };
+
+  const MODULE_ACCESS_MODE = {
+    className: 'module-access',
+    keywords: KEYWORDS,
+    returnBegin: true,
+    variants: [
+      {
+        begin: "\\b(" + RE_MODULE_IDENT + "\\.)+" + RE_IDENT
+      },
+      {
+        begin: "\\b(" + RE_MODULE_IDENT + "\\.)+\\(",
+        end: "\\)",
+        returnBegin: true,
+        contains: [
+          FUNCTION_BLOCK_MODE,
+          {
+            begin: '\\(',
+            end: '\\)',
+            skip: true
+          }
+        ].concat(MODULE_ACCESS_CONTENTS)
+      },
+      {
+        begin: "\\b(" + RE_MODULE_IDENT + "\\.)+\\{",
+        end: /\}/
+      }
+    ],
+    contains: MODULE_ACCESS_CONTENTS
+  };
+
+  PARAMS_CONTENTS.push(MODULE_ACCESS_MODE);
+
+  return {
+    name: 'ReasonML',
+    aliases: [ 're' ],
+    keywords: KEYWORDS,
+    illegal: '(:-|:=|\\$\\{|\\+=)',
+    contains: [
+      hljs.COMMENT('/\\*', '\\*/', {
+        illegal: '^(#,\\/\\/)'
+      }),
+      {
+        className: 'character',
+        begin: '\'(\\\\[^\']+|[^\'])\'',
+        illegal: '\\n',
+        relevance: 0
+      },
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'literal',
+        begin: '\\(\\)',
+        relevance: 0
+      },
+      {
+        className: 'literal',
+        begin: '\\[\\|',
+        end: '\\|\\]',
+        relevance: 0,
+        contains: LIST_CONTENTS_MODES
+      },
+      {
+        className: 'literal',
+        begin: '\\[',
+        end: '\\]',
+        relevance: 0,
+        contains: LIST_CONTENTS_MODES
+      },
+      CONSTRUCTOR_MODE,
+      {
+        className: 'operator',
+        begin: RE_OPERATOR_SPACED,
+        illegal: '-->',
+        relevance: 0
+      },
+      NUMBER_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      PATTERN_MATCH_BLOCK_MODE,
+      FUNCTION_BLOCK_MODE,
+      {
+        className: 'module-def',
+        begin: "\\bmodule\\s+" + RE_IDENT + "\\s+" + RE_MODULE_IDENT + "\\s+=\\s+\\{",
+        end: /\}/,
+        returnBegin: true,
+        keywords: KEYWORDS,
+        relevance: 0,
+        contains: [
+          {
+            className: 'module',
+            relevance: 0,
+            begin: RE_MODULE_IDENT
+          },
+          {
+            begin: /\{/,
+            end: /\}/,
+            skip: true
+          }
+        ].concat(MODULE_ACCESS_CONTENTS)
+      },
+      MODULE_ACCESS_MODE
+    ]
+  };
+}
+
+module.exports = reasonml;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/rib.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/rib.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: RenderMan RIB
+Author: Konstantin Evdokimenko 
+Contributors: Shuen-Huei Guan 
+Website: https://renderman.pixar.com/resources/RenderMan_20/ribBinding.html
+Category: graphics
+*/
+
+function rib(hljs) {
+  return {
+    name: 'RenderMan RIB',
+    keywords:
+      'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' +
+      'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' +
+      'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' +
+      'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' +
+      'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' +
+      'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' +
+      'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' +
+      'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' +
+      'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' +
+      'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' +
+      'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' +
+      'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' +
+      'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' +
+      'TransformPoints Translate TrimCurve WorldBegin WorldEnd',
+    illegal: ' {
+
+/*
+Language: Roboconf
+Author: Vincent Zurczak 
+Description: Syntax highlighting for Roboconf's DSL
+Website: http://roboconf.net
+Category: config
+*/
+
+function roboconf(hljs) {
+  const IDENTIFIER = '[a-zA-Z-_][^\\n{]+\\{';
+
+  const PROPERTY = {
+    className: 'attribute',
+    begin: /[a-zA-Z-_]+/,
+    end: /\s*:/,
+    excludeEnd: true,
+    starts: {
+      end: ';',
+      relevance: 0,
+      contains: [
+        {
+          className: 'variable',
+          begin: /\.[a-zA-Z-_]+/
+        },
+        {
+          className: 'keyword',
+          begin: /\(optional\)/
+        }
+      ]
+    }
+  };
+
+  return {
+    name: 'Roboconf',
+    aliases: [
+      'graph',
+      'instances'
+    ],
+    case_insensitive: true,
+    keywords: 'import',
+    contains: [
+      // Facet sections
+      {
+        begin: '^facet ' + IDENTIFIER,
+        end: /\}/,
+        keywords: 'facet',
+        contains: [
+          PROPERTY,
+          hljs.HASH_COMMENT_MODE
+        ]
+      },
+
+      // Instance sections
+      {
+        begin: '^\\s*instance of ' + IDENTIFIER,
+        end: /\}/,
+        keywords: 'name count channels instance-data instance-state instance of',
+        illegal: /\S/,
+        contains: [
+          'self',
+          PROPERTY,
+          hljs.HASH_COMMENT_MODE
+        ]
+      },
+
+      // Component sections
+      {
+        begin: '^' + IDENTIFIER,
+        end: /\}/,
+        contains: [
+          PROPERTY,
+          hljs.HASH_COMMENT_MODE
+        ]
+      },
+
+      // Comments
+      hljs.HASH_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = roboconf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/routeros.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/routeros.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Microtik RouterOS script
+Author: Ivan Dementev 
+Description: Scripting host provides a way to automate some router maintenance tasks by means of executing user-defined scripts bounded to some event occurrence
+Website: https://wiki.mikrotik.com/wiki/Manual:Scripting
+*/
+
+// Colors from RouterOS terminal:
+//   green        - #0E9A00
+//   teal         - #0C9A9A
+//   purple       - #99069A
+//   light-brown  - #9A9900
+
+function routeros(hljs) {
+  const STATEMENTS = 'foreach do while for if from to step else on-error and or not in';
+
+  // Global commands: Every global command should start with ":" token, otherwise it will be treated as variable.
+  const GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime';
+
+  // Common commands: Following commands available from most sub-menus:
+  const COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning';
+
+  const LITERALS = 'true false yes no nothing nil null';
+
+  const OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw';
+
+  const VAR = {
+    className: 'variable',
+    variants: [
+      {
+        begin: /\$[\w\d#@][\w\d_]*/
+      },
+      {
+        begin: /\$\{(.*?)\}/
+      }
+    ]
+  };
+
+  const QUOTE_STRING = {
+    className: 'string',
+    begin: /"/,
+    end: /"/,
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      VAR,
+      {
+        className: 'variable',
+        begin: /\$\(/,
+        end: /\)/,
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      }
+    ]
+  };
+
+  const APOS_STRING = {
+    className: 'string',
+    begin: /'/,
+    end: /'/
+  };
+
+  return {
+    name: 'Microtik RouterOS script',
+    aliases: [
+      'mikrotik'
+    ],
+    case_insensitive: true,
+    keywords: {
+      $pattern: /:?[\w-]+/,
+      literal: LITERALS,
+      keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :')
+    },
+    contains: [
+      { // illegal syntax
+        variants: [
+          { // -- comment
+            begin: /\/\*/,
+            end: /\*\//
+          },
+          { // Stan comment
+            begin: /\/\//,
+            end: /$/
+          },
+          { // HTML tags
+            begin: /<\//,
+            end: />/
+          }
+        ],
+        illegal: /./
+      },
+      hljs.COMMENT('^#', '$'),
+      QUOTE_STRING,
+      APOS_STRING,
+      VAR,
+      // attribute=value
+      {
+        // > is to avoid matches with => in other grammars
+        begin: /[\w-]+=([^\s{}[\]()>]+)/,
+        relevance: 0,
+        returnBegin: true,
+        contains: [
+          {
+            className: 'attribute',
+            begin: /[^=]+/
+          },
+          {
+            begin: /=/,
+            endsWithParent: true,
+            relevance: 0,
+            contains: [
+              QUOTE_STRING,
+              APOS_STRING,
+              VAR,
+              {
+                className: 'literal',
+                begin: '\\b(' + LITERALS.split(' ').join('|') + ')\\b'
+              },
+              {
+                // Do not format unclassified values. Needed to exclude highlighting of values as built_in.
+                begin: /("[^"]*"|[^\s{}[\]]+)/
+              }
+              /*
+              {
+                // IPv4 addresses and subnets
+                className: 'number',
+                variants: [
+                  {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24
+                  {begin: IPADDR+'-'+IPADDR},       // 192.168.0.1-192.168.0.3
+                  {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1
+                ]
+              },
+              {
+                // MAC addresses and DHCP Client IDs
+                className: 'number',
+                begin: /\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\b/,
+              },
+              */
+            ]
+          }
+        ]
+      },
+      {
+        // HEX values
+        className: 'number',
+        begin: /\*[0-9a-fA-F]+/
+      },
+      {
+        begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s[(\\]|])',
+        returnBegin: true,
+        contains: [
+          {
+            className: 'builtin-name', // 'function',
+            begin: /\w+/
+          }
+        ]
+      },
+      {
+        className: 'built_in',
+        variants: [
+          {
+            begin: '(\\.\\./|/|\\s)((' + OBJECTS.split(' ').join('|') + ');?\\s)+'
+          },
+          {
+            begin: /\.\./,
+            relevance: 0
+          }
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = routeros;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/rsl.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/rsl.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: RenderMan RSL
+Author: Konstantin Evdokimenko 
+Contributors: Shuen-Huei Guan 
+Website: https://renderman.pixar.com/resources/RenderMan_20/shadingLanguage.html
+Category: graphics
+*/
+
+function rsl(hljs) {
+  return {
+    name: 'RenderMan RSL',
+    keywords: {
+      keyword:
+        'float color point normal vector matrix while for if do return else break extern continue',
+      built_in:
+        'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +
+        'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +
+        'faceforward filterstep floor format fresnel incident length lightsource log match ' +
+        'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +
+        'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +
+        'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +
+        'texture textureinfo trace transform vtransform xcomp ycomp zcomp'
+    },
+    illegal: ' {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Ruby
+Description: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.
+Website: https://www.ruby-lang.org/
+Author: Anton Kovalyov 
+Contributors: Peter Leonov , Vasily Polovnyov , Loren Segal , Pascal Hurni , Cedric Sohrauer 
+Category: common
+*/
+
+function ruby(hljs) {
+  const RUBY_METHOD_RE = '([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)';
+  const RUBY_KEYWORDS = {
+    keyword:
+      'and then defined module in return redo if BEGIN retry end for self when ' +
+      'next until do begin unless END rescue else break undef not super class case ' +
+      'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor ' +
+      '__FILE__',
+    built_in: 'proc lambda',
+    literal:
+      'true false nil'
+  };
+  const YARDOCTAG = {
+    className: 'doctag',
+    begin: '@[A-Za-z]+'
+  };
+  const IRB_OBJECT = {
+    begin: '#<',
+    end: '>'
+  };
+  const COMMENT_MODES = [
+    hljs.COMMENT(
+      '#',
+      '$',
+      {
+        contains: [ YARDOCTAG ]
+      }
+    ),
+    hljs.COMMENT(
+      '^=begin',
+      '^=end',
+      {
+        contains: [ YARDOCTAG ],
+        relevance: 10
+      }
+    ),
+    hljs.COMMENT('^__END__', '\\n$')
+  ];
+  const SUBST = {
+    className: 'subst',
+    begin: /#\{/,
+    end: /\}/,
+    keywords: RUBY_KEYWORDS
+  };
+  const STRING = {
+    className: 'string',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      SUBST
+    ],
+    variants: [
+      {
+        begin: /'/,
+        end: /'/
+      },
+      {
+        begin: /"/,
+        end: /"/
+      },
+      {
+        begin: /`/,
+        end: /`/
+      },
+      {
+        begin: /%[qQwWx]?\(/,
+        end: /\)/
+      },
+      {
+        begin: /%[qQwWx]?\[/,
+        end: /\]/
+      },
+      {
+        begin: /%[qQwWx]?\{/,
+        end: /\}/
+      },
+      {
+        begin: /%[qQwWx]?/
+      },
+      {
+        begin: /%[qQwWx]?\//,
+        end: /\//
+      },
+      {
+        begin: /%[qQwWx]?%/,
+        end: /%/
+      },
+      {
+        begin: /%[qQwWx]?-/,
+        end: /-/
+      },
+      {
+        begin: /%[qQwWx]?\|/,
+        end: /\|/
+      },
+      // in the following expressions, \B in the beginning suppresses recognition of ?-sequences
+      // where ? is the last character of a preceding identifier, as in: `func?4`
+      {
+        begin: /\B\?(\\\d{1,3})/
+      },
+      {
+        begin: /\B\?(\\x[A-Fa-f0-9]{1,2})/
+      },
+      {
+        begin: /\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/
+      },
+      {
+        begin: /\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/
+      },
+      {
+        begin: /\B\?\\(c|C-)[\x20-\x7e]/
+      },
+      {
+        begin: /\B\?\\?\S/
+      },
+      { // heredocs
+        begin: /<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,
+        returnBegin: true,
+        contains: [
+          {
+            begin: /<<[-~]?'?/
+          },
+          hljs.END_SAME_AS_BEGIN({
+            begin: /(\w+)/,
+            end: /(\w+)/,
+            contains: [
+              hljs.BACKSLASH_ESCAPE,
+              SUBST
+            ]
+          })
+        ]
+      }
+    ]
+  };
+
+  // Ruby syntax is underdocumented, but this grammar seems to be accurate
+  // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)
+  // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers
+  const decimal = '[1-9](_?[0-9])*|0';
+  const digits = '[0-9](_?[0-9])*';
+  const NUMBER = {
+    className: 'number',
+    relevance: 0,
+    variants: [
+      // decimal integer/float, optionally exponential or rational, optionally imaginary
+      {
+        begin: `\\b(${decimal})(\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\b`
+      },
+
+      // explicit decimal/binary/octal/hexadecimal integer,
+      // optionally rational and/or imaginary
+      {
+        begin: "\\b0[dD][0-9](_?[0-9])*r?i?\\b"
+      },
+      {
+        begin: "\\b0[bB][0-1](_?[0-1])*r?i?\\b"
+      },
+      {
+        begin: "\\b0[oO][0-7](_?[0-7])*r?i?\\b"
+      },
+      {
+        begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"
+      },
+
+      // 0-prefixed implicit octal integer, optionally rational and/or imaginary
+      {
+        begin: "\\b0(_?[0-7])+r?i?\\b"
+      }
+    ]
+  };
+
+  const PARAMS = {
+    className: 'params',
+    begin: '\\(',
+    end: '\\)',
+    endsParent: true,
+    keywords: RUBY_KEYWORDS
+  };
+
+  const RUBY_DEFAULT_CONTAINS = [
+    STRING,
+    {
+      className: 'class',
+      beginKeywords: 'class module',
+      end: '$|;',
+      illegal: /=/,
+      contains: [
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: '[A-Za-z_]\\w*(::\\w+)*(\\?|!)?'
+        }),
+        {
+          begin: '<\\s*',
+          contains: [
+            {
+              begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE,
+              // we already get points for <, we don't need poitns
+              // for the name also
+              relevance: 0
+            }
+          ]
+        }
+      ].concat(COMMENT_MODES)
+    },
+    {
+      className: 'function',
+      // def method_name(
+      // def method_name;
+      // def method_name (end of line)
+      begin: concat(/def\s+/, lookahead(RUBY_METHOD_RE + "\\s*(\\(|;|$)")),
+      relevance: 0, // relevance comes from kewords
+      keywords: "def",
+      end: '$|;',
+      contains: [
+        hljs.inherit(hljs.TITLE_MODE, {
+          begin: RUBY_METHOD_RE
+        }),
+        PARAMS
+      ].concat(COMMENT_MODES)
+    },
+    {
+      // swallow namespace qualifiers before symbols
+      begin: hljs.IDENT_RE + '::'
+    },
+    {
+      className: 'symbol',
+      begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:',
+      relevance: 0
+    },
+    {
+      className: 'symbol',
+      begin: ':(?!\\s)',
+      contains: [
+        STRING,
+        {
+          begin: RUBY_METHOD_RE
+        }
+      ],
+      relevance: 0
+    },
+    NUMBER,
+    {
+      // negative-look forward attemps to prevent false matches like:
+      // @ident@ or $ident$ that might indicate this is not ruby at all
+      className: "variable",
+      begin: '(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`
+    },
+    {
+      className: 'params',
+      begin: /\|/,
+      end: /\|/,
+      relevance: 0, // this could be a lot of things (in other languages) other than params
+      keywords: RUBY_KEYWORDS
+    },
+    { // regexp container
+      begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\s*',
+      keywords: 'unless',
+      contains: [
+        {
+          className: 'regexp',
+          contains: [
+            hljs.BACKSLASH_ESCAPE,
+            SUBST
+          ],
+          illegal: /\n/,
+          variants: [
+            {
+              begin: '/',
+              end: '/[a-z]*'
+            },
+            {
+              begin: /%r\{/,
+              end: /\}[a-z]*/
+            },
+            {
+              begin: '%r\\(',
+              end: '\\)[a-z]*'
+            },
+            {
+              begin: '%r!',
+              end: '![a-z]*'
+            },
+            {
+              begin: '%r\\[',
+              end: '\\][a-z]*'
+            }
+          ]
+        }
+      ].concat(IRB_OBJECT, COMMENT_MODES),
+      relevance: 0
+    }
+  ].concat(IRB_OBJECT, COMMENT_MODES);
+
+  SUBST.contains = RUBY_DEFAULT_CONTAINS;
+  PARAMS.contains = RUBY_DEFAULT_CONTAINS;
+
+  // >>
+  // ?>
+  const SIMPLE_PROMPT = "[>?]>";
+  // irb(main):001:0>
+  const DEFAULT_PROMPT = "[\\w#]+\\(\\w+\\):\\d+:\\d+>";
+  const RVM_PROMPT = "(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>";
+
+  const IRB_DEFAULT = [
+    {
+      begin: /^\s*=>/,
+      starts: {
+        end: '$',
+        contains: RUBY_DEFAULT_CONTAINS
+      }
+    },
+    {
+      className: 'meta',
+      begin: '^(' + SIMPLE_PROMPT + "|" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])',
+      starts: {
+        end: '$',
+        contains: RUBY_DEFAULT_CONTAINS
+      }
+    }
+  ];
+
+  COMMENT_MODES.unshift(IRB_OBJECT);
+
+  return {
+    name: 'Ruby',
+    aliases: [
+      'rb',
+      'gemspec',
+      'podspec',
+      'thor',
+      'irb'
+    ],
+    keywords: RUBY_KEYWORDS,
+    illegal: /\/\*/,
+    contains: [
+      hljs.SHEBANG({
+        binary: "ruby"
+      })
+    ]
+      .concat(IRB_DEFAULT)
+      .concat(COMMENT_MODES)
+      .concat(RUBY_DEFAULT_CONTAINS)
+  };
+}
+
+module.exports = ruby;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/ruleslanguage.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/ruleslanguage.js ***!
+  \******************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Oracle Rules Language
+Author: Jason Jacobson 
+Description: The Oracle Utilities Rules Language is used to program the Oracle Utilities Applications acquired from LODESTAR Corporation.  The products include Billing Component, LPSS, Pricing Component etc. through version 1.6.1.
+Website: https://docs.oracle.com/cd/E17904_01/dev.1111/e10227/rlref.htm
+Category: enterprise
+*/
+
+function ruleslanguage(hljs) {
+  return {
+    name: 'Oracle Rules Language',
+    keywords: {
+      keyword:
+        'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +
+        'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +
+        'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +
+        'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +
+        'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +
+        'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +
+        'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +
+        'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +
+        'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +
+        'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +
+        'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +
+        'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +
+        'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +
+        'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +
+        'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +
+        'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +
+        'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +
+        'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +
+        'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +
+        'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +
+        'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +
+        'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +
+        'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +
+        'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +
+        'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +
+        'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +
+        'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +
+        'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +
+        'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +
+        'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +
+        'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +
+        'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +
+        'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +
+        'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +
+        'NUMDAYS READ_DATE STAGING',
+      built_in:
+        'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +
+        'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +
+        'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +
+        'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +
+        'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'literal',
+        variants: [
+          { // looks like #-comment
+            begin: '#\\s+',
+            relevance: 0
+          },
+          {
+            begin: '#[a-zA-Z .]+'
+          }
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = ruleslanguage;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/rust.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/rust.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Rust
+Author: Andrey Vlasovskikh 
+Contributors: Roman Shmatov , Kasper Andersen 
+Website: https://www.rust-lang.org
+Category: common, system
+*/
+
+function rust(hljs) {
+  const NUM_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\?';
+  const KEYWORDS =
+    'abstract as async await become box break const continue crate do dyn ' +
+    'else enum extern false final fn for if impl in let loop macro match mod ' +
+    'move mut override priv pub ref return self Self static struct super ' +
+    'trait true try type typeof unsafe unsized use virtual where while yield';
+  const BUILTINS =
+    // functions
+    'drop ' +
+    // types
+    'i8 i16 i32 i64 i128 isize ' +
+    'u8 u16 u32 u64 u128 usize ' +
+    'f32 f64 ' +
+    'str char bool ' +
+    'Box Option Result String Vec ' +
+    // traits
+    'Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug ' +
+    'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +
+    'Extend IntoIterator DoubleEndedIterator ExactSizeIterator ' +
+    'SliceConcatExt ToString ' +
+    // macros
+    'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +
+    'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +
+    'include_bin! include_str! line! local_data_key! module_path! ' +
+    'option_env! print! println! select! stringify! try! unimplemented! ' +
+    'unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';
+  return {
+    name: 'Rust',
+    aliases: [ 'rs' ],
+    keywords: {
+      $pattern: hljs.IDENT_RE + '!?',
+      keyword:
+        KEYWORDS,
+      literal:
+        'true false Some None Ok Err',
+      built_in:
+        BUILTINS
+    },
+    illegal: ''
+      }
+    ]
+  };
+}
+
+module.exports = rust;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/sas.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/sas.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: SAS
+Author: Mauricio Caceres 
+Description: Syntax Highlighting for SAS
+*/
+
+function sas(hljs) {
+  // Data step and PROC SQL statements
+  const SAS_KEYWORDS =
+    'do if then else end until while ' +
+    '' +
+    'abort array attrib by call cards cards4 catname continue ' +
+    'datalines datalines4 delete delim delimiter display dm drop ' +
+    'endsas error file filename footnote format goto in infile ' +
+    'informat input keep label leave length libname link list ' +
+    'lostcard merge missing modify options output out page put ' +
+    'redirect remove rename replace retain return select set skip ' +
+    'startsas stop title update waitsas where window x systask ' +
+    '' +
+    'add and alter as cascade check create delete describe ' +
+    'distinct drop foreign from group having index insert into in ' +
+    'key like message modify msgtype not null on or order primary ' +
+    'references reset restrict select set table unique update ' +
+    'validate view where';
+
+  // Built-in SAS functions
+  const SAS_FUN =
+    'abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|' +
+    'betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|' +
+    'cexist|cinv|close|cnonct|collate|compbl|compound|' +
+    'compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|' +
+    'daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|' +
+    'datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|' +
+    'depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|' +
+    'digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|' +
+    'dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|' +
+    'fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|' +
+    'filename|fileref|finfo|finv|fipname|fipnamel|' +
+    'fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|' +
+    'fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|' +
+    'fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|' +
+    'hms|hosthelp|hour|ibessel|index|indexc|indexw|input|' +
+    'inputc|inputn|int|intck|intnx|intrr|irr|jbessel|' +
+    'juldate|kurtosis|lag|lbound|left|length|lgamma|' +
+    'libname|libref|log|log10|log2|logpdf|logpmf|logsdf|' +
+    'lowcase|max|mdy|mean|min|minute|mod|month|mopen|' +
+    'mort|n|netpv|nmiss|normal|note|npv|open|ordinal|' +
+    'pathname|pdf|peek|peekc|pmf|point|poisson|poke|' +
+    'probbeta|probbnml|probchi|probf|probgam|probhypr|' +
+    'probit|probnegb|probnorm|probt|put|putc|putn|qtr|' +
+    'quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|' +
+    'ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|' +
+    'rewind|right|round|saving|scan|sdf|second|sign|' +
+    'sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|' +
+    'stfips|stname|stnamel|substr|sum|symget|sysget|' +
+    'sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|' +
+    'tinv|tnonct|today|translate|tranwrd|trigamma|' +
+    'trim|trimn|trunc|uniform|upcase|uss|var|varfmt|' +
+    'varinfmt|varlabel|varlen|varname|varnum|varray|' +
+    'varrayx|vartype|verify|vformat|vformatd|vformatdx|' +
+    'vformatn|vformatnx|vformatw|vformatwx|vformatx|' +
+    'vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|' +
+    'vinformatn|vinformatnx|vinformatw|vinformatwx|' +
+    'vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|' +
+    'vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|' +
+    'zipnamel|zipstate';
+
+  // Built-in macro functions
+  const SAS_MACRO_FUN =
+    'bquote|nrbquote|cmpres|qcmpres|compstor|' +
+    'datatyp|display|do|else|end|eval|global|goto|' +
+    'if|index|input|keydef|label|left|length|let|' +
+    'local|lowcase|macro|mend|nrbquote|nrquote|' +
+    'nrstr|put|qcmpres|qleft|qlowcase|qscan|' +
+    'qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|' +
+    'substr|superq|syscall|sysevalf|sysexec|sysfunc|' +
+    'sysget|syslput|sysprod|sysrc|sysrput|then|to|' +
+    'trim|unquote|until|upcase|verify|while|window';
+
+  return {
+    name: 'SAS',
+    case_insensitive: true, // SAS is case-insensitive
+    keywords: {
+      literal:
+        'null missing _all_ _automatic_ _character_ _infile_ ' +
+        '_n_ _name_ _null_ _numeric_ _user_ _webout_',
+      meta:
+        SAS_KEYWORDS
+    },
+    contains: [
+      {
+        // Distinct highlight for proc , data, run, quit
+        className: 'keyword',
+        begin: /^\s*(proc [\w\d_]+|data|run|quit)[\s;]/
+      },
+      {
+        // Macro variables
+        className: 'variable',
+        begin: /&[a-zA-Z_&][a-zA-Z0-9_]*\.?/
+      },
+      {
+        // Special emphasis for datalines|cards
+        className: 'emphasis',
+        begin: /^\s*datalines|cards.*;/,
+        end: /^\s*;\s*$/
+      },
+      { // Built-in macro variables take precedence
+        className: 'built_in',
+        begin: '%(' + SAS_MACRO_FUN + ')'
+      },
+      {
+        // User-defined macro functions highlighted after
+        className: 'name',
+        begin: /%[a-zA-Z_][a-zA-Z_0-9]*/
+      },
+      {
+        className: 'meta',
+        begin: '[^%](' + SAS_FUN + ')[\(]'
+      },
+      {
+        className: 'string',
+        variants: [
+          hljs.APOS_STRING_MODE,
+          hljs.QUOTE_STRING_MODE
+        ]
+      },
+      hljs.COMMENT('\\*', ';'),
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = sas;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/scala.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/scala.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Scala
+Category: functional
+Author: Jan Berkel 
+Contributors: Erik Osheim 
+Website: https://www.scala-lang.org
+*/
+
+function scala(hljs) {
+  const ANNOTATION = {
+    className: 'meta',
+    begin: '@[A-Za-z]+'
+  };
+
+  // used in strings for escaping/interpolation/substitution
+  const SUBST = {
+    className: 'subst',
+    variants: [
+      {
+        begin: '\\$[A-Za-z0-9_]+'
+      },
+      {
+        begin: /\$\{/,
+        end: /\}/
+      }
+    ]
+  };
+
+  const STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: '"""',
+        end: '"""'
+      },
+      {
+        begin: '"',
+        end: '"',
+        illegal: '\\n',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        begin: '[a-z]+"',
+        end: '"',
+        illegal: '\\n',
+        contains: [
+          hljs.BACKSLASH_ESCAPE,
+          SUBST
+        ]
+      },
+      {
+        className: 'string',
+        begin: '[a-z]+"""',
+        end: '"""',
+        contains: [ SUBST ],
+        relevance: 10
+      }
+    ]
+
+  };
+
+  const SYMBOL = {
+    className: 'symbol',
+    begin: '\'\\w[\\w\\d_]*(?!\')'
+  };
+
+  const TYPE = {
+    className: 'type',
+    begin: '\\b[A-Z][A-Za-z0-9_]*',
+    relevance: 0
+  };
+
+  const NAME = {
+    className: 'title',
+    begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,
+    relevance: 0
+  };
+
+  const CLASS = {
+    className: 'class',
+    beginKeywords: 'class object trait type',
+    end: /[:={\[\n;]/,
+    excludeEnd: true,
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        beginKeywords: 'extends with',
+        relevance: 10
+      },
+      {
+        begin: /\[/,
+        end: /\]/,
+        excludeBegin: true,
+        excludeEnd: true,
+        relevance: 0,
+        contains: [ TYPE ]
+      },
+      {
+        className: 'params',
+        begin: /\(/,
+        end: /\)/,
+        excludeBegin: true,
+        excludeEnd: true,
+        relevance: 0,
+        contains: [ TYPE ]
+      },
+      NAME
+    ]
+  };
+
+  const METHOD = {
+    className: 'function',
+    beginKeywords: 'def',
+    end: /[:={\[(\n;]/,
+    excludeEnd: true,
+    contains: [ NAME ]
+  };
+
+  return {
+    name: 'Scala',
+    keywords: {
+      literal: 'true false null',
+      keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      STRING,
+      SYMBOL,
+      TYPE,
+      METHOD,
+      CLASS,
+      hljs.C_NUMBER_MODE,
+      ANNOTATION
+    ]
+  };
+}
+
+module.exports = scala;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/scheme.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/scheme.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Scheme
+Description: Scheme is a programming language in the Lisp family.
+             (keywords based on http://community.schemewiki.org/?scheme-keywords)
+Author: JP Verkamp 
+Contributors: Ivan Sagalaev 
+Origin: clojure.js
+Website: http://community.schemewiki.org/?what-is-scheme
+Category: lisp
+*/
+
+function scheme(hljs) {
+  const SCHEME_IDENT_RE = '[^\\(\\)\\[\\]\\{\\}",\'`;#|\\\\\\s]+';
+  const SCHEME_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+([./]\\d+)?';
+  const SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';
+  const KEYWORDS = {
+    $pattern: SCHEME_IDENT_RE,
+    'builtin-name':
+      'case-lambda call/cc class define-class exit-handler field import ' +
+      'inherit init-field interface let*-values let-values let/ec mixin ' +
+      'opt-lambda override protect provide public rename require ' +
+      'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +
+      'when with-syntax and begin call-with-current-continuation ' +
+      'call-with-input-file call-with-output-file case cond define ' +
+      'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +
+      'let-syntax letrec letrec-syntax map or syntax-rules \' * + , ,@ - ... / ' +
+      '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +
+      'boolean? caar cadr call-with-input-file call-with-output-file ' +
+      'call-with-values car cdddar cddddr cdr ceiling char->integer ' +
+      'char-alphabetic? char-ci<=? char-ci=? char-ci>? ' +
+      'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +
+      'char-upper-case? char-whitespace? char<=? char=? char>? ' +
+      'char? close-input-port close-output-port complex? cons cos ' +
+      'current-input-port current-output-port denominator display eof-object? ' +
+      'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +
+      'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +
+      'integer? interaction-environment lcm length list list->string ' +
+      'list->vector list-ref list-tail list? load log magnitude make-polar ' +
+      'make-rectangular make-string make-vector max member memq memv min ' +
+      'modulo negative? newline not null-environment null? number->string ' +
+      'number? numerator odd? open-input-file open-output-file output-port? ' +
+      'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +
+      'rational? rationalize read read-char real-part real? remainder reverse ' +
+      'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +
+      'string->list string->number string->symbol string-append string-ci<=? ' +
+      'string-ci=? string-ci>? string-copy ' +
+      'string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? ' +
+      'tan transcript-off transcript-on truncate values vector ' +
+      'vector->list vector-fill! vector-length vector-ref vector-set! ' +
+      'with-input-from-file with-output-to-file write write-char zero?'
+  };
+
+  const LITERAL = {
+    className: 'literal',
+    begin: '(#t|#f|#\\\\' + SCHEME_IDENT_RE + '|#\\\\.)'
+  };
+
+  const NUMBER = {
+    className: 'number',
+    variants: [
+      {
+        begin: SCHEME_SIMPLE_NUMBER_RE,
+        relevance: 0
+      },
+      {
+        begin: SCHEME_COMPLEX_NUMBER_RE,
+        relevance: 0
+      },
+      {
+        begin: '#b[0-1]+(/[0-1]+)?'
+      },
+      {
+        begin: '#o[0-7]+(/[0-7]+)?'
+      },
+      {
+        begin: '#x[0-9a-f]+(/[0-9a-f]+)?'
+      }
+    ]
+  };
+
+  const STRING = hljs.QUOTE_STRING_MODE;
+
+  const COMMENT_MODES = [
+    hljs.COMMENT(
+      ';',
+      '$',
+      {
+        relevance: 0
+      }
+    ),
+    hljs.COMMENT('#\\|', '\\|#')
+  ];
+
+  const IDENT = {
+    begin: SCHEME_IDENT_RE,
+    relevance: 0
+  };
+
+  const QUOTED_IDENT = {
+    className: 'symbol',
+    begin: '\'' + SCHEME_IDENT_RE
+  };
+
+  const BODY = {
+    endsWithParent: true,
+    relevance: 0
+  };
+
+  const QUOTED_LIST = {
+    variants: [
+      {
+        begin: /'/
+      },
+      {
+        begin: '`'
+      }
+    ],
+    contains: [
+      {
+        begin: '\\(',
+        end: '\\)',
+        contains: [
+          'self',
+          LITERAL,
+          STRING,
+          NUMBER,
+          IDENT,
+          QUOTED_IDENT
+        ]
+      }
+    ]
+  };
+
+  const NAME = {
+    className: 'name',
+    relevance: 0,
+    begin: SCHEME_IDENT_RE,
+    keywords: KEYWORDS
+  };
+
+  const LAMBDA = {
+    begin: /lambda/,
+    endsWithParent: true,
+    returnBegin: true,
+    contains: [
+      NAME,
+      {
+        endsParent: true,
+        variants: [
+          {
+            begin: /\(/,
+            end: /\)/
+          },
+          {
+            begin: /\[/,
+            end: /\]/
+          }
+        ],
+        contains: [ IDENT ]
+      }
+    ]
+  };
+
+  const LIST = {
+    variants: [
+      {
+        begin: '\\(',
+        end: '\\)'
+      },
+      {
+        begin: '\\[',
+        end: '\\]'
+      }
+    ],
+    contains: [
+      LAMBDA,
+      NAME,
+      BODY
+    ]
+  };
+
+  BODY.contains = [
+    LITERAL,
+    NUMBER,
+    STRING,
+    IDENT,
+    QUOTED_IDENT,
+    QUOTED_LIST,
+    LIST
+  ].concat(COMMENT_MODES);
+
+  return {
+    name: 'Scheme',
+    illegal: /\S/,
+    contains: [
+      hljs.SHEBANG(),
+      NUMBER,
+      STRING,
+      QUOTED_IDENT,
+      QUOTED_LIST,
+      LIST
+    ].concat(COMMENT_MODES)
+  };
+}
+
+module.exports = scheme;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/scilab.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/scilab.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Scilab
+Author: Sylvestre Ledru 
+Origin: matlab.js
+Description: Scilab is a port from Matlab
+Website: https://www.scilab.org
+Category: scientific
+*/
+
+function scilab(hljs) {
+  const COMMON_CONTAINS = [
+    hljs.C_NUMBER_MODE,
+    {
+      className: 'string',
+      begin: '\'|\"',
+      end: '\'|\"',
+      contains: [ hljs.BACKSLASH_ESCAPE,
+        {
+          begin: '\'\''
+        } ]
+    }
+  ];
+
+  return {
+    name: 'Scilab',
+    aliases: [ 'sci' ],
+    keywords: {
+      $pattern: /%?\w+/,
+      keyword: 'abort break case clear catch continue do elseif else endfunction end for function ' +
+        'global if pause return resume select try then while',
+      literal:
+        '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',
+      built_in: // Scilab has more than 2000 functions. Just list the most commons
+       'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error ' +
+       'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty ' +
+       'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log ' +
+       'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real ' +
+       'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan ' +
+       'type typename warning zeros matrix'
+    },
+    illegal: '("|#|/\\*|\\s+/\\w+)',
+    contains: [
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: '$',
+        contains: [
+          hljs.UNDERSCORE_TITLE_MODE,
+          {
+            className: 'params',
+            begin: '\\(',
+            end: '\\)'
+          }
+        ]
+      },
+      // seems to be a guard against [ident]' or [ident].
+      // perhaps to prevent attributes from flagging as keywords?
+      {
+        begin: '[a-zA-Z_][a-zA-Z_0-9]*[\\.\']+',
+        relevance: 0
+      },
+      {
+        begin: '\\[',
+        end: '\\][\\.\']*',
+        relevance: 0,
+        contains: COMMON_CONTAINS
+      },
+      hljs.COMMENT('//', '$')
+    ].concat(COMMON_CONTAINS)
+  };
+}
+
+module.exports = scilab;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/scss.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/scss.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+const MODES = (hljs) => {
+  return {
+    IMPORTANT: {
+      className: 'meta',
+      begin: '!important'
+    },
+    HEXCOLOR: {
+      className: 'number',
+      begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'
+    },
+    ATTRIBUTE_SELECTOR_MODE: {
+      className: 'selector-attr',
+      begin: /\[/,
+      end: /\]/,
+      illegal: '$',
+      contains: [
+        hljs.APOS_STRING_MODE,
+        hljs.QUOTE_STRING_MODE
+      ]
+    }
+  };
+};
+
+const TAGS = [
+  'a',
+  'abbr',
+  'address',
+  'article',
+  'aside',
+  'audio',
+  'b',
+  'blockquote',
+  'body',
+  'button',
+  'canvas',
+  'caption',
+  'cite',
+  'code',
+  'dd',
+  'del',
+  'details',
+  'dfn',
+  'div',
+  'dl',
+  'dt',
+  'em',
+  'fieldset',
+  'figcaption',
+  'figure',
+  'footer',
+  'form',
+  'h1',
+  'h2',
+  'h3',
+  'h4',
+  'h5',
+  'h6',
+  'header',
+  'hgroup',
+  'html',
+  'i',
+  'iframe',
+  'img',
+  'input',
+  'ins',
+  'kbd',
+  'label',
+  'legend',
+  'li',
+  'main',
+  'mark',
+  'menu',
+  'nav',
+  'object',
+  'ol',
+  'p',
+  'q',
+  'quote',
+  'samp',
+  'section',
+  'span',
+  'strong',
+  'summary',
+  'sup',
+  'table',
+  'tbody',
+  'td',
+  'textarea',
+  'tfoot',
+  'th',
+  'thead',
+  'time',
+  'tr',
+  'ul',
+  'var',
+  'video'
+];
+
+const MEDIA_FEATURES = [
+  'any-hover',
+  'any-pointer',
+  'aspect-ratio',
+  'color',
+  'color-gamut',
+  'color-index',
+  'device-aspect-ratio',
+  'device-height',
+  'device-width',
+  'display-mode',
+  'forced-colors',
+  'grid',
+  'height',
+  'hover',
+  'inverted-colors',
+  'monochrome',
+  'orientation',
+  'overflow-block',
+  'overflow-inline',
+  'pointer',
+  'prefers-color-scheme',
+  'prefers-contrast',
+  'prefers-reduced-motion',
+  'prefers-reduced-transparency',
+  'resolution',
+  'scan',
+  'scripting',
+  'update',
+  'width',
+  // TODO: find a better solution?
+  'min-width',
+  'max-width',
+  'min-height',
+  'max-height'
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes
+const PSEUDO_CLASSES = [
+  'active',
+  'any-link',
+  'blank',
+  'checked',
+  'current',
+  'default',
+  'defined',
+  'dir', // dir()
+  'disabled',
+  'drop',
+  'empty',
+  'enabled',
+  'first',
+  'first-child',
+  'first-of-type',
+  'fullscreen',
+  'future',
+  'focus',
+  'focus-visible',
+  'focus-within',
+  'has', // has()
+  'host', // host or host()
+  'host-context', // host-context()
+  'hover',
+  'indeterminate',
+  'in-range',
+  'invalid',
+  'is', // is()
+  'lang', // lang()
+  'last-child',
+  'last-of-type',
+  'left',
+  'link',
+  'local-link',
+  'not', // not()
+  'nth-child', // nth-child()
+  'nth-col', // nth-col()
+  'nth-last-child', // nth-last-child()
+  'nth-last-col', // nth-last-col()
+  'nth-last-of-type', //nth-last-of-type()
+  'nth-of-type', //nth-of-type()
+  'only-child',
+  'only-of-type',
+  'optional',
+  'out-of-range',
+  'past',
+  'placeholder-shown',
+  'read-only',
+  'read-write',
+  'required',
+  'right',
+  'root',
+  'scope',
+  'target',
+  'target-within',
+  'user-invalid',
+  'valid',
+  'visited',
+  'where' // where()
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements
+const PSEUDO_ELEMENTS = [
+  'after',
+  'backdrop',
+  'before',
+  'cue',
+  'cue-region',
+  'first-letter',
+  'first-line',
+  'grammar-error',
+  'marker',
+  'part',
+  'placeholder',
+  'selection',
+  'slotted',
+  'spelling-error'
+];
+
+const ATTRIBUTES = [
+  'align-content',
+  'align-items',
+  'align-self',
+  'animation',
+  'animation-delay',
+  'animation-direction',
+  'animation-duration',
+  'animation-fill-mode',
+  'animation-iteration-count',
+  'animation-name',
+  'animation-play-state',
+  'animation-timing-function',
+  'auto',
+  'backface-visibility',
+  'background',
+  'background-attachment',
+  'background-clip',
+  'background-color',
+  'background-image',
+  'background-origin',
+  'background-position',
+  'background-repeat',
+  'background-size',
+  'border',
+  'border-bottom',
+  'border-bottom-color',
+  'border-bottom-left-radius',
+  'border-bottom-right-radius',
+  'border-bottom-style',
+  'border-bottom-width',
+  'border-collapse',
+  'border-color',
+  'border-image',
+  'border-image-outset',
+  'border-image-repeat',
+  'border-image-slice',
+  'border-image-source',
+  'border-image-width',
+  'border-left',
+  'border-left-color',
+  'border-left-style',
+  'border-left-width',
+  'border-radius',
+  'border-right',
+  'border-right-color',
+  'border-right-style',
+  'border-right-width',
+  'border-spacing',
+  'border-style',
+  'border-top',
+  'border-top-color',
+  'border-top-left-radius',
+  'border-top-right-radius',
+  'border-top-style',
+  'border-top-width',
+  'border-width',
+  'bottom',
+  'box-decoration-break',
+  'box-shadow',
+  'box-sizing',
+  'break-after',
+  'break-before',
+  'break-inside',
+  'caption-side',
+  'clear',
+  'clip',
+  'clip-path',
+  'color',
+  'column-count',
+  'column-fill',
+  'column-gap',
+  'column-rule',
+  'column-rule-color',
+  'column-rule-style',
+  'column-rule-width',
+  'column-span',
+  'column-width',
+  'columns',
+  'content',
+  'counter-increment',
+  'counter-reset',
+  'cursor',
+  'direction',
+  'display',
+  'empty-cells',
+  'filter',
+  'flex',
+  'flex-basis',
+  'flex-direction',
+  'flex-flow',
+  'flex-grow',
+  'flex-shrink',
+  'flex-wrap',
+  'float',
+  'font',
+  'font-display',
+  'font-family',
+  'font-feature-settings',
+  'font-kerning',
+  'font-language-override',
+  'font-size',
+  'font-size-adjust',
+  'font-smoothing',
+  'font-stretch',
+  'font-style',
+  'font-variant',
+  'font-variant-ligatures',
+  'font-variation-settings',
+  'font-weight',
+  'height',
+  'hyphens',
+  'icon',
+  'image-orientation',
+  'image-rendering',
+  'image-resolution',
+  'ime-mode',
+  'inherit',
+  'initial',
+  'justify-content',
+  'left',
+  'letter-spacing',
+  'line-height',
+  'list-style',
+  'list-style-image',
+  'list-style-position',
+  'list-style-type',
+  'margin',
+  'margin-bottom',
+  'margin-left',
+  'margin-right',
+  'margin-top',
+  'marks',
+  'mask',
+  'max-height',
+  'max-width',
+  'min-height',
+  'min-width',
+  'nav-down',
+  'nav-index',
+  'nav-left',
+  'nav-right',
+  'nav-up',
+  'none',
+  'normal',
+  'object-fit',
+  'object-position',
+  'opacity',
+  'order',
+  'orphans',
+  'outline',
+  'outline-color',
+  'outline-offset',
+  'outline-style',
+  'outline-width',
+  'overflow',
+  'overflow-wrap',
+  'overflow-x',
+  'overflow-y',
+  'padding',
+  'padding-bottom',
+  'padding-left',
+  'padding-right',
+  'padding-top',
+  'page-break-after',
+  'page-break-before',
+  'page-break-inside',
+  'perspective',
+  'perspective-origin',
+  'pointer-events',
+  'position',
+  'quotes',
+  'resize',
+  'right',
+  'src', // @font-face
+  'tab-size',
+  'table-layout',
+  'text-align',
+  'text-align-last',
+  'text-decoration',
+  'text-decoration-color',
+  'text-decoration-line',
+  'text-decoration-style',
+  'text-indent',
+  'text-overflow',
+  'text-rendering',
+  'text-shadow',
+  'text-transform',
+  'text-underline-position',
+  'top',
+  'transform',
+  'transform-origin',
+  'transform-style',
+  'transition',
+  'transition-delay',
+  'transition-duration',
+  'transition-property',
+  'transition-timing-function',
+  'unicode-bidi',
+  'vertical-align',
+  'visibility',
+  'white-space',
+  'widows',
+  'width',
+  'word-break',
+  'word-spacing',
+  'word-wrap',
+  'z-index'
+  // reverse makes sure longer attributes `font-weight` are matched fully
+  // instead of getting false positives on say `font`
+].reverse();
+
+/*
+Language: SCSS
+Description: Scss is an extension of the syntax of CSS.
+Author: Kurt Emch 
+Website: https://sass-lang.com
+Category: common, css
+*/
+
+/** @type LanguageFn */
+function scss(hljs) {
+  const modes = MODES(hljs);
+  const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;
+  const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;
+
+  const AT_IDENTIFIER = '@[a-z-]+'; // @font-face
+  const AT_MODIFIERS = "and or not only";
+  const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';
+  const VARIABLE = {
+    className: 'variable',
+    begin: '(\\$' + IDENT_RE + ')\\b'
+  };
+
+  return {
+    name: 'SCSS',
+    case_insensitive: true,
+    illegal: '[=/|\']',
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'selector-id',
+        begin: '#[A-Za-z0-9_-]+',
+        relevance: 0
+      },
+      {
+        className: 'selector-class',
+        begin: '\\.[A-Za-z0-9_-]+',
+        relevance: 0
+      },
+      modes.ATTRIBUTE_SELECTOR_MODE,
+      {
+        className: 'selector-tag',
+        begin: '\\b(' + TAGS.join('|') + ')\\b',
+        // was there, before, but why?
+        relevance: 0
+      },
+      {
+        className: 'selector-pseudo',
+        begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')'
+      },
+      {
+        className: 'selector-pseudo',
+        begin: '::(' + PSEUDO_ELEMENTS$1.join('|') + ')'
+      },
+      VARIABLE,
+      { // pseudo-selector params
+        begin: /\(/,
+        end: /\)/,
+        contains: [ hljs.CSS_NUMBER_MODE ]
+      },
+      {
+        className: 'attribute',
+        begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b'
+      },
+      {
+        begin: '\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b'
+      },
+      {
+        begin: ':',
+        end: ';',
+        contains: [
+          VARIABLE,
+          modes.HEXCOLOR,
+          hljs.CSS_NUMBER_MODE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.APOS_STRING_MODE,
+          modes.IMPORTANT
+        ]
+      },
+      // matching these here allows us to treat them more like regular CSS
+      // rules so everything between the {} gets regular rule highlighting,
+      // which is what we want for page and font-face
+      {
+        begin: '@(page|font-face)',
+        lexemes: AT_IDENTIFIER,
+        keywords: '@page @font-face'
+      },
+      {
+        begin: '@',
+        end: '[{;]',
+        returnBegin: true,
+        keywords: {
+          $pattern: /[a-z-]+/,
+          keyword: AT_MODIFIERS,
+          attribute: MEDIA_FEATURES.join(" ")
+        },
+        contains: [
+          {
+            begin: AT_IDENTIFIER,
+            className: "keyword"
+          },
+          {
+            begin: /[a-z-]+(?=:)/,
+            className: "attribute"
+          },
+          VARIABLE,
+          hljs.QUOTE_STRING_MODE,
+          hljs.APOS_STRING_MODE,
+          modes.HEXCOLOR,
+          hljs.CSS_NUMBER_MODE
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = scss;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/shell.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/shell.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Shell Session
+Requires: bash.js
+Author: TSUYUSATO Kitsune 
+Category: common
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function shell(hljs) {
+  return {
+    name: 'Shell Session',
+    aliases: [ 'console' ],
+    contains: [
+      {
+        className: 'meta',
+        // We cannot add \s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result.
+        // For instance, in the following example, it would match "echo /path/to/home >" as a prompt:
+        // echo /path/to/home > t.exe
+        begin: /^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,
+        starts: {
+          end: /[^\\](?=\s*$)/,
+          subLanguage: 'bash'
+        }
+      }
+    ]
+  };
+}
+
+module.exports = shell;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/smali.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/smali.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Smali
+Author: Dennis Titze 
+Description: Basic Smali highlighting
+Website: https://github.com/JesusFreke/smali
+*/
+
+function smali(hljs) {
+  const smali_instr_low_prio = [
+    'add',
+    'and',
+    'cmp',
+    'cmpg',
+    'cmpl',
+    'const',
+    'div',
+    'double',
+    'float',
+    'goto',
+    'if',
+    'int',
+    'long',
+    'move',
+    'mul',
+    'neg',
+    'new',
+    'nop',
+    'not',
+    'or',
+    'rem',
+    'return',
+    'shl',
+    'shr',
+    'sput',
+    'sub',
+    'throw',
+    'ushr',
+    'xor'
+  ];
+  const smali_instr_high_prio = [
+    'aget',
+    'aput',
+    'array',
+    'check',
+    'execute',
+    'fill',
+    'filled',
+    'goto/16',
+    'goto/32',
+    'iget',
+    'instance',
+    'invoke',
+    'iput',
+    'monitor',
+    'packed',
+    'sget',
+    'sparse'
+  ];
+  const smali_keywords = [
+    'transient',
+    'constructor',
+    'abstract',
+    'final',
+    'synthetic',
+    'public',
+    'private',
+    'protected',
+    'static',
+    'bridge',
+    'system'
+  ];
+  return {
+    name: 'Smali',
+    contains: [
+      {
+        className: 'string',
+        begin: '"',
+        end: '"',
+        relevance: 0
+      },
+      hljs.COMMENT(
+        '#',
+        '$',
+        {
+          relevance: 0
+        }
+      ),
+      {
+        className: 'keyword',
+        variants: [
+          {
+            begin: '\\s*\\.end\\s[a-zA-Z0-9]*'
+          },
+          {
+            begin: '^[ ]*\\.[a-zA-Z]*',
+            relevance: 0
+          },
+          {
+            begin: '\\s:[a-zA-Z_0-9]*',
+            relevance: 0
+          },
+          {
+            begin: '\\s(' + smali_keywords.join('|') + ')'
+          }
+        ]
+      },
+      {
+        className: 'built_in',
+        variants: [
+          {
+            begin: '\\s(' + smali_instr_low_prio.join('|') + ')\\s'
+          },
+          {
+            begin: '\\s(' + smali_instr_low_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)+\\s',
+            relevance: 10
+          },
+          {
+            begin: '\\s(' + smali_instr_high_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)*\\s',
+            relevance: 10
+          }
+        ]
+      },
+      {
+        className: 'class',
+        begin: 'L[^\(;:\n]*;',
+        relevance: 0
+      },
+      {
+        begin: '[vp][0-9]+'
+      }
+    ]
+  };
+}
+
+module.exports = smali;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/smalltalk.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/smalltalk.js ***!
+  \**************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Smalltalk
+Description: Smalltalk is an object-oriented, dynamically typed reflective programming language.
+Author: Vladimir Gubarkov 
+Website: https://en.wikipedia.org/wiki/Smalltalk
+*/
+
+function smalltalk(hljs) {
+  const VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';
+  const CHAR = {
+    className: 'string',
+    begin: '\\$.{1}'
+  };
+  const SYMBOL = {
+    className: 'symbol',
+    begin: '#' + hljs.UNDERSCORE_IDENT_RE
+  };
+  return {
+    name: 'Smalltalk',
+    aliases: [ 'st' ],
+    keywords: 'self super nil true false thisContext', // only 6
+    contains: [
+      hljs.COMMENT('"', '"'),
+      hljs.APOS_STRING_MODE,
+      {
+        className: 'type',
+        begin: '\\b[A-Z][A-Za-z0-9_]*',
+        relevance: 0
+      },
+      {
+        begin: VAR_IDENT_RE + ':',
+        relevance: 0
+      },
+      hljs.C_NUMBER_MODE,
+      SYMBOL,
+      CHAR,
+      {
+        // This looks more complicated than needed to avoid combinatorial
+        // explosion under V8. It effectively means `| var1 var2 ... |` with
+        // whitespace adjacent to `|` being optional.
+        begin: '\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\|',
+        returnBegin: true,
+        end: /\|/,
+        illegal: /\S/,
+        contains: [ {
+          begin: '(\\|[ ]*)?' + VAR_IDENT_RE
+        } ]
+      },
+      {
+        begin: '#\\(',
+        end: '\\)',
+        contains: [
+          hljs.APOS_STRING_MODE,
+          CHAR,
+          hljs.C_NUMBER_MODE,
+          SYMBOL
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = smalltalk;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/sml.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/sml.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: SML (Standard ML)
+Author: Edwin Dalorzo 
+Description: SML language definition.
+Website: https://www.smlnj.org
+Origin: ocaml.js
+Category: functional
+*/
+function sml(hljs) {
+  return {
+    name: 'SML (Standard ML)',
+    aliases: [ 'ml' ],
+    keywords: {
+      $pattern: '[a-z_]\\w*!?',
+      keyword:
+        /* according to Definition of Standard ML 97  */
+        'abstype and andalso as case datatype do else end eqtype ' +
+        'exception fn fun functor handle if in include infix infixr ' +
+        'let local nonfix of op open orelse raise rec sharing sig ' +
+        'signature struct structure then type val with withtype where while',
+      built_in:
+        /* built-in types according to basis library */
+        'array bool char exn int list option order real ref string substring vector unit word',
+      literal:
+        'true false NONE SOME LESS EQUAL GREATER nil'
+    },
+    illegal: /\/\/|>>/,
+    contains: [
+      {
+        className: 'literal',
+        begin: /\[(\|\|)?\]|\(\)/,
+        relevance: 0
+      },
+      hljs.COMMENT(
+        '\\(\\*',
+        '\\*\\)',
+        {
+          contains: [ 'self' ]
+        }
+      ),
+      { /* type variable */
+        className: 'symbol',
+        begin: '\'[A-Za-z_](?!\')[\\w\']*'
+        /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */
+      },
+      { /* polymorphic variant */
+        className: 'type',
+        begin: '`[A-Z][\\w\']*'
+      },
+      { /* module or constructor */
+        className: 'type',
+        begin: '\\b[A-Z][\\w\']*',
+        relevance: 0
+      },
+      { /* don't color identifiers, but safely catch all identifiers with ' */
+        begin: '[a-z_]\\w*\'[\\w\']*'
+      },
+      hljs.inherit(hljs.APOS_STRING_MODE, {
+        className: 'string',
+        relevance: 0
+      }),
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {
+        illegal: null
+      }),
+      {
+        className: 'number',
+        begin:
+          '\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +
+          '0[oO][0-7_]+[Lln]?|' +
+          '0[bB][01_]+[Lln]?|' +
+          '[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',
+        relevance: 0
+      },
+      {
+        begin: /[-=]>/ // relevance booster
+      }
+    ]
+  };
+}
+
+module.exports = sml;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/sqf.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/sqf.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: SQF
+Author: Søren Enevoldsen 
+Contributors: Marvin Saignat , Dedmen Miller 
+Description: Scripting language for the Arma game series
+Website: https://community.bistudio.com/wiki/SQF_syntax
+Category: scripting
+*/
+
+function sqf(hljs) {
+  // In SQF, a variable start with _
+  const VARIABLE = {
+    className: 'variable',
+    begin: /\b_+[a-zA-Z]\w*/
+  };
+
+  // In SQF, a function should fit myTag_fnc_myFunction pattern
+  // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function
+  const FUNCTION = {
+    className: 'title',
+    begin: /[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/
+  };
+
+  // In SQF strings, quotes matching the start are escaped by adding a consecutive.
+  // Example of single escaped quotes: " "" " and  ' '' '.
+  const STRINGS = {
+    className: 'string',
+    variants: [
+      {
+        begin: '"',
+        end: '"',
+        contains: [ {
+          begin: '""',
+          relevance: 0
+        } ]
+      },
+      {
+        begin: '\'',
+        end: '\'',
+        contains: [ {
+          begin: '\'\'',
+          relevance: 0
+        } ]
+      }
+    ]
+  };
+
+  // list of keywords from:
+  // https://community.bistudio.com/wiki/PreProcessor_Commands
+  const PREPROCESSOR = {
+    className: 'meta',
+    begin: /#\s*[a-z]+\b/,
+    end: /$/,
+    keywords: {
+      'meta-keyword':
+        'define undef ifdef ifndef else endif include'
+    },
+    contains: [
+      {
+        begin: /\\\n/,
+        relevance: 0
+      },
+      hljs.inherit(STRINGS, {
+        className: 'meta-string'
+      }),
+      {
+        className: 'meta-string',
+        begin: /<[^\n>]*>/,
+        end: /$/,
+        illegal: '\\n'
+      },
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+
+  return {
+    name: 'SQF',
+    case_insensitive: true,
+    keywords: {
+      keyword:
+        'case catch default do else exit exitWith for forEach from if ' +
+        'private switch then throw to try waitUntil while with',
+      built_in:
+        'abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames ' +
+        'actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey ' +
+        'add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo ' +
+        'addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea ' +
+        'addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler ' +
+        'addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo ' +
+        'addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats ' +
+        'addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal ' +
+        'addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler ' +
+        'addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem ' +
+        'addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem ' +
+        'addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest ' +
+        'addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem ' +
+        'addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD ' +
+        'airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls ' +
+        'allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines ' +
+        'allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage ' +
+        'allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects ' +
+        'allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay ' +
+        'animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase ' +
+        'animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert ' +
+        'assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret ' +
+        'assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems ' +
+        'assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam ' +
+        'assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject ' +
+        'attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines ' +
+        'backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter ' +
+        'breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode ' +
+        'call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams ' +
+        'camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView ' +
+        'campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive ' +
+        'camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget ' +
+        'camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos ' +
+        'camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest ' +
+        'cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend ' +
+        'canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked ' +
+        'cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className ' +
+        'clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons ' +
+        'clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal ' +
+        'clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool ' +
+        'clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory ' +
+        'collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow ' +
+        'commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop ' +
+        'commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal ' +
+        'completedFSM composeText configClasses configFile configHierarchy configName configProperties ' +
+        'configSourceAddonList configSourceMod configSourceModList confirmSensorTarget ' +
+        'connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count ' +
+        'countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity ' +
+        'createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject ' +
+        'createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker ' +
+        'createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay ' +
+        'createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam ' +
+        'createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ' +
+        'ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ' +
+        'ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ' +
+        'ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ' +
+        'ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ' +
+        'ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ' +
+        'ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ' +
+        'ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ' +
+        'ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ' +
+        'ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ' +
+        'ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ' +
+        'ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ' +
+        'ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ' +
+        'ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ' +
+        'ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ' +
+        'ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ' +
+        'ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ' +
+        'ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ' +
+        'ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ' +
+        'ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera ' +
+        'curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea ' +
+        'curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected ' +
+        'curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine ' +
+        'currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle ' +
+        'currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint ' +
+        'currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget ' +
+        'customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime ' +
+        'deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter ' +
+        'deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity ' +
+        'deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus ' +
+        'deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines ' +
+        'diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts ' +
+        'diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance ' +
+        'diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad ' +
+        'diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits ' +
+        'diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner ' +
+        'difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI ' +
+        'disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators ' +
+        'disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment ' +
+        'disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent ' +
+        'displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam ' +
+        'distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow ' +
+        'doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse ' +
+        'drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle ' +
+        'drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef ' +
+        'dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject ' +
+        'editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature ' +
+        'enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD ' +
+        'enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot ' +
+        'enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem ' +
+        'enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights ' +
+        'enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload ' +
+        'enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation ' +
+        'enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability ' +
+        'enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly ' +
+        'endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities ' +
+        'environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack ' +
+        'everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages ' +
+        'eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission ' +
+        'fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition ' +
+        'findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget ' +
+        'firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight ' +
+        'flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture ' +
+        'forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange ' +
+        'forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation ' +
+        'formationDirection formationLeader formationMembers formationPosition formationTask formatText ' +
+        'formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData ' +
+        'get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity ' +
+        'get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible ' +
+        'get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers ' +
+        'getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision ' +
+        'getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA ' +
+        'getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining ' +
+        'getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState ' +
+        'getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad ' +
+        'getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual ' +
+        'getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode ' +
+        'getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture ' +
+        'getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom ' +
+        'getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos ' +
+        'getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs ' +
+        'getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber ' +
+        'getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy ' +
+        'getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs ' +
+        'getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget ' +
+        'getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual ' +
+        'getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir ' +
+        'getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents ' +
+        'getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue ' +
+        'getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout ' +
+        'getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo ' +
+        'getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio ' +
+        'goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId ' +
+        'groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems ' +
+        'handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups ' +
+        'hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup ' +
+        'hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC ' +
+        'hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups ' +
+        'importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel ' +
+        'infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom ' +
+        'initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN ' +
+        'is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest ' +
+        'isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated ' +
+        'isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray ' +
+        'isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader ' +
+        'isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn ' +
+        'isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection ' +
+        'isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad ' +
+        'isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons ' +
+        'isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText ' +
+        'isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext ' +
+        'isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking ' +
+        'isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent ' +
+        'joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact ' +
+        'kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language ' +
+        'laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture ' +
+        'lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture ' +
+        'lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight ' +
+        'lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected ' +
+        'lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip ' +
+        'lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit ' +
+        'leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore ' +
+        'leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits ' +
+        'libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed ' +
+        'linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith ' +
+        'linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn ' +
+        'lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow ' +
+        'lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData ' +
+        'lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs ' +
+        'loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform ' +
+        'loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked ' +
+        'lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork ' +
+        'logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo ' +
+        'magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack ' +
+        'magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd ' +
+        'mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam ' +
+        'markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText ' +
+        'markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete ' +
+        'menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData ' +
+        'menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL ' +
+        'menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName ' +
+        'missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual ' +
+        'modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move ' +
+        'move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret ' +
+        'moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound ' +
+        'nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing ' +
+        'nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads ' +
+        'nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex ' +
+        'nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId ' +
+        'objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch ' +
+        'onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter ' +
+        'onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected ' +
+        'onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch ' +
+        'openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast ' +
+        'overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace ' +
+        'particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW ' +
+        'playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide ' +
+        'playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission ' +
+        'playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ' +
+        'ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ' +
+        'ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound ' +
+        'preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon ' +
+        'primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName ' +
+        'profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition ' +
+        'publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool ' +
+        'queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate ' +
+        'radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random ' +
+        'rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl ' +
+        'remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler ' +
+        'remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems ' +
+        'removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas ' +
+        'removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems ' +
+        'removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers ' +
+        'removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons ' +
+        'removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea ' +
+        'removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks ' +
+        'removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem ' +
+        'removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest ' +
+        'removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret ' +
+        'removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler ' +
+        'removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem ' +
+        'removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon ' +
+        'removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret ' +
+        'reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources ' +
+        'respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt ' +
+        'roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ' +
+        'ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ' +
+        'ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW ' +
+        'safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity ' +
+        'saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D ' +
+        'scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState ' +
+        'secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces ' +
+        'selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition ' +
+        'selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted ' +
+        'selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult ' +
+        'sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime ' +
+        'set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer ' +
+        'set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes ' +
+        'set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD ' +
+        'setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef ' +
+        'setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour ' +
+        'setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams ' +
+        'setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation ' +
+        'setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType ' +
+        'setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef ' +
+        'setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination ' +
+        'setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval ' +
+        'setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope ' +
+        'setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType ' +
+        'setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation ' +
+        'setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo ' +
+        'setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId ' +
+        'setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage ' +
+        'setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader ' +
+        'setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight ' +
+        'setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare ' +
+        'setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush ' +
+        'setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal ' +
+        'setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize ' +
+        'setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass ' +
+        'setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound ' +
+        'setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture ' +
+        'setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining ' +
+        'setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom ' +
+        'setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect ' +
+        'setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW ' +
+        'setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain ' +
+        'setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance ' +
+        'setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData ' +
+        'setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType ' +
+        'setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech ' +
+        'setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits ' +
+        'setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText ' +
+        'setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap ' +
+        'setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText ' +
+        'setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos ' +
+        'setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat ' +
+        'setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp ' +
+        'setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId ' +
+        'setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets ' +
+        'setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName ' +
+        'setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance ' +
+        'setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode ' +
+        'setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation ' +
+        'setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName ' +
+        'setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout ' +
+        'setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce ' +
+        'setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu ' +
+        'showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer ' +
+        'shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap ' +
+        'shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio ' +
+        'showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side ' +
+        'sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity ' +
+        'simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime ' +
+        'sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed ' +
+        'slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode ' +
+        'splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str ' +
+        'sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth ' +
+        'switchableUnits switchAction switchCamera switchGesture switchLight switchMove ' +
+        'synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd ' +
+        'synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan ' +
+        'targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren ' +
+        'taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent ' +
+        'taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType ' +
+        'terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat ' +
+        'tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower ' +
+        'toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle ' +
+        'triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText ' +
+        'triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear ' +
+        'tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture ' +
+        'tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled ' +
+        'tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled ' +
+        'tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText ' +
+        'tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator ' +
+        'unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems ' +
+        'uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos ' +
+        'unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement ' +
+        'unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent ' +
+        'useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff ' +
+        'vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo ' +
+        'vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply ' +
+        'vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle ' +
+        'vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition ' +
+        'vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature ' +
+        'vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap ' +
+        'visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject ' +
+        'waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour ' +
+        'waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour ' +
+        'waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName ' +
+        'waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed ' +
+        'waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible ' +
+        'weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered ' +
+        'weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ',
+      literal:
+        'blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak ' +
+        'locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic ' +
+        'sideUnknown taskNull teamMemberNull true west'
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.NUMBER_MODE,
+      VARIABLE,
+      FUNCTION,
+      STRINGS,
+      PREPROCESSOR
+    ],
+    illegal: /#|^\$ /
+  };
+}
+
+module.exports = sqf;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/sql.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/sql.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+ Language: SQL
+ Website: https://en.wikipedia.org/wiki/SQL
+ Category: common, database
+ */
+
+function sql(hljs) {
+  const COMMENT_MODE = hljs.COMMENT('--', '$');
+  const STRING = {
+    className: 'string',
+    variants: [
+      {
+        begin: /'/,
+        end: /'/,
+        contains: [
+          {begin: /''/ }
+        ]
+      }
+    ]
+  };
+  const QUOTED_IDENTIFIER = {
+    begin: /"/,
+    end: /"/,
+    contains: [ { begin: /""/ } ]
+  };
+
+  const LITERALS = [
+    "true",
+    "false",
+    // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way.
+    // "null",
+    "unknown"
+  ];
+
+  const MULTI_WORD_TYPES = [
+    "double precision",
+    "large object",
+    "with timezone",
+    "without timezone"
+  ];
+
+  const TYPES = [
+    'bigint',
+    'binary',
+    'blob',
+    'boolean',
+    'char',
+    'character',
+    'clob',
+    'date',
+    'dec',
+    'decfloat',
+    'decimal',
+    'float',
+    'int',
+    'integer',
+    'interval',
+    'nchar',
+    'nclob',
+    'national',
+    'numeric',
+    'real',
+    'row',
+    'smallint',
+    'time',
+    'timestamp',
+    'varchar',
+    'varying', // modifier (character varying)
+    'varbinary'
+  ];
+
+  const NON_RESERVED_WORDS = [
+    "add",
+    "asc",
+    "collation",
+    "desc",
+    "final",
+    "first",
+    "last",
+    "view"
+  ];
+
+  // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word
+  const RESERVED_WORDS = [
+    "abs",
+    "acos",
+    "all",
+    "allocate",
+    "alter",
+    "and",
+    "any",
+    "are",
+    "array",
+    "array_agg",
+    "array_max_cardinality",
+    "as",
+    "asensitive",
+    "asin",
+    "asymmetric",
+    "at",
+    "atan",
+    "atomic",
+    "authorization",
+    "avg",
+    "begin",
+    "begin_frame",
+    "begin_partition",
+    "between",
+    "bigint",
+    "binary",
+    "blob",
+    "boolean",
+    "both",
+    "by",
+    "call",
+    "called",
+    "cardinality",
+    "cascaded",
+    "case",
+    "cast",
+    "ceil",
+    "ceiling",
+    "char",
+    "char_length",
+    "character",
+    "character_length",
+    "check",
+    "classifier",
+    "clob",
+    "close",
+    "coalesce",
+    "collate",
+    "collect",
+    "column",
+    "commit",
+    "condition",
+    "connect",
+    "constraint",
+    "contains",
+    "convert",
+    "copy",
+    "corr",
+    "corresponding",
+    "cos",
+    "cosh",
+    "count",
+    "covar_pop",
+    "covar_samp",
+    "create",
+    "cross",
+    "cube",
+    "cume_dist",
+    "current",
+    "current_catalog",
+    "current_date",
+    "current_default_transform_group",
+    "current_path",
+    "current_role",
+    "current_row",
+    "current_schema",
+    "current_time",
+    "current_timestamp",
+    "current_path",
+    "current_role",
+    "current_transform_group_for_type",
+    "current_user",
+    "cursor",
+    "cycle",
+    "date",
+    "day",
+    "deallocate",
+    "dec",
+    "decimal",
+    "decfloat",
+    "declare",
+    "default",
+    "define",
+    "delete",
+    "dense_rank",
+    "deref",
+    "describe",
+    "deterministic",
+    "disconnect",
+    "distinct",
+    "double",
+    "drop",
+    "dynamic",
+    "each",
+    "element",
+    "else",
+    "empty",
+    "end",
+    "end_frame",
+    "end_partition",
+    "end-exec",
+    "equals",
+    "escape",
+    "every",
+    "except",
+    "exec",
+    "execute",
+    "exists",
+    "exp",
+    "external",
+    "extract",
+    "false",
+    "fetch",
+    "filter",
+    "first_value",
+    "float",
+    "floor",
+    "for",
+    "foreign",
+    "frame_row",
+    "free",
+    "from",
+    "full",
+    "function",
+    "fusion",
+    "get",
+    "global",
+    "grant",
+    "group",
+    "grouping",
+    "groups",
+    "having",
+    "hold",
+    "hour",
+    "identity",
+    "in",
+    "indicator",
+    "initial",
+    "inner",
+    "inout",
+    "insensitive",
+    "insert",
+    "int",
+    "integer",
+    "intersect",
+    "intersection",
+    "interval",
+    "into",
+    "is",
+    "join",
+    "json_array",
+    "json_arrayagg",
+    "json_exists",
+    "json_object",
+    "json_objectagg",
+    "json_query",
+    "json_table",
+    "json_table_primitive",
+    "json_value",
+    "lag",
+    "language",
+    "large",
+    "last_value",
+    "lateral",
+    "lead",
+    "leading",
+    "left",
+    "like",
+    "like_regex",
+    "listagg",
+    "ln",
+    "local",
+    "localtime",
+    "localtimestamp",
+    "log",
+    "log10",
+    "lower",
+    "match",
+    "match_number",
+    "match_recognize",
+    "matches",
+    "max",
+    "member",
+    "merge",
+    "method",
+    "min",
+    "minute",
+    "mod",
+    "modifies",
+    "module",
+    "month",
+    "multiset",
+    "national",
+    "natural",
+    "nchar",
+    "nclob",
+    "new",
+    "no",
+    "none",
+    "normalize",
+    "not",
+    "nth_value",
+    "ntile",
+    "null",
+    "nullif",
+    "numeric",
+    "octet_length",
+    "occurrences_regex",
+    "of",
+    "offset",
+    "old",
+    "omit",
+    "on",
+    "one",
+    "only",
+    "open",
+    "or",
+    "order",
+    "out",
+    "outer",
+    "over",
+    "overlaps",
+    "overlay",
+    "parameter",
+    "partition",
+    "pattern",
+    "per",
+    "percent",
+    "percent_rank",
+    "percentile_cont",
+    "percentile_disc",
+    "period",
+    "portion",
+    "position",
+    "position_regex",
+    "power",
+    "precedes",
+    "precision",
+    "prepare",
+    "primary",
+    "procedure",
+    "ptf",
+    "range",
+    "rank",
+    "reads",
+    "real",
+    "recursive",
+    "ref",
+    "references",
+    "referencing",
+    "regr_avgx",
+    "regr_avgy",
+    "regr_count",
+    "regr_intercept",
+    "regr_r2",
+    "regr_slope",
+    "regr_sxx",
+    "regr_sxy",
+    "regr_syy",
+    "release",
+    "result",
+    "return",
+    "returns",
+    "revoke",
+    "right",
+    "rollback",
+    "rollup",
+    "row",
+    "row_number",
+    "rows",
+    "running",
+    "savepoint",
+    "scope",
+    "scroll",
+    "search",
+    "second",
+    "seek",
+    "select",
+    "sensitive",
+    "session_user",
+    "set",
+    "show",
+    "similar",
+    "sin",
+    "sinh",
+    "skip",
+    "smallint",
+    "some",
+    "specific",
+    "specifictype",
+    "sql",
+    "sqlexception",
+    "sqlstate",
+    "sqlwarning",
+    "sqrt",
+    "start",
+    "static",
+    "stddev_pop",
+    "stddev_samp",
+    "submultiset",
+    "subset",
+    "substring",
+    "substring_regex",
+    "succeeds",
+    "sum",
+    "symmetric",
+    "system",
+    "system_time",
+    "system_user",
+    "table",
+    "tablesample",
+    "tan",
+    "tanh",
+    "then",
+    "time",
+    "timestamp",
+    "timezone_hour",
+    "timezone_minute",
+    "to",
+    "trailing",
+    "translate",
+    "translate_regex",
+    "translation",
+    "treat",
+    "trigger",
+    "trim",
+    "trim_array",
+    "true",
+    "truncate",
+    "uescape",
+    "union",
+    "unique",
+    "unknown",
+    "unnest",
+    "update   ",
+    "upper",
+    "user",
+    "using",
+    "value",
+    "values",
+    "value_of",
+    "var_pop",
+    "var_samp",
+    "varbinary",
+    "varchar",
+    "varying",
+    "versioning",
+    "when",
+    "whenever",
+    "where",
+    "width_bucket",
+    "window",
+    "with",
+    "within",
+    "without",
+    "year",
+  ];
+
+  // these are reserved words we have identified to be functions
+  // and should only be highlighted in a dispatch-like context
+  // ie, array_agg(...), etc.
+  const RESERVED_FUNCTIONS = [
+    "abs",
+    "acos",
+    "array_agg",
+    "asin",
+    "atan",
+    "avg",
+    "cast",
+    "ceil",
+    "ceiling",
+    "coalesce",
+    "corr",
+    "cos",
+    "cosh",
+    "count",
+    "covar_pop",
+    "covar_samp",
+    "cume_dist",
+    "dense_rank",
+    "deref",
+    "element",
+    "exp",
+    "extract",
+    "first_value",
+    "floor",
+    "json_array",
+    "json_arrayagg",
+    "json_exists",
+    "json_object",
+    "json_objectagg",
+    "json_query",
+    "json_table",
+    "json_table_primitive",
+    "json_value",
+    "lag",
+    "last_value",
+    "lead",
+    "listagg",
+    "ln",
+    "log",
+    "log10",
+    "lower",
+    "max",
+    "min",
+    "mod",
+    "nth_value",
+    "ntile",
+    "nullif",
+    "percent_rank",
+    "percentile_cont",
+    "percentile_disc",
+    "position",
+    "position_regex",
+    "power",
+    "rank",
+    "regr_avgx",
+    "regr_avgy",
+    "regr_count",
+    "regr_intercept",
+    "regr_r2",
+    "regr_slope",
+    "regr_sxx",
+    "regr_sxy",
+    "regr_syy",
+    "row_number",
+    "sin",
+    "sinh",
+    "sqrt",
+    "stddev_pop",
+    "stddev_samp",
+    "substring",
+    "substring_regex",
+    "sum",
+    "tan",
+    "tanh",
+    "translate",
+    "translate_regex",
+    "treat",
+    "trim",
+    "trim_array",
+    "unnest",
+    "upper",
+    "value_of",
+    "var_pop",
+    "var_samp",
+    "width_bucket",
+  ];
+
+  // these functions can
+  const POSSIBLE_WITHOUT_PARENS = [
+    "current_catalog",
+    "current_date",
+    "current_default_transform_group",
+    "current_path",
+    "current_role",
+    "current_schema",
+    "current_transform_group_for_type",
+    "current_user",
+    "session_user",
+    "system_time",
+    "system_user",
+    "current_time",
+    "localtime",
+    "current_timestamp",
+    "localtimestamp"
+  ];
+
+  // those exist to boost relevance making these very
+  // "SQL like" keyword combos worth +1 extra relevance
+  const COMBOS = [
+    "create table",
+    "insert into",
+    "primary key",
+    "foreign key",
+    "not null",
+    "alter table",
+    "add constraint",
+    "grouping sets",
+    "on overflow",
+    "character set",
+    "respect nulls",
+    "ignore nulls",
+    "nulls first",
+    "nulls last",
+    "depth first",
+    "breadth first"
+  ];
+
+  const FUNCTIONS = RESERVED_FUNCTIONS;
+
+  const KEYWORDS = [...RESERVED_WORDS, ...NON_RESERVED_WORDS].filter((keyword) => {
+    return !RESERVED_FUNCTIONS.includes(keyword);
+  });
+
+  const VARIABLE = {
+    className: "variable",
+    begin: /@[a-z0-9]+/,
+  };
+
+  const OPERATOR = {
+    className: "operator",
+    begin: /[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,
+    relevance: 0,
+  };
+
+  const FUNCTION_CALL = {
+    begin: concat(/\b/, either(...FUNCTIONS), /\s*\(/),
+    keywords: {
+      built_in: FUNCTIONS
+    }
+  };
+
+  // keywords with less than 3 letters are reduced in relevancy
+  function reduceRelevancy(list, {exceptions, when} = {}) {
+    const qualifyFn = when;
+    exceptions = exceptions || [];
+    return list.map((item) => {
+      if (item.match(/\|\d+$/) || exceptions.includes(item)) {
+        return item;
+      } else if (qualifyFn(item)) {
+        return `${item}|0`;
+      } else {
+        return item;
+      }
+    });
+  }
+
+  return {
+    name: 'SQL',
+    case_insensitive: true,
+    // does not include {} or HTML tags ` x.length < 3 }),
+      literal: LITERALS,
+      type: TYPES,
+      built_in: POSSIBLE_WITHOUT_PARENS
+    },
+    contains: [
+      {
+        begin: either(...COMBOS),
+        keywords: {
+          $pattern: /[\w\.]+/,
+          keyword: KEYWORDS.concat(COMBOS),
+          literal: LITERALS,
+          type: TYPES
+        },
+      },
+      {
+        className: "type",
+        begin: either(...MULTI_WORD_TYPES)
+      },
+      FUNCTION_CALL,
+      VARIABLE,
+      STRING,
+      QUOTED_IDENTIFIER,
+      hljs.C_NUMBER_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      COMMENT_MODE,
+      OPERATOR
+    ]
+  };
+}
+
+module.exports = sql;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/sql_more.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/sql_more.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/*
+ Language: SQL More (mix of MySQL, Oracle, etc)
+ Contributors: Nikolay Lisienko , Heiko August , Travis Odom , Vadimtro , Benjamin Auder 
+ Website: https://en.wikipedia.org/wiki/SQL
+ Category: database
+ */
+
+/*
+
+This is a preservation of the old bloated SQL grammar which includes pretty much
+the kitchen sink because no one was keeping track of which keywords belong to
+which databases.  This is likely to be removed in the future.
+
+- Oracle SQL should be factored into it's own 3rd party grammar.
+- MySQL should be factored out into it's own 3rd party grammar.
+
+*/
+
+function sql_more(hljs) {
+  var COMMENT_MODE = hljs.COMMENT('--', '$');
+  return {
+    name: 'SQL (more)',
+    aliases: ["mysql", "oracle"],
+    disableAutodetect: true,
+    case_insensitive: true,
+    illegal: /[<>{}*]/,
+    contains: [
+      {
+        beginKeywords:
+          'begin end start commit rollback savepoint lock alter create drop rename call ' +
+          'delete do handler insert load replace select truncate update set show pragma grant ' +
+          'merge describe use explain help declare prepare execute deallocate release ' +
+          'unlock purge reset change stop analyze cache flush optimize repair kill ' +
+          'install uninstall checksum restore check backup revoke comment values with',
+        end: /;/, endsWithParent: true,
+        keywords: {
+          $pattern: /[\w\.]+/,
+          keyword:
+            'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +
+            'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +
+            'all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply ' +
+            'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +
+            'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +
+            'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +
+            'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +
+            'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +
+            'bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +
+            'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +
+            'char_length character_length characters characterset charindex charset charsetform charsetid check ' +
+            'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +
+            'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +
+            'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +
+            'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +
+            'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +
+            'consider consistent constant constraint constraints constructor container content contents context ' +
+            'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +
+            'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +
+            'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +
+            'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +
+            'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +
+            'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +
+            'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +
+            'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +
+            'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +
+            'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +
+            'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +
+            'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +
+            'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +
+            'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +
+            'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +
+            'execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external ' +
+            'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +
+            'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +
+            'finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign ' +
+            'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +
+            'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +
+            'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +
+            'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +
+            'hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified ' +
+            'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +
+            'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +
+            'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +
+            'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +
+            'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +
+            'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase ' +
+            'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +
+            'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +
+            'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +
+            'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +
+            'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +
+            'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +
+            'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +
+            'minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month ' +
+            'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +
+            'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +
+            'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +
+            'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +
+            'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +
+            'noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +
+            'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +
+            'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +
+            'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +
+            'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +
+            'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +
+            'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +
+            'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +
+            'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +
+            'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +
+            'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +
+            'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +
+            'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +
+            'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +
+            'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +
+            'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +
+            'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +
+            'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +
+            'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +
+            'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +
+            'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +
+            'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +
+            'sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select ' +
+            'self semi sequence sequential serializable server servererror session session_user sessions_per_user set ' +
+            'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +
+            'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +
+            'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +
+            'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +
+            'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +
+            'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +
+            'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +
+            'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +
+            'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +
+            'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +
+            'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +
+            'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo ' +
+            'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +
+            'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +
+            'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +
+            'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +
+            'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +
+            'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot ' +
+            'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +
+            'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +
+            'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +
+            'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +
+            'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +
+            'wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped ' +
+            'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +
+            'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',
+          literal:
+            'true false null unknown',
+          built_in:
+            'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number ' +
+            'numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void'
+        },
+        contains: [
+          {
+            className: 'string',
+            begin: '\'', end: '\'',
+            contains: [{begin: '\'\''}]
+          },
+          {
+            className: 'string',
+            begin: '"', end: '"',
+            contains: [{begin: '""'}]
+          },
+          {
+            className: 'string',
+            begin: '`', end: '`'
+          },
+          hljs.C_NUMBER_MODE,
+          hljs.C_BLOCK_COMMENT_MODE,
+          COMMENT_MODE,
+          hljs.HASH_COMMENT_MODE
+        ]
+      },
+      hljs.C_BLOCK_COMMENT_MODE,
+      COMMENT_MODE,
+      hljs.HASH_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = sql_more;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/stan.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/stan.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Stan
+Description: The Stan probabilistic programming language
+Author: Jeffrey B. Arnold 
+Website: http://mc-stan.org/
+Category: scientific
+*/
+
+function stan(hljs) {
+  // variable names cannot conflict with block identifiers
+  const BLOCKS = [
+    'functions',
+    'model',
+    'data',
+    'parameters',
+    'quantities',
+    'transformed',
+    'generated'
+  ];
+  const STATEMENTS = [
+    'for',
+    'in',
+    'if',
+    'else',
+    'while',
+    'break',
+    'continue',
+    'return'
+  ];
+  const SPECIAL_FUNCTIONS = [
+    'print',
+    'reject',
+    'increment_log_prob|10',
+    'integrate_ode|10',
+    'integrate_ode_rk45|10',
+    'integrate_ode_bdf|10',
+    'algebra_solver'
+  ];
+  const VAR_TYPES = [
+    'int',
+    'real',
+    'vector',
+    'ordered',
+    'positive_ordered',
+    'simplex',
+    'unit_vector',
+    'row_vector',
+    'matrix',
+    'cholesky_factor_corr|10',
+    'cholesky_factor_cov|10',
+    'corr_matrix|10',
+    'cov_matrix|10',
+    'void'
+  ];
+  const FUNCTIONS = [
+    'Phi',
+    'Phi_approx',
+    'abs',
+    'acos',
+    'acosh',
+    'algebra_solver',
+    'append_array',
+    'append_col',
+    'append_row',
+    'asin',
+    'asinh',
+    'atan',
+    'atan2',
+    'atanh',
+    'bernoulli_cdf',
+    'bernoulli_lccdf',
+    'bernoulli_lcdf',
+    'bernoulli_logit_lpmf',
+    'bernoulli_logit_rng',
+    'bernoulli_lpmf',
+    'bernoulli_rng',
+    'bessel_first_kind',
+    'bessel_second_kind',
+    'beta_binomial_cdf',
+    'beta_binomial_lccdf',
+    'beta_binomial_lcdf',
+    'beta_binomial_lpmf',
+    'beta_binomial_rng',
+    'beta_cdf',
+    'beta_lccdf',
+    'beta_lcdf',
+    'beta_lpdf',
+    'beta_rng',
+    'binary_log_loss',
+    'binomial_cdf',
+    'binomial_coefficient_log',
+    'binomial_lccdf',
+    'binomial_lcdf',
+    'binomial_logit_lpmf',
+    'binomial_lpmf',
+    'binomial_rng',
+    'block',
+    'categorical_logit_lpmf',
+    'categorical_logit_rng',
+    'categorical_lpmf',
+    'categorical_rng',
+    'cauchy_cdf',
+    'cauchy_lccdf',
+    'cauchy_lcdf',
+    'cauchy_lpdf',
+    'cauchy_rng',
+    'cbrt',
+    'ceil',
+    'chi_square_cdf',
+    'chi_square_lccdf',
+    'chi_square_lcdf',
+    'chi_square_lpdf',
+    'chi_square_rng',
+    'cholesky_decompose',
+    'choose',
+    'col',
+    'cols',
+    'columns_dot_product',
+    'columns_dot_self',
+    'cos',
+    'cosh',
+    'cov_exp_quad',
+    'crossprod',
+    'csr_extract_u',
+    'csr_extract_v',
+    'csr_extract_w',
+    'csr_matrix_times_vector',
+    'csr_to_dense_matrix',
+    'cumulative_sum',
+    'determinant',
+    'diag_matrix',
+    'diag_post_multiply',
+    'diag_pre_multiply',
+    'diagonal',
+    'digamma',
+    'dims',
+    'dirichlet_lpdf',
+    'dirichlet_rng',
+    'distance',
+    'dot_product',
+    'dot_self',
+    'double_exponential_cdf',
+    'double_exponential_lccdf',
+    'double_exponential_lcdf',
+    'double_exponential_lpdf',
+    'double_exponential_rng',
+    'e',
+    'eigenvalues_sym',
+    'eigenvectors_sym',
+    'erf',
+    'erfc',
+    'exp',
+    'exp2',
+    'exp_mod_normal_cdf',
+    'exp_mod_normal_lccdf',
+    'exp_mod_normal_lcdf',
+    'exp_mod_normal_lpdf',
+    'exp_mod_normal_rng',
+    'expm1',
+    'exponential_cdf',
+    'exponential_lccdf',
+    'exponential_lcdf',
+    'exponential_lpdf',
+    'exponential_rng',
+    'fabs',
+    'falling_factorial',
+    'fdim',
+    'floor',
+    'fma',
+    'fmax',
+    'fmin',
+    'fmod',
+    'frechet_cdf',
+    'frechet_lccdf',
+    'frechet_lcdf',
+    'frechet_lpdf',
+    'frechet_rng',
+    'gamma_cdf',
+    'gamma_lccdf',
+    'gamma_lcdf',
+    'gamma_lpdf',
+    'gamma_p',
+    'gamma_q',
+    'gamma_rng',
+    'gaussian_dlm_obs_lpdf',
+    'get_lp',
+    'gumbel_cdf',
+    'gumbel_lccdf',
+    'gumbel_lcdf',
+    'gumbel_lpdf',
+    'gumbel_rng',
+    'head',
+    'hypergeometric_lpmf',
+    'hypergeometric_rng',
+    'hypot',
+    'inc_beta',
+    'int_step',
+    'integrate_ode',
+    'integrate_ode_bdf',
+    'integrate_ode_rk45',
+    'inv',
+    'inv_Phi',
+    'inv_chi_square_cdf',
+    'inv_chi_square_lccdf',
+    'inv_chi_square_lcdf',
+    'inv_chi_square_lpdf',
+    'inv_chi_square_rng',
+    'inv_cloglog',
+    'inv_gamma_cdf',
+    'inv_gamma_lccdf',
+    'inv_gamma_lcdf',
+    'inv_gamma_lpdf',
+    'inv_gamma_rng',
+    'inv_logit',
+    'inv_sqrt',
+    'inv_square',
+    'inv_wishart_lpdf',
+    'inv_wishart_rng',
+    'inverse',
+    'inverse_spd',
+    'is_inf',
+    'is_nan',
+    'lbeta',
+    'lchoose',
+    'lgamma',
+    'lkj_corr_cholesky_lpdf',
+    'lkj_corr_cholesky_rng',
+    'lkj_corr_lpdf',
+    'lkj_corr_rng',
+    'lmgamma',
+    'lmultiply',
+    'log',
+    'log10',
+    'log1m',
+    'log1m_exp',
+    'log1m_inv_logit',
+    'log1p',
+    'log1p_exp',
+    'log2',
+    'log_determinant',
+    'log_diff_exp',
+    'log_falling_factorial',
+    'log_inv_logit',
+    'log_mix',
+    'log_rising_factorial',
+    'log_softmax',
+    'log_sum_exp',
+    'logistic_cdf',
+    'logistic_lccdf',
+    'logistic_lcdf',
+    'logistic_lpdf',
+    'logistic_rng',
+    'logit',
+    'lognormal_cdf',
+    'lognormal_lccdf',
+    'lognormal_lcdf',
+    'lognormal_lpdf',
+    'lognormal_rng',
+    'machine_precision',
+    'matrix_exp',
+    'max',
+    'mdivide_left_spd',
+    'mdivide_left_tri_low',
+    'mdivide_right_spd',
+    'mdivide_right_tri_low',
+    'mean',
+    'min',
+    'modified_bessel_first_kind',
+    'modified_bessel_second_kind',
+    'multi_gp_cholesky_lpdf',
+    'multi_gp_lpdf',
+    'multi_normal_cholesky_lpdf',
+    'multi_normal_cholesky_rng',
+    'multi_normal_lpdf',
+    'multi_normal_prec_lpdf',
+    'multi_normal_rng',
+    'multi_student_t_lpdf',
+    'multi_student_t_rng',
+    'multinomial_lpmf',
+    'multinomial_rng',
+    'multiply_log',
+    'multiply_lower_tri_self_transpose',
+    'neg_binomial_2_cdf',
+    'neg_binomial_2_lccdf',
+    'neg_binomial_2_lcdf',
+    'neg_binomial_2_log_lpmf',
+    'neg_binomial_2_log_rng',
+    'neg_binomial_2_lpmf',
+    'neg_binomial_2_rng',
+    'neg_binomial_cdf',
+    'neg_binomial_lccdf',
+    'neg_binomial_lcdf',
+    'neg_binomial_lpmf',
+    'neg_binomial_rng',
+    'negative_infinity',
+    'normal_cdf',
+    'normal_lccdf',
+    'normal_lcdf',
+    'normal_lpdf',
+    'normal_rng',
+    'not_a_number',
+    'num_elements',
+    'ordered_logistic_lpmf',
+    'ordered_logistic_rng',
+    'owens_t',
+    'pareto_cdf',
+    'pareto_lccdf',
+    'pareto_lcdf',
+    'pareto_lpdf',
+    'pareto_rng',
+    'pareto_type_2_cdf',
+    'pareto_type_2_lccdf',
+    'pareto_type_2_lcdf',
+    'pareto_type_2_lpdf',
+    'pareto_type_2_rng',
+    'pi',
+    'poisson_cdf',
+    'poisson_lccdf',
+    'poisson_lcdf',
+    'poisson_log_lpmf',
+    'poisson_log_rng',
+    'poisson_lpmf',
+    'poisson_rng',
+    'positive_infinity',
+    'pow',
+    'print',
+    'prod',
+    'qr_Q',
+    'qr_R',
+    'quad_form',
+    'quad_form_diag',
+    'quad_form_sym',
+    'rank',
+    'rayleigh_cdf',
+    'rayleigh_lccdf',
+    'rayleigh_lcdf',
+    'rayleigh_lpdf',
+    'rayleigh_rng',
+    'reject',
+    'rep_array',
+    'rep_matrix',
+    'rep_row_vector',
+    'rep_vector',
+    'rising_factorial',
+    'round',
+    'row',
+    'rows',
+    'rows_dot_product',
+    'rows_dot_self',
+    'scaled_inv_chi_square_cdf',
+    'scaled_inv_chi_square_lccdf',
+    'scaled_inv_chi_square_lcdf',
+    'scaled_inv_chi_square_lpdf',
+    'scaled_inv_chi_square_rng',
+    'sd',
+    'segment',
+    'sin',
+    'singular_values',
+    'sinh',
+    'size',
+    'skew_normal_cdf',
+    'skew_normal_lccdf',
+    'skew_normal_lcdf',
+    'skew_normal_lpdf',
+    'skew_normal_rng',
+    'softmax',
+    'sort_asc',
+    'sort_desc',
+    'sort_indices_asc',
+    'sort_indices_desc',
+    'sqrt',
+    'sqrt2',
+    'square',
+    'squared_distance',
+    'step',
+    'student_t_cdf',
+    'student_t_lccdf',
+    'student_t_lcdf',
+    'student_t_lpdf',
+    'student_t_rng',
+    'sub_col',
+    'sub_row',
+    'sum',
+    'tail',
+    'tan',
+    'tanh',
+    'target',
+    'tcrossprod',
+    'tgamma',
+    'to_array_1d',
+    'to_array_2d',
+    'to_matrix',
+    'to_row_vector',
+    'to_vector',
+    'trace',
+    'trace_gen_quad_form',
+    'trace_quad_form',
+    'trigamma',
+    'trunc',
+    'uniform_cdf',
+    'uniform_lccdf',
+    'uniform_lcdf',
+    'uniform_lpdf',
+    'uniform_rng',
+    'variance',
+    'von_mises_lpdf',
+    'von_mises_rng',
+    'weibull_cdf',
+    'weibull_lccdf',
+    'weibull_lcdf',
+    'weibull_lpdf',
+    'weibull_rng',
+    'wiener_lpdf',
+    'wishart_lpdf',
+    'wishart_rng'
+  ];
+  const DISTRIBUTIONS = [
+    'bernoulli',
+    'bernoulli_logit',
+    'beta',
+    'beta_binomial',
+    'binomial',
+    'binomial_logit',
+    'categorical',
+    'categorical_logit',
+    'cauchy',
+    'chi_square',
+    'dirichlet',
+    'double_exponential',
+    'exp_mod_normal',
+    'exponential',
+    'frechet',
+    'gamma',
+    'gaussian_dlm_obs',
+    'gumbel',
+    'hypergeometric',
+    'inv_chi_square',
+    'inv_gamma',
+    'inv_wishart',
+    'lkj_corr',
+    'lkj_corr_cholesky',
+    'logistic',
+    'lognormal',
+    'multi_gp',
+    'multi_gp_cholesky',
+    'multi_normal',
+    'multi_normal_cholesky',
+    'multi_normal_prec',
+    'multi_student_t',
+    'multinomial',
+    'neg_binomial',
+    'neg_binomial_2',
+    'neg_binomial_2_log',
+    'normal',
+    'ordered_logistic',
+    'pareto',
+    'pareto_type_2',
+    'poisson',
+    'poisson_log',
+    'rayleigh',
+    'scaled_inv_chi_square',
+    'skew_normal',
+    'student_t',
+    'uniform',
+    'von_mises',
+    'weibull',
+    'wiener',
+    'wishart'
+  ];
+
+  return {
+    name: 'Stan',
+    aliases: [ 'stanfuncs' ],
+    keywords: {
+      $pattern: hljs.IDENT_RE,
+      title: BLOCKS,
+      keyword: STATEMENTS.concat(VAR_TYPES).concat(SPECIAL_FUNCTIONS),
+      built_in: FUNCTIONS
+    },
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.COMMENT(
+        /#/,
+        /$/,
+        {
+          relevance: 0,
+          keywords: {
+            'meta-keyword': 'include'
+          }
+        }
+      ),
+      hljs.COMMENT(
+        /\/\*/,
+        /\*\//,
+        {
+          relevance: 0,
+          // highlight doc strings mentioned in Stan reference
+          contains: [
+            {
+              className: 'doctag',
+              begin: /@(return|param)/
+            }
+          ]
+        }
+      ),
+      {
+        // hack: in range constraints, lower must follow "<"
+        begin: /<\s*lower\s*=/,
+        keywords: 'lower'
+      },
+      {
+        // hack: in range constraints, upper must follow either , or <
+        //  or 
+        begin: /[<,]\s*upper\s*=/,
+        keywords: 'upper'
+      },
+      {
+        className: 'keyword',
+        begin: /\btarget\s*\+=/,
+        relevance: 10
+      },
+      {
+        begin: '~\\s*(' + hljs.IDENT_RE + ')\\s*\\(',
+        keywords: DISTRIBUTIONS
+      },
+      {
+        className: 'number',
+        variants: [
+          {
+            begin: /\b\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/
+          },
+          {
+            begin: /\.\d+(?:[eE][+-]?\d+)?\b/
+          }
+        ],
+        relevance: 0
+      },
+      {
+        className: 'string',
+        begin: '"',
+        end: '"',
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = stan;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/stata.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/stata.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Stata
+Author: Brian Quistorff 
+Contributors: Drew McDonald 
+Description: Stata is a general-purpose statistical software package created in 1985 by StataCorp.
+Website: https://en.wikipedia.org/wiki/Stata
+Category: scientific
+*/
+
+/*
+  This is a fork and modification of Drew McDonald's file (https://github.com/drewmcdonald/stata-highlighting). I have also included a list of builtin commands from https://bugs.kde.org/show_bug.cgi?id=135646.
+*/
+
+function stata(hljs) {
+  return {
+    name: 'Stata',
+    aliases: [
+      'do',
+      'ado'
+    ],
+    case_insensitive: true,
+    keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5',
+    contains: [
+      {
+        className: 'symbol',
+        begin: /`[a-zA-Z0-9_]+'/
+      },
+      {
+        className: 'variable',
+        begin: /\$\{?[a-zA-Z0-9_]+\}?/
+      },
+      {
+        className: 'string',
+        variants: [
+          {
+            begin: '`"[^\r\n]*?"\''
+          },
+          {
+            begin: '"[^\r\n"]*"'
+          }
+        ]
+      },
+
+      {
+        className: 'built_in',
+        variants: [
+          {
+            begin: '\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()'
+          }
+        ]
+      },
+
+      hljs.COMMENT('^[ \t]*\\*.*$', false),
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE
+    ]
+  };
+}
+
+module.exports = stata;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/step21.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/step21.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: STEP Part 21
+Contributors: Adam Joseph Cook 
+Description: Syntax highlighter for STEP Part 21 files (ISO 10303-21).
+Website: https://en.wikipedia.org/wiki/ISO_10303-21
+*/
+
+function step21(hljs) {
+  const STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
+  const STEP21_KEYWORDS = {
+    $pattern: STEP21_IDENT_RE,
+    keyword: 'HEADER ENDSEC DATA'
+  };
+  const STEP21_START = {
+    className: 'meta',
+    begin: 'ISO-10303-21;',
+    relevance: 10
+  };
+  const STEP21_CLOSE = {
+    className: 'meta',
+    begin: 'END-ISO-10303-21;',
+    relevance: 10
+  };
+
+  return {
+    name: 'STEP Part 21',
+    aliases: [
+      'p21',
+      'step',
+      'stp'
+    ],
+    case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.
+    keywords: STEP21_KEYWORDS,
+    contains: [
+      STEP21_START,
+      STEP21_CLOSE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.COMMENT('/\\*\\*!', '\\*/'),
+      hljs.C_NUMBER_MODE,
+      hljs.inherit(hljs.APOS_STRING_MODE, {
+        illegal: null
+      }),
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {
+        illegal: null
+      }),
+      {
+        className: 'string',
+        begin: "'",
+        end: "'"
+      },
+      {
+        className: 'symbol',
+        variants: [
+          {
+            begin: '#',
+            end: '\\d+',
+            illegal: '\\W'
+          }
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = step21;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/stylus.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/stylus.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+const MODES = (hljs) => {
+  return {
+    IMPORTANT: {
+      className: 'meta',
+      begin: '!important'
+    },
+    HEXCOLOR: {
+      className: 'number',
+      begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'
+    },
+    ATTRIBUTE_SELECTOR_MODE: {
+      className: 'selector-attr',
+      begin: /\[/,
+      end: /\]/,
+      illegal: '$',
+      contains: [
+        hljs.APOS_STRING_MODE,
+        hljs.QUOTE_STRING_MODE
+      ]
+    }
+  };
+};
+
+const TAGS = [
+  'a',
+  'abbr',
+  'address',
+  'article',
+  'aside',
+  'audio',
+  'b',
+  'blockquote',
+  'body',
+  'button',
+  'canvas',
+  'caption',
+  'cite',
+  'code',
+  'dd',
+  'del',
+  'details',
+  'dfn',
+  'div',
+  'dl',
+  'dt',
+  'em',
+  'fieldset',
+  'figcaption',
+  'figure',
+  'footer',
+  'form',
+  'h1',
+  'h2',
+  'h3',
+  'h4',
+  'h5',
+  'h6',
+  'header',
+  'hgroup',
+  'html',
+  'i',
+  'iframe',
+  'img',
+  'input',
+  'ins',
+  'kbd',
+  'label',
+  'legend',
+  'li',
+  'main',
+  'mark',
+  'menu',
+  'nav',
+  'object',
+  'ol',
+  'p',
+  'q',
+  'quote',
+  'samp',
+  'section',
+  'span',
+  'strong',
+  'summary',
+  'sup',
+  'table',
+  'tbody',
+  'td',
+  'textarea',
+  'tfoot',
+  'th',
+  'thead',
+  'time',
+  'tr',
+  'ul',
+  'var',
+  'video'
+];
+
+const MEDIA_FEATURES = [
+  'any-hover',
+  'any-pointer',
+  'aspect-ratio',
+  'color',
+  'color-gamut',
+  'color-index',
+  'device-aspect-ratio',
+  'device-height',
+  'device-width',
+  'display-mode',
+  'forced-colors',
+  'grid',
+  'height',
+  'hover',
+  'inverted-colors',
+  'monochrome',
+  'orientation',
+  'overflow-block',
+  'overflow-inline',
+  'pointer',
+  'prefers-color-scheme',
+  'prefers-contrast',
+  'prefers-reduced-motion',
+  'prefers-reduced-transparency',
+  'resolution',
+  'scan',
+  'scripting',
+  'update',
+  'width',
+  // TODO: find a better solution?
+  'min-width',
+  'max-width',
+  'min-height',
+  'max-height'
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes
+const PSEUDO_CLASSES = [
+  'active',
+  'any-link',
+  'blank',
+  'checked',
+  'current',
+  'default',
+  'defined',
+  'dir', // dir()
+  'disabled',
+  'drop',
+  'empty',
+  'enabled',
+  'first',
+  'first-child',
+  'first-of-type',
+  'fullscreen',
+  'future',
+  'focus',
+  'focus-visible',
+  'focus-within',
+  'has', // has()
+  'host', // host or host()
+  'host-context', // host-context()
+  'hover',
+  'indeterminate',
+  'in-range',
+  'invalid',
+  'is', // is()
+  'lang', // lang()
+  'last-child',
+  'last-of-type',
+  'left',
+  'link',
+  'local-link',
+  'not', // not()
+  'nth-child', // nth-child()
+  'nth-col', // nth-col()
+  'nth-last-child', // nth-last-child()
+  'nth-last-col', // nth-last-col()
+  'nth-last-of-type', //nth-last-of-type()
+  'nth-of-type', //nth-of-type()
+  'only-child',
+  'only-of-type',
+  'optional',
+  'out-of-range',
+  'past',
+  'placeholder-shown',
+  'read-only',
+  'read-write',
+  'required',
+  'right',
+  'root',
+  'scope',
+  'target',
+  'target-within',
+  'user-invalid',
+  'valid',
+  'visited',
+  'where' // where()
+];
+
+// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements
+const PSEUDO_ELEMENTS = [
+  'after',
+  'backdrop',
+  'before',
+  'cue',
+  'cue-region',
+  'first-letter',
+  'first-line',
+  'grammar-error',
+  'marker',
+  'part',
+  'placeholder',
+  'selection',
+  'slotted',
+  'spelling-error'
+];
+
+const ATTRIBUTES = [
+  'align-content',
+  'align-items',
+  'align-self',
+  'animation',
+  'animation-delay',
+  'animation-direction',
+  'animation-duration',
+  'animation-fill-mode',
+  'animation-iteration-count',
+  'animation-name',
+  'animation-play-state',
+  'animation-timing-function',
+  'auto',
+  'backface-visibility',
+  'background',
+  'background-attachment',
+  'background-clip',
+  'background-color',
+  'background-image',
+  'background-origin',
+  'background-position',
+  'background-repeat',
+  'background-size',
+  'border',
+  'border-bottom',
+  'border-bottom-color',
+  'border-bottom-left-radius',
+  'border-bottom-right-radius',
+  'border-bottom-style',
+  'border-bottom-width',
+  'border-collapse',
+  'border-color',
+  'border-image',
+  'border-image-outset',
+  'border-image-repeat',
+  'border-image-slice',
+  'border-image-source',
+  'border-image-width',
+  'border-left',
+  'border-left-color',
+  'border-left-style',
+  'border-left-width',
+  'border-radius',
+  'border-right',
+  'border-right-color',
+  'border-right-style',
+  'border-right-width',
+  'border-spacing',
+  'border-style',
+  'border-top',
+  'border-top-color',
+  'border-top-left-radius',
+  'border-top-right-radius',
+  'border-top-style',
+  'border-top-width',
+  'border-width',
+  'bottom',
+  'box-decoration-break',
+  'box-shadow',
+  'box-sizing',
+  'break-after',
+  'break-before',
+  'break-inside',
+  'caption-side',
+  'clear',
+  'clip',
+  'clip-path',
+  'color',
+  'column-count',
+  'column-fill',
+  'column-gap',
+  'column-rule',
+  'column-rule-color',
+  'column-rule-style',
+  'column-rule-width',
+  'column-span',
+  'column-width',
+  'columns',
+  'content',
+  'counter-increment',
+  'counter-reset',
+  'cursor',
+  'direction',
+  'display',
+  'empty-cells',
+  'filter',
+  'flex',
+  'flex-basis',
+  'flex-direction',
+  'flex-flow',
+  'flex-grow',
+  'flex-shrink',
+  'flex-wrap',
+  'float',
+  'font',
+  'font-display',
+  'font-family',
+  'font-feature-settings',
+  'font-kerning',
+  'font-language-override',
+  'font-size',
+  'font-size-adjust',
+  'font-smoothing',
+  'font-stretch',
+  'font-style',
+  'font-variant',
+  'font-variant-ligatures',
+  'font-variation-settings',
+  'font-weight',
+  'height',
+  'hyphens',
+  'icon',
+  'image-orientation',
+  'image-rendering',
+  'image-resolution',
+  'ime-mode',
+  'inherit',
+  'initial',
+  'justify-content',
+  'left',
+  'letter-spacing',
+  'line-height',
+  'list-style',
+  'list-style-image',
+  'list-style-position',
+  'list-style-type',
+  'margin',
+  'margin-bottom',
+  'margin-left',
+  'margin-right',
+  'margin-top',
+  'marks',
+  'mask',
+  'max-height',
+  'max-width',
+  'min-height',
+  'min-width',
+  'nav-down',
+  'nav-index',
+  'nav-left',
+  'nav-right',
+  'nav-up',
+  'none',
+  'normal',
+  'object-fit',
+  'object-position',
+  'opacity',
+  'order',
+  'orphans',
+  'outline',
+  'outline-color',
+  'outline-offset',
+  'outline-style',
+  'outline-width',
+  'overflow',
+  'overflow-wrap',
+  'overflow-x',
+  'overflow-y',
+  'padding',
+  'padding-bottom',
+  'padding-left',
+  'padding-right',
+  'padding-top',
+  'page-break-after',
+  'page-break-before',
+  'page-break-inside',
+  'perspective',
+  'perspective-origin',
+  'pointer-events',
+  'position',
+  'quotes',
+  'resize',
+  'right',
+  'src', // @font-face
+  'tab-size',
+  'table-layout',
+  'text-align',
+  'text-align-last',
+  'text-decoration',
+  'text-decoration-color',
+  'text-decoration-line',
+  'text-decoration-style',
+  'text-indent',
+  'text-overflow',
+  'text-rendering',
+  'text-shadow',
+  'text-transform',
+  'text-underline-position',
+  'top',
+  'transform',
+  'transform-origin',
+  'transform-style',
+  'transition',
+  'transition-delay',
+  'transition-duration',
+  'transition-property',
+  'transition-timing-function',
+  'unicode-bidi',
+  'vertical-align',
+  'visibility',
+  'white-space',
+  'widows',
+  'width',
+  'word-break',
+  'word-spacing',
+  'word-wrap',
+  'z-index'
+  // reverse makes sure longer attributes `font-weight` are matched fully
+  // instead of getting false positives on say `font`
+].reverse();
+
+/*
+Language: Stylus
+Author: Bryant Williams 
+Description: Stylus is an expressive, robust, feature-rich CSS language built for nodejs.
+Website: https://github.com/stylus/stylus
+Category: css
+*/
+
+/** @type LanguageFn */
+function stylus(hljs) {
+  const modes = MODES(hljs);
+
+  const AT_MODIFIERS = "and or not only";
+  const VARIABLE = {
+    className: 'variable',
+    begin: '\\$' + hljs.IDENT_RE
+  };
+
+  const AT_KEYWORDS = [
+    'charset',
+    'css',
+    'debug',
+    'extend',
+    'font-face',
+    'for',
+    'import',
+    'include',
+    'keyframes',
+    'media',
+    'mixin',
+    'page',
+    'warn',
+    'while'
+  ];
+
+  const LOOKAHEAD_TAG_END = '(?=[.\\s\\n[:,(])';
+
+  // illegals
+  const ILLEGAL = [
+    '\\?',
+    '(\\bReturn\\b)', // monkey
+    '(\\bEnd\\b)', // monkey
+    '(\\bend\\b)', // vbscript
+    '(\\bdef\\b)', // gradle
+    ';', // a whole lot of languages
+    '#\\s', // markdown
+    '\\*\\s', // markdown
+    '===\\s', // markdown
+    '\\|',
+    '%' // prolog
+  ];
+
+  return {
+    name: 'Stylus',
+    aliases: [ 'styl' ],
+    case_insensitive: false,
+    keywords: 'if else for in',
+    illegal: '(' + ILLEGAL.join('|') + ')',
+    contains: [
+
+      // strings
+      hljs.QUOTE_STRING_MODE,
+      hljs.APOS_STRING_MODE,
+
+      // comments
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+
+      // hex colors
+      modes.HEXCOLOR,
+
+      // class tag
+      {
+        begin: '\\.[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,
+        className: 'selector-class'
+      },
+
+      // id tag
+      {
+        begin: '#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,
+        className: 'selector-id'
+      },
+
+      // tags
+      {
+        begin: '\\b(' + TAGS.join('|') + ')' + LOOKAHEAD_TAG_END,
+        className: 'selector-tag'
+      },
+
+      // psuedo selectors
+      {
+        className: 'selector-pseudo',
+        begin: '&?:(' + PSEUDO_CLASSES.join('|') + ')' + LOOKAHEAD_TAG_END
+      },
+      {
+        className: 'selector-pseudo',
+        begin: '&?::(' + PSEUDO_ELEMENTS.join('|') + ')' + LOOKAHEAD_TAG_END
+      },
+
+      modes.ATTRIBUTE_SELECTOR_MODE,
+
+      {
+        className: "keyword",
+        begin: /@media/,
+        starts: {
+          end: /[{;}]/,
+          keywords: {
+            $pattern: /[a-z-]+/,
+            keyword: AT_MODIFIERS,
+            attribute: MEDIA_FEATURES.join(" ")
+          },
+          contains: [ hljs.CSS_NUMBER_MODE ]
+        }
+      },
+
+      // @ keywords
+      {
+        className: 'keyword',
+        begin: '\@((-(o|moz|ms|webkit)-)?(' + AT_KEYWORDS.join('|') + '))\\b'
+      },
+
+      // variables
+      VARIABLE,
+
+      // dimension
+      hljs.CSS_NUMBER_MODE,
+
+      // functions
+      //  - only from beginning of line + whitespace
+      {
+        className: 'function',
+        begin: '^[a-zA-Z][a-zA-Z0-9_\-]*\\(.*\\)',
+        illegal: '[\\n]',
+        returnBegin: true,
+        contains: [
+          {
+            className: 'title',
+            begin: '\\b[a-zA-Z][a-zA-Z0-9_\-]*'
+          },
+          {
+            className: 'params',
+            begin: /\(/,
+            end: /\)/,
+            contains: [
+              modes.HEXCOLOR,
+              VARIABLE,
+              hljs.APOS_STRING_MODE,
+              hljs.CSS_NUMBER_MODE,
+              hljs.QUOTE_STRING_MODE
+            ]
+          }
+        ]
+      },
+
+      // attributes
+      //  - only from beginning of line + whitespace
+      //  - must have whitespace after it
+      {
+        className: 'attribute',
+        begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b',
+        starts: {
+          // value container
+          end: /;|$/,
+          contains: [
+            modes.HEXCOLOR,
+            VARIABLE,
+            hljs.APOS_STRING_MODE,
+            hljs.QUOTE_STRING_MODE,
+            hljs.CSS_NUMBER_MODE,
+            hljs.C_BLOCK_COMMENT_MODE,
+            modes.IMPORTANT
+          ],
+          illegal: /\./,
+          relevance: 0
+        }
+      }
+    ]
+  };
+}
+
+module.exports = stylus;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/subunit.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/subunit.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: SubUnit
+Author: Sergey Bronnikov 
+Website: https://pypi.org/project/python-subunit/
+*/
+
+function subunit(hljs) {
+  const DETAILS = {
+    className: 'string',
+    begin: '\\[\n(multipart)?',
+    end: '\\]\n'
+  };
+  const TIME = {
+    className: 'string',
+    begin: '\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}\.\\d+Z'
+  };
+  const PROGRESSVALUE = {
+    className: 'string',
+    begin: '(\\+|-)\\d+'
+  };
+  const KEYWORDS = {
+    className: 'keyword',
+    relevance: 10,
+    variants: [
+      {
+        begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?'
+      },
+      {
+        begin: '^progress(:?)(\\s+)?(pop|push)?'
+      },
+      {
+        begin: '^tags:'
+      },
+      {
+        begin: '^time:'
+      }
+    ]
+  };
+  return {
+    name: 'SubUnit',
+    case_insensitive: true,
+    contains: [
+      DETAILS,
+      TIME,
+      PROGRESSVALUE,
+      KEYWORDS
+    ]
+  };
+}
+
+module.exports = subunit;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/swift.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/swift.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+const keywordWrapper = keyword => concat(
+  /\b/,
+  keyword,
+  /\w$/.test(keyword) ? /\b/ : /\B/
+);
+
+// Keywords that require a leading dot.
+const dotKeywords = [
+  'Protocol', // contextual
+  'Type' // contextual
+].map(keywordWrapper);
+
+// Keywords that may have a leading dot.
+const optionalDotKeywords = [
+  'init',
+  'self'
+].map(keywordWrapper);
+
+// should register as keyword, not type
+const keywordTypes = [
+  'Any',
+  'Self'
+];
+
+// Regular keywords and literals.
+const keywords = [
+  // strings below will be fed into the regular `keywords` engine while regex
+  // will result in additional modes being created to scan for those keywords to
+  // avoid conflicts with other rules
+  'associatedtype',
+  'async',
+  'await',
+  /as\?/, // operator
+  /as!/, // operator
+  'as', // operator
+  'break',
+  'case',
+  'catch',
+  'class',
+  'continue',
+  'convenience', // contextual
+  'default',
+  'defer',
+  'deinit',
+  'didSet', // contextual
+  'do',
+  'dynamic', // contextual
+  'else',
+  'enum',
+  'extension',
+  'fallthrough',
+  /fileprivate\(set\)/,
+  'fileprivate',
+  'final', // contextual
+  'for',
+  'func',
+  'get', // contextual
+  'guard',
+  'if',
+  'import',
+  'indirect', // contextual
+  'infix', // contextual
+  /init\?/,
+  /init!/,
+  'inout',
+  /internal\(set\)/,
+  'internal',
+  'in',
+  'is', // operator
+  'lazy', // contextual
+  'let',
+  'mutating', // contextual
+  'nonmutating', // contextual
+  /open\(set\)/, // contextual
+  'open', // contextual
+  'operator',
+  'optional', // contextual
+  'override', // contextual
+  'postfix', // contextual
+  'precedencegroup',
+  'prefix', // contextual
+  /private\(set\)/,
+  'private',
+  'protocol',
+  /public\(set\)/,
+  'public',
+  'repeat',
+  'required', // contextual
+  'rethrows',
+  'return',
+  'set', // contextual
+  'some', // contextual
+  'static',
+  'struct',
+  'subscript',
+  'super',
+  'switch',
+  'throws',
+  'throw',
+  /try\?/, // operator
+  /try!/, // operator
+  'try', // operator
+  'typealias',
+  /unowned\(safe\)/, // contextual
+  /unowned\(unsafe\)/, // contextual
+  'unowned', // contextual
+  'var',
+  'weak', // contextual
+  'where',
+  'while',
+  'willSet' // contextual
+];
+
+// NOTE: Contextual keywords are reserved only in specific contexts.
+// Ideally, these should be matched using modes to avoid false positives.
+
+// Literals.
+const literals = [
+  'false',
+  'nil',
+  'true'
+];
+
+// Keywords used in precedence groups.
+const precedencegroupKeywords = [
+  'assignment',
+  'associativity',
+  'higherThan',
+  'left',
+  'lowerThan',
+  'none',
+  'right'
+];
+
+// Keywords that start with a number sign (#).
+// #available is handled separately.
+const numberSignKeywords = [
+  '#colorLiteral',
+  '#column',
+  '#dsohandle',
+  '#else',
+  '#elseif',
+  '#endif',
+  '#error',
+  '#file',
+  '#fileID',
+  '#fileLiteral',
+  '#filePath',
+  '#function',
+  '#if',
+  '#imageLiteral',
+  '#keyPath',
+  '#line',
+  '#selector',
+  '#sourceLocation',
+  '#warn_unqualified_access',
+  '#warning'
+];
+
+// Global functions in the Standard Library.
+const builtIns = [
+  'abs',
+  'all',
+  'any',
+  'assert',
+  'assertionFailure',
+  'debugPrint',
+  'dump',
+  'fatalError',
+  'getVaList',
+  'isKnownUniquelyReferenced',
+  'max',
+  'min',
+  'numericCast',
+  'pointwiseMax',
+  'pointwiseMin',
+  'precondition',
+  'preconditionFailure',
+  'print',
+  'readLine',
+  'repeatElement',
+  'sequence',
+  'stride',
+  'swap',
+  'swift_unboxFromSwiftValueWithType',
+  'transcode',
+  'type',
+  'unsafeBitCast',
+  'unsafeDowncast',
+  'withExtendedLifetime',
+  'withUnsafeMutablePointer',
+  'withUnsafePointer',
+  'withVaList',
+  'withoutActuallyEscaping',
+  'zip'
+];
+
+// Valid first characters for operators.
+const operatorHead = either(
+  /[/=\-+!*%<>&|^~?]/,
+  /[\u00A1-\u00A7]/,
+  /[\u00A9\u00AB]/,
+  /[\u00AC\u00AE]/,
+  /[\u00B0\u00B1]/,
+  /[\u00B6\u00BB\u00BF\u00D7\u00F7]/,
+  /[\u2016-\u2017]/,
+  /[\u2020-\u2027]/,
+  /[\u2030-\u203E]/,
+  /[\u2041-\u2053]/,
+  /[\u2055-\u205E]/,
+  /[\u2190-\u23FF]/,
+  /[\u2500-\u2775]/,
+  /[\u2794-\u2BFF]/,
+  /[\u2E00-\u2E7F]/,
+  /[\u3001-\u3003]/,
+  /[\u3008-\u3020]/,
+  /[\u3030]/
+);
+
+// Valid characters for operators.
+const operatorCharacter = either(
+  operatorHead,
+  /[\u0300-\u036F]/,
+  /[\u1DC0-\u1DFF]/,
+  /[\u20D0-\u20FF]/,
+  /[\uFE00-\uFE0F]/,
+  /[\uFE20-\uFE2F]/
+  // TODO: The following characters are also allowed, but the regex isn't supported yet.
+  // /[\u{E0100}-\u{E01EF}]/u
+);
+
+// Valid operator.
+const operator = concat(operatorHead, operatorCharacter, '*');
+
+// Valid first characters for identifiers.
+const identifierHead = either(
+  /[a-zA-Z_]/,
+  /[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,
+  /[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,
+  /[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,
+  /[\u1E00-\u1FFF]/,
+  /[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,
+  /[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,
+  /[\u2C00-\u2DFF\u2E80-\u2FFF]/,
+  /[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,
+  /[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,
+  /[\uFE47-\uFEFE\uFF00-\uFFFD]/ // Should be /[\uFE47-\uFFFD]/, but we have to exclude FEFF.
+  // The following characters are also allowed, but the regexes aren't supported yet.
+  // /[\u{10000}-\u{1FFFD}\u{20000-\u{2FFFD}\u{30000}-\u{3FFFD}\u{40000}-\u{4FFFD}]/u,
+  // /[\u{50000}-\u{5FFFD}\u{60000-\u{6FFFD}\u{70000}-\u{7FFFD}\u{80000}-\u{8FFFD}]/u,
+  // /[\u{90000}-\u{9FFFD}\u{A0000-\u{AFFFD}\u{B0000}-\u{BFFFD}\u{C0000}-\u{CFFFD}]/u,
+  // /[\u{D0000}-\u{DFFFD}\u{E0000-\u{EFFFD}]/u
+);
+
+// Valid characters for identifiers.
+const identifierCharacter = either(
+  identifierHead,
+  /\d/,
+  /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/
+);
+
+// Valid identifier.
+const identifier = concat(identifierHead, identifierCharacter, '*');
+
+// Valid type identifier.
+const typeIdentifier = concat(/[A-Z]/, identifierCharacter, '*');
+
+// Built-in attributes, which are highlighted as keywords.
+// @available is handled separately.
+const keywordAttributes = [
+  'autoclosure',
+  concat(/convention\(/, either('swift', 'block', 'c'), /\)/),
+  'discardableResult',
+  'dynamicCallable',
+  'dynamicMemberLookup',
+  'escaping',
+  'frozen',
+  'GKInspectable',
+  'IBAction',
+  'IBDesignable',
+  'IBInspectable',
+  'IBOutlet',
+  'IBSegueAction',
+  'inlinable',
+  'main',
+  'nonobjc',
+  'NSApplicationMain',
+  'NSCopying',
+  'NSManaged',
+  concat(/objc\(/, identifier, /\)/),
+  'objc',
+  'objcMembers',
+  'propertyWrapper',
+  'requires_stored_property_inits',
+  'testable',
+  'UIApplicationMain',
+  'unknown',
+  'usableFromInline'
+];
+
+// Contextual keywords used in @available and #available.
+const availabilityKeywords = [
+  'iOS',
+  'iOSApplicationExtension',
+  'macOS',
+  'macOSApplicationExtension',
+  'macCatalyst',
+  'macCatalystApplicationExtension',
+  'watchOS',
+  'watchOSApplicationExtension',
+  'tvOS',
+  'tvOSApplicationExtension',
+  'swift'
+];
+
+/*
+Language: Swift
+Description: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.
+Author: Steven Van Impe 
+Contributors: Chris Eidhof , Nate Cook , Alexander Lichter , Richard Gibson 
+Website: https://swift.org
+Category: common, system
+*/
+
+/** @type LanguageFn */
+function swift(hljs) {
+  const WHITESPACE = {
+    match: /\s+/,
+    relevance: 0
+  };
+  // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411
+  const BLOCK_COMMENT = hljs.COMMENT(
+    '/\\*',
+    '\\*/',
+    {
+      contains: [ 'self' ]
+    }
+  );
+  const COMMENTS = [
+    hljs.C_LINE_COMMENT_MODE,
+    BLOCK_COMMENT
+  ];
+
+  // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413
+  // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html
+  const DOT_KEYWORD = {
+    className: 'keyword',
+    begin: concat(/\./, lookahead(either(...dotKeywords, ...optionalDotKeywords))),
+    end: either(...dotKeywords, ...optionalDotKeywords),
+    excludeBegin: true
+  };
+  const KEYWORD_GUARD = {
+    // Consume .keyword to prevent highlighting properties and methods as keywords.
+    match: concat(/\./, either(...keywords)),
+    relevance: 0
+  };
+  const PLAIN_KEYWORDS = keywords
+    .filter(kw => typeof kw === 'string')
+    .concat([ "_|0" ]); // seems common, so 0 relevance
+  const REGEX_KEYWORDS = keywords
+    .filter(kw => typeof kw !== 'string') // find regex
+    .concat(keywordTypes)
+    .map(keywordWrapper);
+  const KEYWORD = {
+    variants: [
+      {
+        className: 'keyword',
+        match: either(...REGEX_KEYWORDS, ...optionalDotKeywords)
+      }
+    ]
+  };
+  // find all the regular keywords
+  const KEYWORDS = {
+    $pattern: either(
+      /\b\w+/, // regular keywords
+      /#\w+/ // number keywords
+    ),
+    keyword: PLAIN_KEYWORDS
+      .concat(numberSignKeywords),
+    literal: literals
+  };
+  const KEYWORD_MODES = [
+    DOT_KEYWORD,
+    KEYWORD_GUARD,
+    KEYWORD
+  ];
+
+  // https://github.com/apple/swift/tree/main/stdlib/public/core
+  const BUILT_IN_GUARD = {
+    // Consume .built_in to prevent highlighting properties and methods.
+    match: concat(/\./, either(...builtIns)),
+    relevance: 0
+  };
+  const BUILT_IN = {
+    className: 'built_in',
+    match: concat(/\b/, either(...builtIns), /(?=\()/)
+  };
+  const BUILT_INS = [
+    BUILT_IN_GUARD,
+    BUILT_IN
+  ];
+
+  // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418
+  const OPERATOR_GUARD = {
+    // Prevent -> from being highlighting as an operator.
+    match: /->/,
+    relevance: 0
+  };
+  const OPERATOR = {
+    className: 'operator',
+    relevance: 0,
+    variants: [
+      {
+        match: operator
+      },
+      {
+        // dot-operator: only operators that start with a dot are allowed to use dots as
+        // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more
+        // characters that may also include dots.
+        match: `\\.(\\.|${operatorCharacter})+`
+      }
+    ]
+  };
+  const OPERATORS = [
+    OPERATOR_GUARD,
+    OPERATOR
+  ];
+
+  // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal
+  // TODO: Update for leading `-` after lookbehind is supported everywhere
+  const decimalDigits = '([0-9]_*)+';
+  const hexDigits = '([0-9a-fA-F]_*)+';
+  const NUMBER = {
+    className: 'number',
+    relevance: 0,
+    variants: [
+      // decimal floating-point-literal (subsumes decimal-literal)
+      {
+        match: `\\b(${decimalDigits})(\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\b`
+      },
+      // hexadecimal floating-point-literal (subsumes hexadecimal-literal)
+      {
+        match: `\\b0x(${hexDigits})(\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\b`
+      },
+      // octal-literal
+      {
+        match: /\b0o([0-7]_*)+\b/
+      },
+      // binary-literal
+      {
+        match: /\b0b([01]_*)+\b/
+      }
+    ]
+  };
+
+  // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal
+  const ESCAPED_CHARACTER = (rawDelimiter = "") => ({
+    className: 'subst',
+    variants: [
+      {
+        match: concat(/\\/, rawDelimiter, /[0\\tnr"']/)
+      },
+      {
+        match: concat(/\\/, rawDelimiter, /u\{[0-9a-fA-F]{1,8}\}/)
+      }
+    ]
+  });
+  const ESCAPED_NEWLINE = (rawDelimiter = "") => ({
+    className: 'subst',
+    match: concat(/\\/, rawDelimiter, /[\t ]*(?:[\r\n]|\r\n)/)
+  });
+  const INTERPOLATION = (rawDelimiter = "") => ({
+    className: 'subst',
+    label: "interpol",
+    begin: concat(/\\/, rawDelimiter, /\(/),
+    end: /\)/
+  });
+  const MULTILINE_STRING = (rawDelimiter = "") => ({
+    begin: concat(rawDelimiter, /"""/),
+    end: concat(/"""/, rawDelimiter),
+    contains: [
+      ESCAPED_CHARACTER(rawDelimiter),
+      ESCAPED_NEWLINE(rawDelimiter),
+      INTERPOLATION(rawDelimiter)
+    ]
+  });
+  const SINGLE_LINE_STRING = (rawDelimiter = "") => ({
+    begin: concat(rawDelimiter, /"/),
+    end: concat(/"/, rawDelimiter),
+    contains: [
+      ESCAPED_CHARACTER(rawDelimiter),
+      INTERPOLATION(rawDelimiter)
+    ]
+  });
+  const STRING = {
+    className: 'string',
+    variants: [
+      MULTILINE_STRING(),
+      MULTILINE_STRING("#"),
+      MULTILINE_STRING("##"),
+      MULTILINE_STRING("###"),
+      SINGLE_LINE_STRING(),
+      SINGLE_LINE_STRING("#"),
+      SINGLE_LINE_STRING("##"),
+      SINGLE_LINE_STRING("###")
+    ]
+  };
+
+  // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412
+  const QUOTED_IDENTIFIER = {
+    match: concat(/`/, identifier, /`/)
+  };
+  const IMPLICIT_PARAMETER = {
+    className: 'variable',
+    match: /\$\d+/
+  };
+  const PROPERTY_WRAPPER_PROJECTION = {
+    className: 'variable',
+    match: `\\$${identifierCharacter}+`
+  };
+  const IDENTIFIERS = [
+    QUOTED_IDENTIFIER,
+    IMPLICIT_PARAMETER,
+    PROPERTY_WRAPPER_PROJECTION
+  ];
+
+  // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html
+  const AVAILABLE_ATTRIBUTE = {
+    match: /(@|#)available/,
+    className: "keyword",
+    starts: {
+      contains: [
+        {
+          begin: /\(/,
+          end: /\)/,
+          keywords: availabilityKeywords,
+          contains: [
+            ...OPERATORS,
+            NUMBER,
+            STRING
+          ]
+        }
+      ]
+    }
+  };
+  const KEYWORD_ATTRIBUTE = {
+    className: 'keyword',
+    match: concat(/@/, either(...keywordAttributes))
+  };
+  const USER_DEFINED_ATTRIBUTE = {
+    className: 'meta',
+    match: concat(/@/, identifier)
+  };
+  const ATTRIBUTES = [
+    AVAILABLE_ATTRIBUTE,
+    KEYWORD_ATTRIBUTE,
+    USER_DEFINED_ATTRIBUTE
+  ];
+
+  // https://docs.swift.org/swift-book/ReferenceManual/Types.html
+  const TYPE = {
+    match: lookahead(/\b[A-Z]/),
+    relevance: 0,
+    contains: [
+      { // Common Apple frameworks, for relevance boost
+        className: 'type',
+        match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, '+')
+      },
+      { // Type identifier
+        className: 'type',
+        match: typeIdentifier,
+        relevance: 0
+      },
+      { // Optional type
+        match: /[?!]+/,
+        relevance: 0
+      },
+      { // Variadic parameter
+        match: /\.\.\./,
+        relevance: 0
+      },
+      { // Protocol composition
+        match: concat(/\s+&\s+/, lookahead(typeIdentifier)),
+        relevance: 0
+      }
+    ]
+  };
+  const GENERIC_ARGUMENTS = {
+    begin: //,
+    keywords: KEYWORDS,
+    contains: [
+      ...COMMENTS,
+      ...KEYWORD_MODES,
+      ...ATTRIBUTES,
+      OPERATOR_GUARD,
+      TYPE
+    ]
+  };
+  TYPE.contains.push(GENERIC_ARGUMENTS);
+
+  // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552
+  // Prevents element names from being highlighted as keywords.
+  const TUPLE_ELEMENT_NAME = {
+    match: concat(identifier, /\s*:/),
+    keywords: "_|0",
+    relevance: 0
+  };
+  // Matches tuples as well as the parameter list of a function type.
+  const TUPLE = {
+    begin: /\(/,
+    end: /\)/,
+    relevance: 0,
+    keywords: KEYWORDS,
+    contains: [
+      'self',
+      TUPLE_ELEMENT_NAME,
+      ...COMMENTS,
+      ...KEYWORD_MODES,
+      ...BUILT_INS,
+      ...OPERATORS,
+      NUMBER,
+      STRING,
+      ...IDENTIFIERS,
+      ...ATTRIBUTES,
+      TYPE
+    ]
+  };
+
+  // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362
+  // Matches both the keyword func and the function title.
+  // Grouping these lets us differentiate between the operator function <
+  // and the start of the generic parameter clause (also <).
+  const FUNC_PLUS_TITLE = {
+    beginKeywords: 'func',
+    contains: [
+      {
+        className: 'title',
+        match: either(QUOTED_IDENTIFIER.match, identifier, operator),
+        // Required to make sure the opening < of the generic parameter clause
+        // isn't parsed as a second title.
+        endsParent: true,
+        relevance: 0
+      },
+      WHITESPACE
+    ]
+  };
+  const GENERIC_PARAMETERS = {
+    begin: //,
+    contains: [
+      ...COMMENTS,
+      TYPE
+    ]
+  };
+  const FUNCTION_PARAMETER_NAME = {
+    begin: either(
+      lookahead(concat(identifier, /\s*:/)),
+      lookahead(concat(identifier, /\s+/, identifier, /\s*:/))
+    ),
+    end: /:/,
+    relevance: 0,
+    contains: [
+      {
+        className: 'keyword',
+        match: /\b_\b/
+      },
+      {
+        className: 'params',
+        match: identifier
+      }
+    ]
+  };
+  const FUNCTION_PARAMETERS = {
+    begin: /\(/,
+    end: /\)/,
+    keywords: KEYWORDS,
+    contains: [
+      FUNCTION_PARAMETER_NAME,
+      ...COMMENTS,
+      ...KEYWORD_MODES,
+      ...OPERATORS,
+      NUMBER,
+      STRING,
+      ...ATTRIBUTES,
+      TYPE,
+      TUPLE
+    ],
+    endsParent: true,
+    illegal: /["']/
+  };
+  const FUNCTION = {
+    className: 'function',
+    match: lookahead(/\bfunc\b/),
+    contains: [
+      FUNC_PLUS_TITLE,
+      GENERIC_PARAMETERS,
+      FUNCTION_PARAMETERS,
+      WHITESPACE
+    ],
+    illegal: [
+      /\[/,
+      /%/
+    ]
+  };
+
+  // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375
+  // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379
+  const INIT_SUBSCRIPT = {
+    className: 'function',
+    match: /\b(subscript|init[?!]?)\s*(?=[<(])/,
+    keywords: {
+      keyword: "subscript init init? init!",
+      $pattern: /\w+[?!]?/
+    },
+    contains: [
+      GENERIC_PARAMETERS,
+      FUNCTION_PARAMETERS,
+      WHITESPACE
+    ],
+    illegal: /\[|%/
+  };
+  // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380
+  const OPERATOR_DECLARATION = {
+    beginKeywords: 'operator',
+    end: hljs.MATCH_NOTHING_RE,
+    contains: [
+      {
+        className: 'title',
+        match: operator,
+        endsParent: true,
+        relevance: 0
+      }
+    ]
+  };
+
+  // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550
+  const PRECEDENCEGROUP = {
+    beginKeywords: 'precedencegroup',
+    end: hljs.MATCH_NOTHING_RE,
+    contains: [
+      {
+        className: 'title',
+        match: typeIdentifier,
+        relevance: 0
+      },
+      {
+        begin: /{/,
+        end: /}/,
+        relevance: 0,
+        endsParent: true,
+        keywords: [
+          ...precedencegroupKeywords,
+          ...literals
+        ],
+        contains: [ TYPE ]
+      }
+    ]
+  };
+
+  // Add supported submodes to string interpolation.
+  for (const variant of STRING.variants) {
+    const interpolation = variant.contains.find(mode => mode.label === "interpol");
+    // TODO: Interpolation can contain any expression, so there's room for improvement here.
+    interpolation.keywords = KEYWORDS;
+    const submodes = [
+      ...KEYWORD_MODES,
+      ...BUILT_INS,
+      ...OPERATORS,
+      NUMBER,
+      STRING,
+      ...IDENTIFIERS
+    ];
+    interpolation.contains = [
+      ...submodes,
+      {
+        begin: /\(/,
+        end: /\)/,
+        contains: [
+          'self',
+          ...submodes
+        ]
+      }
+    ];
+  }
+
+  return {
+    name: 'Swift',
+    keywords: KEYWORDS,
+    contains: [
+      ...COMMENTS,
+      FUNCTION,
+      INIT_SUBSCRIPT,
+      {
+        className: 'class',
+        beginKeywords: 'struct protocol class extension enum',
+        end: '\\{',
+        excludeEnd: true,
+        keywords: KEYWORDS,
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, {
+            begin: /[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/
+          }),
+          ...KEYWORD_MODES
+        ]
+      },
+      OPERATOR_DECLARATION,
+      PRECEDENCEGROUP,
+      {
+        beginKeywords: 'import',
+        end: /$/,
+        contains: [ ...COMMENTS ],
+        relevance: 0
+      },
+      ...KEYWORD_MODES,
+      ...BUILT_INS,
+      ...OPERATORS,
+      NUMBER,
+      STRING,
+      ...IDENTIFIERS,
+      ...ATTRIBUTES,
+      TYPE,
+      TUPLE
+    ]
+  };
+}
+
+module.exports = swift;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/taggerscript.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/taggerscript.js ***!
+  \*****************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Tagger Script
+Author: Philipp Wolfer 
+Description: Syntax Highlighting for the Tagger Script as used by MusicBrainz Picard.
+Website: https://picard.musicbrainz.org
+ */
+function taggerscript(hljs) {
+  const COMMENT = {
+    className: 'comment',
+    begin: /\$noop\(/,
+    end: /\)/,
+    contains: [ {
+      begin: /\(/,
+      end: /\)/,
+      contains: [ 'self',
+        {
+          begin: /\\./
+        } ]
+    } ],
+    relevance: 10
+  };
+
+  const FUNCTION = {
+    className: 'keyword',
+    begin: /\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,
+    end: /\(/,
+    excludeEnd: true
+  };
+
+  const VARIABLE = {
+    className: 'variable',
+    begin: /%[_a-zA-Z0-9:]*/,
+    end: '%'
+  };
+
+  const ESCAPE_SEQUENCE = {
+    className: 'symbol',
+    begin: /\\./
+  };
+
+  return {
+    name: 'Tagger Script',
+    contains: [
+      COMMENT,
+      FUNCTION,
+      VARIABLE,
+      ESCAPE_SEQUENCE
+    ]
+  };
+}
+
+module.exports = taggerscript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/tap.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/tap.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Test Anything Protocol
+Description: TAP, the Test Anything Protocol, is a simple text-based interface between testing modules in a test harness.
+Requires: yaml.js
+Author: Sergey Bronnikov 
+Website: https://testanything.org
+*/
+
+function tap(hljs) {
+  return {
+    name: 'Test Anything Protocol',
+    case_insensitive: true,
+    contains: [
+      hljs.HASH_COMMENT_MODE,
+      // version of format and total amount of testcases
+      {
+        className: 'meta',
+        variants: [
+          {
+            begin: '^TAP version (\\d+)$'
+          },
+          {
+            begin: '^1\\.\\.(\\d+)$'
+          }
+        ]
+      },
+      // YAML block
+      {
+        begin: /---$/,
+        end: '\\.\\.\\.$',
+        subLanguage: 'yaml',
+        relevance: 0
+      },
+      // testcase number
+      {
+        className: 'number',
+        begin: ' (\\d+) '
+      },
+      // testcase status and description
+      {
+        className: 'symbol',
+        variants: [
+          {
+            begin: '^ok'
+          },
+          {
+            begin: '^not ok'
+          }
+        ]
+      }
+    ]
+  };
+}
+
+module.exports = tap;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/tcl.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/tcl.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: Tcl
+Description: Tcl is a very simple programming language.
+Author: Radek Liska 
+Website: https://www.tcl.tk/about/language.html
+*/
+
+function tcl(hljs) {
+  const TCL_IDENT = /[a-zA-Z_][a-zA-Z0-9_]*/;
+
+  const NUMBER = {
+    className: 'number',
+    variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]
+  };
+
+  return {
+    name: 'Tcl',
+    aliases: ['tk'],
+    keywords: 'after append apply array auto_execok auto_import auto_load auto_mkindex ' +
+      'auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock ' +
+      'close concat continue dde dict encoding eof error eval exec exit expr fblocked ' +
+      'fconfigure fcopy file fileevent filename flush for foreach format gets glob global ' +
+      'history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list ' +
+      'llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 '+
+      'mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex '+
+      'platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename '+
+      'return safe scan seek set socket source split string subst switch tcl_endOfWord '+
+      'tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter '+
+      'tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update '+
+      'uplevel upvar variable vwait while',
+    contains: [
+      hljs.COMMENT(';[ \\t]*#', '$'),
+      hljs.COMMENT('^[ \\t]*#', '$'),
+      {
+        beginKeywords: 'proc',
+        end: '[\\{]',
+        excludeEnd: true,
+        contains: [
+          {
+            className: 'title',
+            begin: '[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',
+            end: '[ \\t\\n\\r]',
+            endsWithParent: true,
+            excludeEnd: true
+          }
+        ]
+      },
+      {
+        className: "variable",
+        variants: [
+          {
+            begin: concat(
+              /\$/,
+              optional(/::/),
+              TCL_IDENT,
+              '(::',
+              TCL_IDENT,
+              ')*'
+            )
+          },
+          {
+            begin: '\\$\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',
+            end: '\\}',
+            contains: [
+              NUMBER
+            ]
+          }
+        ]
+      },
+      {
+        className: 'string',
+        contains: [hljs.BACKSLASH_ESCAPE],
+        variants: [
+          hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})
+        ]
+      },
+      NUMBER
+    ]
+  }
+}
+
+module.exports = tcl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/thrift.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/thrift.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Thrift
+Author: Oleg Efimov 
+Description: Thrift message definition format
+Website: https://thrift.apache.org
+Category: protocols
+*/
+
+function thrift(hljs) {
+  const BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';
+  return {
+    name: 'Thrift',
+    keywords: {
+      keyword:
+        'namespace const typedef struct enum service exception void oneway set list map required optional',
+      built_in:
+        BUILT_IN_TYPES,
+      literal:
+        'true false'
+    },
+    contains: [
+      hljs.QUOTE_STRING_MODE,
+      hljs.NUMBER_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'class',
+        beginKeywords: 'struct enum service exception',
+        end: /\{/,
+        illegal: /\n/,
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, {
+            // hack: eating everything after the first title
+            starts: {
+              endsWithParent: true,
+              excludeEnd: true
+            }
+          })
+        ]
+      },
+      {
+        begin: '\\b(set|list|map)\\s*<',
+        end: '>',
+        keywords: BUILT_IN_TYPES,
+        contains: [ 'self' ]
+      }
+    ]
+  };
+}
+
+module.exports = thrift;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/tp.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/tp.js ***!
+  \*******************************************************/
+/***/ ((module) => {
+
+/*
+Language: TP
+Author: Jay Strybis 
+Description: FANUC TP programming language (TPP).
+*/
+
+function tp(hljs) {
+  const TPID = {
+    className: 'number',
+    begin: '[1-9][0-9]*', /* no leading zeros */
+    relevance: 0
+  };
+  const TPLABEL = {
+    className: 'symbol',
+    begin: ':[^\\]]+'
+  };
+  const TPDATA = {
+    className: 'built_in',
+    begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|' +
+    'TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[',
+    end: '\\]',
+    contains: [
+      'self',
+      TPID,
+      TPLABEL
+    ]
+  };
+  const TPIO = {
+    className: 'built_in',
+    begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[',
+    end: '\\]',
+    contains: [
+      'self',
+      TPID,
+      hljs.QUOTE_STRING_MODE, /* for pos section at bottom */
+      TPLABEL
+    ]
+  };
+
+  return {
+    name: 'TP',
+    keywords: {
+      keyword:
+        'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +
+        'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +
+        'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +
+        'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +
+        'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +
+        'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',
+      literal:
+        'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'
+    },
+    contains: [
+      TPDATA,
+      TPIO,
+      {
+        className: 'keyword',
+        begin: '/(PROG|ATTR|MN|POS|END)\\b'
+      },
+      {
+        /* this is for cases like ,CALL */
+        className: 'keyword',
+        begin: '(CALL|RUN|POINT_LOGIC|LBL)\\b'
+      },
+      {
+        /* this is for cases like CNT100 where the default lexemes do not
+         * separate the keyword and the number */
+        className: 'keyword',
+        begin: '\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'
+      },
+      {
+        /* to catch numbers that do not have a word boundary on the left */
+        className: 'number',
+        begin: '\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b',
+        relevance: 0
+      },
+      hljs.COMMENT('//', '[;$]'),
+      hljs.COMMENT('!', '[;$]'),
+      hljs.COMMENT('--eg:', '$'),
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        begin: '\'',
+        end: '\''
+      },
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'variable',
+        begin: '\\$[A-Za-z0-9_]+'
+      }
+    ]
+  };
+}
+
+module.exports = tp;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/twig.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/twig.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Twig
+Requires: xml.js
+Author: Luke Holder 
+Description: Twig is a templating language for PHP
+Website: https://twig.symfony.com
+Category: template
+*/
+
+function twig(hljs) {
+  var PARAMS = {
+    className: 'params',
+    begin: '\\(', end: '\\)'
+  };
+
+  var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +
+                  'max min parent random range source template_from_string';
+
+  var FUNCTIONS = {
+    beginKeywords: FUNCTION_NAMES,
+    keywords: {name: FUNCTION_NAMES},
+    relevance: 0,
+    contains: [
+      PARAMS
+    ]
+  };
+
+  var FILTER = {
+    begin: /\|[A-Za-z_]+:?/,
+    keywords:
+      'abs batch capitalize column convert_encoding date date_modify default ' +
+      'escape filter first format inky_to_html inline_css join json_encode keys last ' +
+      'length lower map markdown merge nl2br number_format raw reduce replace ' +
+      'reverse round slice sort spaceless split striptags title trim upper url_encode',
+    contains: [
+      FUNCTIONS
+    ]
+  };
+
+  var TAGS = 'apply autoescape block deprecated do embed extends filter flush for from ' +
+    'if import include macro sandbox set use verbatim with';
+
+  TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');
+
+  return {
+    name: 'Twig',
+    aliases: ['craftcms'],
+    case_insensitive: true,
+    subLanguage: 'xml',
+    contains: [
+      hljs.COMMENT(/\{#/, /#\}/),
+      {
+        className: 'template-tag',
+        begin: /\{%/, end: /%\}/,
+        contains: [
+          {
+            className: 'name',
+            begin: /\w+/,
+            keywords: TAGS,
+            starts: {
+              endsWithParent: true,
+              contains: [FILTER, FUNCTIONS],
+              relevance: 0
+            }
+          }
+        ]
+      },
+      {
+        className: 'template-variable',
+        begin: /\{\{/, end: /\}\}/,
+        contains: ['self', FILTER, FUNCTIONS]
+      }
+    ]
+  };
+}
+
+module.exports = twig;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/typescript.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/typescript.js ***!
+  \***************************************************************/
+/***/ ((module) => {
+
+const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';
+const KEYWORDS = [
+  "as", // for exports
+  "in",
+  "of",
+  "if",
+  "for",
+  "while",
+  "finally",
+  "var",
+  "new",
+  "function",
+  "do",
+  "return",
+  "void",
+  "else",
+  "break",
+  "catch",
+  "instanceof",
+  "with",
+  "throw",
+  "case",
+  "default",
+  "try",
+  "switch",
+  "continue",
+  "typeof",
+  "delete",
+  "let",
+  "yield",
+  "const",
+  "class",
+  // JS handles these with a special rule
+  // "get",
+  // "set",
+  "debugger",
+  "async",
+  "await",
+  "static",
+  "import",
+  "from",
+  "export",
+  "extends"
+];
+const LITERALS = [
+  "true",
+  "false",
+  "null",
+  "undefined",
+  "NaN",
+  "Infinity"
+];
+
+const TYPES = [
+  "Intl",
+  "DataView",
+  "Number",
+  "Math",
+  "Date",
+  "String",
+  "RegExp",
+  "Object",
+  "Function",
+  "Boolean",
+  "Error",
+  "Symbol",
+  "Set",
+  "Map",
+  "WeakSet",
+  "WeakMap",
+  "Proxy",
+  "Reflect",
+  "JSON",
+  "Promise",
+  "Float64Array",
+  "Int16Array",
+  "Int32Array",
+  "Int8Array",
+  "Uint16Array",
+  "Uint32Array",
+  "Float32Array",
+  "Array",
+  "Uint8Array",
+  "Uint8ClampedArray",
+  "ArrayBuffer",
+  "BigInt64Array",
+  "BigUint64Array",
+  "BigInt"
+];
+
+const ERROR_TYPES = [
+  "EvalError",
+  "InternalError",
+  "RangeError",
+  "ReferenceError",
+  "SyntaxError",
+  "TypeError",
+  "URIError"
+];
+
+const BUILT_IN_GLOBALS = [
+  "setInterval",
+  "setTimeout",
+  "clearInterval",
+  "clearTimeout",
+
+  "require",
+  "exports",
+
+  "eval",
+  "isFinite",
+  "isNaN",
+  "parseFloat",
+  "parseInt",
+  "decodeURI",
+  "decodeURIComponent",
+  "encodeURI",
+  "encodeURIComponent",
+  "escape",
+  "unescape"
+];
+
+const BUILT_IN_VARIABLES = [
+  "arguments",
+  "this",
+  "super",
+  "console",
+  "window",
+  "document",
+  "localStorage",
+  "module",
+  "global" // Node.js
+];
+
+const BUILT_INS = [].concat(
+  BUILT_IN_GLOBALS,
+  BUILT_IN_VARIABLES,
+  TYPES,
+  ERROR_TYPES
+);
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/*
+Language: JavaScript
+Description: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.
+Category: common, scripting
+Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript
+*/
+
+/** @type LanguageFn */
+function javascript(hljs) {
+  /**
+   * Takes a string like " {
+    const tag = "',
+    end: ''
+  };
+  const XML_TAG = {
+    begin: /<[A-Za-z0-9\\._:-]+/,
+    end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
+    /**
+     * @param {RegExpMatchArray} match
+     * @param {CallbackResponse} response
+     */
+    isTrulyOpeningTag: (match, response) => {
+      const afterMatchIndex = match[0].length + match.index;
+      const nextChar = match.input[afterMatchIndex];
+      // nested type?
+      // HTML should not include another raw `<` inside a tag
+      // But a type might: `>`, etc.
+      if (nextChar === "<") {
+        response.ignoreMatch();
+        return;
+      }
+      // 
+      // This is now either a tag or a type.
+      if (nextChar === ">") {
+        // if we cannot find a matching closing tag, then we
+        // will ignore it
+        if (!hasClosingTag(match, { after: afterMatchIndex })) {
+          response.ignoreMatch();
+        }
+      }
+    }
+  };
+  const KEYWORDS$1 = {
+    $pattern: IDENT_RE,
+    keyword: KEYWORDS,
+    literal: LITERALS,
+    built_in: BUILT_INS
+  };
+
+  // https://tc39.es/ecma262/#sec-literals-numeric-literals
+  const decimalDigits = '[0-9](_?[0-9])*';
+  const frac = `\\.(${decimalDigits})`;
+  // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral
+  // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals
+  const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;
+  const NUMBER = {
+    className: 'number',
+    variants: [
+      // DecimalLiteral
+      { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))` +
+        `[eE][+-]?(${decimalDigits})\\b` },
+      { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` },
+
+      // DecimalBigIntegerLiteral
+      { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` },
+
+      // NonDecimalIntegerLiteral
+      { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" },
+      { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" },
+      { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" },
+
+      // LegacyOctalIntegerLiteral (does not include underscore separators)
+      // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals
+      { begin: "\\b0[0-7]+n?\\b" },
+    ],
+    relevance: 0
+  };
+
+  const SUBST = {
+    className: 'subst',
+    begin: '\\$\\{',
+    end: '\\}',
+    keywords: KEYWORDS$1,
+    contains: [] // defined later
+  };
+  const HTML_TEMPLATE = {
+    begin: 'html`',
+    end: '',
+    starts: {
+      end: '`',
+      returnEnd: false,
+      contains: [
+        hljs.BACKSLASH_ESCAPE,
+        SUBST
+      ],
+      subLanguage: 'xml'
+    }
+  };
+  const CSS_TEMPLATE = {
+    begin: 'css`',
+    end: '',
+    starts: {
+      end: '`',
+      returnEnd: false,
+      contains: [
+        hljs.BACKSLASH_ESCAPE,
+        SUBST
+      ],
+      subLanguage: 'css'
+    }
+  };
+  const TEMPLATE_STRING = {
+    className: 'string',
+    begin: '`',
+    end: '`',
+    contains: [
+      hljs.BACKSLASH_ESCAPE,
+      SUBST
+    ]
+  };
+  const JSDOC_COMMENT = hljs.COMMENT(
+    /\/\*\*(?!\/)/,
+    '\\*/',
+    {
+      relevance: 0,
+      contains: [
+        {
+          className: 'doctag',
+          begin: '@[A-Za-z]+',
+          contains: [
+            {
+              className: 'type',
+              begin: '\\{',
+              end: '\\}',
+              relevance: 0
+            },
+            {
+              className: 'variable',
+              begin: IDENT_RE$1 + '(?=\\s*(-)|$)',
+              endsParent: true,
+              relevance: 0
+            },
+            // eat spaces (not newlines) so we can find
+            // types or variables
+            {
+              begin: /(?=[^\n])\s/,
+              relevance: 0
+            }
+          ]
+        }
+      ]
+    }
+  );
+  const COMMENT = {
+    className: "comment",
+    variants: [
+      JSDOC_COMMENT,
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.C_LINE_COMMENT_MODE
+    ]
+  };
+  const SUBST_INTERNALS = [
+    hljs.APOS_STRING_MODE,
+    hljs.QUOTE_STRING_MODE,
+    HTML_TEMPLATE,
+    CSS_TEMPLATE,
+    TEMPLATE_STRING,
+    NUMBER,
+    hljs.REGEXP_MODE
+  ];
+  SUBST.contains = SUBST_INTERNALS
+    .concat({
+      // we need to pair up {} inside our subst to prevent
+      // it from ending too early by matching another }
+      begin: /\{/,
+      end: /\}/,
+      keywords: KEYWORDS$1,
+      contains: [
+        "self"
+      ].concat(SUBST_INTERNALS)
+    });
+  const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);
+  const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([
+    // eat recursive parens in sub expressions
+    {
+      begin: /\(/,
+      end: /\)/,
+      keywords: KEYWORDS$1,
+      contains: ["self"].concat(SUBST_AND_COMMENTS)
+    }
+  ]);
+  const PARAMS = {
+    className: 'params',
+    begin: /\(/,
+    end: /\)/,
+    excludeBegin: true,
+    excludeEnd: true,
+    keywords: KEYWORDS$1,
+    contains: PARAMS_CONTAINS
+  };
+
+  return {
+    name: 'Javascript',
+    aliases: ['js', 'jsx', 'mjs', 'cjs'],
+    keywords: KEYWORDS$1,
+    // this will be extended by TypeScript
+    exports: { PARAMS_CONTAINS },
+    illegal: /#(?![$_A-z])/,
+    contains: [
+      hljs.SHEBANG({
+        label: "shebang",
+        binary: "node",
+        relevance: 5
+      }),
+      {
+        label: "use_strict",
+        className: 'meta',
+        relevance: 10,
+        begin: /^\s*['"]use (strict|asm)['"]/
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      HTML_TEMPLATE,
+      CSS_TEMPLATE,
+      TEMPLATE_STRING,
+      COMMENT,
+      NUMBER,
+      { // object attr container
+        begin: concat(/[{,\n]\s*/,
+          // we need to look ahead to make sure that we actually have an
+          // attribute coming up so we don't steal a comma from a potential
+          // "value" container
+          //
+          // NOTE: this might not work how you think.  We don't actually always
+          // enter this mode and stay.  Instead it might merely match `,
+          // ` and then immediately end after the , because it
+          // fails to find any actual attrs. But this still does the job because
+          // it prevents the value contain rule from grabbing this instead and
+          // prevening this rule from firing when we actually DO have keys.
+          lookahead(concat(
+            // we also need to allow for multiple possible comments inbetween
+            // the first key:value pairing
+            /(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,
+            IDENT_RE$1 + '\\s*:'))),
+        relevance: 0,
+        contains: [
+          {
+            className: 'attr',
+            begin: IDENT_RE$1 + lookahead('\\s*:'),
+            relevance: 0
+          }
+        ]
+      },
+      { // "value" container
+        begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*',
+        keywords: 'return throw case',
+        contains: [
+          COMMENT,
+          hljs.REGEXP_MODE,
+          {
+            className: 'function',
+            // we have to count the parens to make sure we actually have the
+            // correct bounding ( ) before the =>.  There could be any number of
+            // sub-expressions inside also surrounded by parens.
+            begin: '(\\(' +
+            '[^()]*(\\(' +
+            '[^()]*(\\(' +
+            '[^()]*' +
+            '\\)[^()]*)*' +
+            '\\)[^()]*)*' +
+            '\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\s*=>',
+            returnBegin: true,
+            end: '\\s*=>',
+            contains: [
+              {
+                className: 'params',
+                variants: [
+                  {
+                    begin: hljs.UNDERSCORE_IDENT_RE,
+                    relevance: 0
+                  },
+                  {
+                    className: null,
+                    begin: /\(\s*\)/,
+                    skip: true
+                  },
+                  {
+                    begin: /\(/,
+                    end: /\)/,
+                    excludeBegin: true,
+                    excludeEnd: true,
+                    keywords: KEYWORDS$1,
+                    contains: PARAMS_CONTAINS
+                  }
+                ]
+              }
+            ]
+          },
+          { // could be a comma delimited list of params to a function call
+            begin: /,/, relevance: 0
+          },
+          {
+            className: '',
+            begin: /\s/,
+            end: /\s*/,
+            skip: true
+          },
+          { // JSX
+            variants: [
+              { begin: FRAGMENT.begin, end: FRAGMENT.end },
+              {
+                begin: XML_TAG.begin,
+                // we carefully check the opening tag to see if it truly
+                // is a tag and not a false positive
+                'on:begin': XML_TAG.isTrulyOpeningTag,
+                end: XML_TAG.end
+              }
+            ],
+            subLanguage: 'xml',
+            contains: [
+              {
+                begin: XML_TAG.begin,
+                end: XML_TAG.end,
+                skip: true,
+                contains: ['self']
+              }
+            ]
+          }
+        ],
+        relevance: 0
+      },
+      {
+        className: 'function',
+        beginKeywords: 'function',
+        end: /[{;]/,
+        excludeEnd: true,
+        keywords: KEYWORDS$1,
+        contains: [
+          'self',
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+          PARAMS
+        ],
+        illegal: /%/
+      },
+      {
+        // prevent this from getting swallowed up by function
+        // since they appear "function like"
+        beginKeywords: "while if switch catch for"
+      },
+      {
+        className: 'function',
+        // we have to count the parens to make sure we actually have the correct
+        // bounding ( ).  There could be any number of sub-expressions inside
+        // also surrounded by parens.
+        begin: hljs.UNDERSCORE_IDENT_RE +
+          '\\(' + // first parens
+          '[^()]*(\\(' +
+            '[^()]*(\\(' +
+              '[^()]*' +
+            '\\)[^()]*)*' +
+          '\\)[^()]*)*' +
+          '\\)\\s*\\{', // end parens
+        returnBegin:true,
+        contains: [
+          PARAMS,
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+        ]
+      },
+      // hack: prevents detection of keywords in some circumstances
+      // .keyword()
+      // $keyword = x
+      {
+        variants: [
+          { begin: '\\.' + IDENT_RE$1 },
+          { begin: '\\$' + IDENT_RE$1 }
+        ],
+        relevance: 0
+      },
+      { // ES6 class
+        className: 'class',
+        beginKeywords: 'class',
+        end: /[{;=]/,
+        excludeEnd: true,
+        illegal: /[:"[\]]/,
+        contains: [
+          { beginKeywords: 'extends' },
+          hljs.UNDERSCORE_TITLE_MODE
+        ]
+      },
+      {
+        begin: /\b(?=constructor)/,
+        end: /[{;]/,
+        excludeEnd: true,
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+          'self',
+          PARAMS
+        ]
+      },
+      {
+        begin: '(get|set)\\s+(?=' + IDENT_RE$1 + '\\()',
+        end: /\{/,
+        keywords: "get set",
+        contains: [
+          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),
+          { begin: /\(\)/ }, // eat to avoid empty params
+          PARAMS
+        ]
+      },
+      {
+        begin: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`
+      }
+    ]
+  };
+}
+
+/*
+Language: TypeScript
+Author: Panu Horsmalahti 
+Contributors: Ike Ku 
+Description: TypeScript is a strict superset of JavaScript
+Website: https://www.typescriptlang.org
+Category: common, scripting
+*/
+
+/** @type LanguageFn */
+function typescript(hljs) {
+  const IDENT_RE$1 = IDENT_RE;
+  const NAMESPACE = {
+    beginKeywords: 'namespace', end: /\{/, excludeEnd: true
+  };
+  const INTERFACE = {
+    beginKeywords: 'interface', end: /\{/, excludeEnd: true,
+    keywords: 'interface extends'
+  };
+  const USE_STRICT = {
+    className: 'meta',
+    relevance: 10,
+    begin: /^\s*['"]use strict['"]/
+  };
+  const TYPES = [
+    "any",
+    "void",
+    "number",
+    "boolean",
+    "string",
+    "object",
+    "never",
+    "enum"
+  ];
+  const TS_SPECIFIC_KEYWORDS = [
+    "type",
+    "namespace",
+    "typedef",
+    "interface",
+    "public",
+    "private",
+    "protected",
+    "implements",
+    "declare",
+    "abstract",
+    "readonly"
+  ];
+  const KEYWORDS$1 = {
+    $pattern: IDENT_RE,
+    keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),
+    literal: LITERALS,
+    built_in: BUILT_INS.concat(TYPES)
+  };
+  const DECORATOR = {
+    className: 'meta',
+    begin: '@' + IDENT_RE$1,
+  };
+
+  const swapMode = (mode, label, replacement) => {
+    const indx = mode.contains.findIndex(m => m.label === label);
+    if (indx === -1) { throw new Error("can not find mode to replace"); }
+    mode.contains.splice(indx, 1, replacement);
+  };
+
+  const tsLanguage = javascript(hljs);
+
+  // this should update anywhere keywords is used since
+  // it will be the same actual JS object
+  Object.assign(tsLanguage.keywords, KEYWORDS$1);
+
+  tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);
+  tsLanguage.contains = tsLanguage.contains.concat([
+    DECORATOR,
+    NAMESPACE,
+    INTERFACE,
+  ]);
+
+  // TS gets a simpler shebang rule than JS
+  swapMode(tsLanguage, "shebang", hljs.SHEBANG());
+  // JS use strict rule purposely excludes `asm` which makes no sense
+  swapMode(tsLanguage, "use_strict", USE_STRICT);
+
+  const functionDeclaration = tsLanguage.contains.find(m => m.className === "function");
+  functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript
+
+  Object.assign(tsLanguage, {
+    name: 'TypeScript',
+    aliases: ['ts', 'tsx']
+  });
+
+  return tsLanguage;
+}
+
+module.exports = typescript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/vala.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/vala.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Vala
+Author: Antono Vasiljev 
+Description: Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.
+Website: https://wiki.gnome.org/Projects/Vala
+*/
+
+function vala(hljs) {
+  return {
+    name: 'Vala',
+    keywords: {
+      keyword:
+        // Value types
+        'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +
+        'uint16 uint32 uint64 float double bool struct enum string void ' +
+        // Reference types
+        'weak unowned owned ' +
+        // Modifiers
+        'async signal static abstract interface override virtual delegate ' +
+        // Control Structures
+        'if while do for foreach else switch case break default return try catch ' +
+        // Visibility
+        'public private protected internal ' +
+        // Other
+        'using new this get set const stdout stdin stderr var',
+      built_in:
+        'DBus GLib CCode Gee Object Gtk Posix',
+      literal:
+        'false true null'
+    },
+    contains: [
+      {
+        className: 'class',
+        beginKeywords: 'class interface namespace',
+        end: /\{/,
+        excludeEnd: true,
+        illegal: '[^,:\\n\\s\\.]',
+        contains: [ hljs.UNDERSCORE_TITLE_MODE ]
+      },
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      {
+        className: 'string',
+        begin: '"""',
+        end: '"""',
+        relevance: 5
+      },
+      hljs.APOS_STRING_MODE,
+      hljs.QUOTE_STRING_MODE,
+      hljs.C_NUMBER_MODE,
+      {
+        className: 'meta',
+        begin: '^#',
+        end: '$',
+        relevance: 2
+      }
+    ]
+  };
+}
+
+module.exports = vala;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/vbnet.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/vbnet.js ***!
+  \**********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: Visual Basic .NET
+Description: Visual Basic .NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework.
+Authors: Poren Chiang , Jan Pilzer
+Website: https://docs.microsoft.com/dotnet/visual-basic/getting-started
+Category: common
+*/
+
+/** @type LanguageFn */
+function vbnet(hljs) {
+  /**
+   * Character Literal
+   * Either a single character ("a"C) or an escaped double quote (""""C).
+   */
+  const CHARACTER = {
+    className: 'string',
+    begin: /"(""|[^/n])"C\b/
+  };
+
+  const STRING = {
+    className: 'string',
+    begin: /"/,
+    end: /"/,
+    illegal: /\n/,
+    contains: [
+      {
+        // double quote escape
+        begin: /""/
+      }
+    ]
+  };
+
+  /** Date Literals consist of a date, a time, or both separated by whitespace, surrounded by # */
+  const MM_DD_YYYY = /\d{1,2}\/\d{1,2}\/\d{4}/;
+  const YYYY_MM_DD = /\d{4}-\d{1,2}-\d{1,2}/;
+  const TIME_12H = /(\d|1[012])(:\d+){0,2} *(AM|PM)/;
+  const TIME_24H = /\d{1,2}(:\d{1,2}){1,2}/;
+  const DATE = {
+    className: 'literal',
+    variants: [
+      {
+        // #YYYY-MM-DD# (ISO-Date) or #M/D/YYYY# (US-Date)
+        begin: concat(/# */, either(YYYY_MM_DD, MM_DD_YYYY), / *#/)
+      },
+      {
+        // #H:mm[:ss]# (24h Time)
+        begin: concat(/# */, TIME_24H, / *#/)
+      },
+      {
+        // #h[:mm[:ss]] A# (12h Time)
+        begin: concat(/# */, TIME_12H, / *#/)
+      },
+      {
+        // date plus time
+        begin: concat(
+          /# */,
+          either(YYYY_MM_DD, MM_DD_YYYY),
+          / +/,
+          either(TIME_12H, TIME_24H),
+          / *#/
+        )
+      }
+    ]
+  };
+
+  const NUMBER = {
+    className: 'number',
+    relevance: 0,
+    variants: [
+      {
+        // Float
+        begin: /\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/
+      },
+      {
+        // Integer (base 10)
+        begin: /\b\d[\d_]*((U?[SIL])|[%&])?/
+      },
+      {
+        // Integer (base 16)
+        begin: /&H[\dA-F_]+((U?[SIL])|[%&])?/
+      },
+      {
+        // Integer (base 8)
+        begin: /&O[0-7_]+((U?[SIL])|[%&])?/
+      },
+      {
+        // Integer (base 2)
+        begin: /&B[01_]+((U?[SIL])|[%&])?/
+      }
+    ]
+  };
+
+  const LABEL = {
+    className: 'label',
+    begin: /^\w+:/
+  };
+
+  const DOC_COMMENT = hljs.COMMENT(/'''/, /$/, {
+    contains: [
+      {
+        className: 'doctag',
+        begin: /<\/?/,
+        end: />/
+      }
+    ]
+  });
+
+  const COMMENT = hljs.COMMENT(null, /$/, {
+    variants: [
+      {
+        begin: /'/
+      },
+      {
+        // TODO: Use `beforeMatch:` for leading spaces
+        begin: /([\t ]|^)REM(?=\s)/
+      }
+    ]
+  });
+
+  const DIRECTIVES = {
+    className: 'meta',
+    // TODO: Use `beforeMatch:` for indentation once available
+    begin: /[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,
+    end: /$/,
+    keywords: {
+      'meta-keyword':
+        'const disable else elseif enable end externalsource if region then'
+    },
+    contains: [ COMMENT ]
+  };
+
+  return {
+    name: 'Visual Basic .NET',
+    aliases: [ 'vb' ],
+    case_insensitive: true,
+    classNameAliases: {
+      label: 'symbol'
+    },
+    keywords: {
+      keyword:
+        'addhandler alias aggregate ansi as async assembly auto binary by byref byval ' + /* a-b */
+        'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */
+        'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */
+        'get global goto group handles if implements imports in inherits interface into iterator ' + /* g-i */
+        'join key let lib loop me mid module mustinherit mustoverride mybase myclass ' + /* j-m */
+        'namespace narrowing new next notinheritable notoverridable ' + /* n */
+        'of off on operator option optional order overloads overridable overrides ' + /* o */
+        'paramarray partial preserve private property protected public ' + /* p */
+        'raiseevent readonly redim removehandler resume return ' + /* r */
+        'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */
+        'take text then throw to try unicode until using when where while widening with withevents writeonly yield' /* t-y */,
+      built_in:
+        // Operators https://docs.microsoft.com/dotnet/visual-basic/language-reference/operators
+        'addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor ' +
+        // Type Conversion Functions https://docs.microsoft.com/dotnet/visual-basic/language-reference/functions/type-conversion-functions
+        'cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort',
+      type:
+        // Data types https://docs.microsoft.com/dotnet/visual-basic/language-reference/data-types
+        'boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort',
+      literal: 'true false nothing'
+    },
+    illegal:
+      '//|\\{|\\}|endif|gosub|variant|wend|^\\$ ' /* reserved deprecated keywords */,
+    contains: [
+      CHARACTER,
+      STRING,
+      DATE,
+      NUMBER,
+      LABEL,
+      DOC_COMMENT,
+      COMMENT,
+      DIRECTIVES
+    ]
+  };
+}
+
+module.exports = vbnet;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/vbscript-html.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/vbscript-html.js ***!
+  \******************************************************************/
+/***/ ((module) => {
+
+/*
+Language: VBScript in HTML
+Requires: xml.js, vbscript.js
+Author: Ivan Sagalaev 
+Description: "Bridge" language defining fragments of VBScript in HTML within <% .. %>
+Website: https://en.wikipedia.org/wiki/VBScript
+Category: scripting
+*/
+
+function vbscriptHtml(hljs) {
+  return {
+    name: 'VBScript in HTML',
+    subLanguage: 'xml',
+    contains: [
+      {
+        begin: '<%',
+        end: '%>',
+        subLanguage: 'vbscript'
+      }
+    ]
+  };
+}
+
+module.exports = vbscriptHtml;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/vbscript.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/vbscript.js ***!
+  \*************************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: VBScript
+Description: VBScript ("Microsoft Visual Basic Scripting Edition") is an Active Scripting language developed by Microsoft that is modeled on Visual Basic.
+Author: Nikita Ledyaev 
+Contributors: Michal Gabrukiewicz 
+Website: https://en.wikipedia.org/wiki/VBScript
+Category: scripting
+*/
+
+/** @type LanguageFn */
+function vbscript(hljs) {
+  const BUILT_IN_FUNCTIONS = ('lcase month vartype instrrev ubound setlocale getobject rgb getref string ' +
+  'weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency ' +
+  'conversions csng timevalue second year space abs clng timeserial fixs len asc ' +
+  'isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate ' +
+  'instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex ' +
+  'chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim ' +
+  'strcomp int createobject loadpicture tan formatnumber mid ' +
+  'split  cint sin datepart ltrim sqr ' +
+  'time derived eval date formatpercent exp inputbox left ascw ' +
+  'chrw regexp cstr err').split(" ");
+  const BUILT_IN_OBJECTS = [
+    "server",
+    "response",
+    "request",
+    // take no arguments so can be called without ()
+    "scriptengine",
+    "scriptenginebuildversion",
+    "scriptengineminorversion",
+    "scriptenginemajorversion"
+  ];
+
+  const BUILT_IN_CALL = {
+    begin: concat(either(...BUILT_IN_FUNCTIONS), "\\s*\\("),
+    // relevance 0 because this is acting as a beginKeywords really
+    relevance:0,
+    keywords: {
+      built_in: BUILT_IN_FUNCTIONS
+    }
+  };
+
+  return {
+    name: 'VBScript',
+    aliases: ['vbs'],
+    case_insensitive: true,
+    keywords: {
+      keyword:
+        'call class const dim do loop erase execute executeglobal exit for each next function ' +
+        'if then else on error option explicit new private property let get public randomize ' +
+        'redim rem select case set stop sub while wend with end to elseif is or xor and not ' +
+        'class_initialize class_terminate default preserve in me byval byref step resume goto',
+      built_in: BUILT_IN_OBJECTS,
+      literal:
+        'true false null nothing empty'
+    },
+    illegal: '//',
+    contains: [
+      BUILT_IN_CALL,
+      hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '""'}]}),
+      hljs.COMMENT(
+        /'/,
+        /$/,
+        {
+          relevance: 0
+        }
+      ),
+      hljs.C_NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = vbscript;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/verilog.js":
+/*!************************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/verilog.js ***!
+  \************************************************************/
+/***/ ((module) => {
+
+/*
+Language: Verilog
+Author: Jon Evans 
+Contributors: Boone Severson 
+Description: Verilog is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. This highlighter supports Verilog and SystemVerilog through IEEE 1800-2012.
+Website: http://www.verilog.com
+*/
+
+function verilog(hljs) {
+  const SV_KEYWORDS = {
+    $pattern: /[\w\$]+/,
+    keyword:
+      'accept_on alias always always_comb always_ff always_latch and assert assign ' +
+      'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +
+      'byte case casex casez cell chandle checker class clocking cmos config const ' +
+      'constraint context continue cover covergroup coverpoint cross deassign default ' +
+      'defparam design disable dist do edge else end endcase endchecker endclass ' +
+      'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +
+      'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +
+      'endtask enum event eventually expect export extends extern final first_match for ' +
+      'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +
+      'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +
+      'initial inout input inside instance int integer interconnect interface intersect ' +
+      'join join_any join_none large let liblist library local localparam logic longint ' +
+      'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +
+      'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +
+      'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +
+      'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +
+      'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +
+      'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +
+      'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +
+      'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +
+      'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +
+      'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +
+      'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +
+      'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',
+    literal:
+      'null',
+    built_in:
+      '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +
+      '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +
+      '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +
+      '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +
+      '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +
+      '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +
+      '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +
+      '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +
+      '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +
+      '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +
+      '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +
+      '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +
+      '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +
+      '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +
+      '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +
+      '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +
+      '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +
+      '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +
+      '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +
+      '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +
+      '$write $readmemb $readmemh $writememh $value$plusargs ' +
+      '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +
+      '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +
+      '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +
+      '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +
+      '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +
+      '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +
+      '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +
+      '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'
+  };
+
+  return {
+    name: 'Verilog',
+    aliases: [
+      'v',
+      'sv',
+      'svh'
+    ],
+    case_insensitive: false,
+    keywords: SV_KEYWORDS,
+    contains: [
+      hljs.C_BLOCK_COMMENT_MODE,
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'number',
+        contains: [ hljs.BACKSLASH_ESCAPE ],
+        variants: [
+          {
+            begin: '\\b((\\d+\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'
+          },
+          {
+            begin: '\\B((\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'
+          },
+          {
+            begin: '\\b([0-9_])+',
+            relevance: 0
+          }
+        ]
+      },
+      /* parameters to instances */
+      {
+        className: 'variable',
+        variants: [
+          {
+            begin: '#\\((?!parameter).+\\)'
+          },
+          {
+            begin: '\\.\\w+',
+            relevance: 0
+          }
+        ]
+      },
+      {
+        className: 'meta',
+        begin: '`',
+        end: '$',
+        keywords: {
+          'meta-keyword':
+            'define __FILE__ ' +
+            '__LINE__ begin_keywords celldefine default_nettype define ' +
+            'else elsif end_keywords endcelldefine endif ifdef ifndef ' +
+            'include line nounconnected_drive pragma resetall timescale ' +
+            'unconnected_drive undef undefineall'
+        },
+        relevance: 0
+      }
+    ]
+  };
+}
+
+module.exports = verilog;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/vhdl.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/vhdl.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+/*
+Language: VHDL
+Author: Igor Kalnitsky 
+Contributors: Daniel C.K. Kho , Guillaume Savaton 
+Description: VHDL is a hardware description language used in electronic design automation to describe digital and mixed-signal systems.
+Website: https://en.wikipedia.org/wiki/VHDL
+*/
+
+function vhdl(hljs) {
+  // Regular expression for VHDL numeric literals.
+
+  // Decimal literal:
+  const INTEGER_RE = '\\d(_|\\d)*';
+  const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;
+  const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';
+  // Based literal:
+  const BASED_INTEGER_RE = '\\w+';
+  const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';
+
+  const NUMBER_RE = '\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';
+
+  return {
+    name: 'VHDL',
+    case_insensitive: true,
+    keywords: {
+      keyword:
+        'abs access after alias all and architecture array assert assume assume_guarantee attribute ' +
+        'begin block body buffer bus case component configuration constant context cover disconnect ' +
+        'downto default else elsif end entity exit fairness file for force function generate ' +
+        'generic group guarded if impure in inertial inout is label library linkage literal ' +
+        'loop map mod nand new next nor not null of on open or others out package parameter port ' +
+        'postponed procedure process property protected pure range record register reject ' +
+        'release rem report restrict restrict_guarantee return rol ror select sequence ' +
+        'severity shared signal sla sll sra srl strong subtype then to transport type ' +
+        'unaffected units until use variable view vmode vprop vunit wait when while with xnor xor',
+      built_in:
+        'boolean bit character ' +
+        'integer time delay_length natural positive ' +
+        'string bit_vector file_open_kind file_open_status ' +
+        'std_logic std_logic_vector unsigned signed boolean_vector integer_vector ' +
+        'std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed ' +
+        'real_vector time_vector',
+      literal:
+        'false true note warning error failure ' + // severity_level
+        'line text side width' // textio
+    },
+    illegal: /\{/,
+    contains: [
+      hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting.
+      hljs.COMMENT('--', '$'),
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'number',
+        begin: NUMBER_RE,
+        relevance: 0
+      },
+      {
+        className: 'string',
+        begin: '\'(U|X|0|1|Z|W|L|H|-)\'',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      },
+      {
+        className: 'symbol',
+        begin: '\'[A-Za-z](_?[A-Za-z0-9])*',
+        contains: [ hljs.BACKSLASH_ESCAPE ]
+      }
+    ]
+  };
+}
+
+module.exports = vhdl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/vim.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/vim.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Vim Script
+Author: Jun Yang 
+Description: full keyword and built-in from http://vimdoc.sourceforge.net/htmldoc/
+Website: https://www.vim.org
+Category: scripting
+*/
+
+function vim(hljs) {
+  return {
+    name: 'Vim Script',
+    keywords: {
+      $pattern: /[!#@\w]+/,
+      keyword:
+        // express version except: ! & * < = > !! # @ @@
+        'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope ' +
+        'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ' +
+        'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 ' +
+        'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor ' +
+        'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew ' +
+        'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ ' +
+        // full version
+        'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload ' +
+        'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap ' +
+        'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor ' +
+        'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap ' +
+        'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview ' +
+        'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap ' +
+        'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ' +
+        'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding ' +
+        'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace ' +
+        'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious ' + 'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew ' +
+        'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',
+      built_in: // built in func
+        'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' +
+        'complete_check add getwinposx getqflist getwinposy screencol ' +
+        'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' +
+        'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' +
+        'shiftwidth max sinh isdirectory synID system inputrestore winline ' +
+        'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' +
+        'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' +
+        'taglist string getmatches bufnr strftime winwidth bufexists ' +
+        'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' +
+        'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' +
+        'resolve libcallnr foldclosedend reverse filter has_key bufname ' +
+        'str2float strlen setline getcharmod setbufvar index searchpos ' +
+        'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' +
+        'virtcol floor remove undotree remote_expr winheight gettabwinvar ' +
+        'reltime cursor tabpagenr finddir localtime acos getloclist search ' +
+        'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' +
+        'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' +
+        'synconcealed nextnonblank server2client complete settabwinvar ' +
+        'executable input wincol setmatches getftype hlID inputsave ' +
+        'searchpair or screenrow line settabvar histadd deepcopy strpart ' +
+        'remote_peek and eval getftime submatch screenchar winsaveview ' +
+        'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' +
+        'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' +
+        'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' +
+        'hostname setpos globpath remote_foreground getchar synIDattr ' +
+        'fnamemodify cscope_connection stridx winbufnr indent min ' +
+        'complete_add nr2char searchpairpos inputdialog values matchlist ' +
+        'items hlexists strridx browsedir expand fmod pathshorten line2byte ' +
+        'argc count getwinvar glob foldtextresult getreg foreground cosh ' +
+        'matchdelete has char2nr simplify histget searchdecl iconv ' +
+        'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' +
+        'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' +
+        'islocked escape eventhandler remote_send serverlist winrestview ' +
+        'synstack pyeval prevnonblank readfile cindent filereadable changenr ' +
+        'exp'
+    },
+    illegal: /;/,
+    contains: [
+      hljs.NUMBER_MODE,
+      {
+        className: 'string',
+        begin: '\'',
+        end: '\'',
+        illegal: '\\n'
+      },
+
+      /*
+      A double quote can start either a string or a line comment. Strings are
+      ended before the end of a line by another double quote and can contain
+      escaped double-quotes and post-escaped line breaks.
+
+      Also, any double quote at the beginning of a line is a comment but we
+      don't handle that properly at the moment: any double quote inside will
+      turn them into a string. Handling it properly will require a smarter
+      parser.
+      */
+      {
+        className: 'string',
+        begin: /"(\\"|\n\\|[^"\n])*"/
+      },
+      hljs.COMMENT('"', '$'),
+
+      {
+        className: 'variable',
+        begin: /[bwtglsav]:[\w\d_]*/
+      },
+      {
+        className: 'function',
+        beginKeywords: 'function function!',
+        end: '$',
+        relevance: 0,
+        contains: [
+          hljs.TITLE_MODE,
+          {
+            className: 'params',
+            begin: '\\(',
+            end: '\\)'
+          }
+        ]
+      },
+      {
+        className: 'symbol',
+        begin: /<[\w-]+>/
+      }
+    ]
+  };
+}
+
+module.exports = vim;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/x86asm.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/x86asm.js ***!
+  \***********************************************************/
+/***/ ((module) => {
+
+/*
+Language: Intel x86 Assembly
+Author: innocenat 
+Description: x86 assembly language using Intel's mnemonic and NASM syntax
+Website: https://en.wikipedia.org/wiki/X86_assembly_language
+Category: assembler
+*/
+
+function x86asm(hljs) {
+  return {
+    name: 'Intel x86 Assembly',
+    case_insensitive: true,
+    keywords: {
+      $pattern: '[.%]?' + hljs.IDENT_RE,
+      keyword:
+        'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' +
+        'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',
+      built_in:
+        // Instruction pointer
+        'ip eip rip ' +
+        // 8-bit registers
+        'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' +
+        // 16-bit registers
+        'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' +
+        // 32-bit registers
+        'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' +
+        // 64-bit registers
+        'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' +
+        // Segment registers
+        'cs ds es fs gs ss ' +
+        // Floating point stack registers
+        'st st0 st1 st2 st3 st4 st5 st6 st7 ' +
+        // MMX Registers
+        'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' +
+        // SSE registers
+        'xmm0  xmm1  xmm2  xmm3  xmm4  xmm5  xmm6  xmm7  xmm8  xmm9 xmm10  xmm11 xmm12 xmm13 xmm14 xmm15 ' +
+        'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' +
+        // AVX registers
+        'ymm0  ymm1  ymm2  ymm3  ymm4  ymm5  ymm6  ymm7  ymm8  ymm9 ymm10  ymm11 ymm12 ymm13 ymm14 ymm15 ' +
+        'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' +
+        // AVX-512F registers
+        'zmm0  zmm1  zmm2  zmm3  zmm4  zmm5  zmm6  zmm7  zmm8  zmm9 zmm10  zmm11 zmm12 zmm13 zmm14 zmm15 ' +
+        'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' +
+        // AVX-512F mask registers
+        'k0 k1 k2 k3 k4 k5 k6 k7 ' +
+        // Bound (MPX) register
+        'bnd0 bnd1 bnd2 bnd3 ' +
+        // Special register
+        'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' +
+        // NASM altreg package
+        'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' +
+        'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' +
+        'r0h r1h r2h r3h ' +
+        'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' +
+
+        'db dw dd dq dt ddq do dy dz ' +
+        'resb resw resd resq rest resdq reso resy resz ' +
+        'incbin equ times ' +
+        'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',
+
+      meta:
+        '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' +
+        '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' +
+        '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' +
+        '.nolist ' +
+        '__FILE__ __LINE__ __SECT__  __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' +
+        '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__  __PASS__ struc endstruc istruc at iend ' +
+        'align alignb sectalign daz nodaz up down zero default option assume public ' +
+
+        'bits use16 use32 use64 default section segment absolute extern global common cpu float ' +
+        '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' +
+        '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' +
+        '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' +
+        'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'
+    },
+    contains: [
+      hljs.COMMENT(
+        ';',
+        '$',
+        {
+          relevance: 0
+        }
+      ),
+      {
+        className: 'number',
+        variants: [
+          // Float number and x87 BCD
+          {
+            begin: '\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' +
+                   '(0[Xx])?[0-9][0-9_]*(\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\b',
+            relevance: 0
+          },
+
+          // Hex number in $
+          {
+            begin: '\\$[0-9][0-9A-Fa-f]*',
+            relevance: 0
+          },
+
+          // Number in H,D,T,Q,O,B,Y suffix
+          {
+            begin: '\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b'
+          },
+
+          // Number in X,D,T,Q,O,B,Y prefix
+          {
+            begin: '\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b'
+          }
+        ]
+      },
+      // Double quote string
+      hljs.QUOTE_STRING_MODE,
+      {
+        className: 'string',
+        variants: [
+          // Single-quoted string
+          {
+            begin: '\'',
+            end: '[^\\\\]\''
+          },
+          // Backquoted string
+          {
+            begin: '`',
+            end: '[^\\\\]`'
+          }
+        ],
+        relevance: 0
+      },
+      {
+        className: 'symbol',
+        variants: [
+          // Global label and local label
+          {
+            begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)'
+          },
+          // Macro-local label
+          {
+            begin: '^\\s*%%[A-Za-z0-9_$#@~.?]*:'
+          }
+        ],
+        relevance: 0
+      },
+      // Macro parameter
+      {
+        className: 'subst',
+        begin: '%[0-9]+',
+        relevance: 0
+      },
+      // Macro parameter
+      {
+        className: 'subst',
+        begin: '%!\S+',
+        relevance: 0
+      },
+      {
+        className: 'meta',
+        begin: /^\s*\.[\w_-]+/
+      }
+    ]
+  };
+}
+
+module.exports = x86asm;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/xl.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/xl.js ***!
+  \*******************************************************/
+/***/ ((module) => {
+
+/*
+Language: XL
+Author: Christophe de Dinechin 
+Description: An extensible programming language, based on parse tree rewriting
+Website: http://xlr.sf.net
+*/
+
+function xl(hljs) {
+  const BUILTIN_MODULES =
+    'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +
+    'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';
+
+  const XL_KEYWORDS = {
+    $pattern: /[a-zA-Z][a-zA-Z0-9_?]*/,
+    keyword:
+      'if then else do while until for loop import with is as where when by data constant ' +
+      'integer real text name boolean symbol infix prefix postfix block tree',
+    literal:
+      'true false nil',
+    built_in:
+      'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +
+      'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +
+      'text_find text_replace contains page slide basic_slide title_slide ' +
+      'title subtitle fade_in fade_out fade_at clear_color color line_color ' +
+      'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +
+      'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +
+      'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +
+      'quad_to curve_to theme background contents locally time mouse_?x ' +
+      'mouse_?y mouse_buttons ' +
+      BUILTIN_MODULES
+  };
+
+  const DOUBLE_QUOTE_TEXT = {
+    className: 'string',
+    begin: '"',
+    end: '"',
+    illegal: '\\n'
+  };
+  const SINGLE_QUOTE_TEXT = {
+    className: 'string',
+    begin: '\'',
+    end: '\'',
+    illegal: '\\n'
+  };
+  const LONG_TEXT = {
+    className: 'string',
+    begin: '<<',
+    end: '>>'
+  };
+  const BASED_NUMBER = {
+    className: 'number',
+    begin: '[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'
+  };
+  const IMPORT = {
+    beginKeywords: 'import',
+    end: '$',
+    keywords: XL_KEYWORDS,
+    contains: [ DOUBLE_QUOTE_TEXT ]
+  };
+  const FUNCTION_DEFINITION = {
+    className: 'function',
+    begin: /[a-z][^\n]*->/,
+    returnBegin: true,
+    end: /->/,
+    contains: [
+      hljs.inherit(hljs.TITLE_MODE, {
+        starts: {
+          endsWithParent: true,
+          keywords: XL_KEYWORDS
+        }
+      })
+    ]
+  };
+  return {
+    name: 'XL',
+    aliases: [ 'tao' ],
+    keywords: XL_KEYWORDS,
+    contains: [
+      hljs.C_LINE_COMMENT_MODE,
+      hljs.C_BLOCK_COMMENT_MODE,
+      DOUBLE_QUOTE_TEXT,
+      SINGLE_QUOTE_TEXT,
+      LONG_TEXT,
+      FUNCTION_DEFINITION,
+      IMPORT,
+      BASED_NUMBER,
+      hljs.NUMBER_MODE
+    ]
+  };
+}
+
+module.exports = xl;
+
+
+/***/ }),
+
+/***/ "./node_modules/highlight.js/lib/languages/xml.js":
+/*!********************************************************!*\
+  !*** ./node_modules/highlight.js/lib/languages/xml.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+/**
+ * @param {string} value
+ * @returns {RegExp}
+ * */
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function source(re) {
+  if (!re) return null;
+  if (typeof re === "string") return re;
+
+  return re.source;
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function lookahead(re) {
+  return concat('(?=', re, ')');
+}
+
+/**
+ * @param {RegExp | string } re
+ * @returns {string}
+ */
+function optional(re) {
+  return concat('(', re, ')?');
+}
+
+/**
+ * @param {...(RegExp | string) } args
+ * @returns {string}
+ */
+function concat(...args) {
+  const joined = args.map((x) => source(x)).join("");
+  return joined;
+}
+
+/**
+ * Any of the passed expresssions may match
+ *
+ * Creates a huge this | this | that | that match
+ * @param {(RegExp | string)[] } args
+ * @returns {string}
+ */
+function either(...args) {
+  const joined = '(' + args.map((x) => source(x)).join("|") + ")";
+  return joined;
+}
+
+/*
+Language: HTML, XML
+Website: https://www.w3.org/XML/
+Category: common
+Audit: 2020
+*/
+
+/** @type LanguageFn */
+function xml(hljs) {
+  // Element names can contain letters, digits, hyphens, underscores, and periods
+  const TAG_NAME_RE = concat(/[A-Z_]/, optional(/[A-Z0-9_.-]*:/), /[A-Z0-9_.-]*/);
+  const XML_IDENT_RE = /[A-Za-z0-9._:-]+/;
+  const XML_ENTITIES = {
+    className: 'symbol',
+    begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/
+  };
+  const XML_META_KEYWORDS = {
+    begin: /\s/,
+    contains: [
+      {
+        className: 'meta-keyword',
+        begin: /#?[a-z_][a-z1-9_-]+/,
+        illegal: /\n/
+      }
+    ]
+  };
+  const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {
+    begin: /\(/,
+    end: /\)/
+  });
+  const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {
+    className: 'meta-string'
+  });
+  const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {
+    className: 'meta-string'
+  });
+  const TAG_INTERNALS = {
+    endsWithParent: true,
+    illegal: /`]+/
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  };
+  return {
+    name: 'HTML, XML',
+    aliases: [
+      'html',
+      'xhtml',
+      'rss',
+      'atom',
+      'xjb',
+      'xsd',
+      'xsl',
+      'plist',
+      'wsf',
+      'svg'
+    ],
+    case_insensitive: true,
+    contains: [
+      {
+        className: 'meta',
+        begin: //,
+        relevance: 10,
+        contains: [
+          XML_META_KEYWORDS,
+          QUOTE_META_STRING_MODE,
+          APOS_META_STRING_MODE,
+          XML_META_PAR_KEYWORDS,
+          {
+            begin: /\[/,
+            end: /\]/,
+            contains: [
+              {
+                className: 'meta',
+                begin: //,
+                contains: [
+                  XML_META_KEYWORDS,
+                  XML_META_PAR_KEYWORDS,
+                  QUOTE_META_STRING_MODE,
+                  APOS_META_STRING_MODE
+                ]
+              }
+            ]
+          }
+        ]
+      },
+      hljs.COMMENT(
+        //,
+        {
+          relevance: 10
+        }
+      ),
+      {
+        begin: //,
+        relevance: 10
+      },
+      XML_ENTITIES,
+      {
+        className: 'meta',
+        begin: /<\?xml/,
+        end: /\?>/,
+        relevance: 10
+      },
+      {
+        className: 'tag',
+        /*
+        The lookahead pattern (?=...) ensures that 'begin' only matches
+        ')/,
+        end: />/,
+        keywords: {
+          name: 'style'
+        },
+        contains: [ TAG_INTERNALS ],
+        starts: {
+          end: /<\/style>/,
+          returnEnd: true,
+          subLanguage: [
+            'css',
+            'xml'
+          ]
+        }
+      },
+      {
+        className: 'tag',
+        // See the comment in the '];
+	opts.cellXfs.forEach(function(xf, id) {
+		var payload = [];
+		payload.push(writextag('NumberFormat', null, {"ss:Format": escapexml(SSF._table[xf.numFmtId])}));
+
+		var o = {"ss:ID": "s" + (21+id)};
+		styles.push(writextag('Style', payload.join(""), o));
+	});
+	return writextag("Styles", styles.join(""));
+}
+function write_name_xlml(n) { return writextag("NamedRange", null, {"ss:Name": n.Name, "ss:RefersTo":"=" + a1_to_rc(n.Ref, {r:0,c:0})}); }
+function write_names_xlml(wb) {
+	if(!((wb||{}).Workbook||{}).Names) return "";
+var names = wb.Workbook.Names;
+	var out = [];
+	for(var i = 0; i < names.length; ++i) {
+		var n = names[i];
+		if(n.Sheet != null) continue;
+		if(n.Name.match(/^_xlfn\./)) continue;
+		out.push(write_name_xlml(n));
+	}
+	return writextag("Names", out.join(""));
+}
+function write_ws_xlml_names(ws, opts, idx, wb) {
+	if(!ws) return "";
+	if(!((wb||{}).Workbook||{}).Names) return "";
+var names = wb.Workbook.Names;
+	var out = [];
+	for(var i = 0; i < names.length; ++i) {
+		var n = names[i];
+		if(n.Sheet != idx) continue;
+		/*switch(n.Name) {
+			case "_": continue;
+		}*/
+		if(n.Name.match(/^_xlfn\./)) continue;
+		out.push(write_name_xlml(n));
+	}
+	return out.join("");
+}
+/* WorksheetOptions */
+function write_ws_xlml_wsopts(ws, opts, idx, wb) {
+	if(!ws) return "";
+	var o = [];
+	/* NOTE: spec technically allows any order, but stick with implied order */
+
+	/* FitToPage */
+	/* DoNotDisplayColHeaders */
+	/* DoNotDisplayRowHeaders */
+	/* ViewableRange */
+	/* Selection */
+	/* GridlineColor */
+	/* Name */
+	/* ExcelWorksheetType */
+	/* IntlMacro */
+	/* Unsynced */
+	/* Selected */
+	/* CodeName */
+
+	if(ws['!margins']) {
+		o.push("");
+		if(ws['!margins'].header) o.push(writextag("Header", null, {'x:Margin':ws['!margins'].header}));
+		if(ws['!margins'].footer) o.push(writextag("Footer", null, {'x:Margin':ws['!margins'].footer}));
+		o.push(writextag("PageMargins", null, {
+			'x:Bottom': ws['!margins'].bottom || "0.75",
+			'x:Left': ws['!margins'].left || "0.7",
+			'x:Right': ws['!margins'].right || "0.7",
+			'x:Top': ws['!margins'].top || "0.75"
+		}));
+		o.push("");
+	}
+
+	/* PageSetup */
+	/* DisplayPageBreak */
+	/* TransitionExpressionEvaluation */
+	/* TransitionFormulaEntry */
+	/* Print */
+	/* Zoom */
+	/* PageLayoutZoom */
+	/* PageBreakZoom */
+	/* ShowPageBreakZoom */
+	/* DefaultRowHeight */
+	/* DefaultColumnWidth */
+	/* StandardWidth */
+
+	if(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {
+		/* Visible */
+		if(wb.Workbook.Sheets[idx].Hidden) o.push(writextag("Visible", (wb.Workbook.Sheets[idx].Hidden == 1 ? "SheetHidden" : "SheetVeryHidden"), {}));
+		else {
+			/* Selected */
+			for(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;
+			if(i == idx) o.push("");
+		}
+	}
+
+	/* LeftColumnVisible */
+
+	if(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push("");
+
+	/* GridlineColorIndex */
+	/* DisplayFormulas */
+	/* DoNotDisplayGridlines */
+	/* DoNotDisplayHeadings */
+	/* DoNotDisplayOutline */
+	/* ApplyAutomaticOutlineStyles */
+	/* NoSummaryRowsBelowDetail */
+	/* NoSummaryColumnsRightDetail */
+	/* DoNotDisplayZeros */
+	/* ActiveRow */
+	/* ActiveColumn */
+	/* FilterOn */
+	/* RangeSelection */
+	/* TopRowVisible */
+	/* TopRowBottomPane */
+	/* LeftColumnRightPane */
+	/* ActivePane */
+	/* SplitHorizontal */
+	/* SplitVertical */
+	/* FreezePanes */
+	/* FrozenNoSplit */
+	/* TabColorIndex */
+	/* Panes */
+
+	/* NOTE: Password not supported in XLML Format */
+	if(ws['!protect']) {
+		o.push(writetag("ProtectContents", "True"));
+		if(ws['!protect'].objects) o.push(writetag("ProtectObjects", "True"));
+		if(ws['!protect'].scenarios) o.push(writetag("ProtectScenarios", "True"));
+		if(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag("EnableSelection", "NoSelection"));
+		else if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag("EnableSelection", "UnlockedCells"));
+	[
+		[ "formatCells", "AllowFormatCells" ],
+		[ "formatColumns", "AllowSizeCols" ],
+		[ "formatRows", "AllowSizeRows" ],
+		[ "insertColumns", "AllowInsertCols" ],
+		[ "insertRows", "AllowInsertRows" ],
+		[ "insertHyperlinks", "AllowInsertHyperlinks" ],
+		[ "deleteColumns", "AllowDeleteCols" ],
+		[ "deleteRows", "AllowDeleteRows" ],
+		[ "sort", "AllowSort" ],
+		[ "autoFilter", "AllowFilter" ],
+		[ "pivotTables", "AllowUsePivotTables" ]
+	].forEach(function(x) { if(ws['!protect'][x[0]]) o.push("<"+x[1]+"/>"); });
+	}
+
+	if(o.length == 0) return "";
+	return writextag("WorksheetOptions", o.join(""), {xmlns:XLMLNS.x});
+}
+function write_ws_xlml_comment(comments) {
+	return comments.map(function(c) {
+		// TODO: formatted text
+		var t = xlml_unfixstr(c.t||"");
+		var d =writextag("ss:Data", t, {"xmlns":"http://www.w3.org/TR/REC-html40"});
+		return writextag("Comment", d, {"ss:Author":c.a});
+	}).join("");
+}
+function write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr){
+	if(!cell || (cell.v == undefined && cell.f == undefined)) return "";
+
+	var attr = {};
+	if(cell.f) attr["ss:Formula"] = "=" + escapexml(a1_to_rc(cell.f, addr));
+	if(cell.F && cell.F.slice(0, ref.length) == ref) {
+		var end = decode_cell(cell.F.slice(ref.length + 1));
+		attr["ss:ArrayRange"] = "RC:R" + (end.r == addr.r ? "" : "[" + (end.r - addr.r) + "]") + "C" + (end.c == addr.c ? "" : "[" + (end.c - addr.c) + "]");
+	}
+
+	if(cell.l && cell.l.Target) {
+		attr["ss:HRef"] = escapexml(cell.l.Target);
+		if(cell.l.Tooltip) attr["x:HRefScreenTip"] = escapexml(cell.l.Tooltip);
+	}
+
+	if(ws['!merges']) {
+		var marr = ws['!merges'];
+		for(var mi = 0; mi != marr.length; ++mi) {
+			if(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;
+			if(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;
+			if(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;
+		}
+	}
+
+	var t = "", p = "";
+	switch(cell.t) {
+		case 'z': if(!opts.sheetStubs) return ""; break;
+		case 'n': t = 'Number'; p = String(cell.v); break;
+		case 'b': t = 'Boolean'; p = (cell.v ? "1" : "0"); break;
+		case 'e': t = 'Error'; p = BErr[cell.v]; break;
+		case 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || SSF._table[14]; break;
+		case 's': t = 'String'; p = escapexlml(cell.v||""); break;
+	}
+	/* TODO: cell style */
+	var os = get_cell_style(opts.cellXfs, cell, opts);
+	attr["ss:StyleID"] = "s" + (21+os);
+	attr["ss:Index"] = addr.c + 1;
+	var _v = (cell.v != null ? p : "");
+	var m = cell.t == 'z' ? "" : ('' + _v + '');
+
+	if((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);
+
+	return writextag("Cell", m, attr);
+}
+function write_ws_xlml_row(R, row) {
+	var o = '';
+}
+/* TODO */
+function write_ws_xlml_table(ws, opts, idx, wb) {
+	if(!ws['!ref']) return "";
+	var range = safe_decode_range(ws['!ref']);
+	var marr = ws['!merges'] || [], mi = 0;
+	var o = [];
+	if(ws['!cols']) ws['!cols'].forEach(function(n, i) {
+		process_col(n);
+		var w = !!n.width;
+		var p = col_obj_w(i, n);
+		var k = {"ss:Index":i+1};
+		if(w) k['ss:Width'] = width2px(p.width);
+		if(n.hidden) k['ss:Hidden']="1";
+		o.push(writextag("Column",null,k));
+	});
+	var dense = Array.isArray(ws);
+	for(var R = range.s.r; R <= range.e.r; ++R) {
+		var row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];
+		for(var C = range.s.c; C <= range.e.c; ++C) {
+			var skip = false;
+			for(mi = 0; mi != marr.length; ++mi) {
+				if(marr[mi].s.c > C) continue;
+				if(marr[mi].s.r > R) continue;
+				if(marr[mi].e.c < C) continue;
+				if(marr[mi].e.r < R) continue;
+				if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;
+				break;
+			}
+			if(skip) continue;
+			var addr = {r:R,c:C};
+			var ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];
+			row.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));
+		}
+		row.push("");
+		if(row.length > 2) o.push(row.join(""));
+	}
+	return o.join("");
+}
+function write_ws_xlml(idx, opts, wb) {
+	var o = [];
+	var s = wb.SheetNames[idx];
+	var ws = wb.Sheets[s];
+
+	var t = ws ? write_ws_xlml_names(ws, opts, idx, wb) : "";
+	if(t.length > 0) o.push("" + t + "");
+
+	/* Table */
+	t = ws ? write_ws_xlml_table(ws, opts, idx, wb) : "";
+	if(t.length > 0) o.push("" + t + "
"); + + /* WorksheetOptions */ + o.push(write_ws_xlml_wsopts(ws, opts, idx, wb)); + + return o.join(""); +} +function write_xlml(wb, opts) { + if(!opts) opts = {}; + if(!wb.SSF) wb.SSF = SSF.get_table(); + if(wb.SSF) { + make_ssf(SSF); SSF.load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + } + var d = []; + d.push(write_props_xlml(wb, opts)); + d.push(write_wb_xlml(wb, opts)); + d.push(""); + d.push(""); + for(var i = 0; i < wb.SheetNames.length; ++i) + d.push(writextag("Worksheet", write_ws_xlml(i, opts, wb), {"ss:Name":escapexml(wb.SheetNames[i])})); + d[2] = write_sty_xlml(wb, opts); + d[3] = write_names_xlml(wb, opts); + return XML_HEADER + writextag("Workbook", d.join(""), { + 'xmlns': XLMLNS.ss, + 'xmlns:o': XLMLNS.o, + 'xmlns:x': XLMLNS.x, + 'xmlns:ss': XLMLNS.ss, + 'xmlns:dt': XLMLNS.dt, + 'xmlns:html': XLMLNS.html + }); +} +/* [MS-OLEDS] 2.3.8 CompObjStream */ +function parse_compobj(obj) { + var v = {}; + var o = obj.content; +/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */ + o.l = 28; + + v.AnsiUserType = o.read_shift(0, "lpstr-ansi"); + v.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o); + + if(o.length - o.l <= 4) return v; + + var m = o.read_shift(4); + if(m == 0 || m > 40) return v; + o.l-=4; v.Reserved1 = o.read_shift(0, "lpstr-ansi"); + + if(o.length - o.l <= 4) return v; + m = o.read_shift(4); + if(m !== 0x71b239f4) return v; + v.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o); + + m = o.read_shift(4); + if(m == 0 || m > 40) return v; + o.l-=4; v.Reserved2 = o.read_shift(0, "lpwstr"); +} + +/* + Continue logic for: + - 2.4.58 Continue + - 2.4.59 ContinueBigName + - 2.4.60 ContinueFrt + - 2.4.61 ContinueFrt11 + - 2.4.62 ContinueFrt12 +*/ +function slurp(R, blob, length, opts) { + var l = length; + var bufs = []; + var d = blob.slice(blob.l,blob.l+l); + if(opts && opts.enc && opts.enc.insitu) switch(R.n) { + case 'BOF': case 'FilePass': case 'FileLock': case 'InterfaceHdr': case 'RRDInfo': case 'RRDHead': case 'UsrExcl': break; + default: + if(d.length === 0) break; + opts.enc.insitu(d); + } + bufs.push(d); + blob.l += l; + var next = (XLSRecordEnum[__readUInt16LE(blob,blob.l)]); + var start = 0; + while(next != null && next.n.slice(0,8) === 'Continue') { + l = __readUInt16LE(blob,blob.l+2); + start = blob.l + 4; + if(next.n == 'ContinueFrt') start += 4; + else if(next.n.slice(0,11) == 'ContinueFrt') start += 12; + bufs.push(blob.slice(start,blob.l+4+l)); + blob.l += 4+l; + next = (XLSRecordEnum[__readUInt16LE(blob, blob.l)]); + } + var b = (bconcat(bufs)); + prep_blob(b, 0); + var ll = 0; b.lens = []; + for(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; } + return R.f(b, b.length, opts); +} + +function safe_format_xf(p, opts, date1904) { + if(p.t === 'z') return; + if(!p.XF) return; + var fmtid = 0; + try { + fmtid = p.z || p.XF.numFmtId || 0; + if(opts.cellNF) p.z = SSF._table[fmtid]; + } catch(e) { if(opts.WTF) throw e; } + if(!opts || opts.cellText !== false) try { + if(p.t === 'e') { p.w = p.w || BErr[p.v]; } + else if(fmtid === 0 || fmtid == "General") { + if(p.t === 'n') { + if((p.v|0) === p.v) p.w = SSF._general_int(p.v); + else p.w = SSF._general_num(p.v); + } + else p.w = SSF._general(p.v); + } + else p.w = SSF.format(fmtid,p.v, {date1904:!!date1904}); + } catch(e) { if(opts.WTF) throw e; } + if(opts.cellDates && fmtid && p.t == 'n' && SSF.is_date(SSF._table[fmtid] || String(fmtid))) { + var _d = SSF.parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } + } +} + +function make_cell(val, ixfe, t) { + return ({v:val, ixfe:ixfe, t:t}); +} + +// 2.3.2 +function parse_workbook(blob, options) { + var wb = ({opts:{}}); + var Sheets = {}; + if(DENSE != null && options.dense == null) options.dense = DENSE; + var out = ((options.dense ? [] : {})); + var Directory = {}; + var range = ({}); + var last_formula = null; + var sst = ([]); + var cur_sheet = ""; + var Preamble = {}; + var lastcell, last_cell = "", cc, cmnt, rngC, rngR; + var sharedf = {}; + var arrayf = []; + var temp_val; + var country; + var cell_valid = true; + var XFs = []; /* XF records */ + var palette = []; + var Workbook = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }), wsprops = {}; + var get_rgb = function getrgb(icv) { + if(icv < 8) return XLSIcv[icv]; + if(icv < 64) return palette[icv-8] || XLSIcv[icv]; + return XLSIcv[icv]; + }; + var process_cell_style = function pcs(cell, line, options) { + var xfd = line.XF.data; + if(!xfd || !xfd.patternType || !options || !options.cellStyles) return; + line.s = ({}); + line.s.patternType = xfd.patternType; + var t; + if((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; } + if((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; } + }; + var addcell = function addcell(cell, line, options) { + if(file_depth > 1) return; + if(options.sheetRows && cell.r >= options.sheetRows) cell_valid = false; + if(!cell_valid) return; + if(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options); + delete line.ixfe; delete line.XF; + lastcell = cell; + last_cell = encode_cell(cell); + if(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}}; + if(cell.r < range.s.r) range.s.r = cell.r; + if(cell.c < range.s.c) range.s.c = cell.c; + if(cell.r + 1 > range.e.r) range.e.r = cell.r + 1; + if(cell.c + 1 > range.e.c) range.e.c = cell.c + 1; + if(options.cellFormula && line.f) { + for(var afi = 0; afi < arrayf.length; ++afi) { + if(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue; + if(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue; + line.F = encode_range(arrayf[afi][0]); + if(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f; + if(line.f) line.f = "" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts); + break; + } + } + { + if(options.dense) { + if(!out[cell.r]) out[cell.r] = []; + out[cell.r][cell.c] = line; + } else out[last_cell] = line; + } + }; + var opts = ({ + enc: false, // encrypted + sbcch: 0, // cch in the preceding SupBook + snames: [], // sheetnames + sharedf: sharedf, // shared formulae by address + arrayf: arrayf, // array formulae array + rrtabid: [], // RRTabId + lastuser: "", // Last User from WriteAccess + biff: 8, // BIFF version + codepage: 0, // CP from CodePage record + winlocked: 0, // fLockWn from WinProtect + cellStyles: !!options && !!options.cellStyles, + WTF: !!options && !!options.wtf + }); + if(options.password) opts.password = options.password; + var themes; + var merges = []; + var objects = []; + var colinfo = [], rowinfo = []; + // eslint-disable-next-line no-unused-vars + var defwidth = 0, defheight = 0; // twips / MDW respectively + var seencol = false; + var supbooks = ([]); // 1-indexed, will hold extern names + supbooks.SheetNames = opts.snames; + supbooks.sharedf = opts.sharedf; + supbooks.arrayf = opts.arrayf; + supbooks.names = []; + supbooks.XTI = []; + var last_Rn = ''; + var file_depth = 0; /* TODO: make a real stack */ + var BIFF2Fmt = 0, BIFF2FmtTable = []; + var FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */ + var last_lbl; + + /* explicit override for some broken writers */ + opts.codepage = 1200; + set_cp(1200); + var seen_codepage = false; + while(blob.l < blob.length - 1) { + var s = blob.l; + var RecordType = blob.read_shift(2); + if(RecordType === 0 && last_Rn === 'EOF') break; + var length = (blob.l === blob.length ? 0 : blob.read_shift(2)); + var R = XLSRecordEnum[RecordType]; + //console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length); + //if(!R) console.log(blob.slice(blob.l, blob.l + length)); + if(R && R.f) { + if(options.bookSheets) { + if(last_Rn === 'BoundSheet8' && R.n !== 'BoundSheet8') break; + } + last_Rn = R.n; + if(R.r === 2 || R.r == 12) { + var rt = blob.read_shift(2); length -= 2; + if(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error("rt mismatch: " + rt + "!=" + RecordType); + if(R.r == 12){ blob.l += 10; length -= 10; } // skip FRT + } + //console.error(R,blob.l,length,blob.length); + var val = ({}); + if(R.n === 'EOF') val = R.f(blob, length, opts); + else val = slurp(R, blob, length, opts); + var Rn = R.n; +if(file_depth == 0 && Rn != 'BOF') continue; + /* nested switch statements to workaround V8 128 limit */ + switch(Rn) { + /* Workbook Options */ + case 'Date1904': +wb.opts.Date1904 = Workbook.WBProps.date1904 = val; break; + case 'WriteProtect': wb.opts.WriteProtect = true; break; + case 'FilePass': + if(!opts.enc) blob.l = 0; + opts.enc = val; + if(!options.password) throw new Error("File is password-protected"); + if(val.valid == null) throw new Error("Encryption scheme unsupported"); + if(!val.valid) throw new Error("Password is incorrect"); + break; + case 'WriteAccess': opts.lastuser = val; break; + case 'FileSharing': break; //TODO + case 'CodePage': + var cpval = Number(val); + /* overrides based on test cases */ + switch(cpval) { + case 0x5212: cpval = 1200; break; + case 0x8000: cpval = 10000; break; + case 0x8001: cpval = 1252; break; + } + set_cp(opts.codepage = cpval); + seen_codepage = true; + break; + case 'RRTabId': opts.rrtabid = val; break; + case 'WinProtect': opts.winlocked = val; break; + case 'Template': break; // TODO + case 'BookBool': break; // TODO + case 'UsesELFs': break; + case 'MTRSettings': break; + case 'RefreshAll': + case 'CalcCount': + case 'CalcDelta': + case 'CalcIter': + case 'CalcMode': + case 'CalcPrecision': + case 'CalcSaveRecalc': + wb.opts[Rn] = val; break; + case 'CalcRefMode': opts.CalcRefMode = val; break; // TODO: implement R1C1 + case 'Uncalced': break; + case 'ForceFullCalculation': wb.opts.FullCalc = val; break; + case 'WsBool': + if(val.fDialog) out["!type"] = "dialog"; + break; // TODO + case 'XF': + XFs.push(val); break; + case 'ExtSST': break; // TODO + case 'BookExt': break; // TODO + case 'RichTextStream': break; + case 'BkHim': break; + + case 'SupBook': + supbooks.push([val]); + supbooks[supbooks.length-1].XTI = []; + break; + case 'ExternName': + supbooks[supbooks.length-1].push(val); + break; + case 'Index': break; // TODO + case 'Lbl': + last_lbl = ({ + Name: val.Name, + Ref: stringify_formula(val.rgce,range,null,supbooks,opts) + }); + if(val.itab > 0) last_lbl.Sheet = val.itab - 1; + supbooks.names.push(last_lbl); + if(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length-1].push(val); + if(val.Name == "_xlnm._FilterDatabase" && val.itab > 0) + if(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d') + FilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) }; + break; + case 'ExternCount': opts.ExternCount = val; break; + case 'ExternSheet': + if(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break; + case 'NameCmt': + /* TODO: search for correct name */ + if(opts.biff < 8) break; + if(last_lbl != null) last_lbl.Comment = val[1]; + break; + + case 'Protect': out["!protect"] = val; break; /* for sheet or book */ + case 'Password': if(val !== 0 && opts.WTF) console.error("Password verifier: " + val); break; + case 'Prot4Rev': case 'Prot4RevPass': break; /*TODO: Revision Control*/ + + case 'BoundSheet8': { + Directory[val.pos] = val; + opts.snames.push(val.name); + } break; + case 'EOF': { + if(--file_depth) break; + if(range.e) { + if(range.e.r > 0 && range.e.c > 0) { + range.e.r--; range.e.c--; + out["!ref"] = encode_range(range); + if(options.sheetRows && options.sheetRows <= range.e.r) { + var tmpri = range.e.r; + range.e.r = options.sheetRows - 1; + out["!fullref"] = out["!ref"]; + out["!ref"] = encode_range(range); + range.e.r = tmpri; + } + range.e.r++; range.e.c++; + } + if(merges.length > 0) out["!merges"] = merges; + if(objects.length > 0) out["!objects"] = objects; + if(colinfo.length > 0) out["!cols"] = colinfo; + if(rowinfo.length > 0) out["!rows"] = rowinfo; + Workbook.Sheets.push(wsprops); + } + if(cur_sheet === "") Preamble = out; else Sheets[cur_sheet] = out; + out = ((options.dense ? [] : {})); + } break; + case 'BOF': { + if(opts.biff === 8) opts.biff = { +0x0009:2, +0x0209:3, +0x0409:4 + }[RecordType] || { +0x0200:2, +0x0300:3, +0x0400:4, +0x0500:5, +0x0600:8, +0x0002:2, +0x0007:2 + }[val.BIFFVer] || 8; + if(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2; + if(file_depth++) break; + cell_valid = true; + out = ((options.dense ? [] : {})); + + if(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); } + if(opts.biff < 5) { + if(cur_sheet === "") cur_sheet = "Sheet1"; + range = {s:{r:0,c:0},e:{r:0,c:0}}; + /* fake BoundSheet8 */ + var fakebs8 = {pos: blob.l - length, name:cur_sheet}; + Directory[fakebs8.pos] = fakebs8; + opts.snames.push(cur_sheet); + } + else cur_sheet = (Directory[s] || {name:""}).name; + if(val.dt == 0x20) out["!type"] = "chart"; + if(val.dt == 0x40) out["!type"] = "macro"; + merges = []; + objects = []; + opts.arrayf = arrayf = []; + colinfo = []; rowinfo = []; + defwidth = defheight = 0; + seencol = false; + wsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet }; + } break; + + case 'Number': case 'BIFF2NUM': case 'BIFF2INT': { + if(out["!type"] == "chart") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c; + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 'BoolErr': { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 'RK': { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 'MulRk': { + for(var j = val.c; j <= val.C; ++j) { + var ixfe = val.rkrec[j-val.c][0]; + temp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:j, r:val.r}, temp_val, options); + } + } break; + case 'Formula': { + if(val.val == 'String') { last_formula = val; break; } + temp_val = make_cell(val.val, val.cell.ixfe, val.tt); + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) { + var _f = val.formula; + if(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') { + var _fr = _f[0][0][1][0], _fc = _f[0][0][1][1]; + var _fe = encode_cell({r:_fr, c:_fc}); + if(sharedf[_fe]) temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); + else temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F; + } else temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); + } + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(val.cell, temp_val, options); + last_formula = val; + } break; + case 'String': { + if(last_formula) { /* technically always true */ + last_formula.val = val; + temp_val = make_cell(val, last_formula.cell.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) { + temp_val.f = ""+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts); + } + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(last_formula.cell, temp_val, options); + last_formula = null; + } else throw new Error("String record expects Formula"); + } break; + case 'Array': { + arrayf.push(val); + var _arraystart = encode_cell(val[0].s); + cc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart]; + if(options.cellFormula && cc) { + if(!last_formula) break; /* technically unreachable */ + if(!_arraystart || !cc) break; + cc.f = ""+stringify_formula(val[1], range, val[0], supbooks, opts); + cc.F = encode_range(val[0]); + } + } break; + case 'ShrFmla': { + if(!cell_valid) break; + if(!options.cellFormula) break; + if(last_cell) { + /* TODO: capture range */ + if(!last_formula) break; /* technically unreachable */ + sharedf[encode_cell(last_formula.cell)]= val[0]; + cc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)]; + (cc||{}).f = ""+stringify_formula(val[0], range, lastcell, supbooks, opts); + } + } break; + case 'LabelSst': + temp_val=make_cell(sst[val.isst].t, val.ixfe, 's'); + if(sst[val.isst].h) temp_val.h = sst[val.isst].h; + temp_val.XF = XFs[temp_val.ixfe]; + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + case 'Blank': if(options.sheetStubs) { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 'MulBlank': if(options.sheetStubs) { + for(var _j = val.c; _j <= val.C; ++_j) { + var _ixfe = val.ixfe[_j-val.c]; + temp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:_j, r:val.r}, temp_val, options); + } + } break; + case 'RString': + case 'Label': case 'BIFF2STR': + temp_val=make_cell(val.val, val.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + + case 'Dimensions': { + if(file_depth === 1) range = val; /* TODO: stack */ + } break; + case 'SST': { + sst = val; + } break; + case 'Format': { /* val = [id, fmt] */ + if(opts.biff == 4) { + BIFF2FmtTable[BIFF2Fmt++] = val[1]; + for(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(SSF._table[b4idx] == val[1]) break; + if(b4idx >= 163) SSF.load(val[1], BIFF2Fmt + 163); + } + else SSF.load(val[1], val[0]); + } break; + case 'BIFF2FORMAT': { + BIFF2FmtTable[BIFF2Fmt++] = val; + for(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(SSF._table[b2idx] == val) break; + if(b2idx >= 163) SSF.load(val, BIFF2Fmt + 163); + } break; + + case 'MergeCells': merges = merges.concat(val); break; + + case 'Obj': objects[val.cmo[0]] = opts.lastobj = val; break; + case 'TxO': opts.lastobj.TxO = val; break; + case 'ImData': opts.lastobj.ImData = val; break; + + case 'HLink': { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { + cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; + if(cc) cc.l = val[1]; + } + } break; + case 'HLinkTooltip': { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { + cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; + if(cc && cc.l) cc.l.Tooltip = val[1]; + } + } break; + + /* Comments */ + case 'Note': { + if(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */ + cc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])]; + var noteobj = objects[val[2]]; + if(!cc) { + if(options.dense) { + if(!out[val[0].r]) out[val[0].r] = []; + cc = out[val[0].r][val[0].c] = ({t:"z"}); + } else { + cc = out[encode_cell(val[0])] = ({t:"z"}); + } + range.e.r = Math.max(range.e.r, val[0].r); + range.s.r = Math.min(range.s.r, val[0].r); + range.e.c = Math.max(range.e.c, val[0].c); + range.s.c = Math.min(range.s.c, val[0].c); + } + if(!cc.c) cc.c = []; + cmnt = {a:val[1],t:noteobj.TxO.t}; + cc.c.push(cmnt); + } break; + + default: switch(R.n) { /* nested */ + case 'ClrtClient': break; + case 'XFExt': update_xfext(XFs[val.ixfe], val.ext); break; + + case 'DefColWidth': defwidth = val; break; + case 'DefaultRowHeight': defheight = val[1]; break; // TODO: flags + + case 'ColInfo': { + if(!opts.cellStyles) break; + while(val.e >= val.s) { + colinfo[val.e--] = { width: val.w/256 }; + if(!seencol) { seencol = true; find_mdw_colw(val.w/256); } + process_col(colinfo[val.e+1]); + } + } break; + case 'Row': { + var rowobj = {}; + if(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; } + if(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; } + if(val.hpt) { + rowinfo[val.r] = rowobj; + rowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt); + } + } break; + + case 'LeftMargin': + case 'RightMargin': + case 'TopMargin': + case 'BottomMargin': + if(!out['!margins']) default_margins(out['!margins'] = {}); + out['!margins'][Rn.slice(0,-6).toLowerCase()] = val; + break; + + case 'Setup': // TODO + if(!out['!margins']) default_margins(out['!margins'] = {}); + out['!margins'].header = val.header; + out['!margins'].footer = val.footer; + break; + + case 'Window2': // TODO + // $FlowIgnore + if(val.RTL) Workbook.Views[0].RTL = true; + break; + + case 'Header': break; // TODO + case 'Footer': break; // TODO + case 'HCenter': break; // TODO + case 'VCenter': break; // TODO + case 'Pls': break; // TODO + case 'GCW': break; + case 'LHRecord': break; + case 'DBCell': break; // TODO + case 'EntExU2': break; // TODO + case 'SxView': break; // TODO + case 'Sxvd': break; // TODO + case 'SXVI': break; // TODO + case 'SXVDEx': break; // TODO + case 'SxIvd': break; // TODO + case 'SXString': break; // TODO + case 'Sync': break; + case 'Addin': break; + case 'SXDI': break; // TODO + case 'SXLI': break; // TODO + case 'SXEx': break; // TODO + case 'QsiSXTag': break; // TODO + case 'Selection': break; + case 'Feat': break; + case 'FeatHdr': case 'FeatHdr11': break; + case 'Feature11': case 'Feature12': case 'List12': break; + case 'Country': country = val; break; + case 'RecalcId': break; + case 'DxGCol': break; // TODO: htmlify + case 'Fbi': case 'Fbi2': case 'GelFrame': break; + case 'Font': break; // TODO + case 'XFCRC': break; // TODO + case 'Style': break; // TODO + case 'StyleExt': break; // TODO + case 'Palette': palette = val; break; + case 'Theme': themes = val; break; + /* Protection */ + case 'ScenarioProtect': break; + case 'ObjProtect': break; + + /* Conditional Formatting */ + case 'CondFmt12': break; + + /* Table */ + case 'Table': break; // TODO + case 'TableStyles': break; // TODO + case 'TableStyle': break; // TODO + case 'TableStyleElement': break; // TODO + + /* PivotTable */ + case 'SXStreamID': break; // TODO + case 'SXVS': break; // TODO + case 'DConRef': break; // TODO + case 'SXAddl': break; // TODO + case 'DConBin': break; // TODO + case 'DConName': break; // TODO + case 'SXPI': break; // TODO + case 'SxFormat': break; // TODO + case 'SxSelect': break; // TODO + case 'SxRule': break; // TODO + case 'SxFilt': break; // TODO + case 'SxItm': break; // TODO + case 'SxDXF': break; // TODO + + /* Scenario Manager */ + case 'ScenMan': break; + + /* Data Consolidation */ + case 'DCon': break; + + /* Watched Cell */ + case 'CellWatch': break; + + /* Print Settings */ + case 'PrintRowCol': break; + case 'PrintGrid': break; + case 'PrintSize': break; + + case 'XCT': break; + case 'CRN': break; + + case 'Scl': { + //console.log("Zoom Level:", val[0]/val[1],val); + } break; + case 'SheetExt': { + /* empty */ + } break; + case 'SheetExtOptional': { + /* empty */ + } break; + + /* VBA */ + case 'ObNoMacros': { + /* empty */ + } break; + case 'ObProj': { + /* empty */ + } break; + case 'CodeName': { +if(!cur_sheet) Workbook.WBProps.CodeName = val || "ThisWorkbook"; + else wsprops.CodeName = val || wsprops.name; + } break; + case 'GUIDTypeLib': { + /* empty */ + } break; + + case 'WOpt': break; // TODO: WTF? + case 'PhoneticInfo': break; + + case 'OleObjectSize': break; + + /* Differential Formatting */ + case 'DXF': case 'DXFN': case 'DXFN12': case 'DXFN12List': case 'DXFN12NoCB': break; + + /* Data Validation */ + case 'Dv': case 'DVal': break; + + /* Data Series */ + case 'BRAI': case 'Series': case 'SeriesText': break; + + /* Data Connection */ + case 'DConn': break; + case 'DbOrParamQry': break; + case 'DBQueryExt': break; + + case 'OleDbConn': break; + case 'ExtString': break; + + /* Formatting */ + case 'IFmtRecord': break; + case 'CondFmt': case 'CF': case 'CF12': case 'CFEx': break; + + /* Explicitly Ignored */ + case 'Excel9File': break; + case 'Units': break; + case 'InterfaceHdr': case 'Mms': case 'InterfaceEnd': case 'DSF': break; + case 'BuiltInFnGroupCount': /* 2.4.30 0x0E or 0x10 but excel 2011 generates 0x11? */ break; + /* View Stuff */ + case 'Window1': case 'HideObj': case 'GridSet': case 'Guts': + case 'UserBView': case 'UserSViewBegin': case 'UserSViewEnd': break; + case 'Pane': break; + default: switch(R.n) { /* nested */ + /* Chart */ + case 'Dat': + case 'Begin': case 'End': + case 'StartBlock': case 'EndBlock': + case 'Frame': case 'Area': + case 'Axis': case 'AxisLine': case 'Tick': break; + case 'AxesUsed': + case 'CrtLayout12': case 'CrtLayout12A': case 'CrtLink': case 'CrtLine': case 'CrtMlFrt': case 'CrtMlFrtContinue': break; + case 'LineFormat': case 'AreaFormat': + case 'Chart': case 'Chart3d': case 'Chart3DBarShape': case 'ChartFormat': case 'ChartFrtInfo': break; + case 'PlotArea': case 'PlotGrowth': break; + case 'SeriesList': case 'SerParent': case 'SerAuxTrend': break; + case 'DataFormat': case 'SerToCrt': case 'FontX': break; + case 'CatSerRange': case 'AxcExt': case 'SerFmt': break; + case 'ShtProps': break; + case 'DefaultText': case 'Text': case 'CatLab': break; + case 'DataLabExtContents': break; + case 'Legend': case 'LegendException': break; + case 'Pie': case 'Scatter': break; + case 'PieFormat': case 'MarkerFormat': break; + case 'StartObject': case 'EndObject': break; + case 'AlRuns': case 'ObjectLink': break; + case 'SIIndex': break; + case 'AttachedLabel': case 'YMult': break; + + /* Chart Group */ + case 'Line': case 'Bar': break; + case 'Surf': break; + + /* Axis Group */ + case 'AxisParent': break; + case 'Pos': break; + case 'ValueRange': break; + + /* Pivot Chart */ + case 'SXViewEx9': break; // TODO + case 'SXViewLink': break; + case 'PivotChartBits': break; + case 'SBaseRef': break; + case 'TextPropsStream': break; + + /* Chart Misc */ + case 'LnExt': break; + case 'MkrExt': break; + case 'CrtCoopt': break; + + /* Query Table */ + case 'Qsi': case 'Qsif': case 'Qsir': case 'QsiSXTag': break; + case 'TxtQry': break; + + /* Filter */ + case 'FilterMode': break; + case 'AutoFilter': case 'AutoFilterInfo': break; + case 'AutoFilter12': break; + case 'DropDownObjIds': break; + case 'Sort': break; + case 'SortData': break; + + /* Drawing */ + case 'ShapePropsStream': break; + case 'MsoDrawing': case 'MsoDrawingGroup': case 'MsoDrawingSelection': break; + /* Pub Stuff */ + case 'WebPub': case 'AutoWebPub': break; + + /* Print Stuff */ + case 'HeaderFooter': case 'HFPicture': case 'PLV': + case 'HorizontalPageBreaks': case 'VerticalPageBreaks': break; + /* Behavioral */ + case 'Backup': case 'CompressPictures': case 'Compat12': break; + + /* Should not Happen */ + case 'Continue': case 'ContinueFrt12': break; + + /* Future Records */ + case 'FrtFontList': case 'FrtWrapper': break; + + default: switch(R.n) { /* nested */ + /* BIFF5 records */ + case 'TabIdConf': case 'Radar': case 'RadarArea': case 'DropBar': case 'Intl': case 'CoordList': case 'SerAuxErrBar': break; + + /* BIFF2-4 records */ + case 'BIFF2FONTCLR': case 'BIFF2FMTCNT': case 'BIFF2FONTXTRA': break; + case 'BIFF2XF': case 'BIFF3XF': case 'BIFF4XF': break; + case 'BIFF4FMTCNT': case 'BIFF2ROW': case 'BIFF2WINDOW2': break; + + /* Miscellaneous */ + case 'SCENARIO': case 'DConBin': case 'PicF': case 'DataLabExt': + case 'Lel': case 'BopPop': case 'BopPopCustom': case 'RealTimeData': + case 'Name': break; + case 'LHNGraph': case 'FnGroupName': case 'AddMenu': case 'LPr': break; + case 'ListObj': case 'ListField': break; + case 'RRSort': break; + case 'BigName': break; + case 'ToolbarHdr': case 'ToolbarEnd': break; + case 'DDEObjName': break; + case 'FRTArchId$': break; + default: if(options.WTF) throw 'Unrecognized Record ' + R.n; + }}}} + } else blob.l += length; + } + wb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;}); + if(!options.bookSheets) wb.Sheets=Sheets; + if(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; }); + wb.Preamble=Preamble; + wb.Strings = sst; + wb.SSF = SSF.get_table(); + if(opts.enc) wb.Encryption = opts.enc; + if(themes) wb.Themes = themes; + wb.Metadata = {}; + if(country !== undefined) wb.Metadata.Country = country; + if(supbooks.names.length > 0) Workbook.Names = supbooks.names; + wb.Workbook = Workbook; + return wb; +} + +/* TODO: split props*/ +var PSCLSID = { + SI: "e0859ff2f94f6810ab9108002b27b3d9", + DSI: "02d5cdd59c2e1b10939708002b2cf9ae", + UDI: "05d5cdd59c2e1b10939708002b2cf9ae" +}; +function parse_xls_props(cfb, props, o) { + /* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */ + var DSI = CFB.find(cfb, '!DocumentSummaryInformation'); + if(DSI && DSI.size > 0) try { + var DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI); + for(var d in DocSummary) props[d] = DocSummary[d]; + } catch(e) {if(o.WTF) throw e;/* empty */} + + /* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/ + var SI = CFB.find(cfb, '!SummaryInformation'); + if(SI && SI.size > 0) try { + var Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI); + for(var s in Summary) if(props[s] == null) props[s] = Summary[s]; + } catch(e) {if(o.WTF) throw e;/* empty */} + + if(props.HeadingPairs && props.TitlesOfParts) { + load_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o); + delete props.HeadingPairs; delete props.TitlesOfParts; + } +} +function write_xls_props(wb, cfb) { + var DSEntries = [], SEntries = [], CEntries = []; + var i = 0, Keys; + if(wb.Props) { + Keys = keys(wb.Props); + // $FlowIgnore + for(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]); + } + if(wb.Custprops) { + Keys = keys(wb.Custprops); + // $FlowIgnore + for(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]); + } + var CEntries2 = []; + for(i = 0; i < CEntries.length; ++i) { + if(XLSPSSkip.indexOf(CEntries[i][0]) > -1) continue; + if(CEntries[i][1] == null) continue; + CEntries2.push(CEntries[i]); + } + if(SEntries.length) CFB.utils.cfb_add(cfb, "/\u0005SummaryInformation", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI)); + if(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, "/\u0005DocumentSummaryInformation", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI)); +} + +function parse_xlscfb(cfb, options) { +if(!options) options = {}; +fix_read_opts(options); +reset_cp(); +if(options.codepage) set_ansi(options.codepage); +var CompObj, WB; +if(cfb.FullPaths) { + if(CFB.find(cfb, '/encryption')) throw new Error("File is password-protected"); + CompObj = CFB.find(cfb, '!CompObj'); + WB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book'); +} else { + switch(options.type) { + case 'base64': cfb = s2a(Base64.decode(cfb)); break; + case 'binary': cfb = s2a(cfb); break; + case 'buffer': break; + case 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break; + } + prep_blob(cfb, 0); + WB = ({content: cfb}); +} +var WorkbookP; + +var _data; +if(CompObj) parse_compobj(CompObj); +if(options.bookProps && !options.bookSheets) WorkbookP = ({}); +else { + var T = has_buf ? 'buffer' : 'array'; + if(WB && WB.content) WorkbookP = parse_workbook(WB.content, options); + /* Quattro Pro 7-8 */ + else if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); + /* Quattro Pro 9 */ + else if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); + else throw new Error("Cannot find Workbook stream"); + if(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb); +} + +var props = {}; +if(cfb.FullPaths) parse_xls_props(cfb, props, options); + +WorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */ +if(options.bookFiles) WorkbookP.cfb = cfb; +/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */ +return WorkbookP; +} + + +function write_xlscfb(wb, opts) { + var o = opts || {}; + var cfb = CFB.utils.cfb_new({root:"R"}); + var wbpath = "/Workbook"; + switch(o.bookType || "xls") { + case "xls": o.bookType = "biff8"; + /* falls through */ + case "xla": if(!o.bookType) o.bookType = "xla"; + /* falls through */ + case "biff8": wbpath = "/Workbook"; o.biff = 8; break; + case "biff5": wbpath = "/Book"; o.biff = 5; break; + default: throw new Error("invalid type " + o.bookType + " for XLS CFB"); + } + CFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o)); + if(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb); + // TODO: SI, DSI, CO + if(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == "string" ? "binary" : "buffer"})); + return cfb; +} +/* [MS-XLSB] 2.3 Record Enumeration */ +var XLSBRecordEnum = { +0x0000: { n:"BrtRowHdr", f:parse_BrtRowHdr }, +0x0001: { n:"BrtCellBlank", f:parse_BrtCellBlank }, +0x0002: { n:"BrtCellRk", f:parse_BrtCellRk }, +0x0003: { n:"BrtCellError", f:parse_BrtCellError }, +0x0004: { n:"BrtCellBool", f:parse_BrtCellBool }, +0x0005: { n:"BrtCellReal", f:parse_BrtCellReal }, +0x0006: { n:"BrtCellSt", f:parse_BrtCellSt }, +0x0007: { n:"BrtCellIsst", f:parse_BrtCellIsst }, +0x0008: { n:"BrtFmlaString", f:parse_BrtFmlaString }, +0x0009: { n:"BrtFmlaNum", f:parse_BrtFmlaNum }, +0x000A: { n:"BrtFmlaBool", f:parse_BrtFmlaBool }, +0x000B: { n:"BrtFmlaError", f:parse_BrtFmlaError }, +0x0010: { n:"BrtFRTArchID$", f:parse_BrtFRTArchID$ }, +0x0013: { n:"BrtSSTItem", f:parse_RichStr }, +0x0014: { n:"BrtPCDIMissing" }, +0x0015: { n:"BrtPCDINumber" }, +0x0016: { n:"BrtPCDIBoolean" }, +0x0017: { n:"BrtPCDIError" }, +0x0018: { n:"BrtPCDIString" }, +0x0019: { n:"BrtPCDIDatetime" }, +0x001A: { n:"BrtPCDIIndex" }, +0x001B: { n:"BrtPCDIAMissing" }, +0x001C: { n:"BrtPCDIANumber" }, +0x001D: { n:"BrtPCDIABoolean" }, +0x001E: { n:"BrtPCDIAError" }, +0x001F: { n:"BrtPCDIAString" }, +0x0020: { n:"BrtPCDIADatetime" }, +0x0021: { n:"BrtPCRRecord" }, +0x0022: { n:"BrtPCRRecordDt" }, +0x0023: { n:"BrtFRTBegin" }, +0x0024: { n:"BrtFRTEnd" }, +0x0025: { n:"BrtACBegin" }, +0x0026: { n:"BrtACEnd" }, +0x0027: { n:"BrtName", f:parse_BrtName }, +0x0028: { n:"BrtIndexRowBlock" }, +0x002A: { n:"BrtIndexBlock" }, +0x002B: { n:"BrtFont", f:parse_BrtFont }, +0x002C: { n:"BrtFmt", f:parse_BrtFmt }, +0x002D: { n:"BrtFill", f:parse_BrtFill }, +0x002E: { n:"BrtBorder", f:parse_BrtBorder }, +0x002F: { n:"BrtXF", f:parse_BrtXF }, +0x0030: { n:"BrtStyle" }, +0x0031: { n:"BrtCellMeta" }, +0x0032: { n:"BrtValueMeta" }, +0x0033: { n:"BrtMdb" }, +0x0034: { n:"BrtBeginFmd" }, +0x0035: { n:"BrtEndFmd" }, +0x0036: { n:"BrtBeginMdx" }, +0x0037: { n:"BrtEndMdx" }, +0x0038: { n:"BrtBeginMdxTuple" }, +0x0039: { n:"BrtEndMdxTuple" }, +0x003A: { n:"BrtMdxMbrIstr" }, +0x003B: { n:"BrtStr" }, +0x003C: { n:"BrtColInfo", f:parse_ColInfo }, +0x003E: { n:"BrtCellRString" }, +0x003F: { n:"BrtCalcChainItem$", f:parse_BrtCalcChainItem$ }, +0x0040: { n:"BrtDVal", f:parse_BrtDVal }, +0x0041: { n:"BrtSxvcellNum" }, +0x0042: { n:"BrtSxvcellStr" }, +0x0043: { n:"BrtSxvcellBool" }, +0x0044: { n:"BrtSxvcellErr" }, +0x0045: { n:"BrtSxvcellDate" }, +0x0046: { n:"BrtSxvcellNil" }, +0x0080: { n:"BrtFileVersion" }, +0x0081: { n:"BrtBeginSheet" }, +0x0082: { n:"BrtEndSheet" }, +0x0083: { n:"BrtBeginBook", f:parsenoop, p:0 }, +0x0084: { n:"BrtEndBook" }, +0x0085: { n:"BrtBeginWsViews" }, +0x0086: { n:"BrtEndWsViews" }, +0x0087: { n:"BrtBeginBookViews" }, +0x0088: { n:"BrtEndBookViews" }, +0x0089: { n:"BrtBeginWsView", f:parse_BrtBeginWsView }, +0x008A: { n:"BrtEndWsView" }, +0x008B: { n:"BrtBeginCsViews" }, +0x008C: { n:"BrtEndCsViews" }, +0x008D: { n:"BrtBeginCsView" }, +0x008E: { n:"BrtEndCsView" }, +0x008F: { n:"BrtBeginBundleShs" }, +0x0090: { n:"BrtEndBundleShs" }, +0x0091: { n:"BrtBeginSheetData" }, +0x0092: { n:"BrtEndSheetData" }, +0x0093: { n:"BrtWsProp", f:parse_BrtWsProp }, +0x0094: { n:"BrtWsDim", f:parse_BrtWsDim, p:16 }, +0x0097: { n:"BrtPane", f:parse_BrtPane }, +0x0098: { n:"BrtSel" }, +0x0099: { n:"BrtWbProp", f:parse_BrtWbProp }, +0x009A: { n:"BrtWbFactoid" }, +0x009B: { n:"BrtFileRecover" }, +0x009C: { n:"BrtBundleSh", f:parse_BrtBundleSh }, +0x009D: { n:"BrtCalcProp" }, +0x009E: { n:"BrtBookView" }, +0x009F: { n:"BrtBeginSst", f:parse_BrtBeginSst }, +0x00A0: { n:"BrtEndSst" }, +0x00A1: { n:"BrtBeginAFilter", f:parse_UncheckedRfX }, +0x00A2: { n:"BrtEndAFilter" }, +0x00A3: { n:"BrtBeginFilterColumn" }, +0x00A4: { n:"BrtEndFilterColumn" }, +0x00A5: { n:"BrtBeginFilters" }, +0x00A6: { n:"BrtEndFilters" }, +0x00A7: { n:"BrtFilter" }, +0x00A8: { n:"BrtColorFilter" }, +0x00A9: { n:"BrtIconFilter" }, +0x00AA: { n:"BrtTop10Filter" }, +0x00AB: { n:"BrtDynamicFilter" }, +0x00AC: { n:"BrtBeginCustomFilters" }, +0x00AD: { n:"BrtEndCustomFilters" }, +0x00AE: { n:"BrtCustomFilter" }, +0x00AF: { n:"BrtAFilterDateGroupItem" }, +0x00B0: { n:"BrtMergeCell", f:parse_BrtMergeCell }, +0x00B1: { n:"BrtBeginMergeCells" }, +0x00B2: { n:"BrtEndMergeCells" }, +0x00B3: { n:"BrtBeginPivotCacheDef" }, +0x00B4: { n:"BrtEndPivotCacheDef" }, +0x00B5: { n:"BrtBeginPCDFields" }, +0x00B6: { n:"BrtEndPCDFields" }, +0x00B7: { n:"BrtBeginPCDField" }, +0x00B8: { n:"BrtEndPCDField" }, +0x00B9: { n:"BrtBeginPCDSource" }, +0x00BA: { n:"BrtEndPCDSource" }, +0x00BB: { n:"BrtBeginPCDSRange" }, +0x00BC: { n:"BrtEndPCDSRange" }, +0x00BD: { n:"BrtBeginPCDFAtbl" }, +0x00BE: { n:"BrtEndPCDFAtbl" }, +0x00BF: { n:"BrtBeginPCDIRun" }, +0x00C0: { n:"BrtEndPCDIRun" }, +0x00C1: { n:"BrtBeginPivotCacheRecords" }, +0x00C2: { n:"BrtEndPivotCacheRecords" }, +0x00C3: { n:"BrtBeginPCDHierarchies" }, +0x00C4: { n:"BrtEndPCDHierarchies" }, +0x00C5: { n:"BrtBeginPCDHierarchy" }, +0x00C6: { n:"BrtEndPCDHierarchy" }, +0x00C7: { n:"BrtBeginPCDHFieldsUsage" }, +0x00C8: { n:"BrtEndPCDHFieldsUsage" }, +0x00C9: { n:"BrtBeginExtConnection" }, +0x00CA: { n:"BrtEndExtConnection" }, +0x00CB: { n:"BrtBeginECDbProps" }, +0x00CC: { n:"BrtEndECDbProps" }, +0x00CD: { n:"BrtBeginECOlapProps" }, +0x00CE: { n:"BrtEndECOlapProps" }, +0x00CF: { n:"BrtBeginPCDSConsol" }, +0x00D0: { n:"BrtEndPCDSConsol" }, +0x00D1: { n:"BrtBeginPCDSCPages" }, +0x00D2: { n:"BrtEndPCDSCPages" }, +0x00D3: { n:"BrtBeginPCDSCPage" }, +0x00D4: { n:"BrtEndPCDSCPage" }, +0x00D5: { n:"BrtBeginPCDSCPItem" }, +0x00D6: { n:"BrtEndPCDSCPItem" }, +0x00D7: { n:"BrtBeginPCDSCSets" }, +0x00D8: { n:"BrtEndPCDSCSets" }, +0x00D9: { n:"BrtBeginPCDSCSet" }, +0x00DA: { n:"BrtEndPCDSCSet" }, +0x00DB: { n:"BrtBeginPCDFGroup" }, +0x00DC: { n:"BrtEndPCDFGroup" }, +0x00DD: { n:"BrtBeginPCDFGItems" }, +0x00DE: { n:"BrtEndPCDFGItems" }, +0x00DF: { n:"BrtBeginPCDFGRange" }, +0x00E0: { n:"BrtEndPCDFGRange" }, +0x00E1: { n:"BrtBeginPCDFGDiscrete" }, +0x00E2: { n:"BrtEndPCDFGDiscrete" }, +0x00E3: { n:"BrtBeginPCDSDTupleCache" }, +0x00E4: { n:"BrtEndPCDSDTupleCache" }, +0x00E5: { n:"BrtBeginPCDSDTCEntries" }, +0x00E6: { n:"BrtEndPCDSDTCEntries" }, +0x00E7: { n:"BrtBeginPCDSDTCEMembers" }, +0x00E8: { n:"BrtEndPCDSDTCEMembers" }, +0x00E9: { n:"BrtBeginPCDSDTCEMember" }, +0x00EA: { n:"BrtEndPCDSDTCEMember" }, +0x00EB: { n:"BrtBeginPCDSDTCQueries" }, +0x00EC: { n:"BrtEndPCDSDTCQueries" }, +0x00ED: { n:"BrtBeginPCDSDTCQuery" }, +0x00EE: { n:"BrtEndPCDSDTCQuery" }, +0x00EF: { n:"BrtBeginPCDSDTCSets" }, +0x00F0: { n:"BrtEndPCDSDTCSets" }, +0x00F1: { n:"BrtBeginPCDSDTCSet" }, +0x00F2: { n:"BrtEndPCDSDTCSet" }, +0x00F3: { n:"BrtBeginPCDCalcItems" }, +0x00F4: { n:"BrtEndPCDCalcItems" }, +0x00F5: { n:"BrtBeginPCDCalcItem" }, +0x00F6: { n:"BrtEndPCDCalcItem" }, +0x00F7: { n:"BrtBeginPRule" }, +0x00F8: { n:"BrtEndPRule" }, +0x00F9: { n:"BrtBeginPRFilters" }, +0x00FA: { n:"BrtEndPRFilters" }, +0x00FB: { n:"BrtBeginPRFilter" }, +0x00FC: { n:"BrtEndPRFilter" }, +0x00FD: { n:"BrtBeginPNames" }, +0x00FE: { n:"BrtEndPNames" }, +0x00FF: { n:"BrtBeginPName" }, +0x0100: { n:"BrtEndPName" }, +0x0101: { n:"BrtBeginPNPairs" }, +0x0102: { n:"BrtEndPNPairs" }, +0x0103: { n:"BrtBeginPNPair" }, +0x0104: { n:"BrtEndPNPair" }, +0x0105: { n:"BrtBeginECWebProps" }, +0x0106: { n:"BrtEndECWebProps" }, +0x0107: { n:"BrtBeginEcWpTables" }, +0x0108: { n:"BrtEndECWPTables" }, +0x0109: { n:"BrtBeginECParams" }, +0x010A: { n:"BrtEndECParams" }, +0x010B: { n:"BrtBeginECParam" }, +0x010C: { n:"BrtEndECParam" }, +0x010D: { n:"BrtBeginPCDKPIs" }, +0x010E: { n:"BrtEndPCDKPIs" }, +0x010F: { n:"BrtBeginPCDKPI" }, +0x0110: { n:"BrtEndPCDKPI" }, +0x0111: { n:"BrtBeginDims" }, +0x0112: { n:"BrtEndDims" }, +0x0113: { n:"BrtBeginDim" }, +0x0114: { n:"BrtEndDim" }, +0x0115: { n:"BrtIndexPartEnd" }, +0x0116: { n:"BrtBeginStyleSheet" }, +0x0117: { n:"BrtEndStyleSheet" }, +0x0118: { n:"BrtBeginSXView" }, +0x0119: { n:"BrtEndSXVI" }, +0x011A: { n:"BrtBeginSXVI" }, +0x011B: { n:"BrtBeginSXVIs" }, +0x011C: { n:"BrtEndSXVIs" }, +0x011D: { n:"BrtBeginSXVD" }, +0x011E: { n:"BrtEndSXVD" }, +0x011F: { n:"BrtBeginSXVDs" }, +0x0120: { n:"BrtEndSXVDs" }, +0x0121: { n:"BrtBeginSXPI" }, +0x0122: { n:"BrtEndSXPI" }, +0x0123: { n:"BrtBeginSXPIs" }, +0x0124: { n:"BrtEndSXPIs" }, +0x0125: { n:"BrtBeginSXDI" }, +0x0126: { n:"BrtEndSXDI" }, +0x0127: { n:"BrtBeginSXDIs" }, +0x0128: { n:"BrtEndSXDIs" }, +0x0129: { n:"BrtBeginSXLI" }, +0x012A: { n:"BrtEndSXLI" }, +0x012B: { n:"BrtBeginSXLIRws" }, +0x012C: { n:"BrtEndSXLIRws" }, +0x012D: { n:"BrtBeginSXLICols" }, +0x012E: { n:"BrtEndSXLICols" }, +0x012F: { n:"BrtBeginSXFormat" }, +0x0130: { n:"BrtEndSXFormat" }, +0x0131: { n:"BrtBeginSXFormats" }, +0x0132: { n:"BrtEndSxFormats" }, +0x0133: { n:"BrtBeginSxSelect" }, +0x0134: { n:"BrtEndSxSelect" }, +0x0135: { n:"BrtBeginISXVDRws" }, +0x0136: { n:"BrtEndISXVDRws" }, +0x0137: { n:"BrtBeginISXVDCols" }, +0x0138: { n:"BrtEndISXVDCols" }, +0x0139: { n:"BrtEndSXLocation" }, +0x013A: { n:"BrtBeginSXLocation" }, +0x013B: { n:"BrtEndSXView" }, +0x013C: { n:"BrtBeginSXTHs" }, +0x013D: { n:"BrtEndSXTHs" }, +0x013E: { n:"BrtBeginSXTH" }, +0x013F: { n:"BrtEndSXTH" }, +0x0140: { n:"BrtBeginISXTHRws" }, +0x0141: { n:"BrtEndISXTHRws" }, +0x0142: { n:"BrtBeginISXTHCols" }, +0x0143: { n:"BrtEndISXTHCols" }, +0x0144: { n:"BrtBeginSXTDMPS" }, +0x0145: { n:"BrtEndSXTDMPs" }, +0x0146: { n:"BrtBeginSXTDMP" }, +0x0147: { n:"BrtEndSXTDMP" }, +0x0148: { n:"BrtBeginSXTHItems" }, +0x0149: { n:"BrtEndSXTHItems" }, +0x014A: { n:"BrtBeginSXTHItem" }, +0x014B: { n:"BrtEndSXTHItem" }, +0x014C: { n:"BrtBeginMetadata" }, +0x014D: { n:"BrtEndMetadata" }, +0x014E: { n:"BrtBeginEsmdtinfo" }, +0x014F: { n:"BrtMdtinfo" }, +0x0150: { n:"BrtEndEsmdtinfo" }, +0x0151: { n:"BrtBeginEsmdb" }, +0x0152: { n:"BrtEndEsmdb" }, +0x0153: { n:"BrtBeginEsfmd" }, +0x0154: { n:"BrtEndEsfmd" }, +0x0155: { n:"BrtBeginSingleCells" }, +0x0156: { n:"BrtEndSingleCells" }, +0x0157: { n:"BrtBeginList" }, +0x0158: { n:"BrtEndList" }, +0x0159: { n:"BrtBeginListCols" }, +0x015A: { n:"BrtEndListCols" }, +0x015B: { n:"BrtBeginListCol" }, +0x015C: { n:"BrtEndListCol" }, +0x015D: { n:"BrtBeginListXmlCPr" }, +0x015E: { n:"BrtEndListXmlCPr" }, +0x015F: { n:"BrtListCCFmla" }, +0x0160: { n:"BrtListTrFmla" }, +0x0161: { n:"BrtBeginExternals" }, +0x0162: { n:"BrtEndExternals" }, +0x0163: { n:"BrtSupBookSrc", f:parse_RelID}, +0x0165: { n:"BrtSupSelf" }, +0x0166: { n:"BrtSupSame" }, +0x0167: { n:"BrtSupTabs" }, +0x0168: { n:"BrtBeginSupBook" }, +0x0169: { n:"BrtPlaceholderName" }, +0x016A: { n:"BrtExternSheet", f:parse_ExternSheet }, +0x016B: { n:"BrtExternTableStart" }, +0x016C: { n:"BrtExternTableEnd" }, +0x016E: { n:"BrtExternRowHdr" }, +0x016F: { n:"BrtExternCellBlank" }, +0x0170: { n:"BrtExternCellReal" }, +0x0171: { n:"BrtExternCellBool" }, +0x0172: { n:"BrtExternCellError" }, +0x0173: { n:"BrtExternCellString" }, +0x0174: { n:"BrtBeginEsmdx" }, +0x0175: { n:"BrtEndEsmdx" }, +0x0176: { n:"BrtBeginMdxSet" }, +0x0177: { n:"BrtEndMdxSet" }, +0x0178: { n:"BrtBeginMdxMbrProp" }, +0x0179: { n:"BrtEndMdxMbrProp" }, +0x017A: { n:"BrtBeginMdxKPI" }, +0x017B: { n:"BrtEndMdxKPI" }, +0x017C: { n:"BrtBeginEsstr" }, +0x017D: { n:"BrtEndEsstr" }, +0x017E: { n:"BrtBeginPRFItem" }, +0x017F: { n:"BrtEndPRFItem" }, +0x0180: { n:"BrtBeginPivotCacheIDs" }, +0x0181: { n:"BrtEndPivotCacheIDs" }, +0x0182: { n:"BrtBeginPivotCacheID" }, +0x0183: { n:"BrtEndPivotCacheID" }, +0x0184: { n:"BrtBeginISXVIs" }, +0x0185: { n:"BrtEndISXVIs" }, +0x0186: { n:"BrtBeginColInfos" }, +0x0187: { n:"BrtEndColInfos" }, +0x0188: { n:"BrtBeginRwBrk" }, +0x0189: { n:"BrtEndRwBrk" }, +0x018A: { n:"BrtBeginColBrk" }, +0x018B: { n:"BrtEndColBrk" }, +0x018C: { n:"BrtBrk" }, +0x018D: { n:"BrtUserBookView" }, +0x018E: { n:"BrtInfo" }, +0x018F: { n:"BrtCUsr" }, +0x0190: { n:"BrtUsr" }, +0x0191: { n:"BrtBeginUsers" }, +0x0193: { n:"BrtEOF" }, +0x0194: { n:"BrtUCR" }, +0x0195: { n:"BrtRRInsDel" }, +0x0196: { n:"BrtRREndInsDel" }, +0x0197: { n:"BrtRRMove" }, +0x0198: { n:"BrtRREndMove" }, +0x0199: { n:"BrtRRChgCell" }, +0x019A: { n:"BrtRREndChgCell" }, +0x019B: { n:"BrtRRHeader" }, +0x019C: { n:"BrtRRUserView" }, +0x019D: { n:"BrtRRRenSheet" }, +0x019E: { n:"BrtRRInsertSh" }, +0x019F: { n:"BrtRRDefName" }, +0x01A0: { n:"BrtRRNote" }, +0x01A1: { n:"BrtRRConflict" }, +0x01A2: { n:"BrtRRTQSIF" }, +0x01A3: { n:"BrtRRFormat" }, +0x01A4: { n:"BrtRREndFormat" }, +0x01A5: { n:"BrtRRAutoFmt" }, +0x01A6: { n:"BrtBeginUserShViews" }, +0x01A7: { n:"BrtBeginUserShView" }, +0x01A8: { n:"BrtEndUserShView" }, +0x01A9: { n:"BrtEndUserShViews" }, +0x01AA: { n:"BrtArrFmla", f:parse_BrtArrFmla }, +0x01AB: { n:"BrtShrFmla", f:parse_BrtShrFmla }, +0x01AC: { n:"BrtTable" }, +0x01AD: { n:"BrtBeginExtConnections" }, +0x01AE: { n:"BrtEndExtConnections" }, +0x01AF: { n:"BrtBeginPCDCalcMems" }, +0x01B0: { n:"BrtEndPCDCalcMems" }, +0x01B1: { n:"BrtBeginPCDCalcMem" }, +0x01B2: { n:"BrtEndPCDCalcMem" }, +0x01B3: { n:"BrtBeginPCDHGLevels" }, +0x01B4: { n:"BrtEndPCDHGLevels" }, +0x01B5: { n:"BrtBeginPCDHGLevel" }, +0x01B6: { n:"BrtEndPCDHGLevel" }, +0x01B7: { n:"BrtBeginPCDHGLGroups" }, +0x01B8: { n:"BrtEndPCDHGLGroups" }, +0x01B9: { n:"BrtBeginPCDHGLGroup" }, +0x01BA: { n:"BrtEndPCDHGLGroup" }, +0x01BB: { n:"BrtBeginPCDHGLGMembers" }, +0x01BC: { n:"BrtEndPCDHGLGMembers" }, +0x01BD: { n:"BrtBeginPCDHGLGMember" }, +0x01BE: { n:"BrtEndPCDHGLGMember" }, +0x01BF: { n:"BrtBeginQSI" }, +0x01C0: { n:"BrtEndQSI" }, +0x01C1: { n:"BrtBeginQSIR" }, +0x01C2: { n:"BrtEndQSIR" }, +0x01C3: { n:"BrtBeginDeletedNames" }, +0x01C4: { n:"BrtEndDeletedNames" }, +0x01C5: { n:"BrtBeginDeletedName" }, +0x01C6: { n:"BrtEndDeletedName" }, +0x01C7: { n:"BrtBeginQSIFs" }, +0x01C8: { n:"BrtEndQSIFs" }, +0x01C9: { n:"BrtBeginQSIF" }, +0x01CA: { n:"BrtEndQSIF" }, +0x01CB: { n:"BrtBeginAutoSortScope" }, +0x01CC: { n:"BrtEndAutoSortScope" }, +0x01CD: { n:"BrtBeginConditionalFormatting" }, +0x01CE: { n:"BrtEndConditionalFormatting" }, +0x01CF: { n:"BrtBeginCFRule" }, +0x01D0: { n:"BrtEndCFRule" }, +0x01D1: { n:"BrtBeginIconSet" }, +0x01D2: { n:"BrtEndIconSet" }, +0x01D3: { n:"BrtBeginDatabar" }, +0x01D4: { n:"BrtEndDatabar" }, +0x01D5: { n:"BrtBeginColorScale" }, +0x01D6: { n:"BrtEndColorScale" }, +0x01D7: { n:"BrtCFVO" }, +0x01D8: { n:"BrtExternValueMeta" }, +0x01D9: { n:"BrtBeginColorPalette" }, +0x01DA: { n:"BrtEndColorPalette" }, +0x01DB: { n:"BrtIndexedColor" }, +0x01DC: { n:"BrtMargins", f:parse_BrtMargins }, +0x01DD: { n:"BrtPrintOptions" }, +0x01DE: { n:"BrtPageSetup" }, +0x01DF: { n:"BrtBeginHeaderFooter" }, +0x01E0: { n:"BrtEndHeaderFooter" }, +0x01E1: { n:"BrtBeginSXCrtFormat" }, +0x01E2: { n:"BrtEndSXCrtFormat" }, +0x01E3: { n:"BrtBeginSXCrtFormats" }, +0x01E4: { n:"BrtEndSXCrtFormats" }, +0x01E5: { n:"BrtWsFmtInfo", f:parse_BrtWsFmtInfo }, +0x01E6: { n:"BrtBeginMgs" }, +0x01E7: { n:"BrtEndMGs" }, +0x01E8: { n:"BrtBeginMGMaps" }, +0x01E9: { n:"BrtEndMGMaps" }, +0x01EA: { n:"BrtBeginMG" }, +0x01EB: { n:"BrtEndMG" }, +0x01EC: { n:"BrtBeginMap" }, +0x01ED: { n:"BrtEndMap" }, +0x01EE: { n:"BrtHLink", f:parse_BrtHLink }, +0x01EF: { n:"BrtBeginDCon" }, +0x01F0: { n:"BrtEndDCon" }, +0x01F1: { n:"BrtBeginDRefs" }, +0x01F2: { n:"BrtEndDRefs" }, +0x01F3: { n:"BrtDRef" }, +0x01F4: { n:"BrtBeginScenMan" }, +0x01F5: { n:"BrtEndScenMan" }, +0x01F6: { n:"BrtBeginSct" }, +0x01F7: { n:"BrtEndSct" }, +0x01F8: { n:"BrtSlc" }, +0x01F9: { n:"BrtBeginDXFs" }, +0x01FA: { n:"BrtEndDXFs" }, +0x01FB: { n:"BrtDXF" }, +0x01FC: { n:"BrtBeginTableStyles" }, +0x01FD: { n:"BrtEndTableStyles" }, +0x01FE: { n:"BrtBeginTableStyle" }, +0x01FF: { n:"BrtEndTableStyle" }, +0x0200: { n:"BrtTableStyleElement" }, +0x0201: { n:"BrtTableStyleClient" }, +0x0202: { n:"BrtBeginVolDeps" }, +0x0203: { n:"BrtEndVolDeps" }, +0x0204: { n:"BrtBeginVolType" }, +0x0205: { n:"BrtEndVolType" }, +0x0206: { n:"BrtBeginVolMain" }, +0x0207: { n:"BrtEndVolMain" }, +0x0208: { n:"BrtBeginVolTopic" }, +0x0209: { n:"BrtEndVolTopic" }, +0x020A: { n:"BrtVolSubtopic" }, +0x020B: { n:"BrtVolRef" }, +0x020C: { n:"BrtVolNum" }, +0x020D: { n:"BrtVolErr" }, +0x020E: { n:"BrtVolStr" }, +0x020F: { n:"BrtVolBool" }, +0x0210: { n:"BrtBeginCalcChain$" }, +0x0211: { n:"BrtEndCalcChain$" }, +0x0212: { n:"BrtBeginSortState" }, +0x0213: { n:"BrtEndSortState" }, +0x0214: { n:"BrtBeginSortCond" }, +0x0215: { n:"BrtEndSortCond" }, +0x0216: { n:"BrtBookProtection" }, +0x0217: { n:"BrtSheetProtection" }, +0x0218: { n:"BrtRangeProtection" }, +0x0219: { n:"BrtPhoneticInfo" }, +0x021A: { n:"BrtBeginECTxtWiz" }, +0x021B: { n:"BrtEndECTxtWiz" }, +0x021C: { n:"BrtBeginECTWFldInfoLst" }, +0x021D: { n:"BrtEndECTWFldInfoLst" }, +0x021E: { n:"BrtBeginECTwFldInfo" }, +0x0224: { n:"BrtFileSharing" }, +0x0225: { n:"BrtOleSize" }, +0x0226: { n:"BrtDrawing", f:parse_RelID }, +0x0227: { n:"BrtLegacyDrawing" }, +0x0228: { n:"BrtLegacyDrawingHF" }, +0x0229: { n:"BrtWebOpt" }, +0x022A: { n:"BrtBeginWebPubItems" }, +0x022B: { n:"BrtEndWebPubItems" }, +0x022C: { n:"BrtBeginWebPubItem" }, +0x022D: { n:"BrtEndWebPubItem" }, +0x022E: { n:"BrtBeginSXCondFmt" }, +0x022F: { n:"BrtEndSXCondFmt" }, +0x0230: { n:"BrtBeginSXCondFmts" }, +0x0231: { n:"BrtEndSXCondFmts" }, +0x0232: { n:"BrtBkHim" }, +0x0234: { n:"BrtColor" }, +0x0235: { n:"BrtBeginIndexedColors" }, +0x0236: { n:"BrtEndIndexedColors" }, +0x0239: { n:"BrtBeginMRUColors" }, +0x023A: { n:"BrtEndMRUColors" }, +0x023C: { n:"BrtMRUColor" }, +0x023D: { n:"BrtBeginDVals" }, +0x023E: { n:"BrtEndDVals" }, +0x0241: { n:"BrtSupNameStart" }, +0x0242: { n:"BrtSupNameValueStart" }, +0x0243: { n:"BrtSupNameValueEnd" }, +0x0244: { n:"BrtSupNameNum" }, +0x0245: { n:"BrtSupNameErr" }, +0x0246: { n:"BrtSupNameSt" }, +0x0247: { n:"BrtSupNameNil" }, +0x0248: { n:"BrtSupNameBool" }, +0x0249: { n:"BrtSupNameFmla" }, +0x024A: { n:"BrtSupNameBits" }, +0x024B: { n:"BrtSupNameEnd" }, +0x024C: { n:"BrtEndSupBook" }, +0x024D: { n:"BrtCellSmartTagProperty" }, +0x024E: { n:"BrtBeginCellSmartTag" }, +0x024F: { n:"BrtEndCellSmartTag" }, +0x0250: { n:"BrtBeginCellSmartTags" }, +0x0251: { n:"BrtEndCellSmartTags" }, +0x0252: { n:"BrtBeginSmartTags" }, +0x0253: { n:"BrtEndSmartTags" }, +0x0254: { n:"BrtSmartTagType" }, +0x0255: { n:"BrtBeginSmartTagTypes" }, +0x0256: { n:"BrtEndSmartTagTypes" }, +0x0257: { n:"BrtBeginSXFilters" }, +0x0258: { n:"BrtEndSXFilters" }, +0x0259: { n:"BrtBeginSXFILTER" }, +0x025A: { n:"BrtEndSXFilter" }, +0x025B: { n:"BrtBeginFills" }, +0x025C: { n:"BrtEndFills" }, +0x025D: { n:"BrtBeginCellWatches" }, +0x025E: { n:"BrtEndCellWatches" }, +0x025F: { n:"BrtCellWatch" }, +0x0260: { n:"BrtBeginCRErrs" }, +0x0261: { n:"BrtEndCRErrs" }, +0x0262: { n:"BrtCrashRecErr" }, +0x0263: { n:"BrtBeginFonts" }, +0x0264: { n:"BrtEndFonts" }, +0x0265: { n:"BrtBeginBorders" }, +0x0266: { n:"BrtEndBorders" }, +0x0267: { n:"BrtBeginFmts" }, +0x0268: { n:"BrtEndFmts" }, +0x0269: { n:"BrtBeginCellXFs" }, +0x026A: { n:"BrtEndCellXFs" }, +0x026B: { n:"BrtBeginStyles" }, +0x026C: { n:"BrtEndStyles" }, +0x0271: { n:"BrtBigName" }, +0x0272: { n:"BrtBeginCellStyleXFs" }, +0x0273: { n:"BrtEndCellStyleXFs" }, +0x0274: { n:"BrtBeginComments" }, +0x0275: { n:"BrtEndComments" }, +0x0276: { n:"BrtBeginCommentAuthors" }, +0x0277: { n:"BrtEndCommentAuthors" }, +0x0278: { n:"BrtCommentAuthor", f:parse_BrtCommentAuthor }, +0x0279: { n:"BrtBeginCommentList" }, +0x027A: { n:"BrtEndCommentList" }, +0x027B: { n:"BrtBeginComment", f:parse_BrtBeginComment}, +0x027C: { n:"BrtEndComment" }, +0x027D: { n:"BrtCommentText", f:parse_BrtCommentText }, +0x027E: { n:"BrtBeginOleObjects" }, +0x027F: { n:"BrtOleObject" }, +0x0280: { n:"BrtEndOleObjects" }, +0x0281: { n:"BrtBeginSxrules" }, +0x0282: { n:"BrtEndSxRules" }, +0x0283: { n:"BrtBeginActiveXControls" }, +0x0284: { n:"BrtActiveX" }, +0x0285: { n:"BrtEndActiveXControls" }, +0x0286: { n:"BrtBeginPCDSDTCEMembersSortBy" }, +0x0288: { n:"BrtBeginCellIgnoreECs" }, +0x0289: { n:"BrtCellIgnoreEC" }, +0x028A: { n:"BrtEndCellIgnoreECs" }, +0x028B: { n:"BrtCsProp", f:parse_BrtCsProp }, +0x028C: { n:"BrtCsPageSetup" }, +0x028D: { n:"BrtBeginUserCsViews" }, +0x028E: { n:"BrtEndUserCsViews" }, +0x028F: { n:"BrtBeginUserCsView" }, +0x0290: { n:"BrtEndUserCsView" }, +0x0291: { n:"BrtBeginPcdSFCIEntries" }, +0x0292: { n:"BrtEndPCDSFCIEntries" }, +0x0293: { n:"BrtPCDSFCIEntry" }, +0x0294: { n:"BrtBeginListParts" }, +0x0295: { n:"BrtListPart" }, +0x0296: { n:"BrtEndListParts" }, +0x0297: { n:"BrtSheetCalcProp" }, +0x0298: { n:"BrtBeginFnGroup" }, +0x0299: { n:"BrtFnGroup" }, +0x029A: { n:"BrtEndFnGroup" }, +0x029B: { n:"BrtSupAddin" }, +0x029C: { n:"BrtSXTDMPOrder" }, +0x029D: { n:"BrtCsProtection" }, +0x029F: { n:"BrtBeginWsSortMap" }, +0x02A0: { n:"BrtEndWsSortMap" }, +0x02A1: { n:"BrtBeginRRSort" }, +0x02A2: { n:"BrtEndRRSort" }, +0x02A3: { n:"BrtRRSortItem" }, +0x02A4: { n:"BrtFileSharingIso" }, +0x02A5: { n:"BrtBookProtectionIso" }, +0x02A6: { n:"BrtSheetProtectionIso" }, +0x02A7: { n:"BrtCsProtectionIso" }, +0x02A8: { n:"BrtRangeProtectionIso" }, +0x02A9: { n:"BrtDValList" }, +0x0400: { n:"BrtRwDescent" }, +0x0401: { n:"BrtKnownFonts" }, +0x0402: { n:"BrtBeginSXTupleSet" }, +0x0403: { n:"BrtEndSXTupleSet" }, +0x0404: { n:"BrtBeginSXTupleSetHeader" }, +0x0405: { n:"BrtEndSXTupleSetHeader" }, +0x0406: { n:"BrtSXTupleSetHeaderItem" }, +0x0407: { n:"BrtBeginSXTupleSetData" }, +0x0408: { n:"BrtEndSXTupleSetData" }, +0x0409: { n:"BrtBeginSXTupleSetRow" }, +0x040A: { n:"BrtEndSXTupleSetRow" }, +0x040B: { n:"BrtSXTupleSetRowItem" }, +0x040C: { n:"BrtNameExt" }, +0x040D: { n:"BrtPCDH14" }, +0x040E: { n:"BrtBeginPCDCalcMem14" }, +0x040F: { n:"BrtEndPCDCalcMem14" }, +0x0410: { n:"BrtSXTH14" }, +0x0411: { n:"BrtBeginSparklineGroup" }, +0x0412: { n:"BrtEndSparklineGroup" }, +0x0413: { n:"BrtSparkline" }, +0x0414: { n:"BrtSXDI14" }, +0x0415: { n:"BrtWsFmtInfoEx14" }, +0x0416: { n:"BrtBeginConditionalFormatting14" }, +0x0417: { n:"BrtEndConditionalFormatting14" }, +0x0418: { n:"BrtBeginCFRule14" }, +0x0419: { n:"BrtEndCFRule14" }, +0x041A: { n:"BrtCFVO14" }, +0x041B: { n:"BrtBeginDatabar14" }, +0x041C: { n:"BrtBeginIconSet14" }, +0x041D: { n:"BrtDVal14", f: parse_BrtDVal14 }, +0x041E: { n:"BrtBeginDVals14" }, +0x041F: { n:"BrtColor14" }, +0x0420: { n:"BrtBeginSparklines" }, +0x0421: { n:"BrtEndSparklines" }, +0x0422: { n:"BrtBeginSparklineGroups" }, +0x0423: { n:"BrtEndSparklineGroups" }, +0x0425: { n:"BrtSXVD14" }, +0x0426: { n:"BrtBeginSXView14" }, +0x0427: { n:"BrtEndSXView14" }, +0x0428: { n:"BrtBeginSXView16" }, +0x0429: { n:"BrtEndSXView16" }, +0x042A: { n:"BrtBeginPCD14" }, +0x042B: { n:"BrtEndPCD14" }, +0x042C: { n:"BrtBeginExtConn14" }, +0x042D: { n:"BrtEndExtConn14" }, +0x042E: { n:"BrtBeginSlicerCacheIDs" }, +0x042F: { n:"BrtEndSlicerCacheIDs" }, +0x0430: { n:"BrtBeginSlicerCacheID" }, +0x0431: { n:"BrtEndSlicerCacheID" }, +0x0433: { n:"BrtBeginSlicerCache" }, +0x0434: { n:"BrtEndSlicerCache" }, +0x0435: { n:"BrtBeginSlicerCacheDef" }, +0x0436: { n:"BrtEndSlicerCacheDef" }, +0x0437: { n:"BrtBeginSlicersEx" }, +0x0438: { n:"BrtEndSlicersEx" }, +0x0439: { n:"BrtBeginSlicerEx" }, +0x043A: { n:"BrtEndSlicerEx" }, +0x043B: { n:"BrtBeginSlicer" }, +0x043C: { n:"BrtEndSlicer" }, +0x043D: { n:"BrtSlicerCachePivotTables" }, +0x043E: { n:"BrtBeginSlicerCacheOlapImpl" }, +0x043F: { n:"BrtEndSlicerCacheOlapImpl" }, +0x0440: { n:"BrtBeginSlicerCacheLevelsData" }, +0x0441: { n:"BrtEndSlicerCacheLevelsData" }, +0x0442: { n:"BrtBeginSlicerCacheLevelData" }, +0x0443: { n:"BrtEndSlicerCacheLevelData" }, +0x0444: { n:"BrtBeginSlicerCacheSiRanges" }, +0x0445: { n:"BrtEndSlicerCacheSiRanges" }, +0x0446: { n:"BrtBeginSlicerCacheSiRange" }, +0x0447: { n:"BrtEndSlicerCacheSiRange" }, +0x0448: { n:"BrtSlicerCacheOlapItem" }, +0x0449: { n:"BrtBeginSlicerCacheSelections" }, +0x044A: { n:"BrtSlicerCacheSelection" }, +0x044B: { n:"BrtEndSlicerCacheSelections" }, +0x044C: { n:"BrtBeginSlicerCacheNative" }, +0x044D: { n:"BrtEndSlicerCacheNative" }, +0x044E: { n:"BrtSlicerCacheNativeItem" }, +0x044F: { n:"BrtRangeProtection14" }, +0x0450: { n:"BrtRangeProtectionIso14" }, +0x0451: { n:"BrtCellIgnoreEC14" }, +0x0457: { n:"BrtList14" }, +0x0458: { n:"BrtCFIcon" }, +0x0459: { n:"BrtBeginSlicerCachesPivotCacheIDs" }, +0x045A: { n:"BrtEndSlicerCachesPivotCacheIDs" }, +0x045B: { n:"BrtBeginSlicers" }, +0x045C: { n:"BrtEndSlicers" }, +0x045D: { n:"BrtWbProp14" }, +0x045E: { n:"BrtBeginSXEdit" }, +0x045F: { n:"BrtEndSXEdit" }, +0x0460: { n:"BrtBeginSXEdits" }, +0x0461: { n:"BrtEndSXEdits" }, +0x0462: { n:"BrtBeginSXChange" }, +0x0463: { n:"BrtEndSXChange" }, +0x0464: { n:"BrtBeginSXChanges" }, +0x0465: { n:"BrtEndSXChanges" }, +0x0466: { n:"BrtSXTupleItems" }, +0x0468: { n:"BrtBeginSlicerStyle" }, +0x0469: { n:"BrtEndSlicerStyle" }, +0x046A: { n:"BrtSlicerStyleElement" }, +0x046B: { n:"BrtBeginStyleSheetExt14" }, +0x046C: { n:"BrtEndStyleSheetExt14" }, +0x046D: { n:"BrtBeginSlicerCachesPivotCacheID" }, +0x046E: { n:"BrtEndSlicerCachesPivotCacheID" }, +0x046F: { n:"BrtBeginConditionalFormattings" }, +0x0470: { n:"BrtEndConditionalFormattings" }, +0x0471: { n:"BrtBeginPCDCalcMemExt" }, +0x0472: { n:"BrtEndPCDCalcMemExt" }, +0x0473: { n:"BrtBeginPCDCalcMemsExt" }, +0x0474: { n:"BrtEndPCDCalcMemsExt" }, +0x0475: { n:"BrtPCDField14" }, +0x0476: { n:"BrtBeginSlicerStyles" }, +0x0477: { n:"BrtEndSlicerStyles" }, +0x0478: { n:"BrtBeginSlicerStyleElements" }, +0x0479: { n:"BrtEndSlicerStyleElements" }, +0x047A: { n:"BrtCFRuleExt" }, +0x047B: { n:"BrtBeginSXCondFmt14" }, +0x047C: { n:"BrtEndSXCondFmt14" }, +0x047D: { n:"BrtBeginSXCondFmts14" }, +0x047E: { n:"BrtEndSXCondFmts14" }, +0x0480: { n:"BrtBeginSortCond14" }, +0x0481: { n:"BrtEndSortCond14" }, +0x0482: { n:"BrtEndDVals14" }, +0x0483: { n:"BrtEndIconSet14" }, +0x0484: { n:"BrtEndDatabar14" }, +0x0485: { n:"BrtBeginColorScale14" }, +0x0486: { n:"BrtEndColorScale14" }, +0x0487: { n:"BrtBeginSxrules14" }, +0x0488: { n:"BrtEndSxrules14" }, +0x0489: { n:"BrtBeginPRule14" }, +0x048A: { n:"BrtEndPRule14" }, +0x048B: { n:"BrtBeginPRFilters14" }, +0x048C: { n:"BrtEndPRFilters14" }, +0x048D: { n:"BrtBeginPRFilter14" }, +0x048E: { n:"BrtEndPRFilter14" }, +0x048F: { n:"BrtBeginPRFItem14" }, +0x0490: { n:"BrtEndPRFItem14" }, +0x0491: { n:"BrtBeginCellIgnoreECs14" }, +0x0492: { n:"BrtEndCellIgnoreECs14" }, +0x0493: { n:"BrtDxf14" }, +0x0494: { n:"BrtBeginDxF14s" }, +0x0495: { n:"BrtEndDxf14s" }, +0x0499: { n:"BrtFilter14" }, +0x049A: { n:"BrtBeginCustomFilters14" }, +0x049C: { n:"BrtCustomFilter14" }, +0x049D: { n:"BrtIconFilter14" }, +0x049E: { n:"BrtPivotCacheConnectionName" }, +0x0800: { n:"BrtBeginDecoupledPivotCacheIDs" }, +0x0801: { n:"BrtEndDecoupledPivotCacheIDs" }, +0x0802: { n:"BrtDecoupledPivotCacheID" }, +0x0803: { n:"BrtBeginPivotTableRefs" }, +0x0804: { n:"BrtEndPivotTableRefs" }, +0x0805: { n:"BrtPivotTableRef" }, +0x0806: { n:"BrtSlicerCacheBookPivotTables" }, +0x0807: { n:"BrtBeginSxvcells" }, +0x0808: { n:"BrtEndSxvcells" }, +0x0809: { n:"BrtBeginSxRow" }, +0x080A: { n:"BrtEndSxRow" }, +0x080C: { n:"BrtPcdCalcMem15" }, +0x0813: { n:"BrtQsi15" }, +0x0814: { n:"BrtBeginWebExtensions" }, +0x0815: { n:"BrtEndWebExtensions" }, +0x0816: { n:"BrtWebExtension" }, +0x0817: { n:"BrtAbsPath15" }, +0x0818: { n:"BrtBeginPivotTableUISettings" }, +0x0819: { n:"BrtEndPivotTableUISettings" }, +0x081B: { n:"BrtTableSlicerCacheIDs" }, +0x081C: { n:"BrtTableSlicerCacheID" }, +0x081D: { n:"BrtBeginTableSlicerCache" }, +0x081E: { n:"BrtEndTableSlicerCache" }, +0x081F: { n:"BrtSxFilter15" }, +0x0820: { n:"BrtBeginTimelineCachePivotCacheIDs" }, +0x0821: { n:"BrtEndTimelineCachePivotCacheIDs" }, +0x0822: { n:"BrtTimelineCachePivotCacheID" }, +0x0823: { n:"BrtBeginTimelineCacheIDs" }, +0x0824: { n:"BrtEndTimelineCacheIDs" }, +0x0825: { n:"BrtBeginTimelineCacheID" }, +0x0826: { n:"BrtEndTimelineCacheID" }, +0x0827: { n:"BrtBeginTimelinesEx" }, +0x0828: { n:"BrtEndTimelinesEx" }, +0x0829: { n:"BrtBeginTimelineEx" }, +0x082A: { n:"BrtEndTimelineEx" }, +0x082B: { n:"BrtWorkBookPr15" }, +0x082C: { n:"BrtPCDH15" }, +0x082D: { n:"BrtBeginTimelineStyle" }, +0x082E: { n:"BrtEndTimelineStyle" }, +0x082F: { n:"BrtTimelineStyleElement" }, +0x0830: { n:"BrtBeginTimelineStylesheetExt15" }, +0x0831: { n:"BrtEndTimelineStylesheetExt15" }, +0x0832: { n:"BrtBeginTimelineStyles" }, +0x0833: { n:"BrtEndTimelineStyles" }, +0x0834: { n:"BrtBeginTimelineStyleElements" }, +0x0835: { n:"BrtEndTimelineStyleElements" }, +0x0836: { n:"BrtDxf15" }, +0x0837: { n:"BrtBeginDxfs15" }, +0x0838: { n:"brtEndDxfs15" }, +0x0839: { n:"BrtSlicerCacheHideItemsWithNoData" }, +0x083A: { n:"BrtBeginItemUniqueNames" }, +0x083B: { n:"BrtEndItemUniqueNames" }, +0x083C: { n:"BrtItemUniqueName" }, +0x083D: { n:"BrtBeginExtConn15" }, +0x083E: { n:"BrtEndExtConn15" }, +0x083F: { n:"BrtBeginOledbPr15" }, +0x0840: { n:"BrtEndOledbPr15" }, +0x0841: { n:"BrtBeginDataFeedPr15" }, +0x0842: { n:"BrtEndDataFeedPr15" }, +0x0843: { n:"BrtTextPr15" }, +0x0844: { n:"BrtRangePr15" }, +0x0845: { n:"BrtDbCommand15" }, +0x0846: { n:"BrtBeginDbTables15" }, +0x0847: { n:"BrtEndDbTables15" }, +0x0848: { n:"BrtDbTable15" }, +0x0849: { n:"BrtBeginDataModel" }, +0x084A: { n:"BrtEndDataModel" }, +0x084B: { n:"BrtBeginModelTables" }, +0x084C: { n:"BrtEndModelTables" }, +0x084D: { n:"BrtModelTable" }, +0x084E: { n:"BrtBeginModelRelationships" }, +0x084F: { n:"BrtEndModelRelationships" }, +0x0850: { n:"BrtModelRelationship" }, +0x0851: { n:"BrtBeginECTxtWiz15" }, +0x0852: { n:"BrtEndECTxtWiz15" }, +0x0853: { n:"BrtBeginECTWFldInfoLst15" }, +0x0854: { n:"BrtEndECTWFldInfoLst15" }, +0x0855: { n:"BrtBeginECTWFldInfo15" }, +0x0856: { n:"BrtFieldListActiveItem" }, +0x0857: { n:"BrtPivotCacheIdVersion" }, +0x0858: { n:"BrtSXDI15" }, +0x0859: { n:"BrtBeginModelTimeGroupings" }, +0x085A: { n:"BrtEndModelTimeGroupings" }, +0x085B: { n:"BrtBeginModelTimeGrouping" }, +0x085C: { n:"BrtEndModelTimeGrouping" }, +0x085D: { n:"BrtModelTimeGroupingCalcCol" }, +0x0C00: { n:"BrtUid" }, +0x0C01: { n:"BrtRevisionPtr" }, +0x13e7: { n:"BrtBeginCalcFeatures" }, +0x13e8: { n:"BrtEndCalcFeatures" }, +0x13e9: { n:"BrtCalcFeature" }, +0xFFFF: { n:"" } +}; + +var XLSBRE = evert_key(XLSBRecordEnum, 'n'); + +/* [MS-XLS] 2.3 Record Enumeration */ +var XLSRecordEnum = { +0x0003: { n:"BIFF2NUM", f:parse_BIFF2NUM }, +0x0004: { n:"BIFF2STR", f:parse_BIFF2STR }, +0x0006: { n:"Formula", f:parse_Formula }, +0x0009: { n:'BOF', f:parse_BOF }, +0x000a: { n:'EOF', f:parsenoop2 }, +0x000c: { n:"CalcCount", f:parseuint16 }, +0x000d: { n:"CalcMode", f:parseuint16 }, +0x000e: { n:"CalcPrecision", f:parsebool }, +0x000f: { n:"CalcRefMode", f:parsebool }, +0x0010: { n:"CalcDelta", f:parse_Xnum }, +0x0011: { n:"CalcIter", f:parsebool }, +0x0012: { n:"Protect", f:parsebool }, +0x0013: { n:"Password", f:parseuint16 }, +0x0014: { n:"Header", f:parse_XLHeaderFooter }, +0x0015: { n:"Footer", f:parse_XLHeaderFooter }, +0x0017: { n:"ExternSheet", f:parse_ExternSheet }, +0x0018: { n:"Lbl", f:parse_Lbl }, +0x0019: { n:"WinProtect", f:parsebool }, +0x001a: { n:"VerticalPageBreaks" }, +0x001b: { n:"HorizontalPageBreaks" }, +0x001c: { n:"Note", f:parse_Note }, +0x001d: { n:"Selection" }, +0x0022: { n:"Date1904", f:parsebool }, +0x0023: { n:"ExternName", f:parse_ExternName }, +0x0024: { n:"COLWIDTH" }, +0x0026: { n:"LeftMargin", f:parse_Xnum }, +0x0027: { n:"RightMargin", f:parse_Xnum }, +0x0028: { n:"TopMargin", f:parse_Xnum }, +0x0029: { n:"BottomMargin", f:parse_Xnum }, +0x002a: { n:"PrintRowCol", f:parsebool }, +0x002b: { n:"PrintGrid", f:parsebool }, +0x002f: { n:"FilePass", f:parse_FilePass }, +0x0031: { n:"Font", f:parse_Font }, +0x0033: { n:"PrintSize", f:parseuint16 }, +0x003c: { n:"Continue" }, +0x003d: { n:"Window1", f:parse_Window1 }, +0x0040: { n:"Backup", f:parsebool }, +0x0041: { n:"Pane", f:parse_Pane }, +0x0042: { n:'CodePage', f:parseuint16 }, +0x004d: { n:"Pls" }, +0x0050: { n:"DCon" }, +0x0051: { n:"DConRef" }, +0x0052: { n:"DConName" }, +0x0055: { n:"DefColWidth", f:parseuint16 }, +0x0059: { n:"XCT" }, +0x005a: { n:"CRN" }, +0x005b: { n:"FileSharing" }, +0x005c: { n:'WriteAccess', f:parse_WriteAccess }, +0x005d: { n:"Obj", f:parse_Obj }, +0x005e: { n:"Uncalced" }, +0x005f: { n:"CalcSaveRecalc", f:parsebool }, +0x0060: { n:"Template" }, +0x0061: { n:"Intl" }, +0x0063: { n:"ObjProtect", f:parsebool }, +0x007d: { n:"ColInfo", f:parse_ColInfo }, +0x0080: { n:"Guts", f:parse_Guts }, +0x0081: { n:"WsBool", f:parse_WsBool }, +0x0082: { n:"GridSet", f:parseuint16 }, +0x0083: { n:"HCenter", f:parsebool }, +0x0084: { n:"VCenter", f:parsebool }, +0x0085: { n:'BoundSheet8', f:parse_BoundSheet8 }, +0x0086: { n:"WriteProtect" }, +0x008c: { n:"Country", f:parse_Country }, +0x008d: { n:"HideObj", f:parseuint16 }, +0x0090: { n:"Sort" }, +0x0092: { n:"Palette", f:parse_Palette }, +0x0097: { n:"Sync" }, +0x0098: { n:"LPr" }, +0x0099: { n:"DxGCol" }, +0x009a: { n:"FnGroupName" }, +0x009b: { n:"FilterMode" }, +0x009c: { n:"BuiltInFnGroupCount", f:parseuint16 }, +0x009d: { n:"AutoFilterInfo" }, +0x009e: { n:"AutoFilter" }, +0x00a0: { n:"Scl", f:parse_Scl }, +0x00a1: { n:"Setup", f:parse_Setup }, +0x00ae: { n:"ScenMan" }, +0x00af: { n:"SCENARIO" }, +0x00b0: { n:"SxView" }, +0x00b1: { n:"Sxvd" }, +0x00b2: { n:"SXVI" }, +0x00b4: { n:"SxIvd" }, +0x00b5: { n:"SXLI" }, +0x00b6: { n:"SXPI" }, +0x00b8: { n:"DocRoute" }, +0x00b9: { n:"RecipName" }, +0x00bd: { n:"MulRk", f:parse_MulRk }, +0x00be: { n:"MulBlank", f:parse_MulBlank }, +0x00c1: { n:'Mms', f:parsenoop2 }, +0x00c5: { n:"SXDI" }, +0x00c6: { n:"SXDB" }, +0x00c7: { n:"SXFDB" }, +0x00c8: { n:"SXDBB" }, +0x00c9: { n:"SXNum" }, +0x00ca: { n:"SxBool", f:parsebool }, +0x00cb: { n:"SxErr" }, +0x00cc: { n:"SXInt" }, +0x00cd: { n:"SXString" }, +0x00ce: { n:"SXDtr" }, +0x00cf: { n:"SxNil" }, +0x00d0: { n:"SXTbl" }, +0x00d1: { n:"SXTBRGIITM" }, +0x00d2: { n:"SxTbpg" }, +0x00d3: { n:"ObProj" }, +0x00d5: { n:"SXStreamID" }, +0x00d7: { n:"DBCell" }, +0x00d8: { n:"SXRng" }, +0x00d9: { n:"SxIsxoper" }, +0x00da: { n:"BookBool", f:parseuint16 }, +0x00dc: { n:"DbOrParamQry" }, +0x00dd: { n:"ScenarioProtect", f:parsebool }, +0x00de: { n:"OleObjectSize" }, +0x00e0: { n:"XF", f:parse_XF }, +0x00e1: { n:'InterfaceHdr', f:parse_InterfaceHdr }, +0x00e2: { n:'InterfaceEnd', f:parsenoop2 }, +0x00e3: { n:"SXVS" }, +0x00e5: { n:"MergeCells", f:parse_MergeCells }, +0x00e9: { n:"BkHim" }, +0x00eb: { n:"MsoDrawingGroup" }, +0x00ec: { n:"MsoDrawing" }, +0x00ed: { n:"MsoDrawingSelection" }, +0x00ef: { n:"PhoneticInfo" }, +0x00f0: { n:"SxRule" }, +0x00f1: { n:"SXEx" }, +0x00f2: { n:"SxFilt" }, +0x00f4: { n:"SxDXF" }, +0x00f5: { n:"SxItm" }, +0x00f6: { n:"SxName" }, +0x00f7: { n:"SxSelect" }, +0x00f8: { n:"SXPair" }, +0x00f9: { n:"SxFmla" }, +0x00fb: { n:"SxFormat" }, +0x00fc: { n:"SST", f:parse_SST }, +0x00fd: { n:"LabelSst", f:parse_LabelSst }, +0x00ff: { n:"ExtSST", f:parse_ExtSST }, +0x0100: { n:"SXVDEx" }, +0x0103: { n:"SXFormula" }, +0x0122: { n:"SXDBEx" }, +0x0137: { n:"RRDInsDel" }, +0x0138: { n:"RRDHead" }, +0x013b: { n:"RRDChgCell" }, +0x013d: { n:"RRTabId", f:parseuint16a }, +0x013e: { n:"RRDRenSheet" }, +0x013f: { n:"RRSort" }, +0x0140: { n:"RRDMove" }, +0x014a: { n:"RRFormat" }, +0x014b: { n:"RRAutoFmt" }, +0x014d: { n:"RRInsertSh" }, +0x014e: { n:"RRDMoveBegin" }, +0x014f: { n:"RRDMoveEnd" }, +0x0150: { n:"RRDInsDelBegin" }, +0x0151: { n:"RRDInsDelEnd" }, +0x0152: { n:"RRDConflict" }, +0x0153: { n:"RRDDefName" }, +0x0154: { n:"RRDRstEtxp" }, +0x015f: { n:"LRng" }, +0x0160: { n:"UsesELFs", f:parsebool }, +0x0161: { n:"DSF", f:parsenoop2 }, +0x0191: { n:"CUsr" }, +0x0192: { n:"CbUsr" }, +0x0193: { n:"UsrInfo" }, +0x0194: { n:"UsrExcl" }, +0x0195: { n:"FileLock" }, +0x0196: { n:"RRDInfo" }, +0x0197: { n:"BCUsrs" }, +0x0198: { n:"UsrChk" }, +0x01a9: { n:"UserBView" }, +0x01aa: { n:"UserSViewBegin" }, +0x01ab: { n:"UserSViewEnd" }, +0x01ac: { n:"RRDUserView" }, +0x01ad: { n:"Qsi" }, +0x01ae: { n:"SupBook", f:parse_SupBook }, +0x01af: { n:"Prot4Rev", f:parsebool }, +0x01b0: { n:"CondFmt" }, +0x01b1: { n:"CF" }, +0x01b2: { n:"DVal" }, +0x01b5: { n:"DConBin" }, +0x01b6: { n:"TxO", f:parse_TxO }, +0x01b7: { n:"RefreshAll", f:parsebool }, +0x01b8: { n:"HLink", f:parse_HLink }, +0x01b9: { n:"Lel" }, +0x01ba: { n:"CodeName", f:parse_XLUnicodeString }, +0x01bb: { n:"SXFDBType" }, +0x01bc: { n:"Prot4RevPass", f:parseuint16 }, +0x01bd: { n:"ObNoMacros" }, +0x01be: { n:"Dv" }, +0x01c0: { n:"Excel9File", f:parsenoop2 }, +0x01c1: { n:"RecalcId", f:parse_RecalcId, r:2}, +0x01c2: { n:"EntExU2", f:parsenoop2 }, +0x0200: { n:"Dimensions", f:parse_Dimensions }, +0x0201: { n:"Blank", f:parse_Blank }, +0x0203: { n:"Number", f:parse_Number }, +0x0204: { n:"Label", f:parse_Label }, +0x0205: { n:"BoolErr", f:parse_BoolErr }, +0x0206: { n:"Formula", f:parse_Formula }, +0x0207: { n:"String", f:parse_String }, +0x0208: { n:'Row', f:parse_Row }, +0x020b: { n:"Index" }, +0x0221: { n:"Array", f:parse_Array }, +0x0225: { n:"DefaultRowHeight", f:parse_DefaultRowHeight }, +0x0236: { n:"Table" }, +0x023e: { n:"Window2", f:parse_Window2 }, +0x027e: { n:"RK", f:parse_RK }, +0x0293: { n:"Style" }, +0x0406: { n:"Formula", f:parse_Formula }, +0x0418: { n:"BigName" }, +0x041e: { n:"Format", f:parse_Format }, +0x043c: { n:"ContinueBigName" }, +0x04bc: { n:"ShrFmla", f:parse_ShrFmla }, +0x0800: { n:"HLinkTooltip", f:parse_HLinkTooltip }, +0x0801: { n:"WebPub" }, +0x0802: { n:"QsiSXTag" }, +0x0803: { n:"DBQueryExt" }, +0x0804: { n:"ExtString" }, +0x0805: { n:"TxtQry" }, +0x0806: { n:"Qsir" }, +0x0807: { n:"Qsif" }, +0x0808: { n:"RRDTQSIF" }, +0x0809: { n:'BOF', f:parse_BOF }, +0x080a: { n:"OleDbConn" }, +0x080b: { n:"WOpt" }, +0x080c: { n:"SXViewEx" }, +0x080d: { n:"SXTH" }, +0x080e: { n:"SXPIEx" }, +0x080f: { n:"SXVDTEx" }, +0x0810: { n:"SXViewEx9" }, +0x0812: { n:"ContinueFrt" }, +0x0813: { n:"RealTimeData" }, +0x0850: { n:"ChartFrtInfo" }, +0x0851: { n:"FrtWrapper" }, +0x0852: { n:"StartBlock" }, +0x0853: { n:"EndBlock" }, +0x0854: { n:"StartObject" }, +0x0855: { n:"EndObject" }, +0x0856: { n:"CatLab" }, +0x0857: { n:"YMult" }, +0x0858: { n:"SXViewLink" }, +0x0859: { n:"PivotChartBits" }, +0x085a: { n:"FrtFontList" }, +0x0862: { n:"SheetExt" }, +0x0863: { n:"BookExt", r:12}, +0x0864: { n:"SXAddl" }, +0x0865: { n:"CrErr" }, +0x0866: { n:"HFPicture" }, +0x0867: { n:'FeatHdr', f:parsenoop2 }, +0x0868: { n:"Feat" }, +0x086a: { n:"DataLabExt" }, +0x086b: { n:"DataLabExtContents" }, +0x086c: { n:"CellWatch" }, +0x0871: { n:"FeatHdr11" }, +0x0872: { n:"Feature11" }, +0x0874: { n:"DropDownObjIds" }, +0x0875: { n:"ContinueFrt11" }, +0x0876: { n:"DConn" }, +0x0877: { n:"List12" }, +0x0878: { n:"Feature12" }, +0x0879: { n:"CondFmt12" }, +0x087a: { n:"CF12" }, +0x087b: { n:"CFEx" }, +0x087c: { n:"XFCRC", f:parse_XFCRC, r:12 }, +0x087d: { n:"XFExt", f:parse_XFExt, r:12 }, +0x087e: { n:"AutoFilter12" }, +0x087f: { n:"ContinueFrt12" }, +0x0884: { n:"MDTInfo" }, +0x0885: { n:"MDXStr" }, +0x0886: { n:"MDXTuple" }, +0x0887: { n:"MDXSet" }, +0x0888: { n:"MDXProp" }, +0x0889: { n:"MDXKPI" }, +0x088a: { n:"MDB" }, +0x088b: { n:"PLV" }, +0x088c: { n:"Compat12", f:parsebool, r:12 }, +0x088d: { n:"DXF" }, +0x088e: { n:"TableStyles", r:12 }, +0x088f: { n:"TableStyle" }, +0x0890: { n:"TableStyleElement" }, +0x0892: { n:"StyleExt" }, +0x0893: { n:"NamePublish" }, +0x0894: { n:"NameCmt", f:parse_NameCmt, r:12 }, +0x0895: { n:"SortData" }, +0x0896: { n:"Theme", f:parse_Theme, r:12 }, +0x0897: { n:"GUIDTypeLib" }, +0x0898: { n:"FnGrp12" }, +0x0899: { n:"NameFnGrp12" }, +0x089a: { n:"MTRSettings", f:parse_MTRSettings, r:12 }, +0x089b: { n:"CompressPictures", f:parsenoop2 }, +0x089c: { n:"HeaderFooter" }, +0x089d: { n:"CrtLayout12" }, +0x089e: { n:"CrtMlFrt" }, +0x089f: { n:"CrtMlFrtContinue" }, +0x08a3: { n:"ForceFullCalculation", f:parse_ForceFullCalculation }, +0x08a4: { n:"ShapePropsStream" }, +0x08a5: { n:"TextPropsStream" }, +0x08a6: { n:"RichTextStream" }, +0x08a7: { n:"CrtLayout12A" }, +0x1001: { n:"Units" }, +0x1002: { n:"Chart" }, +0x1003: { n:"Series" }, +0x1006: { n:"DataFormat" }, +0x1007: { n:"LineFormat" }, +0x1009: { n:"MarkerFormat" }, +0x100a: { n:"AreaFormat" }, +0x100b: { n:"PieFormat" }, +0x100c: { n:"AttachedLabel" }, +0x100d: { n:"SeriesText" }, +0x1014: { n:"ChartFormat" }, +0x1015: { n:"Legend" }, +0x1016: { n:"SeriesList" }, +0x1017: { n:"Bar" }, +0x1018: { n:"Line" }, +0x1019: { n:"Pie" }, +0x101a: { n:"Area" }, +0x101b: { n:"Scatter" }, +0x101c: { n:"CrtLine" }, +0x101d: { n:"Axis" }, +0x101e: { n:"Tick" }, +0x101f: { n:"ValueRange" }, +0x1020: { n:"CatSerRange" }, +0x1021: { n:"AxisLine" }, +0x1022: { n:"CrtLink" }, +0x1024: { n:"DefaultText" }, +0x1025: { n:"Text" }, +0x1026: { n:"FontX", f:parseuint16 }, +0x1027: { n:"ObjectLink" }, +0x1032: { n:"Frame" }, +0x1033: { n:"Begin" }, +0x1034: { n:"End" }, +0x1035: { n:"PlotArea" }, +0x103a: { n:"Chart3d" }, +0x103c: { n:"PicF" }, +0x103d: { n:"DropBar" }, +0x103e: { n:"Radar" }, +0x103f: { n:"Surf" }, +0x1040: { n:"RadarArea" }, +0x1041: { n:"AxisParent" }, +0x1043: { n:"LegendException" }, +0x1044: { n:"ShtProps", f:parse_ShtProps }, +0x1045: { n:"SerToCrt" }, +0x1046: { n:"AxesUsed" }, +0x1048: { n:"SBaseRef" }, +0x104a: { n:"SerParent" }, +0x104b: { n:"SerAuxTrend" }, +0x104e: { n:"IFmtRecord" }, +0x104f: { n:"Pos" }, +0x1050: { n:"AlRuns" }, +0x1051: { n:"BRAI" }, +0x105b: { n:"SerAuxErrBar" }, +0x105c: { n:"ClrtClient", f:parse_ClrtClient }, +0x105d: { n:"SerFmt" }, +0x105f: { n:"Chart3DBarShape" }, +0x1060: { n:"Fbi" }, +0x1061: { n:"BopPop" }, +0x1062: { n:"AxcExt" }, +0x1063: { n:"Dat" }, +0x1064: { n:"PlotGrowth" }, +0x1065: { n:"SIIndex" }, +0x1066: { n:"GelFrame" }, +0x1067: { n:"BopPopCustom" }, +0x1068: { n:"Fbi2" }, + +0x0000: { n:"Dimensions", f:parse_Dimensions }, +0x0002: { n:"BIFF2INT", f:parse_BIFF2INT }, +0x0005: { n:"BoolErr", f:parse_BoolErr }, +0x0007: { n:"String", f:parse_BIFF2STRING }, +0x0008: { n:"BIFF2ROW" }, +0x000b: { n:"Index" }, +0x0016: { n:"ExternCount", f:parseuint16 }, +0x001e: { n:"BIFF2FORMAT", f:parse_BIFF2Format }, +0x001f: { n:"BIFF2FMTCNT" }, /* 16-bit cnt of BIFF2FORMAT records */ +0x0020: { n:"BIFF2COLINFO" }, +0x0021: { n:"Array", f:parse_Array }, +0x0025: { n:"DefaultRowHeight", f:parse_DefaultRowHeight }, +0x0032: { n:"BIFF2FONTXTRA", f:parse_BIFF2FONTXTRA }, +0x0034: { n:"DDEObjName" }, +0x003e: { n:"BIFF2WINDOW2" }, +0x0043: { n:"BIFF2XF" }, +0x0045: { n:"BIFF2FONTCLR" }, +0x0056: { n:"BIFF4FMTCNT" }, /* 16-bit cnt, similar to BIFF2 */ +0x007e: { n:"RK" }, /* Not necessarily same as 0x027e */ +0x007f: { n:"ImData", f:parse_ImData }, +0x0087: { n:"Addin" }, +0x0088: { n:"Edg" }, +0x0089: { n:"Pub" }, +0x0091: { n:"Sub" }, +0x0094: { n:"LHRecord" }, +0x0095: { n:"LHNGraph" }, +0x0096: { n:"Sound" }, +0x00a9: { n:"CoordList" }, +0x00ab: { n:"GCW" }, +0x00bc: { n:"ShrFmla" }, /* Not necessarily same as 0x04bc */ +0x00bf: { n:"ToolbarHdr" }, +0x00c0: { n:"ToolbarEnd" }, +0x00c2: { n:"AddMenu" }, +0x00c3: { n:"DelMenu" }, +0x00d6: { n:"RString", f:parse_RString }, +0x00df: { n:"UDDesc" }, +0x00ea: { n:"TabIdConf" }, +0x0162: { n:"XL5Modify" }, +0x01a5: { n:"FileSharing2" }, +0x0209: { n:'BOF', f:parse_BOF }, +0x0218: { n:"Lbl", f:parse_Lbl }, +0x0223: { n:"ExternName", f:parse_ExternName }, +0x0231: { n:"Font" }, +0x0243: { n:"BIFF3XF" }, +0x0409: { n:'BOF', f:parse_BOF }, +0x0443: { n:"BIFF4XF" }, +0x086d: { n:"FeatInfo" }, +0x0873: { n:"FeatInfo11" }, +0x0881: { n:"SXAddl12" }, +0x08c0: { n:"AutoWebPub" }, +0x08c1: { n:"ListObj" }, +0x08c2: { n:"ListField" }, +0x08c3: { n:"ListDV" }, +0x08c4: { n:"ListCondFmt" }, +0x08c5: { n:"ListCF" }, +0x08c6: { n:"FMQry" }, +0x08c7: { n:"FMSQry" }, +0x08c8: { n:"PLV" }, +0x08c9: { n:"LnExt" }, +0x08ca: { n:"MkrExt" }, +0x08cb: { n:"CrtCoopt" }, +0x08d6: { n:"FRTArchId$", r:12 }, + +0x7262: {} +}; + +var XLSRE = evert_key(XLSRecordEnum, 'n'); +function write_biff_rec(ba, type, payload, length) { + var t = +type || +XLSRE[type]; + if(isNaN(t)) return; + var len = length || (payload||[]).length || 0; + var o = ba.next(4); + o.write_shift(2, t); + o.write_shift(2, len); + if(len > 0 && is_buf(payload)) ba.push(payload); +} + +function write_biff_continue(ba, type, payload, length) { + var len = length || (payload||[]).length || 0; + if(len <= 8224) return write_biff_rec(ba, type, payload, len); + var t = +type || +XLSRE[type]; + if(isNaN(t)) return; + var parts = payload.parts || [], sidx = 0; + var i = 0, w = 0; + while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } + var o = ba.next(4); + o.write_shift(2, t); + o.write_shift(2, w); + ba.push(payload.slice(i, i + w)); + i += w; + while(i < len) { + o = ba.next(4); + o.write_shift(2, 0x3c); // TODO: figure out correct continue type + w = 0; + while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } + o.write_shift(2, w); + ba.push(payload.slice(i, i+w)); i+= w; + } +} + +function write_BIFF2Cell(out, r, c) { + if(!out) out = new_buf(7); + out.write_shift(2, r); + out.write_shift(2, c); + out.write_shift(2, 0); + out.write_shift(1, 0); + return out; +} + +function write_BIFF2BERR(r, c, val, t) { + var out = new_buf(9); + write_BIFF2Cell(out, r, c); + if(t == 'e') { out.write_shift(1, val); out.write_shift(1, 1); } + else { out.write_shift(1, val?1:0); out.write_shift(1, 0); } + return out; +} + +/* TODO: codepage, large strings */ +function write_BIFF2LABEL(r, c, val) { + var out = new_buf(8 + 2*val.length); + write_BIFF2Cell(out, r, c); + out.write_shift(1, val.length); + out.write_shift(val.length, val, 'sbcs'); + return out.l < out.length ? out.slice(0, out.l) : out; +} + +function write_ws_biff2_cell(ba, cell, R, C) { + if(cell.v != null) switch(cell.t) { + case 'd': case 'n': + var v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v; + if((v == (v|0)) && (v >= 0) && (v < 65536)) + write_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v)); + else + write_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v)); + return; + case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return; + /* TODO: codepage, sst */ + case 's': case 'str': + write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v)); + return; + } + write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C)); +} + +function write_ws_biff2(ba, ws, idx, opts) { + var dense = Array.isArray(ws); + var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = []; + if(range.e.c > 0xFF || range.e.r > 0x3FFF) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); + range.e.c = Math.min(range.e.c, 0xFF); + range.e.r = Math.min(range.e.c, 0x3FFF); + ref = encode_range(range); + } + for(var R = range.s.r; R <= range.e.r; ++R) { + rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) continue; + /* write cell */ + write_ws_biff2_cell(ba, cell, R, C, opts); + } + } +} + +/* Based on test files */ +function write_biff2_buf(wb, opts) { + var o = opts || {}; + if(DENSE != null && o.dense == null) o.dense = DENSE; + var ba = buf_array(); + var idx = 0; + for(var i=0;i 0xFF || range.e.r >= MAX_ROWS) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); + range.e.c = Math.min(range.e.c, 0xFF); + range.e.r = Math.min(range.e.c, MAX_ROWS-1); + } + + write_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts)); + /* [Uncalced] Index */ + write_biff_rec(ba, "CalcMode", writeuint16(1)); + write_biff_rec(ba, "CalcCount", writeuint16(100)); + write_biff_rec(ba, "CalcRefMode", writebool(true)); + write_biff_rec(ba, "CalcIter", writebool(false)); + write_biff_rec(ba, "CalcDelta", write_Xnum(0.001)); + write_biff_rec(ba, "CalcSaveRecalc", writebool(true)); + write_biff_rec(ba, "PrintRowCol", writebool(false)); + write_biff_rec(ba, "PrintGrid", writebool(false)); + write_biff_rec(ba, "GridSet", writeuint16(1)); + write_biff_rec(ba, "Guts", write_Guts([0,0])); + /* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */ + /* Header (string) */ + /* Footer (string) */ + write_biff_rec(ba, "HCenter", writebool(false)); + write_biff_rec(ba, "VCenter", writebool(false)); + /* ... */ + write_biff_rec(ba, 0x200, write_Dimensions(range, opts)); + /* ... */ + + if(b8) ws['!links'] = []; + for(var R = range.s.r; R <= range.e.r; ++R) { + rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) continue; + /* write cell */ + write_ws_biff8_cell(ba, cell, R, C, opts); + if(b8 && cell.l) ws['!links'].push([ref, cell.l]); + } + } + var cname = _sheet.CodeName || _sheet.name || s; + /* ... */ + if(b8) write_biff_rec(ba, "Window2", write_Window2((_WB.Views||[])[0])); + /* ... */ + if(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, "MergeCells", write_MergeCells(ws['!merges'])); + /* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */ + if(b8) write_ws_biff8_hlinks(ba, ws); + /* [DVAL] */ + write_biff_rec(ba, "CodeName", write_XLUnicodeString(cname, opts)); + /* *WebPub *CellWatch [SheetExt] */ + if(b8) write_FEAT(ba, ws); + /* *FEAT11 *RECORD12 */ + write_biff_rec(ba, "EOF"); + return ba.end(); +} + +/* [MS-XLS] 2.1.7.20.3 */ +function write_biff8_global(wb, bufs, opts) { + var A = buf_array(); + var _WB = ((wb||{}).Workbook||{}); + var _sheets = (_WB.Sheets||[]); + var _wb = _WB.WBProps||{}; + var b8 = opts.biff == 8, b5 = opts.biff == 5; + write_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts)); + if(opts.bookType == "xla") write_biff_rec(A, "Addin"); + write_biff_rec(A, "InterfaceHdr", b8 ? writeuint16(0x04b0) : null); + write_biff_rec(A, "Mms", writezeroes(2)); + if(b5) write_biff_rec(A, "ToolbarHdr"); + if(b5) write_biff_rec(A, "ToolbarEnd"); + write_biff_rec(A, "InterfaceEnd"); + write_biff_rec(A, "WriteAccess", write_WriteAccess("SheetJS", opts)); + /* [FileSharing] */ + write_biff_rec(A, "CodePage", writeuint16(b8 ? 0x04b0 : 0x04E4)); + /* *2047 Lel */ + if(b8) write_biff_rec(A, "DSF", writeuint16(0)); + if(b8) write_biff_rec(A, "Excel9File"); + write_biff_rec(A, "RRTabId", write_RRTabId(wb.SheetNames.length)); + if(b8 && wb.vbaraw) write_biff_rec(A, "ObProj"); + /* [ObNoMacros] */ + if(b8 && wb.vbaraw) { + var cname = _wb.CodeName || "ThisWorkbook"; + write_biff_rec(A, "CodeName", write_XLUnicodeString(cname, opts)); + } + write_biff_rec(A, "BuiltInFnGroupCount", writeuint16(0x11)); + /* *FnGroupName *FnGrp12 */ + /* *Lbl */ + /* [OleObjectSize] */ + write_biff_rec(A, "WinProtect", writebool(false)); + write_biff_rec(A, "Protect", writebool(false)); + write_biff_rec(A, "Password", writeuint16(0)); + if(b8) write_biff_rec(A, "Prot4Rev", writebool(false)); + if(b8) write_biff_rec(A, "Prot4RevPass", writeuint16(0)); + write_biff_rec(A, "Window1", write_Window1(opts)); + write_biff_rec(A, "Backup", writebool(false)); + write_biff_rec(A, "HideObj", writeuint16(0)); + write_biff_rec(A, "Date1904", writebool(safe1904(wb)=="true")); + write_biff_rec(A, "CalcPrecision", writebool(true)); + if(b8) write_biff_rec(A, "RefreshAll", writebool(false)); + write_biff_rec(A, "BookBool", writeuint16(0)); + /* ... */ + write_FONTS_biff8(A, wb, opts); + write_FMTS_biff8(A, wb.SSF, opts); + write_CELLXFS_biff8(A, opts); + /* ... */ + if(b8) write_biff_rec(A, "UsesELFs", writebool(false)); + var a = A.end(); + + var C = buf_array(); + /* METADATA [MTRSettings] [ForceFullCalculation] */ + if(b8) write_biff_rec(C, "Country", write_Country()); + /* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */ + + /* BIFF8: [SST *Continue] ExtSST */ + if(b8 && opts.Strings) write_biff_continue(C, "SST", write_SST(opts.Strings, opts)); + + /* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */ + write_biff_rec(C, "EOF"); + var c = C.end(); + + var B = buf_array(); + var blen = 0, j = 0; + for(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length; + var start = a.length + blen + c.length; + for(j = 0; j < wb.SheetNames.length; ++j) { + var _sheet = _sheets[j] || ({}); + write_biff_rec(B, "BoundSheet8", write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts)); + start += bufs[j].length; + } + /* 1*BoundSheet8 */ + var b = B.end(); + if(blen != b.length) throw new Error("BS8 " + blen + " != " + b.length); + + var out = []; + if(a.length) out.push(a); + if(b.length) out.push(b); + if(c.length) out.push(c); + return __toBuffer([out]); +} + +/* [MS-XLS] 2.1.7.20 Workbook Stream */ +function write_biff8_buf(wb, opts) { + var o = opts || {}; + var bufs = []; + + if(wb && !wb.SSF) { + wb.SSF = SSF.get_table(); + } + if(wb && wb.SSF) { + make_ssf(SSF); SSF.load_table(wb.SSF); + // $FlowIgnore + o.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0; + o.ssf = wb.SSF; + } + + o.Strings = []; o.Strings.Count = 0; o.Strings.Unique = 0; + fix_write_opts(o); + + o.cellXfs = []; + get_cell_style(o.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + for(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb); + bufs.unshift(write_biff8_global(wb, bufs, o)); + return __toBuffer([bufs]); +} + +function write_biff_buf(wb, opts) { + var o = opts || {}; + switch(o.biff || 2) { + case 8: case 5: return write_biff8_buf(wb, opts); + case 4: case 3: case 2: return write_biff2_buf(wb, opts); + } + throw new Error("invalid type " + o.bookType + " for BIFF"); +} +/* note: browser DOM element cannot see mso- style attrs, must parse */ +var HTML_ = (function() { + function html_to_sheet(str, _opts) { + var opts = _opts || {}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var ws = opts.dense ? ([]) : ({}); + str = str.replace(//g, ""); + var mtch = str.match(/"); + var mtch2 = str.match(/<\/table/i); + var i = mtch.index, j = mtch2 && mtch2.index || str.length; + var rows = split_regex(str.slice(i, j), /(:?]*>)/i, ""); + var R = -1, C = 0, RS = 0, CS = 0; + var range = {s:{r:10000000, c:10000000},e:{r:0,c:0}}; + var merges = []; + for(i = 0; i < rows.length; ++i) { + var row = rows[i].trim(); + var hd = row.slice(0,3).toLowerCase(); + if(hd == "/i); + for(j = 0; j < cells.length; ++j) { + var cell = cells[j].trim(); + if(!cell.match(/")) > -1) m = m.slice(cc+1); + for(var midx = 0; midx < merges.length; ++midx) { + var _merge = merges[midx]; + if(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; } + } + var tag = parsexmltag(cell.slice(0, cell.indexOf(">"))); + CS = tag.colspan ? +tag.colspan : 1; + if((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}}); + var _t = tag.t || ""; + /* TODO: generate stub cells */ + if(!m.length) { C += CS; continue; } + m = htmldecode(m); + if(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R; + if(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C; + if(!m.length) continue; + var o = {t:'s', v:m}; + if(opts.raw || !m.trim().length || _t == 's'){} + else if(m === 'TRUE') o = {t:'b', v:true}; + else if(m === 'FALSE') o = {t:'b', v:false}; + else if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)}; + else if(!isNaN(fuzzydate(m).getDate())) { + o = ({t:'d', v:parseDate(m)}); + if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}); + o.z = opts.dateNF || SSF._table[14]; + } + if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; } + else ws[encode_cell({r:R, c:C})] = o; + C += CS; + } + } + ws['!ref'] = encode_range(range); + if(merges.length) ws["!merges"] = merges; + return ws; + } + function html_to_book(str, opts) { + return sheet_to_workbook(html_to_sheet(str, opts), opts); + } + function make_html_row(ws, r, R, o) { + var M = (ws['!merges'] ||[]); + var oo = []; + for(var C = r.s.c; C <= r.e.c; ++C) { + var RS = 0, CS = 0; + for(var j = 0; j < M.length; ++j) { + if(M[j].s.r > R || M[j].s.c > C) continue; + if(M[j].e.r < R || M[j].e.c < C) continue; + if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } + RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; + } + if(RS < 0) continue; + var coord = encode_cell({r:R,c:C}); + var cell = o.dense ? (ws[R]||[])[C] : ws[coord]; + /* TODO: html entities */ + var w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || "")) || ""; + var sp = ({}); + if(RS > 1) sp.rowspan = RS; + if(CS > 1) sp.colspan = CS; + sp.t = cell && cell.t || 'z'; + if(o.editable) w = '' + w + ''; + sp.id = (o.id || "sjs") + "-" + coord; + if(sp.t != "z") { sp.v = cell.v; if(cell.z != null) sp.z = cell.z; } + oo.push(writextag('td', w, sp)); + } + var preamble = ""; + return preamble + oo.join("") + ""; + } + function make_html_preamble(ws, R, o) { + var out = []; + return out.join("") + ''; + } + var _BEGIN = 'SheetJS Table Export'; + var _END = ''; + function sheet_to_html(ws, opts/*, wb:?Workbook*/) { + var o = opts || {}; + var header = o.header != null ? o.header : _BEGIN; + var footer = o.footer != null ? o.footer : _END; + var out = [header]; + var r = decode_range(ws['!ref']); + o.dense = Array.isArray(ws); + out.push(make_html_preamble(ws, r, o)); + for(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o)); + out.push("
" + footer); + return out.join(""); + + } + return { + to_workbook: html_to_book, + to_sheet: html_to_sheet, + _row: make_html_row, + BEGIN: _BEGIN, + END: _END, + _preamble: make_html_preamble, + from_sheet: sheet_to_html + }; +})(); + +function sheet_add_dom(ws, table, _opts) { + var opts = _opts || {}; + if(DENSE != null) opts.dense = DENSE; + var or_R = 0, or_C = 0; + if(opts.origin != null) { + if(typeof opts.origin == 'number') or_R = opts.origin; + else { + var _origin = typeof opts.origin == "string" ? decode_cell(opts.origin) : opts.origin; + or_R = _origin.r; or_C = _origin.c; + } + } + var rows = table.getElementsByTagName('tr'); + var sheetRows = Math.min(opts.sheetRows||10000000, rows.length); + var range = {s:{r:0,c:0},e:{r:or_R,c:or_C}}; + if(ws["!ref"]) { + var _range = decode_range(ws["!ref"]); + range.s.r = Math.min(range.s.r, _range.s.r); + range.s.c = Math.min(range.s.c, _range.s.c); + range.e.r = Math.max(range.e.r, _range.e.r); + range.e.c = Math.max(range.e.c, _range.e.c); + if(or_R == -1) range.e.r = or_R = _range.e.r + 1; + } + var merges = [], midx = 0; + var rowinfo = ws["!rows"] || (ws["!rows"] = []); + var _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0; + if(!ws["!cols"]) ws['!cols'] = []; + for(; _R < rows.length && R < sheetRows; ++_R) { + var row = rows[_R]; + if (is_dom_element_hidden(row)) { + if (opts.display) continue; + rowinfo[R] = {hidden: true}; + } + var elts = (row.children); + for(_C = C = 0; _C < elts.length; ++_C) { + var elt = elts[_C]; + if (opts.display && is_dom_element_hidden(elt)) continue; + var v = elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML); + var z = elt.getAttribute('z'); + for(midx = 0; midx < merges.length; ++midx) { + var m = merges[midx]; + if(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; } + } + /* TODO: figure out how to extract nonstandard mso- style */ + CS = +elt.getAttribute("colspan") || 1; + if( ((RS = (+elt.getAttribute("rowspan") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}}); + var o = {t:'s', v:v}; + var _t = elt.getAttribute("t") || ""; + if(v != null) { + if(v.length == 0) o.t = _t || 'z'; + else if(opts.raw || v.trim().length == 0 || _t == "s"){} + else if(v === 'TRUE') o = {t:'b', v:true}; + else if(v === 'FALSE') o = {t:'b', v:false}; + else if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)}; + else if(!isNaN(fuzzydate(v).getDate())) { + o = ({t:'d', v:parseDate(v)}); + if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}); + o.z = opts.dateNF || SSF._table[14]; + } + } + if(o.z === undefined && z != null) o.z = z; + if(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; } + else ws[encode_cell({c:C + or_C, r:R + or_R})] = o; + if(range.e.c < C + or_C) range.e.c = C + or_C; + C += CS; + } + ++R; + } + if(merges.length) ws['!merges'] = (ws["!merges"] || []).concat(merges); + range.e.r = Math.max(range.e.r, R - 1 + or_R); + ws['!ref'] = encode_range(range); + if(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance + return ws; +} + +function parse_dom_table(table, _opts) { + var opts = _opts || {}; + var ws = opts.dense ? ([]) : ({}); + return sheet_add_dom(ws, table, _opts); +} + +function table_to_book(table, opts) { + return sheet_to_workbook(parse_dom_table(table, opts), opts); +} + +function is_dom_element_hidden(element) { + var display = ''; + var get_computed_style = get_get_computed_style_function(element); + if(get_computed_style) display = get_computed_style(element).getPropertyValue('display'); + if(!display) display = element.style.display; // Fallback for cases when getComputedStyle is not available (e.g. an old browser or some Node.js environments) or doesn't work (e.g. if the element is not inserted to a document) + return display === 'none'; +} + +/* global getComputedStyle */ +function get_get_computed_style_function(element) { + // The proper getComputedStyle implementation is the one defined in the element window + if(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle; + // If it is not available, try to get one from the global namespace + if(typeof getComputedStyle === 'function') return getComputedStyle; + return null; +} +/* OpenDocument */ +var parse_content_xml = (function() { + + var parse_text_p = function(text) { + /* 6.1.2 White Space Characters */ + var fixed = text + .replace(/[\t\r\n]/g, " ").trim().replace(/ +/g, " ") + .replace(//g," ") + .replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(" "); }) + .replace(/]*\/>/g,"\t") + .replace(//g,"\n"); + var v = unescapexml(fixed.replace(/<[^>]*>/g,"")); + + return [v]; + }; + + var number_formats = { + /* ods name: [short ssf fmt, long ssf fmt] */ + day: ["d", "dd"], + month: ["m", "mm"], + year: ["y", "yy"], + hours: ["h", "hh"], + minutes: ["m", "mm"], + seconds: ["s", "ss"], + "am-pm": ["A/P", "AM/PM"], + "day-of-week": ["ddd", "dddd"], + era: ["e", "ee"], + /* there is no native representation of LO "Q" format */ + quarter: ["\\Qm", "m\\\"th quarter\""] + }; + + return function pcx(d, _opts) { + var opts = _opts || {}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var str = xlml_normalize(d); + var state = [], tmp; + var tag; + var NFtag = {name:""}, NF = "", pidx = 0; + var sheetag; + var rowtag; + var Sheets = {}, SheetNames = []; + var ws = opts.dense ? ([]) : ({}); + var Rn, q; + var ctag = ({value:""}); + var textp = "", textpidx = 0, textptag; + var textR = []; + var R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}}; + var row_ol = 0; + var number_format_map = {}; + var merges = [], mrange = {}, mR = 0, mC = 0; + var rowinfo = [], rowpeat = 1, colpeat = 1; + var arrayf = []; + var WB = {Names:[]}; + var atag = ({}); + var _Ref = ["", ""]; + var comments = [], comment = ({}); + var creator = "", creatoridx = 0; + var isstub = false, intable = false; + var i = 0; + xlmlregex.lastIndex = 0; + str = str.replace(//mg,"").replace(//gm,""); + while((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,""))) { + + case 'table': case '工作表': // 9.1.2 + if(Rn[1]==='/') { + if(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range); + else ws['!ref'] = "A1:A1"; + if(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) { + ws['!fullref'] = ws['!ref']; + range.e.r = opts.sheetRows - 1; + ws['!ref'] = encode_range(range); + } + if(merges.length) ws['!merges'] = merges; + if(rowinfo.length) ws["!rows"] = rowinfo; + sheetag.name = sheetag['名称'] || sheetag.name; + if(typeof JSON !== 'undefined') JSON.stringify(sheetag); + SheetNames.push(sheetag.name); + Sheets[sheetag.name] = ws; + intable = false; + } + else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + sheetag = parsexmltag(Rn[0], false); + R = C = -1; + range.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0; + ws = opts.dense ? ([]) : ({}); merges = []; + rowinfo = []; + intable = true; + } + break; + + case 'table-row-group': // 9.1.9 + if(Rn[1] === "/") --row_ol; else ++row_ol; + break; + case 'table-row': case '行': // 9.1.3 + if(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; } + rowtag = parsexmltag(Rn[0], false); + if(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0; + rowpeat = +rowtag['number-rows-repeated'] || 1; + /* TODO: remove magic */ + if(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol}; + C = -1; break; + case 'covered-table-cell': // 9.1.5 + if(Rn[1] !== '/') ++C; + if(opts.sheetStubs) { + if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; } + else ws[encode_cell({r:R,c:C})] = {t:'z'}; + } + textp = ""; textR = []; + break; /* stub */ + case 'table-cell': case '数据': + if(Rn[0].charAt(Rn[0].length-2) === '/') { + ++C; + ctag = parsexmltag(Rn[0], false); + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + q = ({t:'z', v:null}); + if(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula)); + if((ctag['数据类型'] || ctag['value-type']) == "string") { + q.t = "s"; q.v = unescapexml(ctag['string-value'] || ""); + if(opts.dense) { + if(!ws[R]) ws[R] = []; + ws[R][C] = q; + } else { + ws[encode_cell({r:R,c:C})] = q; + } + } + C+= colpeat-1; + } else if(Rn[1]!=='/') { + ++C; + colpeat = 1; + var rptR = rowpeat ? R + rowpeat - 1 : R; + if(C > range.e.c) range.e.c = C; + if(C < range.s.c) range.s.c = C; + if(R < range.s.r) range.s.r = R; + if(rptR > range.e.r) range.e.r = rptR; + ctag = parsexmltag(Rn[0], false); + comments = []; comment = ({}); + q = ({t:ctag['数据类型'] || ctag['value-type'], v:null}); + if(opts.cellFormula) { + if(ctag.formula) ctag.formula = unescapexml(ctag.formula); + if(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) { + mR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0; + mC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0; + mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; + q.F = encode_range(mrange); + arrayf.push([mrange, q.F]); + } + if(ctag.formula) q.f = ods_to_csf_formula(ctag.formula); + else for(i = 0; i < arrayf.length; ++i) + if(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r) + if(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c) + q.F = arrayf[i][1]; + } + if(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) { + mR = parseInt(ctag['number-rows-spanned'],10) || 0; + mC = parseInt(ctag['number-columns-spanned'],10) || 0; + mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; + merges.push(mrange); + } + + /* 19.675.2 table:number-columns-repeated */ + if(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10); + + /* 19.385 office:value-type */ + switch(q.t) { + case 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break; + case 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']); + if(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); } + q.z = 'm/d/yy'; break; + case 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400; break; + case 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break; + default: + if(q.t === 'string' || q.t === 'text' || !q.t) { + q.t = 's'; + if(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; } + } else throw new Error('Unsupported value type ' + q.t); + } + } else { + isstub = false; + if(q.t === 's') { + q.v = textp || ''; + if(textR.length) q.R = textR; + isstub = textpidx == 0; + } + if(atag.Target) q.l = atag; + if(comments.length > 0) { q.c = comments; comments = []; } + if(textp && opts.cellText !== false) q.w = textp; + if(isstub) { q.t = "z"; delete q.v; } + if(!isstub || opts.sheetStubs) { + if(!(opts.sheetRows && opts.sheetRows <= R)) { + for(var rpt = 0; rpt < rowpeat; ++rpt) { + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + if(opts.dense) { + if(!ws[R + rpt]) ws[R + rpt] = []; + ws[R + rpt][C] = rpt == 0 ? q : dup(q); + while(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q); + } else { + ws[encode_cell({r:R + rpt,c:C})] = q; + while(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q); + } + if(range.e.c <= C) range.e.c = C; + } + } + } + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + C += colpeat-1; colpeat = 0; + q = {}; + textp = ""; textR = []; + } + atag = ({}); + break; // 9.1.4 + + /* pure state */ + case 'document': // TODO: is the root for FODS + case 'document-content': case '电子表格文档': // 3.1.3.2 + case 'spreadsheet': case '主体': // 3.7 + case 'scripts': // 3.12 + case 'styles': // TODO + case 'font-face-decls': // 3.14 + case 'master-styles': //3.15.4 -- relevant for FODS + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + + case 'annotation': // 14.1 + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + comment.t = textp; + if(textR.length) comment.R = textR; + comment.a = creator; + comments.push(comment); + } + else if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);} + creator = ""; creatoridx = 0; + textp = ""; textpidx = 0; textR = []; + break; + + case 'creator': // 4.3.2.7 + if(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); } + else creatoridx = Rn.index + Rn[0].length; + break; + + /* ignore state */ + case 'meta': case '元数据': // TODO: FODS/UOF + case 'settings': // TODO: + case 'config-item-set': // TODO: + case 'config-item-map-indexed': // TODO: + case 'config-item-map-entry': // TODO: + case 'config-item-map-named': // TODO: + case 'shapes': // 9.2.8 + case 'frame': // 10.4.2 + case 'text-box': // 10.4.3 + case 'image': // 10.4.4 + case 'data-pilot-tables': // 9.6.2 + case 'list-style': // 16.30 + case 'form': // 13.13 + case 'dde-links': // 9.8 + case 'event-listeners': // TODO + case 'chart': // TODO + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]); + textp = ""; textpidx = 0; textR = []; + break; + + case 'scientific-number': // TODO: + break; + case 'currency-symbol': // TODO: + break; + case 'currency-style': // TODO: + break; + case 'number-style': // 16.27.2 + case 'percentage-style': // 16.27.9 + case 'date-style': // 16.27.10 + case 'time-style': // 16.27.18 + if(Rn[1]==='/'){ + number_format_map[NFtag.name] = NF; + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + } else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + NF = ""; + NFtag = parsexmltag(Rn[0], false); + state.push([Rn[3], true]); + } break; + + case 'script': break; // 3.13 + case 'libraries': break; // TODO: + case 'automatic-styles': break; // 3.15.3 + + case 'default-style': // TODO: + case 'page-layout': break; // TODO: + case 'style': // 16.2 + break; + case 'map': break; // 16.3 + case 'font-face': break; // 16.21 + + case 'paragraph-properties': break; // 17.6 + case 'table-properties': break; // 17.15 + case 'table-column-properties': break; // 17.16 + case 'table-row-properties': break; // 17.17 + case 'table-cell-properties': break; // 17.18 + + case 'number': // 16.27.3 + switch(state[state.length-1][0]) { + case 'time-style': + case 'date-style': + tag = parsexmltag(Rn[0], false); + NF += number_formats[Rn[3]][tag.style==='long'?1:0]; break; + } break; + + case 'fraction': break; // TODO 16.27.6 + + case 'day': // 16.27.11 + case 'month': // 16.27.12 + case 'year': // 16.27.13 + case 'era': // 16.27.14 + case 'day-of-week': // 16.27.15 + case 'week-of-year': // 16.27.16 + case 'quarter': // 16.27.17 + case 'hours': // 16.27.19 + case 'minutes': // 16.27.20 + case 'seconds': // 16.27.21 + case 'am-pm': // 16.27.22 + switch(state[state.length-1][0]) { + case 'time-style': + case 'date-style': + tag = parsexmltag(Rn[0], false); + NF += number_formats[Rn[3]][tag.style==='long'?1:0]; break; + } break; + + case 'boolean-style': break; // 16.27.23 + case 'boolean': break; // 16.27.24 + case 'text-style': break; // 16.27.25 + case 'text': // 16.27.26 + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") switch(state[state.length-1][0]) { + case 'number-style': + case 'date-style': + case 'time-style': + NF += str.slice(pidx, Rn.index); + break; + } + else pidx = Rn.index + Rn[0].length; + break; + + case 'named-range': // 9.4.12 + tag = parsexmltag(Rn[0], false); + _Ref = ods_to_csf_3D(tag['cell-range-address']); + var nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}); + if(intable) nrange.Sheet = SheetNames.length; + WB.Names.push(nrange); + break; + + case 'text-content': break; // 16.27.27 + case 'text-properties': break; // 16.27.27 + case 'embedded-text': break; // 16.27.4 + + case 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3 + + case 'forms': break; // 12.25.2 13.2 + case 'table-column': break; // 9.1.6 + case 'table-header-rows': break; // 9.1.7 + case 'table-rows': break; // 9.1.12 + /* TODO: outline levels */ + case 'table-column-group': break; // 9.1.10 + case 'table-header-columns': break; // 9.1.11 + case 'table-columns': break; // 9.1.12 + + case 'null-date': break; // 9.4.2 TODO: date1904 + + case 'graphic-properties': break; // 17.21 + case 'calculation-settings': break; // 9.4.1 + case 'named-expressions': break; // 9.4.11 + case 'label-range': break; // 9.4.9 + case 'label-ranges': break; // 9.4.10 + case 'named-expression': break; // 9.4.13 + case 'sort': break; // 9.4.19 + case 'sort-by': break; // 9.4.20 + case 'sort-groups': break; // 9.4.22 + + case 'tab': break; // 6.1.4 + case 'line-break': break; // 6.1.5 + case 'span': break; // 6.1.7 + case 'p': case '文本串': // 5.1.3 + if(['master-styles'].indexOf(state[state.length-1][0]) > -1) break; + if(Rn[1]==='/' && (!ctag || !ctag['string-value'])) { + var ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag); + textp = (textp.length > 0 ? textp + "\n" : "") + ptp[0]; + } else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; } + break; // + case 's': break; // + + case 'database-range': // 9.4.15 + if(Rn[1]==='/') break; + try { + _Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']); + Sheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] }; + } catch(e) {/* empty */} + break; + + case 'date': break; // <*:date> + + case 'object': break; // 10.4.6.2 + case 'title': case '标题': break; // <*:title> OR + case 'desc': break; // <*:desc> + case 'binary-data': break; // 10.4.5 TODO: b64 blob + + /* 9.2 Advanced Tables */ + case 'table-source': break; // 9.2.6 + case 'scenario': break; // 9.2.6 + + case 'iteration': break; // 9.4.3 + case 'content-validations': break; // 9.4.4 + case 'filter': break; // 9.5.2 + case 'filter-and': break; // 9.5.3 + case 'filter-or': break; // 9.5.4 + case 'filter-condition': break; // 9.5.5 + + case 'list-level-style-bullet': break; // 16.31 + case 'page-count': break; // TODO + case 'time': break; // TODO + + /* 9.3 Advanced Table Cells */ + case 'cell-range-source': break; // 9.3.1 + case 'property': break; // 13.8 + + case 'a': // 6.1.8 hyperlink + if(Rn[1]!== '/') { + atag = parsexmltag(Rn[0], false); + if(!atag.href) break; + atag.Target = atag.href; delete atag.href; + if(atag.Target.charAt(0) == "#" && atag.Target.indexOf(".") > -1) { + _Ref = ods_to_csf_3D(atag.Target.slice(1)); + atag.Target = "#" + _Ref[0] + "!" + _Ref[1]; + } + } + break; + + /* non-standard */ + case 'table-protection': break; + case 'data-pilot-grand-total': break; // '; + return function wso() { + return XML_HEADER + payload; + }; +})(); +var write_content_ods = (function() { + /* 6.1.2 White Space Characters */ + var write_text_p = function(text) { + return escapexml(text) + .replace(/ +/g, function($$){return '';}) + .replace(/\t/g, "") + .replace(/\n/g, "") + .replace(/^ /, "").replace(/ $/, ""); + }; + + var null_cell_xml = ' \n'; + var covered_cell_xml = ' \n'; + var write_ws = function(ws, wb, i) { + /* Section 9 Tables */ + var o = []; + o.push(' \n'); + var R=0,C=0, range = decode_range(ws['!ref']); + var marr = ws['!merges'] || [], mi = 0; + var dense = Array.isArray(ws); + for(R = 0; R < range.s.r; ++R) o.push(' \n'); + for(; R <= range.e.r; ++R) { + o.push(' \n'); + for(C=0; C < range.s.c; ++C) o.push(null_cell_xml); + for(; C <= range.e.c; ++C) { + var skip = false, ct = {}, textp = ""; + for(mi = 0; mi != marr.length; ++mi) { + if(marr[mi].s.c > C) continue; + if(marr[mi].s.r > R) continue; + if(marr[mi].e.c < C) continue; + if(marr[mi].e.r < R) continue; + if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true; + ct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1); + ct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1); + break; + } + if(skip) { o.push(covered_cell_xml); continue; } + var ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref]; + if(cell && cell.f) { + ct['table:formula'] = escapexml(csf_to_ods_formula(cell.f)); + if(cell.F) { + if(cell.F.slice(0, ref.length) == ref) { + var _Fref = decode_range(cell.F); + ct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1); + ct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1); + } + } + } + if(!cell) { o.push(null_cell_xml); continue; } + switch(cell.t) { + case 'b': + textp = (cell.v ? 'TRUE' : 'FALSE'); + ct['office:value-type'] = "boolean"; + ct['office:boolean-value'] = (cell.v ? 'true' : 'false'); + break; + case 'n': + textp = (cell.w||String(cell.v||0)); + ct['office:value-type'] = "float"; + ct['office:value'] = (cell.v||0); + break; + case 's': case 'str': + textp = cell.v == null ? "" : cell.v; + ct['office:value-type'] = "string"; + break; + case 'd': + textp = (cell.w||(parseDate(cell.v).toISOString())); + ct['office:value-type'] = "date"; + ct['office:date-value'] = (parseDate(cell.v).toISOString()); + ct['table:style-name'] = "ce1"; + break; + //case 'e': + default: o.push(null_cell_xml); continue; + } + var text_p = write_text_p(textp); + if(cell.l && cell.l.Target) { + var _tgt = cell.l.Target; _tgt = _tgt.charAt(0) == "#" ? "#" + csf_to_ods_3D(_tgt.slice(1)) : _tgt; + text_p = writextag('text:a', text_p, {'xlink:href': _tgt}); + } + o.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\n'); + } + o.push(' \n'); + } + o.push(' \n'); + return o.join(""); + }; + + var write_automatic_styles_ods = function(o) { + o.push(' \n'); + + o.push(' \n'); + o.push(' \n'); + o.push(' /\n'); + o.push(' \n'); + o.push(' /\n'); + o.push(' \n'); + o.push(' \n'); + + /* table */ + o.push(' \n'); // style:master-page-name="mp1">\n'); + o.push(' \n'); + o.push(' \n'); + + /* table cells, text */ + o.push(' \n'); + + /* page-layout */ + + o.push(' \n'); + }; + + return function wcx(wb, opts) { + var o = [XML_HEADER]; + /* 3.1.3.2 */ + var attr = wxt_helper({ + 'xmlns:office': "urn:oasis:names:tc:opendocument:xmlns:office:1.0", + 'xmlns:table': "urn:oasis:names:tc:opendocument:xmlns:table:1.0", + 'xmlns:style': "urn:oasis:names:tc:opendocument:xmlns:style:1.0", + 'xmlns:text': "urn:oasis:names:tc:opendocument:xmlns:text:1.0", + 'xmlns:draw': "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", + 'xmlns:fo': "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", + 'xmlns:xlink': "http://www.w3.org/1999/xlink", + 'xmlns:dc': "http://purl.org/dc/elements/1.1/", + 'xmlns:meta': "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", + 'xmlns:number': "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", + 'xmlns:presentation': "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", + 'xmlns:svg': "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", + 'xmlns:chart': "urn:oasis:names:tc:opendocument:xmlns:chart:1.0", + 'xmlns:dr3d': "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", + 'xmlns:math': "http://www.w3.org/1998/Math/MathML", + 'xmlns:form': "urn:oasis:names:tc:opendocument:xmlns:form:1.0", + 'xmlns:script': "urn:oasis:names:tc:opendocument:xmlns:script:1.0", + 'xmlns:ooo': "http://openoffice.org/2004/office", + 'xmlns:ooow': "http://openoffice.org/2004/writer", + 'xmlns:oooc': "http://openoffice.org/2004/calc", + 'xmlns:dom': "http://www.w3.org/2001/xml-events", + 'xmlns:xforms': "http://www.w3.org/2002/xforms", + 'xmlns:xsd': "http://www.w3.org/2001/XMLSchema", + 'xmlns:xsi': "http://www.w3.org/2001/XMLSchema-instance", + 'xmlns:sheet': "urn:oasis:names:tc:opendocument:sh33tjs:1.0", + 'xmlns:rpt': "http://openoffice.org/2005/report", + 'xmlns:of': "urn:oasis:names:tc:opendocument:xmlns:of:1.2", + 'xmlns:xhtml': "http://www.w3.org/1999/xhtml", + 'xmlns:grddl': "http://www.w3.org/2003/g/data-view#", + 'xmlns:tableooo': "http://openoffice.org/2009/table", + 'xmlns:drawooo': "http://openoffice.org/2010/draw", + 'xmlns:calcext': "urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0", + 'xmlns:loext': "urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", + 'xmlns:field': "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0", + 'xmlns:formx': "urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0", + 'xmlns:css3t': "http://www.w3.org/TR/css3-text/", + 'office:version': "1.2" + }); + + var fods = wxt_helper({ + 'xmlns:config': "urn:oasis:names:tc:opendocument:xmlns:config:1.0", + 'office:mimetype': "application/vnd.oasis.opendocument.spreadsheet" + }); + + if(opts.bookType == "fods") o.push('\n'); + else o.push('\n'); + write_automatic_styles_ods(o); + o.push(' \n'); + o.push(' \n'); + for(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts)); + o.push(' \n'); + o.push(' \n'); + if(opts.bookType == "fods") o.push(''); + else o.push(''); + return o.join(""); + }; +})(); + +function write_ods(wb, opts) { + if(opts.bookType == "fods") return write_content_ods(wb, opts); + +var zip = zip_new(); + var f = ""; + + var manifest = []; + var rdf = []; + + /* Part 3 Section 3.3 MIME Media Type */ + f = "mimetype"; + zip_add_file(zip, f, "application/vnd.oasis.opendocument.spreadsheet"); + + /* Part 1 Section 2.2 Documents */ + f = "content.xml"; + zip_add_file(zip, f, write_content_ods(wb, opts)); + manifest.push([f, "text/xml"]); + rdf.push([f, "ContentFile"]); + + /* TODO: these are hard-coded styles to satiate excel */ + f = "styles.xml"; + zip_add_file(zip, f, write_styles_ods(wb, opts)); + manifest.push([f, "text/xml"]); + rdf.push([f, "StylesFile"]); + + /* TODO: this is hard-coded to satiate excel */ + f = "meta.xml"; + zip_add_file(zip, f, write_meta_ods()); + manifest.push([f, "text/xml"]); + rdf.push([f, "MetadataFile"]); + + /* Part 3 Section 6 Metadata Manifest File */ + f = "manifest.rdf"; + zip_add_file(zip, f, write_rdf(rdf/*, opts*/)); + manifest.push([f, "application/rdf+xml"]); + + /* Part 3 Section 4 Manifest File */ + f = "META-INF/manifest.xml"; + zip_add_file(zip, f, write_manifest(manifest/*, opts*/)); + + return zip; +} + +function write_sheet_index(wb, sheet) { + if(!sheet) return 0; + var idx = wb.SheetNames.indexOf(sheet); + if(idx == -1) throw new Error("Sheet not found: " + sheet); + return idx; +} + +function write_obj_str(factory) { + return function write_str(wb, o) { + var idx = write_sheet_index(wb, o.sheet); + return factory.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb); + }; +} + +var write_htm_str = write_obj_str(HTML_); +var write_csv_str = write_obj_str({from_sheet:sheet_to_csv}); +var write_slk_str = write_obj_str(typeof SYLK !== "undefined" ? SYLK : {}); +var write_dif_str = write_obj_str(typeof DIF !== "undefined" ? DIF : {}); +var write_prn_str = write_obj_str(typeof PRN !== "undefined" ? PRN : {}); +var write_rtf_str = write_obj_str(typeof RTF !== "undefined" ? RTF : {}); +var write_txt_str = write_obj_str({from_sheet:sheet_to_txt}); +var write_dbf_buf = write_obj_str(typeof DBF !== "undefined" ? DBF : {}); +var write_eth_str = write_obj_str(typeof ETH !== "undefined" ? ETH : {}); + +function fix_opts_func(defaults) { + return function fix_opts(opts) { + for(var i = 0; i != defaults.length; ++i) { + var d = defaults[i]; + if(opts[d[0]] === undefined) opts[d[0]] = d[1]; + if(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]); + } + }; +} + +var fix_read_opts = function(opts) { +fix_opts_func([ + ['cellNF', false], /* emit cell number format string as .z */ + ['cellHTML', true], /* emit html string as .h */ + ['cellFormula', true], /* emit formulae as .f */ + ['cellStyles', false], /* emits style/theme as .s */ + ['cellText', true], /* emit formatted text as .w */ + ['cellDates', false], /* emit date cells with type `d` */ + + ['sheetStubs', false], /* emit empty cells */ + ['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */ + + ['bookDeps', false], /* parse calculation chains */ + ['bookSheets', false], /* only try to get sheet names (no Sheets) */ + ['bookProps', false], /* only try to get properties (no Sheets) */ + ['bookFiles', false], /* include raw file structure (keys, files, cfb) */ + ['bookVBA', false], /* include vba raw data (vbaraw) */ + + ['password',''], /* password */ + ['WTF', false] /* WTF mode (throws errors) */ +])(opts); +}; + +var fix_write_opts = fix_opts_func([ + ['cellDates', false], /* write date cells with type `d` */ + + ['bookSST', false], /* Generate Shared String Table */ + + ['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */ + + ['compression', false], /* Use file compression */ + + ['WTF', false] /* WTF mode (throws errors) */ +]); +function get_sheet_type(n) { + if(RELS.WS.indexOf(n) > -1) return "sheet"; + if(RELS.CS && n == RELS.CS) return "chart"; + if(RELS.DS && n == RELS.DS) return "dialog"; + if(RELS.MS && n == RELS.MS) return "macro"; + return (n && n.length) ? n : "sheet"; +} +function safe_parse_wbrels(wbrels, sheets) { + if(!wbrels) return 0; + try { + wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; }); + } catch(e) { return null; } + return !wbrels || wbrels.length === 0 ? null : wbrels; +} + +function safe_parse_sheet(zip, path, relsPath, sheet, idx, sheetRels, sheets, stype, opts, wb, themes, styles) { + try { + sheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path); + var data = getzipdata(zip, path); + var _ws; + switch(stype) { + case 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + case 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); + if(!_ws || !_ws['!drawel']) break; + var dfile = resolve_path(_ws['!drawel'].Target, path); + var drelsp = get_rels_path(dfile); + var draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile)); + var chartp = resolve_path(draw, dfile); + var crelsp = get_rels_path(chartp); + _ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws); + break; + case 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + case 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + default: throw new Error("Unrecognized sheet type " + stype); + } + sheets[sheet] = _ws; + + /* scan rels for comments */ + var comments = []; + if(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) { + if(sheetRels[sheet][n].Type == RELS.CMNT) { + var dfile = resolve_path(sheetRels[sheet][n].Target, path); + comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts); + if(!comments || !comments.length) return; + sheet_insert_comments(_ws, comments); + } + }); + } catch(e) { if(opts.WTF) throw e; } +} + +function strip_front_slash(x) { return x.charAt(0) == '/' ? x.slice(1) : x; } + +function parse_zip(zip, opts) { + make_ssf(SSF); + opts = opts || {}; + fix_read_opts(opts); + + /* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */ + if(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts); + /* UOC */ + if(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts); + /* Numbers */ + if(safegetzipfile(zip, 'Index/Document.iwa')) throw new Error('Unsupported NUMBERS file'); + + var entries = zipentries(zip); + var dir = parse_ct((getzipstr(zip, '[Content_Types].xml'))); + var xlsb = false; + var sheets, binname; + if(dir.workbooks.length === 0) { + binname = "xl/workbook.xml"; + if(getzipdata(zip,binname, true)) dir.workbooks.push(binname); + } + if(dir.workbooks.length === 0) { + binname = "xl/workbook.bin"; + if(!getzipdata(zip,binname,true)) throw new Error("Could not find workbook"); + dir.workbooks.push(binname); + xlsb = true; + } + if(dir.workbooks[0].slice(-3) == "bin") xlsb = true; + + var themes = ({}); + var styles = ({}); + if(!opts.bookSheets && !opts.bookProps) { + strs = []; + if(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; } + + if(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\//,''), true)||"",dir.themes[0], opts); + + if(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts); + } + + /*var externbooks = */dir.links.map(function(link) { + try { + var rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link); + return parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts); + } catch(e) {} + }); + + var wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts); + + var props = {}, propdata = ""; + + if(dir.coreprops.length) { + propdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true); + if(propdata) props = parse_core_props(propdata); + if(dir.extprops.length !== 0) { + propdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true); + if(propdata) parse_ext_props(propdata, props, opts); + } + } + + var custprops = {}; + if(!opts.bookSheets || opts.bookProps) { + if (dir.custprops.length !== 0) { + propdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true); + if(propdata) custprops = parse_cust_props(propdata, opts); + } + } + + var out = ({}); + if(opts.bookSheets || opts.bookProps) { + if(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; }); + else if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames; + if(opts.bookProps) { out.Props = props; out.Custprops = custprops; } + if(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets; + if(opts.bookSheets ? out.SheetNames : opts.bookProps) return out; + } + sheets = {}; + + var deps = {}; + if(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts); + + var i=0; + var sheetRels = ({}); + var path, relsPath; + + { + var wbsheets = wb.Sheets; + props.Worksheets = wbsheets.length; + props.SheetNames = []; + for(var j = 0; j != wbsheets.length; ++j) { + props.SheetNames[j] = wbsheets[j].name; + } + } + + var wbext = xlsb ? "bin" : "xml"; + var wbrelsi = dir.workbooks[0].lastIndexOf("/"); + var wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + "_rels/" + dir.workbooks[0].slice(wbrelsi+1) + ".rels").replace(/^\//,""); + if(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels'; + var wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile); + if(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets); + + /* Numbers iOS hack */ + var nmode = (getzipdata(zip,"xl/worksheets/sheet.xml",true))?1:0; + wsloop: for(i = 0; i != props.Worksheets; ++i) { + var stype = "sheet"; + if(wbrels && wbrels[i]) { + path = 'xl/' + (wbrels[i][1]).replace(/[\/]?xl\//, ""); + if(!safegetzipfile(zip, path)) path = wbrels[i][1]; + if(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\/.*$/,"") + wbrels[i][1]; + stype = wbrels[i][2]; + } else { + path = 'xl/worksheets/sheet'+(i+1-nmode)+"." + wbext; + path = path.replace(/sheet0\./,"sheet."); + } + relsPath = path.replace(/^(.*)(\/)([^\/]*)$/, "$1/_rels/$3.rels"); + if(opts && opts.sheets != null) switch(typeof opts.sheets) { + case "number": if(i != opts.sheets) continue wsloop; break; + case "string": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break; + default: if(Array.isArray && Array.isArray(opts.sheets)) { + var snjseen = false; + for(var snj = 0; snj != opts.sheets.length; ++snj) { + if(typeof opts.sheets[snj] == "number" && opts.sheets[snj] == i) snjseen=1; + if(typeof opts.sheets[snj] == "string" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1; + } + if(!snjseen) continue wsloop; + } + } + safe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles); + } + + out = ({ + Directory: dir, + Workbook: wb, + Props: props, + Custprops: custprops, + Deps: deps, + Sheets: sheets, + SheetNames: props.SheetNames, + Strings: strs, + Styles: styles, + Themes: themes, + SSF: SSF.get_table() + }); + if(opts && opts.bookFiles) { + out.keys = entries; + out.files = zip.files; + } + if(opts && opts.bookVBA) { + if(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true); + else if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true); + } + return out; +} + +/* [MS-OFFCRYPTO] 2.1.1 */ +function parse_xlsxcfb(cfb, _opts) { + var opts = _opts || {}; + var f = 'Workbook', data = CFB.find(cfb, f); + try { + f = '/!DataSpaces/Version'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + /*var version = */parse_DataSpaceVersionInfo(data.content); + + /* 2.3.4.1 */ + f = '/!DataSpaces/DataSpaceMap'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var dsm = parse_DataSpaceMap(data.content); + if(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== "StrongEncryptionDataSpace" || dsm[0].comps[0].v !== "EncryptedPackage") + throw new Error("ECMA-376 Encrypted file bad " + f); + + /* 2.3.4.2 */ + f = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var seds = parse_DataSpaceDefinition(data.content); + if(seds.length != 1 || seds[0] != "StrongEncryptionTransform") + throw new Error("ECMA-376 Encrypted file bad " + f); + + /* 2.3.4.3 */ + f = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + /*var hdr = */parse_Primary(data.content); + } catch(e) {} + + f = '/EncryptionInfo'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var einfo = parse_EncryptionInfo(data.content); + + /* 2.3.4.4 */ + f = '/EncryptedPackage'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + +/*global decrypt_agile */ +if(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || "", opts); +/*global decrypt_std76 */ +if(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || "", opts); + throw new Error("File is password-protected"); +} + +function write_zip(wb, opts) { + _shapeid = 1024; + if(opts.bookType == "ods") return write_ods(wb, opts); + if(wb && !wb.SSF) { + wb.SSF = SSF.get_table(); + } + if(wb && wb.SSF) { + make_ssf(SSF); SSF.load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + } + opts.rels = {}; opts.wbrels = {}; + opts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0; + if(browser_has_Map) opts.revStrings = new Map(); + else { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; } + var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; + var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; + var ct = new_ct(); + fix_write_opts(opts = opts || {}); +var zip = zip_new(); + var f = "", rId = 0; + + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + f = "docProps/core.xml"; + zip_add_file(zip, f, write_core_props(wb.Props, opts)); + ct.coreprops.push(f); + add_rels(opts.rels, 2, f, RELS.CORE_PROPS); + +f = "docProps/app.xml"; + if(wb.Props && wb.Props.SheetNames){/* empty */} + else if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; + else { + var _sn = []; + for(var _i = 0; _i < wb.SheetNames.length; ++_i) + if((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]); + wb.Props.SheetNames = _sn; + } + wb.Props.Worksheets = wb.Props.SheetNames.length; + zip_add_file(zip, f, write_ext_props(wb.Props, opts)); + ct.extprops.push(f); + add_rels(opts.rels, 3, f, RELS.EXT_PROPS); + + if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { + f = "docProps/custom.xml"; + zip_add_file(zip, f, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f); + add_rels(opts.rels, 4, f, RELS.CUST_PROPS); + } + + for(rId=1;rId <= wb.SheetNames.length; ++rId) { + var wsrels = {'!id':{}}; + var ws = wb.Sheets[wb.SheetNames[rId-1]]; + var _type = (ws || {})["!type"] || "sheet"; + switch(_type) { + case "chart": + /* falls through */ + default: + f = "xl/worksheets/sheet" + rId + "." + wbext; + zip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels)); + ct.sheets.push(f); + add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); + } + + if(ws) { + var comments = ws['!comments']; + var need_vml = false; + if(comments && comments.length > 0) { + var cf = "xl/comments" + rId + "." + wbext; + zip_add_file(zip, cf, write_cmnt(comments, cf, opts)); + ct.comments.push(cf); + add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); + need_vml = true; + } + if(ws['!legacy']) { + if(need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + (rId) + ".vml", write_comments_vml(rId, ws['!comments'])); + } + delete ws['!comments']; + delete ws['!legacy']; + } + + if(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels)); + } + + if(opts.Strings != null && opts.Strings.length > 0) { + f = "xl/sharedStrings." + wbext; + zip_add_file(zip, f, write_sst(opts.Strings, f, opts)); + ct.strs.push(f); + add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); + } + + f = "xl/workbook." + wbext; + zip_add_file(zip, f, write_wb(wb, f, opts)); + ct.workbooks.push(f); + add_rels(opts.rels, 1, f, RELS.WB); + + /* TODO: something more intelligent with themes */ + + f = "xl/theme/theme1.xml"; + zip_add_file(zip, f, write_theme(wb.Themes, opts)); + ct.themes.push(f); + add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); + + /* TODO: something more intelligent with styles */ + + f = "xl/styles." + wbext; + zip_add_file(zip, f, write_sty(wb, f, opts)); + ct.styles.push(f); + add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); + + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip_add_file(zip, f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); + } + + zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); + zip_add_file(zip, '_rels/.rels', write_rels(opts.rels)); + zip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); + + delete opts.revssf; delete opts.ssf; + return zip; +} +function firstbyte(f,o) { + var x = ""; + switch((o||{}).type || "base64") { + case 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; + case 'base64': x = Base64.decode(f.slice(0,12)); break; + case 'binary': x = f; break; + case 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; + default: throw new Error("Unrecognized type " + (o && o.type || "undefined")); + } + return [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)]; +} + +function read_cfb(cfb, opts) { + if(CFB.find(cfb, "EncryptedPackage")) return parse_xlsxcfb(cfb, opts); + return parse_xlscfb(cfb, opts); +} + +function read_zip(data, opts) { +var zip, d = data; + var o = opts||{}; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + zip = zip_read(d, o); + return parse_zip(zip, o); +} + +function read_plaintext(data, o) { + var i = 0; + main: while(i < data.length) switch(data.charCodeAt(i)) { + case 0x0A: case 0x0D: case 0x20: ++i; break; + case 0x3C: return parse_xlml(data.slice(i),o); + default: break main; + } + return PRN.to_workbook(data, o); +} + +function read_plaintext_raw(data, o) { + var str = "", bytes = firstbyte(data, o); + switch(o.type) { + case 'base64': str = Base64.decode(data); break; + case 'binary': str = data; break; + case 'buffer': str = data.toString('binary'); break; + case 'array': str = cc2str(data); break; + default: throw new Error("Unrecognized type " + o.type); + } + if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str); + return read_plaintext(str, o); +} + +function read_utf16(data, o) { + var d = data; + if(o.type == 'base64') d = Base64.decode(d); + d = cptable.utils.decode(1200, d.slice(2), 'str'); + o.type = "binary"; + return read_plaintext(d, o); +} + +function bstrify(data) { + return !data.match(/[^\x00-\x7F]/) ? data : utf8write(data); +} + +function read_prn(data, d, o, str) { + if(str) { o.type = "string"; return PRN.to_workbook(data, o); } + return PRN.to_workbook(d, o); +} + +function readSync(data, opts) { + reset_cp(); + if(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), opts); + var d = data, n = [0,0,0,0], str = false; + var o = opts||{}; + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + _ssfopts = {}; + if(o.dateNF) _ssfopts.dateNF = o.dateNF; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + if(o.type == "file") { o.type = has_buf ? "buffer" : "binary"; d = read_binary(data); } + if(o.type == "string") { str = true; o.type = "binary"; o.codepage = 65001; d = bstrify(data); } + if(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') { + // $FlowIgnore + var ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo="bar"; + // $FlowIgnore + if(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);} + } + switch((n = firstbyte(d, o))[0]) { + case 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break; + case 0x09: if(n[1] <= 0x04) return parse_xlscfb(d, o); break; + case 0x3C: return parse_xlml(d, o); + case 0x49: if(n[1] === 0x44) return read_wb_ID(d, o); break; + case 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break; + case 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str); + case 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str); + case 0xFF: if(n[1] === 0xFE) { return read_utf16(d, o); } break; + case 0x00: if(n[1] === 0x00 && n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); break; + case 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o); + case 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break; + case 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o); + } + if(DBF.versions.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o); + return read_prn(data, d, o, str); +} + +function readFileSync(filename, opts) { + var o = opts||{}; o.type = 'file'; + return readSync(filename, o); +} +function write_cfb_ctr(cfb, o) { + switch(o.type) { + case "base64": case "binary": break; + case "buffer": case "array": o.type = ""; break; + case "file": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : ""})); + case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); + default: throw new Error("Unrecognized type " + o.type); + } + return CFB.write(cfb, o); +} + +function write_zip_type(wb, opts) { + var o = opts||{}; + var z = write_zip(wb, o); + var oopts = {}; + if(o.compression) oopts.compression = 'DEFLATE'; + if(o.password) oopts.type = has_buf ? "nodebuffer" : "string"; + else switch(o.type) { + case "base64": oopts.type = "base64"; break; + case "binary": oopts.type = "string"; break; + case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); + case "buffer": + case "file": oopts.type = has_buf ? "nodebuffer" : "string"; break; + default: throw new Error("Unrecognized type " + o.type); + } + var out = z.FullPaths ? CFB.write(z, {fileType:"zip", type: {"nodebuffer": "buffer", "string": "binary"}[oopts.type] || oopts.type}) : z.generate(oopts); +/*jshint -W083 */ + if(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef +/*jshint +W083 */ + if(o.type === "file") return write_dl(o.file, out); + return o.type == "string" ? utf8read(out) : out; +} + +function write_cfb_type(wb, opts) { + var o = opts||{}; + var cfb = write_xlscfb(wb, o); + return write_cfb_ctr(cfb, o); +} + +function write_string_type(out, opts, bom) { + if(!bom) bom = ""; + var o = bom + out; + switch(opts.type) { + case "base64": return Base64.encode(utf8write(o)); + case "binary": return utf8write(o); + case "string": return out; + case "file": return write_dl(opts.file, o, 'utf8'); + case "buffer": { + if(has_buf) return Buffer_from(o, 'utf8'); + else return write_string_type(o, {type:'binary'}).split("").map(function(c) { return c.charCodeAt(0); }); + } + } + throw new Error("Unrecognized type " + opts.type); +} + +function write_stxt_type(out, opts) { + switch(opts.type) { + case "base64": return Base64.encode(out); + case "binary": return out; + case "string": return out; /* override in sheet_to_txt */ + case "file": return write_dl(opts.file, out, 'binary'); + case "buffer": { + if(has_buf) return Buffer_from(out, 'binary'); + else return out.split("").map(function(c) { return c.charCodeAt(0); }); + } + } + throw new Error("Unrecognized type " + opts.type); +} + +/* TODO: test consistency */ +function write_binary_type(out, opts) { + switch(opts.type) { + case "string": + case "base64": + case "binary": + var bstr = ""; + // $FlowIgnore + for(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]); + return opts.type == 'base64' ? Base64.encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr; + case "file": return write_dl(opts.file, out); + case "buffer": return out; + default: throw new Error("Unrecognized type " + opts.type); + } +} + +function writeSync(wb, opts) { + reset_cp(); + check_wb(wb); + var o = opts||{}; + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + if(o.type == "array") { o.type = "binary"; var out = (writeSync(wb, o)); o.type = "array"; return s2ab(out); } + switch(o.bookType || 'xlsb') { + case 'xml': + case 'xlml': return write_string_type(write_xlml(wb, o), o); + case 'slk': + case 'sylk': return write_string_type(write_slk_str(wb, o), o); + case 'htm': + case 'html': return write_string_type(write_htm_str(wb, o), o); + case 'txt': return write_stxt_type(write_txt_str(wb, o), o); + case 'csv': return write_string_type(write_csv_str(wb, o), o, "\ufeff"); + case 'dif': return write_string_type(write_dif_str(wb, o), o); + case 'dbf': return write_binary_type(write_dbf_buf(wb, o), o); + case 'prn': return write_string_type(write_prn_str(wb, o), o); + case 'rtf': return write_string_type(write_rtf_str(wb, o), o); + case 'eth': return write_string_type(write_eth_str(wb, o), o); + case 'fods': return write_string_type(write_ods(wb, o), o); + case 'biff2': if(!o.biff) o.biff = 2; /* falls through */ + case 'biff3': if(!o.biff) o.biff = 3; /* falls through */ + case 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o); + case 'biff5': if(!o.biff) o.biff = 5; /* falls through */ + case 'biff8': + case 'xla': + case 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o); + case 'xlsx': + case 'xlsm': + case 'xlam': + case 'xlsb': + case 'ods': return write_zip_type(wb, o); + default: throw new Error ("Unrecognized bookType |" + o.bookType + "|"); + } +} + +function resolve_book_type(o) { + if(o.bookType) return; + var _BT = { + "xls": "biff8", + "htm": "html", + "slk": "sylk", + "socialcalc": "eth", + "Sh33tJS": "WTF" + }; + var ext = o.file.slice(o.file.lastIndexOf(".")).toLowerCase(); + if(ext.match(/^\.[a-z]+$/)) o.bookType = ext.slice(1); + o.bookType = _BT[o.bookType] || o.bookType; +} + +function writeFileSync(wb, filename, opts) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + return writeSync(wb, o); +} + +function writeFileAsync(filename, wb, opts, cb) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + o.type = 'buffer'; + var _cb = cb; if(!(_cb instanceof Function)) _cb = (opts); + return _fs.writeFile(filename, writeSync(wb, o), _cb); +} +function make_json_row(sheet, r, R, cols, header, hdr, dense, o) { + var rr = encode_row(R); + var defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, "raw"); + var isempty = true; + var row = (header === 1) ? [] : {}; + if(header !== 1) { + if(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; } + else row.__rowNum__ = R; + } + if(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) { + var val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + if(val === undefined || val.t === undefined) { + if(defval === undefined) continue; + if(hdr[C] != null) { row[hdr[C]] = defval; } + continue; + } + var v = val.v; + switch(val.t){ + case 'z': if(v == null) break; continue; + case 'e': v = void 0; break; + case 's': case 'd': case 'b': case 'n': break; + default: throw new Error('unrecognized type ' + val.t); + } + if(hdr[C] != null) { + if(v == null) { + if(defval !== undefined) row[hdr[C]] = defval; + else if(raw && v === null) row[hdr[C]] = null; + else continue; + } else { + row[hdr[C]] = raw || (o.rawNumbers && val.t == "n") ? v : format_cell(val,v,o); + } + if(v != null) isempty = false; + } + } + return { row: row, isempty: isempty }; +} + + +function sheet_to_json(sheet, opts) { + if(sheet == null || sheet["!ref"] == null) return []; + var val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=""; + var r = {s:{r:0,c:0},e:{r:0,c:0}}; + var o = opts || {}; + var range = o.range != null ? o.range : sheet["!ref"]; + if(o.header === 1) header = 1; + else if(o.header === "A") header = 2; + else if(Array.isArray(o.header)) header = 3; + else if(o.header == null) header = 0; + switch(typeof range) { + case 'string': r = safe_decode_range(range); break; + case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; + default: r = range; + } + if(header > 0) offset = 0; + var rr = encode_row(r.s.r); + var cols = []; + var out = []; + var outi = 0, counter = 0; + var dense = Array.isArray(sheet); + var R = r.s.r, C = 0, CC = 0; + if(dense && !sheet[R]) sheet[R] = []; + for(C = r.s.c; C <= r.e.c; ++C) { + cols[C] = encode_col(C); + val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + switch(header) { + case 1: hdr[C] = C - r.s.c; break; + case 2: hdr[C] = cols[C]; break; + case 3: hdr[C] = o.header[C - r.s.c]; break; + default: + if(val == null) val = {w: "__EMPTY", t: "s"}; + vv = v = format_cell(val, null, o); + counter = 0; + for(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + "_" + (++counter); + hdr[C] = vv; + } + } + for (R = r.s.r + offset; R <= r.e.r; ++R) { + var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); + if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row; + } + out.length = outi; + return out; +} + +var qreg = /"/g; +function make_csv_row(sheet, r, R, cols, fs, rs, FS, o) { + var isempty = true; + var row = [], txt = "", rr = encode_row(R); + for(var C = r.s.c; C <= r.e.c; ++C) { + if (!cols[C]) continue; + var val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr]; + if(val == null) txt = ""; + else if(val.v != null) { + isempty = false; + txt = ''+(o.rawNumbers && val.t == "n" ? val.v : format_cell(val, null, o)); + for(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = "\"" + txt.replace(qreg, '""') + "\""; break; } + if(txt == "ID") txt = '"ID"'; + } else if(val.f != null && !val.F) { + isempty = false; + txt = '=' + val.f; if(txt.indexOf(",") >= 0) txt = '"' + txt.replace(qreg, '""') + '"'; + } else txt = ""; + /* NOTE: Excel CSV does not support array formulae */ + row.push(txt); + } + if(o.blankrows === false && isempty) return null; + return row.join(FS); +} + +function sheet_to_csv(sheet, opts) { + var out = []; + var o = opts == null ? {} : opts; + if(sheet == null || sheet["!ref"] == null) return ""; + var r = safe_decode_range(sheet["!ref"]); + var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); + var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); + var endregex = new RegExp((FS=="|" ? "\\|" : FS)+"+$"); + var row = "", cols = []; + o.dense = Array.isArray(sheet); + var colinfo = o.skipHidden && sheet["!cols"] || []; + var rowinfo = o.skipHidden && sheet["!rows"] || []; + for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); + for(var R = r.s.r; R <= r.e.r; ++R) { + if ((rowinfo[R]||{}).hidden) continue; + row = make_csv_row(sheet, r, R, cols, fs, rs, FS, o); + if(row == null) { continue; } + if(o.strip) row = row.replace(endregex,""); + out.push(row + RS); + } + delete o.dense; + return out.join(""); +} + +function sheet_to_txt(sheet, opts) { + if(!opts) opts = {}; opts.FS = "\t"; opts.RS = "\n"; + var s = sheet_to_csv(sheet, opts); + if(typeof cptable == 'undefined' || opts.type == 'string') return s; + var o = cptable.utils.encode(1200, s, 'str'); + return String.fromCharCode(255) + String.fromCharCode(254) + o; +} + +function sheet_to_formulae(sheet) { + var y = "", x, val=""; + if(sheet == null || sheet["!ref"] == null) return []; + var r = safe_decode_range(sheet['!ref']), rr = "", cols = [], C; + var cmds = []; + var dense = Array.isArray(sheet); + for(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C); + for(var R = r.s.r; R <= r.e.r; ++R) { + rr = encode_row(R); + for(C = r.s.c; C <= r.e.c; ++C) { + y = cols[C] + rr; + x = dense ? (sheet[R]||[])[C] : sheet[y]; + val = ""; + if(x === undefined) continue; + else if(x.F != null) { + y = x.F; + if(!x.f) continue; + val = x.f; + if(y.indexOf(":") == -1) y = y + ":" + y; + } + if(x.f != null) val = x.f; + else if(x.t == 'z') continue; + else if(x.t == 'n' && x.v != null) val = "" + x.v; + else if(x.t == 'b') val = x.v ? "TRUE" : "FALSE"; + else if(x.w !== undefined) val = "'" + x.w; + else if(x.v === undefined) continue; + else if(x.t == 's') val = "'" + x.v; + else val = ""+x.v; + cmds[cmds.length] = y + "=" + val; + } + } + return cmds; +} + +function sheet_add_json(_ws, js, opts) { + var o = opts || {}; + var offset = +!o.skipHeader; + var ws = _ws || ({}); + var _R = 0, _C = 0; + if(ws && o.origin != null) { + if(typeof o.origin == 'number') _R = o.origin; + else { + var _origin = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin; + _R = _origin.r; _C = _origin.c; + } + } + var cell; + var range = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}); + if(ws['!ref']) { + var _range = safe_decode_range(ws['!ref']); + range.e.c = Math.max(range.e.c, _range.e.c); + range.e.r = Math.max(range.e.r, _range.e.r); + if(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; } + } else { + if(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; } + } + var hdr = o.header || [], C = 0; + + js.forEach(function (JS, R) { + keys(JS).forEach(function(k) { + if((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k; + var v = JS[k]; + var t = 'z'; + var z = ""; + var ref = encode_cell({c:_C + C,r:_R + R + offset}); + cell = utils.sheet_get_cell(ws, ref); + if(v && typeof v === 'object' && !(v instanceof Date)){ + ws[ref] = v; + } else { + if(typeof v == 'number') t = 'n'; + else if(typeof v == 'boolean') t = 'b'; + else if(typeof v == 'string') t = 's'; + else if(v instanceof Date) { + t = 'd'; + if(!o.cellDates) { t = 'n'; v = datenum(v); } + z = (o.dateNF || SSF._table[14]); + } + if(!cell) ws[ref] = cell = ({t:t, v:v}); + else { + cell.t = t; cell.v = v; + delete cell.w; delete cell.R; + if(z) cell.z = z; + } + if(z) cell.z = z; + } + }); + }); + range.e.c = Math.max(range.e.c, _C + hdr.length - 1); + var __R = encode_row(_R); + if(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]}; + ws['!ref'] = encode_range(range); + return ws; +} +function json_to_sheet(js, opts) { return sheet_add_json(null, js, opts); } + +var utils = { + encode_col: encode_col, + encode_row: encode_row, + encode_cell: encode_cell, + encode_range: encode_range, + decode_col: decode_col, + decode_row: decode_row, + split_cell: split_cell, + decode_cell: decode_cell, + decode_range: decode_range, + format_cell: format_cell, + get_formulae: sheet_to_formulae, + make_csv: sheet_to_csv, + make_json: sheet_to_json, + make_formulae: sheet_to_formulae, + sheet_add_aoa: sheet_add_aoa, + sheet_add_json: sheet_add_json, + sheet_add_dom: sheet_add_dom, + aoa_to_sheet: aoa_to_sheet, + json_to_sheet: json_to_sheet, + table_to_sheet: parse_dom_table, + table_to_book: table_to_book, + sheet_to_csv: sheet_to_csv, + sheet_to_txt: sheet_to_txt, + sheet_to_json: sheet_to_json, + sheet_to_html: HTML_.from_sheet, + sheet_to_formulae: sheet_to_formulae, + sheet_to_row_object_array: sheet_to_json +}; + +(function(utils) { +utils.consts = utils.consts || {}; +function add_consts(R/*Array*/) { R.forEach(function(a){ utils.consts[a[0]] = a[1]; }); } + +function get_default(x, y, z) { return x[y] != null ? x[y] : (x[y] = z); } + +/* get cell, creating a stub if necessary */ +function ws_get_cell_stub(ws, R, C) { + /* A1 cell address */ + if(typeof R == "string") { + /* dense */ + if(Array.isArray(ws)) { + var RC = decode_cell(R); + if(!ws[RC.r]) ws[RC.r] = []; + return ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'}); + } + return ws[R] || (ws[R] = {t:'z'}); + } + /* cell address object */ + if(typeof R != "number") return ws_get_cell_stub(ws, encode_cell(R)); + /* R and C are 0-based indices */ + return ws_get_cell_stub(ws, encode_cell({r:R,c:C||0})); +} +utils.sheet_get_cell = ws_get_cell_stub; + +/* find sheet index for given name / validate index */ +function wb_sheet_idx(wb, sh) { + if(typeof sh == "number") { + if(sh >= 0 && wb.SheetNames.length > sh) return sh; + throw new Error("Cannot find sheet # " + sh); + } else if(typeof sh == "string") { + var idx = wb.SheetNames.indexOf(sh); + if(idx > -1) return idx; + throw new Error("Cannot find sheet name |" + sh + "|"); + } else throw new Error("Cannot find sheet |" + sh + "|"); +} + +/* simple blank workbook object */ +utils.book_new = function() { + return { SheetNames: [], Sheets: {} }; +}; + +/* add a worksheet to the end of a given workbook */ +utils.book_append_sheet = function(wb, ws, name) { + if(!name) for(var i = 1; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = "Sheet" + i) == -1) break; + if(!name || wb.SheetNames.length >= 0xFFFF) throw new Error("Too many worksheets"); + check_ws_name(name); + if(wb.SheetNames.indexOf(name) >= 0) throw new Error("Worksheet with name |" + name + "| already exists!"); + + wb.SheetNames.push(name); + wb.Sheets[name] = ws; +}; + +/* set sheet visibility (visible/hidden/very hidden) */ +utils.book_set_sheet_visibility = function(wb, sh, vis) { + get_default(wb,"Workbook",{}); + get_default(wb.Workbook,"Sheets",[]); + + var idx = wb_sheet_idx(wb, sh); + // $FlowIgnore + get_default(wb.Workbook.Sheets,idx, {}); + + switch(vis) { + case 0: case 1: case 2: break; + default: throw new Error("Bad sheet visibility setting " + vis); + } + // $FlowIgnore + wb.Workbook.Sheets[idx].Hidden = vis; +}; +add_consts([ + ["SHEET_VISIBLE", 0], + ["SHEET_HIDDEN", 1], + ["SHEET_VERY_HIDDEN", 2] +]); + +/* set number format */ +utils.cell_set_number_format = function(cell, fmt) { + cell.z = fmt; + return cell; +}; + +/* set cell hyperlink */ +utils.cell_set_hyperlink = function(cell, target, tooltip) { + if(!target) { + delete cell.l; + } else { + cell.l = ({ Target: target }); + if(tooltip) cell.l.Tooltip = tooltip; + } + return cell; +}; +utils.cell_set_internal_link = function(cell, range, tooltip) { return utils.cell_set_hyperlink(cell, "#" + range, tooltip); }; + +/* add to cell comments */ +utils.cell_add_comment = function(cell, text, author) { + if(!cell.c) cell.c = []; + cell.c.push({t:text, a:author||"SheetJS"}); +}; + +/* set array formula and flush related cells */ +utils.sheet_set_array_formula = function(ws, range, formula) { + var rng = typeof range != "string" ? range : safe_decode_range(range); + var rngstr = typeof range == "string" ? range : encode_range(range); + for(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) { + var cell = ws_get_cell_stub(ws, R, C); + cell.t = 'n'; + cell.F = rngstr; + delete cell.v; + if(R == rng.s.r && C == rng.s.c) cell.f = formula; + } + return ws; +}; + +return utils; +})(utils); + +if(has_buf && "function" != 'undefined') (function() { + var Readable = (__webpack_require__(/*! stream */ "?8e96").Readable); + + var write_csv_stream = function(sheet, opts) { + var stream = Readable(); + var o = opts == null ? {} : opts; + if(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; } + var r = safe_decode_range(sheet["!ref"]); + var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); + var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); + var endregex = new RegExp((FS=="|" ? "\\|" : FS)+"+$"); + var row = "", cols = []; + o.dense = Array.isArray(sheet); + var colinfo = o.skipHidden && sheet["!cols"] || []; + var rowinfo = o.skipHidden && sheet["!rows"] || []; + for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); + var R = r.s.r; + var BOM = false; + stream._read = function() { + if(!BOM) { BOM = true; return stream.push("\uFEFF"); } + while(R <= r.e.r) { + ++R; + if ((rowinfo[R-1]||{}).hidden) continue; + row = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o); + if(row != null) { + if(o.strip) row = row.replace(endregex,""); + stream.push(row + RS); + break; + } + } + if(R > r.e.r) return stream.push(null); + }; + return stream; + }; + + var write_html_stream = function(ws, opts) { + var stream = Readable(); + + var o = opts || {}; + var header = o.header != null ? o.header : HTML_.BEGIN; + var footer = o.footer != null ? o.footer : HTML_.END; + stream.push(header); + var r = decode_range(ws['!ref']); + o.dense = Array.isArray(ws); + stream.push(HTML_._preamble(ws, r, o)); + var R = r.s.r; + var end = false; + stream._read = function() { + if(R > r.e.r) { + if(!end) { end = true; stream.push("
" + footer); } + return stream.push(null); + } + while(R <= r.e.r) { + stream.push(HTML_._row(ws, r, R, o)); + ++R; + break; + } + }; + return stream; + }; + + var write_json_stream = function(sheet, opts) { + var stream = Readable({objectMode:true}); + + if(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; } + var val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=""; + var r = {s:{r:0,c:0},e:{r:0,c:0}}; + var o = opts || {}; + var range = o.range != null ? o.range : sheet["!ref"]; + if(o.header === 1) header = 1; + else if(o.header === "A") header = 2; + else if(Array.isArray(o.header)) header = 3; + switch(typeof range) { + case 'string': r = safe_decode_range(range); break; + case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; + default: r = range; + } + if(header > 0) offset = 0; + var rr = encode_row(r.s.r); + var cols = []; + var counter = 0; + var dense = Array.isArray(sheet); + var R = r.s.r, C = 0, CC = 0; + if(dense && !sheet[R]) sheet[R] = []; + for(C = r.s.c; C <= r.e.c; ++C) { + cols[C] = encode_col(C); + val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + switch(header) { + case 1: hdr[C] = C - r.s.c; break; + case 2: hdr[C] = cols[C]; break; + case 3: hdr[C] = o.header[C - r.s.c]; break; + default: + if(val == null) val = {w: "__EMPTY", t: "s"}; + vv = v = format_cell(val, null, o); + counter = 0; + for(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + "_" + (++counter); + hdr[C] = vv; + } + } + R = r.s.r + offset; + stream._read = function() { + if(R > r.e.r) return stream.push(null); + while(R <= r.e.r) { + //if ((rowinfo[R-1]||{}).hidden) continue; + var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); + ++R; + if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) { + stream.push(row.row); + break; + } + } + }; + return stream; + }; + + XLSX.stream = { + to_json: write_json_stream, + to_html: write_html_stream, + to_csv: write_csv_stream + }; +})(); + +if(typeof parse_xlscfb !== "undefined") XLSX.parse_xlscfb = parse_xlscfb; +XLSX.parse_zip = parse_zip; +XLSX.read = readSync; //xlsread +XLSX.readFile = readFileSync; //readFile +XLSX.readFileSync = readFileSync; +XLSX.write = writeSync; +XLSX.writeFile = writeFileSync; +XLSX.writeFileSync = writeFileSync; +XLSX.writeFileAsync = writeFileAsync; +XLSX.utils = utils; +XLSX.SSF = SSF; +if(typeof CFB !== "undefined") XLSX.CFB = CFB; +} +/*global define */ +if(true) make_xlsx_lib(exports); +else {} +/*exported XLS, ODS */ +var XLS = XLSX, ODS = XLSX; + + +/***/ }), + +/***/ "./node_modules/zoom-vanilla.js/dist/zoom-vanilla.min.js": +/*!***************************************************************!*\ + !*** ./node_modules/zoom-vanilla.js/dist/zoom-vanilla.min.js ***! + \***************************************************************/ +/***/ (() => { + +// zoom-vanilla.js - 2.0.6 (https://github.com/spinningarrow/zoom-vanilla.js) ++function(){"use strict";function e(e){var t=e.getBoundingClientRect(),n=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,o=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return{top:t.top+n,left:t.left+o}}var t=80,n=function(){function n(){var e=document.createElement("img");e.onload=function(){d=Number(e.height),l=Number(e.width),o()},e.src=m.currentSrc||m.src}function o(){f=document.createElement("div"),f.className="zoom-img-wrap",f.style.position="absolute",f.style.top=e(m).top+"px",f.style.left=e(m).left+"px",v=m.cloneNode(),v.style.visibility="hidden",m.style.width=m.offsetWidth+"px",m.parentNode.replaceChild(v,m),document.body.appendChild(f),f.appendChild(m),m.classList.add("zoom-img"),m.setAttribute("data-action","zoom-out"),c=document.createElement("div"),c.className="zoom-overlay",document.body.appendChild(c),i(),r()}function i(){m.offsetWidth;var e=l,n=d,o=e/m.width,i=window.innerHeight-t,r=window.innerWidth-t,s=e/n,a=r/i;u=e=40&&i()}function d(e){27==e.keyCode&&i()}function l(e){e.stopPropagation(),e.preventDefault(),i()}function c(e){v=e.touches[0].pageY,e.target.addEventListener("touchmove",u)}function u(e){Math.abs(e.touches[0].pageY-v)<=10||(i(),e.target.removeEventListener("touchmove",u))}var m=null,f=null,v=null;return{listen:e}})().listen()}(); +//# sourceMappingURL=/dist/zoom-vanilla.min.js.map + + +/***/ }), + +/***/ "?cfe0": +/*!************************!*\ + !*** buffer (ignored) ***! + \************************/ +/***/ (() => { + +/* (ignored) */ + +/***/ }), + +/***/ "?1bda": +/*!************************!*\ + !*** buffer (ignored) ***! + \************************/ +/***/ (() => { + +/* (ignored) */ + +/***/ }), + +/***/ "?2554": +/*!************************!*\ + !*** crypto (ignored) ***! + \************************/ +/***/ (() => { + +/* (ignored) */ + +/***/ }), + +/***/ "?6764": +/*!********************!*\ + !*** fs (ignored) ***! + \********************/ +/***/ (() => { + +/* (ignored) */ + +/***/ }), + +/***/ "?8e96": +/*!************************!*\ + !*** stream (ignored) ***! + \************************/ +/***/ (() => { + +/* (ignored) */ + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/chunk loaded */ +/******/ (() => { +/******/ var deferred = []; +/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { +/******/ if(chunkIds) { +/******/ priority = priority || 0; +/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; +/******/ deferred[i] = [chunkIds, fn, priority]; +/******/ return; +/******/ } +/******/ var notFulfilled = Infinity; +/******/ for (var i = 0; i < deferred.length; i++) { +/******/ var [chunkIds, fn, priority] = deferred[i]; +/******/ var fulfilled = true; +/******/ for (var j = 0; j < chunkIds.length; j++) { +/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { +/******/ chunkIds.splice(j--, 1); +/******/ } else { +/******/ fulfilled = false; +/******/ if(priority < notFulfilled) notFulfilled = priority; +/******/ } +/******/ } +/******/ if(fulfilled) { +/******/ deferred.splice(i--, 1) +/******/ var r = fn(); +/******/ if (r !== undefined) result = r; +/******/ } +/******/ } +/******/ return result; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/global */ +/******/ (() => { +/******/ __webpack_require__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/jsonp chunk loading */ +/******/ (() => { +/******/ // no baseURI +/******/ +/******/ // object to store loaded and loading chunks +/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched +/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded +/******/ var installedChunks = { +/******/ "/dist/js/app": 0, +/******/ "dist/css/app": 0 +/******/ }; +/******/ +/******/ // no chunk on demand loading +/******/ +/******/ // no prefetching +/******/ +/******/ // no preloaded +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ +/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); +/******/ +/******/ // install a JSONP callback for chunk loading +/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { +/******/ var [chunkIds, moreModules, runtime] = data; +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0; +/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { +/******/ for(moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) var result = runtime(__webpack_require__); +/******/ } +/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { +/******/ installedChunks[chunkId][0](); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ return __webpack_require__.O(result); +/******/ } +/******/ +/******/ var chunkLoadingGlobal = self["webpackChunkenigma"] = self["webpackChunkenigma"] || []; +/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); +/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module depends on other loaded chunks and execution need to be delayed +/******/ __webpack_require__.O(undefined, ["dist/css/app"], () => (__webpack_require__("./resources/js/app.js"))) +/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["dist/css/app"], () => (__webpack_require__("./public/dist/css/_app.css"))) +/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); +/******/ +/******/ })() +; diff --git a/themes/nurgul/assets/seller/js/app.js.LICENSE.txt b/themes/nurgul/assets/seller/js/app.js.LICENSE.txt new file mode 100644 index 0000000..a5af9a4 --- /dev/null +++ b/themes/nurgul/assets/seller/js/app.js.LICENSE.txt @@ -0,0 +1,57 @@ +/*! + * + * litepicker.umd.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: 504eef9c08cb42543660 + * + */ + +/*! + * Chart.js v2.9.4 + * https://www.chartjs.org + * (c) 2020 Chart.js Contributors + * Released under the MIT License + */ + +/*! + * Toastify js 1.11.2 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ + +/*! +FullCalendar v5.10.1 +Docs & License: https://fullcalendar.io/ +(c) 2021 Adam Shaw +*/ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +/**! +* tippy.js v6.3.7 +* (c) 2017-2021 atomiks +* MIT License +*/ + +//! moment.js + +//! moment.js locale configuration diff --git a/themes/nurgul/assets/seller/js/ckeditor-balloon-block.js b/themes/nurgul/assets/seller/js/ckeditor-balloon-block.js new file mode 100644 index 0000000..f8a5260 --- /dev/null +++ b/themes/nurgul/assets/seller/js/ckeditor-balloon-block.js @@ -0,0 +1,107 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/@ckeditor/ckeditor5-build-balloon-block/build/ckeditor.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@ckeditor/ckeditor5-build-balloon-block/build/ckeditor.js ***! + \********************************************************************************/ +/***/ ((module, exports) => { + +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black","Block quote":"Block quote",Blue:"Blue",Bold:"Bold","Break text":"Break text","Bulleted List":"Bulleted List",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Centered image":"Centered image","Change image text alternative":"Change image text alternative","Choose heading":"Choose heading",Column:"Column","Could not insert image at the current position.":"Could not insert image at the current position.","Could not obtain resized image URL.":"Could not obtain resized image URL.","Decrease indent":"Decrease indent","Delete column":"Delete column","Delete row":"Delete row","Dim grey":"Dim grey",Downloadable:"Downloadable","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Edit link":"Edit link","Editor toolbar":"Editor toolbar","Enter image caption":"Enter image caption","Full size image":"Full size image",Green:"Green",Grey:"Grey","Header column":"Header column","Header row":"Header row",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6","Image toolbar":"Image toolbar","image widget":"image widget","In line":"In line","Increase indent":"Increase indent","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert image":"Insert image","Insert image or file":"Insert image or file","Insert media":"Insert media","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table","Inserting image failed":"Inserting image failed",Italic:"Italic","Left aligned image":"Left aligned image","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Link:"Link","Link URL":"Link URL","Media URL":"Media URL","media widget":"media widget","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",Next:"Next","Numbered List":"Numbered List","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab",Orange:"Orange",Paragraph:"Paragraph","Paste the media URL in the input.":"Paste the media URL in the input.",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Rich Text Editor":"Rich Text Editor","Rich Text Editor, %0":"Rich Text Editor, %0","Right aligned image":"Right aligned image",Row:"Row",Save:"Save","Select all":"Select all","Select column":"Select column","Select row":"Select row","Selecting resized image failed":"Selecting resized image failed","Show more items":"Show more items","Side image":"Side image","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically","Table toolbar":"Table toolbar","Text alternative":"Text alternative","The URL must not be empty.":"The URL must not be empty.","This link has no URL":"This link has no URL","This media URL is not supported.":"This media URL is not supported.","Tip: Paste the URL into the content to embed faster.":"Tip: Paste the URL into the content to embed faster.","Toggle caption off":"Toggle caption off","Toggle caption on":"Toggle caption on",Turquoise:"Turquoise",Undo:"Undo",Unlink:"Unlink","Upload failed":"Upload failed","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar","Wrap text":"Wrap text",Yellow:"Yellow"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),function(e,t){ true?module.exports=t():0}(window,(function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=108)}([function(e,t,i){"use strict";i.d(t,"a",(function(){return n})),i.d(t,"b",(function(){return o}));class n extends Error{constructor(e,t,i){super(`${e}${i?" "+JSON.stringify(i):""}${r(e)}`),this.name="CKEditorError",this.context=t,this.data=i}is(e){return"CKEditorError"===e}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;const i=new n(e.message,t);throw i.stack=e.stack,i}}function o(e,t){console.warn(...s(e,t))}function r(e){return"\nRead more: https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-"+e}function s(e,t){const i=r(e);return t?[e,t,i]:[e,i]}},function(e,t,i){"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function a(e){for(var t=-1,i=0;i.ck-button .ck-tooltip{display:none}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-top-right-radius:unset;border-bottom-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-top-left-radius:unset;border-bottom-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-top-left-radius:unset;border-bottom-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-top-right-radius:unset;border-bottom-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{content:"";position:absolute;width:1px;height:100%;background-color:var(--ck-color-split-button-hover-border)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}'},function(e,t,i){var n=i(1),o=i(30);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;z-index:var(--ck-z-modal);max-width:var(--ck-dropdown-max-width);position:absolute}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{top:100%;bottom:auto}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{box-shadow:var(--ck-drop-shadow),0 0;background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}"},function(e,t,i){var n=i(1),o=i(32);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-toolbar{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-flow:row nowrap;align-items:center}.ck.ck-toolbar>.ck-toolbar__items{display:flex;flex-flow:row wrap;align-items:center;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);padding:0 var(--ck-spacing-small);border:1px solid var(--ck-color-toolbar-border)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;width:1px;min-width:1px;background:var(--ck-color-toolbar-border);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{width:100%;margin:0;border-radius:0;border:0}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-right:var(--ck-spacing-small)}"},function(e,t,i){var n=i(1),o=i(34);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{list-style-type:none;background:var(--ck-color-list-background)}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{min-height:unset;width:100%;text-align:left;border-radius:0;padding:calc(var(--ck-line-height-base)*0.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*0.4*var(--ck-font-size-base))}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{height:1px;width:100%;background:var(--ck-color-base-border)}"},function(e,t,i){var n=i(1),o=i(36);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{width:max-content;max-width:var(--ck-toolbar-dropdown-max-width)}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}"},function(e,t,i){var n=i(1),o=i(38);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}"},function(e,t,i){var n=i(1),o=i(40);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0}.ck.ck-editor__editable_inline{overflow:auto;padding:0 var(--ck-spacing-standard);border:1px solid transparent}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}"},function(e,t,i){var n=i(1),o=i(42);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}"},function(e,t,i){var n=i(1),o=i(44);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-form__header{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{padding:var(--ck-spacing-small) var(--ck-spacing-large);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-form__header .ck-form__header__label{font-weight:700}"},function(e,t,i){var n=i(1),o=i(46);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-input-text-width:18em}.ck.ck-input-text{border-radius:0}.ck-rounded-corners .ck.ck-input-text,.ck.ck-input-text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-text{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);min-width:var(--ck-input-text-width);min-height:var(--ck-ui-component-min-height);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input-text:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-input-text[readonly]{border:1px solid var(--ck-color-input-disabled-border);background:var(--ck-color-input-disabled-background);color:var(--ck-color-input-disabled-text)}.ck.ck-input-text[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input-text.ck-error{border-color:var(--ck-color-input-error-border);animation:ck-text-input-shake .3s ease both}.ck.ck-input-text.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-text-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}"},function(e,t,i){var n=i(1),o=i(48);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{pointer-events:none;transform-origin:0 0;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);background:var(--ck-color-labeled-field-label-background);padding:0 calc(var(--ck-font-size-tiny)*0.5);line-height:normal;font-weight:400;text-overflow:ellipsis;overflow:hidden;max-width:100%;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-spacing-medium),calc(var(--ck-font-size-base)*0.6)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-spacing-medium)*-1),calc(var(--ck-font-size-base)*0.6)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));background:transparent;padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}"},function(e,t,i){var n=i(1),o=i(50);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{width:0;height:0;border-style:solid}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:var(--ck-balloon-arrow-height);border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:0}.ck.ck-balloon-panel[class*=arrow_n]:before{border-bottom-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-color:transparent;border-right-color:transparent;border-top-color:transparent}.ck.ck-balloon-panel[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background);margin-top:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:0;border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-top-color:var(--ck-color-panel-border);filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.ck.ck-balloon-panel[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background);margin-bottom:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}'},function(e,t,i){var n=i(1),o=i(52);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck .ck-balloon-rotator__navigation{display:flex;align-items:center;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}"},function(e,t,i){var n=i(1),o=i(54);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);width:100%;height:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}"},function(e,t,i){var n=i(1),o=i(56);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{z-index:var(--ck-z-modal);position:fixed;top:0}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{top:auto;position:absolute}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{box-shadow:var(--ck-drop-shadow),0 0;border-width:0 1px 1px;border-top-left-radius:0;border-top-right-radius:0}"},function(e,t,i){var n=i(1),o=i(58);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}"},function(e,t,i){var n=i(1),o=i(60);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-placeholder,.ck .ck-placeholder{position:relative}.ck.ck-placeholder:before,.ck .ck-placeholder:before{position:absolute;left:0;right:0;content:attr(data-placeholder);pointer-events:none}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-placeholder:before,.ck .ck-placeholder:before{cursor:text;color:var(--ck-color-engine-placeholder-text)}"},function(e,t,i){var n=i(1),o=i(62);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports='.ck .ck-widget .ck-widget__type-around__button{display:block;position:absolute;overflow:hidden;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{position:absolute;top:50%;left:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{top:calc(var(--ck-widget-outline-thickness)*-0.5);left:min(10%,30px);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-0.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;position:absolute;top:1px;left:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;position:absolute;left:0;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{top:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{width:var(--ck-widget-type-around-button-size);height:var(--ck-widget-type-around-button-size);background:var(--ck-color-widget-type-around-button);border-radius:100px;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);opacity:0;pointer-events:none}.ck .ck-widget .ck-widget__type-around__button svg{width:10px;height:8px;transform:translate(-50%,-50%);transition:transform .5s ease;margin-top:1px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{width:calc(var(--ck-widget-type-around-button-size) - 2px);height:calc(var(--ck-widget-type-around-button-size) - 2px);border-radius:100px;background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3))}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{pointer-events:none;height:1px;animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;outline:1px solid hsla(0,0%,100%,.5);background:var(--ck-color-base-text)}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}'},function(e,t,i){var n=i(1),o=i(64);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);color:var(--ck-color-resizer-tooltip-text);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);font-size:var(--ck-font-size-tiny);display:block;padding:0 var(--ck-spacing-small);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{top:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{top:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{top:calc(var(--ck-resizer-tooltip-height)*-1);left:50%;transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-width:var(--ck-widget-outline-thickness);outline-style:solid;outline-color:transparent;transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;background-color:var(--ck-color-widget-editable-focus-background)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{padding:4px;box-sizing:border-box;background-color:transparent;opacity:0;transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;transform:translateY(-100%);left:calc(0px - var(--ck-widget-outline-thickness));top:0}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{width:var(--ck-widget-handler-icon-size);height:var(--ck-widget-handler-icon-size);color:var(--ck-color-widget-drag-handler-icon-color)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-focus-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}"},function(e,t,i){var n=i(1),o=i(66);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports='.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;position:relative;pointer-events:none}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);top:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);border:1px solid var(--ck-clipboard-drop-target-color);background:var(--ck-clipboard-drop-target-color);margin-left:-1px}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{content:"";width:0;height:0;display:block;position:absolute;left:50%;top:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);transform:translateX(-50%);border-left:calc(var(--ck-clipboard-drop-target-dot-width)*0.5) solid transparent;border-bottom:0 solid transparent;border-right:calc(var(--ck-clipboard-drop-target-dot-width)*0.5) solid transparent;border-top:calc(var(--ck-clipboard-drop-target-dot-height)) solid var(--ck-clipboard-drop-target-color)}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}'},function(e,t,i){var n=i(1),o=i(68);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck-content blockquote{overflow:hidden;padding-right:1.5em;padding-left:1.5em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}"},function(e,t){e.exports=".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}"},function(e,t,i){var n=i(1),o=i(71);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;position:absolute;pointer-events:none;left:0;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{position:absolute;pointer-events:all}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{width:var(--ck-resizer-size);height:var(--ck-resizer-size);background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{top:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{top:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}"},function(e,t,i){var n=i(1),o=i(73);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}"},function(e,t){e.exports='.ck-vertical-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-text-width)*0.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-large);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}'},function(e,t){e.exports=".ck-content .image{display:table;clear:both;text-align:center;margin:.9em auto;min-width:50px}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{display:inline-flex;max-width:100%;align-items:flex-start}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{padding-left:inherit;padding-right:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}"},function(e,t,i){var n=i(1),o=i(77);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{display:table-caption;caption-side:bottom;word-break:break-word;color:var(--ck-color-image-caption-text);background-color:var(--ck-color-image-caption-background);padding:.6em;font-size:.75em;outline-offset:-1px}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}"},function(e,t,i){var n=i(1),o=i(79);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-right:0;margin-left:auto}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-top:var(--ck-inline-image-style-spacing);margin-bottom:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}"},function(e,t,i){var n=i(1),o=i(81);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image-inline .ck-progress-bar,.ck.ck-editor__editable .image .ck-progress-bar{position:absolute;top:0;left:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image-inline .ck-progress-bar,.ck.ck-editor__editable .image .ck-progress-bar{height:2px;width:0;background:var(--ck-color-upload-bar-background);transition:width .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}"},function(e,t,i){var n=i(1),o=i(83);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports='.ck-image-upload-complete-icon{display:block;position:absolute;top:min(var(--ck-spacing-medium),6%);right:min(var(--ck-spacing-medium),6%);border-radius:50%;z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{opacity:0;background:var(--ck-color-image-upload-icon-background);animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;animation-fill-mode:forwards,forwards;animation-duration:.5s,.5s;font-size:calc(1px*var(--ck-image-upload-icon-size));animation-delay:0ms,3s;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{left:25%;top:50%;opacity:0;height:0;width:0;transform:scaleX(-1) rotate(135deg);transform-origin:left top;border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);animation-name:ck-upload-complete-icon-check;animation-duration:.5s;animation-delay:.5s;animation-fill-mode:forwards;box-sizing:border-box}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{opacity:1;width:0;height:0}33%{width:.3em;height:0}to{opacity:1;width:.3em;height:.45em}}'},function(e,t,i){var n=i(1),o=i(85);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports='.ck .ck-upload-placeholder-loader{position:absolute;display:flex;align-items:center;justify-content:center;top:0;left:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px}.ck .ck-image-upload-placeholder{width:100%;margin:0}.ck .ck-upload-placeholder-loader{width:100%;height:100%}.ck .ck-upload-placeholder-loader:before{width:var(--ck-upload-placeholder-loader-size);height:var(--ck-upload-placeholder-loader-size);border-radius:50%;border-top:3px solid var(--ck-color-upload-placeholder-loader);border-right:2px solid transparent;animation:ck-upload-placeholder-loader 1s linear infinite}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}'},function(e,t,i){var n=i(1),o=i(87);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{height:100%;border-right:1px solid var(--ck-color-base-text);margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}"},function(e,t,i){var n=i(1),o=i(89);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{padding:0;min-width:var(--ck-input-text-width)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{padding:var(--ck-spacing-standard);margin:0;border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}"},function(e,t,i){var n=i(1),o=i(91);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{padding:0 var(--ck-spacing-medium);color:var(--ck-color-link-default);text-overflow:ellipsis;cursor:pointer;max-width:var(--ck-input-text-width);min-width:3em;text-align:center}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{min-width:0;max-width:100%}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}"},function(e,t,i){var n=i(1),o=i(93);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports='.ck-media__wrapper .ck-media__placeholder{display:flex;flex-direction:column;align-items:center}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:block}@media (hover:none){.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:none}}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url:hover .ck-tooltip{visibility:visible;opacity:1}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{overflow:hidden;display:block}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{padding:calc(var(--ck-spacing-standard)*3);background:var(--ck-color-base-foreground)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{min-width:var(--ck-media-embed-placeholder-icon-size);height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);background-position:50%;background-size:cover}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{width:100%;height:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);white-space:nowrap;text-align:center;font-style:italic;text-overflow:ellipsis}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*="open.spotify.com"]{max-width:300px;max-height:380px}.ck-media__wrapper[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMDAzLjc4IDEuNjFoNDkuNjIxYzEuNjk0IDAgMy4xOS0uNzk4IDQuMTQ2LTIuMDM3eiIgZmlsbD0iIzVjODhjNSIvPjxwYXRoIGQ9Ik0yMjYuNzQyIDIyMi45ODhjLTkuMjY2IDAtMTYuNzc3IDcuMTctMTYuNzc3IDE2LjAxNC4wMDcgMi43NjIuNjYzIDUuNDc0IDIuMDkzIDcuODc1LjQzLjcwMy44MyAxLjQwOCAxLjE5IDIuMTA3LjMzMy41MDIuNjUgMS4wMDUuOTUgMS41MDguMzQzLjQ3Ny42NzMuOTU3Ljk4OCAxLjQ0IDEuMzEgMS43NjkgMi41IDMuNTAyIDMuNjM3IDUuMTY4Ljc5MyAxLjI3NSAxLjY4MyAyLjY0IDIuNDY2IDMuOTkgMi4zNjMgNC4wOTQgNC4wMDcgOC4wOTIgNC42IDEzLjkxNHYuMDEyYy4xODIuNDEyLjUxNi42NjYuODc5LjY2Ny40MDMtLjAwMS43NjgtLjMxNC45My0uNzk5LjYwMy01Ljc1NiAyLjIzOC05LjcyOSA0LjU4NS0xMy43OTQuNzgyLTEuMzUgMS42NzMtMi43MTUgMi40NjUtMy45OSAxLjEzNy0xLjY2NiAyLjMyOC0zLjQgMy42MzgtNS4xNjkuMzE1LS40ODIuNjQ1LS45NjIuOTg4LTEuNDM5LjMtLjUwMy42MTctMS4wMDYuOTUtMS41MDguMzU5LS43Ljc2LTEuNDA0IDEuMTktMi4xMDcgMS40MjYtMi40MDIgMi01LjExNCAyLjAwNC03Ljg3NSAwLTguODQ0LTcuNTExLTE2LjAxNC0xNi43NzYtMTYuMDE0eiIgZmlsbD0iI2RkNGIzZSIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48ZWxsaXBzZSByeT0iNS41NjQiIHJ4PSI1LjgyOCIgY3k9IjIzOS4wMDIiIGN4PSIyMjYuNzQyIiBmaWxsPSIjODAyZDI3IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0xOTAuMzAxIDIzNy4yODNjLTQuNjcgMC04LjQ1NyAzLjg1My04LjQ1NyA4LjYwNnMzLjc4NiA4LjYwNyA4LjQ1NyA4LjYwN2MzLjA0MyAwIDQuODA2LS45NTggNi4zMzctMi41MTYgMS41My0xLjU1NyAyLjA4Ny0zLjkxMyAyLjA4Ny02LjI5IDAtLjM2Mi0uMDIzLS43MjItLjA2NC0xLjA3OWgtOC4yNTd2My4wNDNoNC44NWMtLjE5Ny43NTktLjUzMSAxLjQ1LTEuMDU4IDEuOTg2LS45NDIuOTU4LTIuMDI4IDEuNTQ4LTMuOTAxIDEuNTQ4LTIuODc2IDAtNS4yMDgtMi4zNzItNS4yMDgtNS4yOTkgMC0yLjkyNiAyLjMzMi01LjI5OSA1LjIwOC01LjI5OSAxLjM5OSAwIDIuNjE4LjQwNyAzLjU4NCAxLjI5M2wyLjM4MS0yLjM4YzAtLjAwMi0uMDAzLS4wMDQtLjAwNC0uMDA1LTEuNTg4LTEuNTI0LTMuNjItMi4yMTUtNS45NTUtMi4yMTV6bTQuNDMgNS42NmwuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxNS4xODQgMjUxLjkyOWwtNy45OCA3Ljk3OSAyOC40NzcgMjguNDc1YTUuMjMzIDUuMjMzIDAgMDAuNDQ5LTIuMTIzdi0zMS4xNjVjLS40NjkuNjc1LS45MzQgMS4zNDktMS4zODIgMi4wMDUtLjc5MiAxLjI3NS0xLjY4MiAyLjY0LTIuNDY1IDMuOTktMi4zNDcgNC4wNjUtMy45ODIgOC4wMzgtNC41ODUgMTMuNzk0LS4xNjIuNDg1LS41MjcuNzk4LS45My43OTktLjM2My0uMDAxLS42OTctLjI1NS0uODc5LS42Njd2LS4wMTJjLS41OTMtNS44MjItMi4yMzctOS44Mi00LjYtMTMuOTE0LS43ODMtMS4zNS0xLjY3My0yLjcxNS0yLjQ2Ni0zLjk5LTEuMTM3LTEuNjY2LTIuMzI3LTMuNC0zLjYzNy01LjE2OWwtLjAwMi0uMDAzeiIgZmlsbD0iI2MzYzNjMyIvPjxwYXRoIGQ9Ik0yMTIuOTgzIDI0OC40OTVsLTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAwNS4yMzggNS4yMzhoMS4wMTVsMzUuNjY2LTM1LjY2NmExMzYuMjc1IDEzNi4yNzUgMCAwMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAwLS45ODktMS40NCAzNS4xMjcgMzUuMTI3IDAgMDAtLjk1LTEuNTA4Yy0uMDgzLS4xNjItLjE3Ni0uMzI2LS4yNjQtLjQ4OXoiIGZpbGw9IiNmZGRjNGYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxMS45OTggMjYxLjA4M2wtNi4xNTIgNi4xNTEgMjQuMjY0IDI0LjI2NGguNzgxYTUuMjI3IDUuMjI3IDAgMDA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c7,#b800b1,#f50000)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OXptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OXoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzN6bTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1ek00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}'},function(e,t,i){var n=i(1),o=i(95);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-media-form{display:flex;align-items:flex-start;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-field-view{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}"},function(e,t,i){var n=i(1),o=i(97);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck-content .media{clear:both;margin:.9em 0;display:block;min-width:15em}"},function(e,t,i){var n=i(1),o=i(99);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-color-table-focused-cell-background:rgba(158,207,250,0.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}"},function(e,t,i){var n=i(1),o=i(101);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2);padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{width:var(--ck-insert-table-dropdown-box-width);height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);border:1px solid var(--ck-color-base-border);border-radius:1px}.ck .ck-insert-table-dropdown-grid-box.ck-on{border-color:var(--ck-color-focus-border);background:var(--ck-color-focus-outer-shadow)}"},function(e,t,i){var n=i(1),o=i(103);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=':root{--ck-table-selected-cell-background:rgba(158,207,250,0.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{position:relative;caret-color:transparent;outline:unset;box-shadow:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{content:"";pointer-events:none;background-color:var(--ck-table-selected-cell-background);position:absolute;top:0;left:0;right:0;bottom:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget_selected{outline:unset}'},function(e,t,i){var n=i(1),o=i(105);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck-content .table{margin:.9em auto;display:table}.ck-content .table table{border-collapse:collapse;border-spacing:0;width:100%;height:100%;border:1px double #b3b3b3}.ck-content .table table td,.ck-content .table table th{min-width:2em;padding:.4em;border:1px solid #bfbfbf}.ck-content .table table th{font-weight:700;background:hsla(0,0%,0%,5%)}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}"},function(e,t,i){var n=i(1),o=i(107);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-block-toolbar-button{transform:translateX(calc(var(--ck-spacing-large)*-1))}"},function(e,t,i){"use strict";i.r(t),i.d(t,"default",(function(){return Pw}));var n=function(){return function e(){e.called=!0}};class o{constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=n(),this.off=n()}}const r=new Array(256).fill().map((e,t)=>("0"+t.toString(16)).slice(-2));function s(){const e=4294967296*Math.random()>>>0,t=4294967296*Math.random()>>>0,i=4294967296*Math.random()>>>0,n=4294967296*Math.random()>>>0;return"e"+r[e>>0&255]+r[e>>8&255]+r[e>>16&255]+r[e>>24&255]+r[t>>0&255]+r[t>>8&255]+r[t>>16&255]+r[t>>24&255]+r[i>>0&255]+r[i>>8&255]+r[i>>16&255]+r[i>>24&255]+r[n>>0&255]+r[n>>8&255]+r[n>>16&255]+r[n>>24&255]}var a={get(e){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5},l=(i(6),i(0));const c=Symbol("listeningTo"),d=Symbol("emitterId");var h={on(e,t,i={}){this.listenTo(this,e,t,i)},once(e,t,i){let n=!1;this.listenTo(this,e,(function(e,...i){n||(n=!0,e.off(),t.call(this,e,...i))}),i)},off(e,t){this.stopListening(this,e,t)},listenTo(e,t,i,n={}){let o,r;this[c]||(this[c]={});const s=this[c];g(e)||u(e);const a=g(e);(o=s[a])||(o=s[a]={emitter:e,callbacks:{}}),(r=o.callbacks[t])||(r=o.callbacks[t]=[]),r.push(i),function(e,t,i,n,o){t._addEventListener?t._addEventListener(i,n,o):e._addEventListener.call(t,i,n,o)}(this,e,t,i,n)},stopListening(e,t,i){const n=this[c];let o=e&&g(e);const r=n&&o&&n[o],s=r&&t&&r.callbacks[t];if(!(!n||e&&!r||t&&!s))if(i){b(this,e,t,i);-1!==s.indexOf(i)&&(1===s.length?delete r.callbacks[t]:b(this,e,t,i))}else if(s){for(;i=s.pop();)b(this,e,t,i);delete r.callbacks[t]}else if(r){for(t in r.callbacks)this.stopListening(e,t);delete n[o]}else{for(o in n)this.stopListening(n[o].emitter);delete this[c]}},fire(e,...t){try{const i=e instanceof o?e:new o(this,e),n=i.name;let r=function e(t,i){let n;if(!t._events||!(n=t._events[i])||!n.callbacks.length)return i.indexOf(":")>-1?e(t,i.substr(0,i.lastIndexOf(":"))):null;return n.callbacks}(this,n);if(i.path.push(this),r){const e=[i,...t];r=Array.from(r);for(let t=0;t{this._delegations||(this._delegations=new Map),e.forEach(e=>{const n=this._delegations.get(e);n?n.set(t,i):this._delegations.set(e,new Map([[t,i]]))})}}},stopDelegating(e,t){if(this._delegations)if(e)if(t){const i=this._delegations.get(e);i&&i.delete(t)}else this._delegations.delete(e);else this._delegations.clear()},_addEventListener(e,t,i){!function(e,t){const i=m(e);if(i[t])return;let n=t,o=null;const r=[];for(;""!==n&&!i[n];)i[n]={callbacks:[],childEvents:[]},r.push(i[n]),o&&i[n].childEvents.push(o),o=n,n=n.substr(0,n.lastIndexOf(":"));if(""!==n){for(const e of r)e.callbacks=i[n].callbacks.slice();i[n].childEvents.push(o)}}(this,e);const n=f(this,e),o=a.get(i.priority),r={callback:t,priority:o};for(const e of n){let t=!1;for(let i=0;i0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(ne);var se=function(e,t){return re(te(e,t,Z),e+"")};var ae=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991};var le=function(e){return null!=e&&ae(e.length)&&!M(e)},ce=/^(?:0|[1-9]\d*)$/;var de=function(e,t){var i=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==i||"symbol"!=i&&ce.test(e))&&e>-1&&e%1==0&&e1?i[o-1]:void 0,s=o>2?i[2]:void 0;for(r=e.length>3&&"function"==typeof r?(o--,r):void 0,s&&he(i[0],i[1],s)&&(r=o<3?void 0:r,o=1),t=Object(t);++n{this.set(t,e[t])},this);We(this);const i=this[Ve];if(e in this&&!i.has(e))throw new l.a("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>i.get(e),set(t){const n=i.get(e);let o=this.fire("set:"+e,e,t,n);void 0===o&&(o=t),n===o&&i.has(e)||(i.set(e,o),this.fire("change:"+e,e,o,n))}}),this[e]=t},bind(...e){if(!e.length||!Ye(e))throw new l.a("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new l.a("observable-bind-duplicate-properties",this);We(this);const t=this[je];e.forEach(e=>{if(t.has(e))throw new l.a("observable-bind-rebind",this)});const i=new Map;return e.forEach(e=>{const n={property:e,to:[]};t.set(e,n),i.set(e,n)}),{to:qe,toMany:$e,_observable:this,_bindProperties:e,_to:[],_bindings:i}},unbind(...e){if(!this[Ve])return;const t=this[je],i=this[Le];if(e.length){if(!Ye(e))throw new l.a("observable-unbind-wrong-properties",this);e.forEach(e=>{const n=t.get(e);if(!n)return;let o,r,s,a;n.to.forEach(e=>{o=e[0],r=e[1],s=i.get(o),a=s[r],a.delete(n),a.size||delete s[r],Object.keys(s).length||(i.delete(o),this.stopListening(o,"change"))}),t.delete(e)})}else i.forEach((e,t)=>{this.stopListening(t,"change")}),i.clear(),t.clear()},decorate(e){const t=this[e];if(!t)throw new l.a("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:e});this.on(e,(e,i)=>{e.return=t.apply(this,i)}),this[e]=function(...t){return this.fire(e,t)},this[e][Fe]=t,this[Be]||(this[Be]=[]),this[Be].push(e)}};De(He,h),He.stopListening=function(e,t,i){if(!e&&this[Be]){for(const e of this[Be])this[e]=this[e][Fe];delete this[Be]}h.stopListening.call(this,e,t,i)};var Ue=He;function We(e){e[Ve]||(Object.defineProperty(e,Ve,{value:new Map}),Object.defineProperty(e,Le,{value:new Map}),Object.defineProperty(e,je,{value:new Map}))}function qe(...e){const t=function(...e){if(!e.length)throw new l.a("observable-bind-to-parse-error",null);const t={to:[]};let i;"function"==typeof e[e.length-1]&&(t.callback=e.pop());return e.forEach(e=>{if("string"==typeof e)i.properties.push(e);else{if("object"!=typeof e)throw new l.a("observable-bind-to-parse-error",null);i={observable:e,properties:[]},t.to.push(i)}}),t}(...e),i=Array.from(this._bindings.keys()),n=i.length;if(!t.callback&&t.to.length>1)throw new l.a("observable-bind-to-no-callback",this);if(n>1&&t.callback)throw new l.a("observable-bind-to-extra-callback",this);var o;t.to.forEach(e=>{if(e.properties.length&&e.properties.length!==n)throw new l.a("observable-bind-to-properties-length",this);e.properties.length||(e.properties=this._bindProperties)}),this._to=t.to,t.callback&&(this._bindings.get(i[0]).callback=t.callback),o=this._observable,this._to.forEach(e=>{const t=o[Le];let i;t.get(e.observable)||o.listenTo(e.observable,"change",(n,r)=>{i=t.get(e.observable)[r],i&&i.forEach(e=>{Ge(o,e.property)})})}),function(e){let t;e._bindings.forEach((i,n)=>{e._to.forEach(o=>{t=o.properties[i.callback?0:e._bindProperties.indexOf(n)],i.to.push([o.observable,t]),function(e,t,i,n){const o=e[Le],r=o.get(i),s=r||{};s[n]||(s[n]=new Set);s[n].add(t),r||o.set(i,s)}(e._observable,i,o.observable,t)})})}(this),this._bindProperties.forEach(e=>{Ge(this._observable,e)})}function $e(e,t,i){if(this._bindings.size>1)throw new l.a("observable-bind-to-many-not-one-binding",this);this.to(...function(e,t){const i=e.map(e=>[e,t]);return Array.prototype.concat.apply([],i)}(e,t),i)}function Ye(e){return e.every(e=>"string"==typeof e)}function Ge(e,t){const i=e[je].get(t);let n;i.callback?n=i.callback.apply(e,i.to.map(e=>e[0][e[1]])):(n=i.to[0],n=n[0][n[1]]),Object.prototype.hasOwnProperty.call(e,t)?e[t]=n:e.set(t,n)}function Ke(e,...t){t.forEach(t=>{Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t)).forEach(i=>{if(i in e.prototype)return;const n=Object.getOwnPropertyDescriptor(t,i);n.enumerable=!1,Object.defineProperty(e.prototype,i,n)})})}class Qe{constructor(e){this.editor=e,this.set("isEnabled",!0),this._disableStack=new Set}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",Je,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",Je),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function Je(e){e.return=!1,e.stop()}Ke(Qe,Ue);class Ze{constructor(e){this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",()=>{this.refresh()}),this.on("execute",e=>{this.isEnabled||e.stop()},{priority:"high"}),this.listenTo(e,"change:isReadOnly",(e,t,i)=>{i?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",Xe,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",Xe),this.refresh())}execute(){}destroy(){this.stopListening()}}function Xe(e){e.return=!1,e.stop()}Ke(Ze,Ue);class et extends Ze{constructor(e){super(e),this._childCommands=[]}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return null!=t&&t.execute(e)}registerChildCommand(e){this._childCommands.push(e),e.on("change:isEnabled",()=>this._checkEnabled()),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){return this._childCommands.find(e=>e.isEnabled)}}var tt=function(e,t){return function(i){return e(t(i))}},it=tt(Object.getPrototypeOf,Object),nt=Function.prototype,ot=Object.prototype,rt=nt.toString,st=ot.hasOwnProperty,at=rt.call(Object);var lt=function(e){if(!me(e)||"[object Object]"!=S(e))return!1;var t=it(e);if(null===t)return!0;var i=st.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&rt.call(i)==at};var ct=function(){this.__data__=[],this.size=0};var dt=function(e,t){for(var i=e.length;i--;)if(G(e[i][0],t))return i;return-1},ht=Array.prototype.splice;var ut=function(e){var t=this.__data__,i=dt(t,e);return!(i<0)&&(i==t.length-1?t.pop():ht.call(t,i,1),--this.size,!0)};var gt=function(e){var t=this.__data__,i=dt(t,e);return i<0?void 0:t[i][1]};var mt=function(e){return dt(this.__data__,e)>-1};var ft=function(e,t){var i=this.__data__,n=dt(i,e);return n<0?(++this.size,i.push([e,t])):i[n][1]=t,this};function pt(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t{this._setToTarget(e,n,t[n],i)})}}function Ki(e){return $i(e,Qi)}function Qi(e){return Yi(e)?e:void 0}function Ji(e){return!(!e||!e[Symbol.iterator])}class Zi{constructor(e={},t={}){const i=Ji(e);if(i||(t=e),this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],i)for(const t of e)this._items.push(t),this._itemMap.set(this._getItemIdBeforeAdding(t),t)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(e,t){return this.addMany([e],t)}addMany(e,t){if(void 0===t)t=this._items.length;else if(t>this._items.length||t<0)throw new l.a("collection-add-item-invalid-index",this);for(let i=0;i{this._setUpBindToBinding(t=>new e(t))},using:e=>{"function"==typeof e?this._setUpBindToBinding(t=>e(t)):this._setUpBindToBinding(t=>t[e])}}}_setUpBindToBinding(e){const t=this._bindToCollection,i=(i,n,o)=>{const r=t._bindToCollection==this,s=t._bindToInternalToExternalMap.get(n);if(r&&s)this._bindToExternalToInternalMap.set(n,s),this._bindToInternalToExternalMap.set(s,n);else{const i=e(n);if(!i)return void this._skippedIndexesFromExternal.push(o);let r=o;for(const e of this._skippedIndexesFromExternal)o>e&&r--;for(const e of t._skippedIndexesFromExternal)r>=e&&r++;this._bindToExternalToInternalMap.set(n,i),this._bindToInternalToExternalMap.set(i,n),this.add(i,r);for(let e=0;e{const n=this._bindToExternalToInternalMap.get(t);n&&this.remove(n),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce((e,t)=>(it&&e.push(t),e),[])})}_getItemIdBeforeAdding(e){const t=this._idProperty;let i;if(t in e){if(i=e[t],"string"!=typeof i)throw new l.a("collection-add-invalid-id",this);if(this.get(i))throw new l.a("collection-add-item-already-exists",this)}else e[t]=i=s();return i}_remove(e){let t,i,n,o=!1;const r=this._idProperty;if("string"==typeof e?(i=e,n=this._itemMap.get(i),o=!n,n&&(t=this._items.indexOf(n))):"number"==typeof e?(t=e,n=this._items[t],o=!n,n&&(i=n[r])):(n=e,i=n[r],t=this._items.indexOf(n),o=-1==t||!this._itemMap.get(i)),o)throw new l.a("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(i);const s=this._bindToInternalToExternalMap.get(n);return this._bindToInternalToExternalMap.delete(n),this._bindToExternalToInternalMap.delete(s),this.fire("remove",n,t),[n,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}Ke(Zi,h);class Xi{constructor(e,t=[],i=[]){this._context=e,this._plugins=new Map,this._availablePlugins=new Map;for(const e of t)e.pluginName&&this._availablePlugins.set(e.pluginName,e);this._contextPlugins=new Map;for(const[e,t]of i)this._contextPlugins.set(e,t),this._contextPlugins.set(t,e),e.pluginName&&this._availablePlugins.set(e.pluginName,e)}*[Symbol.iterator](){for(const e of this._plugins)"function"==typeof e[0]&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let t=e;throw"function"==typeof e&&(t=e.pluginName||e.name),new l.a("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}init(e,t=[],i=[]){const n=this,o=this._context;!function e(t,i=new Set){t.forEach(t=>{a(t)&&(i.has(t)||(i.add(t),t.pluginName&&!n._availablePlugins.has(t.pluginName)&&n._availablePlugins.set(t.pluginName,t),t.requires&&e(t.requires,i)))})}(e),u(e);const r=[...function e(t,i=new Set){return t.map(e=>a(e)?e:n._availablePlugins.get(e)).reduce((t,n)=>i.has(n)?t:(i.add(n),n.requires&&(u(n.requires,n),e(n.requires,i).forEach(e=>t.add(e))),t.add(n)),new Set)}(e.filter(e=>!d(e,t)))];!function(e,t){for(const i of t){if("function"!=typeof i)throw new l.a("plugincollection-replace-plugin-invalid-type",null,{pluginItem:i});const t=i.pluginName;if(!t)throw new l.a("plugincollection-replace-plugin-missing-name",null,{pluginItem:i});if(i.requires&&i.requires.length)throw new l.a("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const o=n._availablePlugins.get(t);if(!o)throw new l.a("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const r=e.indexOf(o);if(-1===r){if(n._contextPlugins.has(o))return;throw new l.a("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(o.requires&&o.requires.length)throw new l.a("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(r,1,i),n._availablePlugins.set(t,i)}}(r,i);const s=function(e){return e.map(e=>{const t=n._contextPlugins.get(e)||new e(o);return n._add(e,t),t})}(r);return g(s,"init").then(()=>g(s,"afterInit")).then(()=>s);function a(e){return"function"==typeof e}function c(e){return a(e)&&e.isContextPlugin}function d(e,t){return t.some(t=>t===e||(h(e)===t||h(t)===e))}function h(e){return a(e)?e.pluginName||e.name:e}function u(e,i=null){e.map(e=>a(e)?e:n._availablePlugins.get(e)||e).forEach(e=>{!function(e,t){if(a(e))return;if(t)throw new l.a("plugincollection-soft-required",o,{missingPlugin:e,requiredBy:h(t)});throw new l.a("plugincollection-plugin-not-found",o,{plugin:e})}(e,i),function(e,t){if(!c(t))return;if(c(e))return;throw new l.a("plugincollection-context-required",o,{plugin:h(e),requiredBy:h(t)})}(e,i),function(e,i){if(!i)return;if(!d(e,t))return;throw new l.a("plugincollection-required",o,{plugin:h(e),requiredBy:h(i)})}(e,i)})}function g(e,t){return e.reduce((e,i)=>i[t]?n._contextPlugins.has(i)?e:e.then(i[t].bind(i)):e,Promise.resolve())}}destroy(){const e=[];for(const[,t]of this)"function"!=typeof t.destroy||this._contextPlugins.has(t)||e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const i=e.pluginName;if(i){if(this._plugins.has(i))throw new l.a("plugincollection-plugin-name-conflict",null,{pluginName:i,plugin1:this._plugins.get(i).constructor,plugin2:e});this._plugins.set(i,t)}}}function en(e){return Array.isArray(e)?e:[e]}function tn(e,t,i=1){if("number"!=typeof i)throw new l.a("translation-service-quantity-not-a-number",null,{quantity:i});const n=Object.keys(window.CKEDITOR_TRANSLATIONS).length;1===n&&(e=Object.keys(window.CKEDITOR_TRANSLATIONS)[0]);const o=t.id||t.string;if(0===n||!function(e,t){return!!window.CKEDITOR_TRANSLATIONS[e]&&!!window.CKEDITOR_TRANSLATIONS[e].dictionary[t]}(e,o))return 1!==i?t.plural:t.string;const r=window.CKEDITOR_TRANSLATIONS[e].dictionary,s=window.CKEDITOR_TRANSLATIONS[e].getPluralForm||(e=>1===e?0:1);if("string"==typeof r[o])return r[o];const a=Number(s(i));return r[o][a]}Ke(Xi,h),window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={});const nn=["ar","ara","fa","per","fas","he","heb","ku","kur","ug","uig"];function on(e){return nn.includes(e)?"rtl":"ltr"}class rn{constructor(e={}){this.uiLanguage=e.uiLanguage||"en",this.contentLanguage=e.contentLanguage||this.uiLanguage,this.uiLanguageDirection=on(this.uiLanguage),this.contentLanguageDirection=on(this.contentLanguage),this.t=(e,t)=>this._t(e,t)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(e,t=[]){t=en(t),"string"==typeof e&&(e={string:e});const i=!!e.plural?t[0]:1;return function(e,t){return e.replace(/%(\d+)/g,(e,i)=>ie.destroy())).then(()=>this.plugins.destroy())}_addEditor(e,t){if(this._contextOwner)throw new l.a("context-addeditor-private-context");this.editors.add(e),t&&(this._contextOwner=e)}_removeEditor(e){return this.editors.has(e)&&this.editors.remove(e),this._contextOwner===e?this.destroy():Promise.resolve()}_getEditorConfig(){const e={};for(const t of this.config.names())["plugins","removePlugins","extraPlugins"].includes(t)||(e[t]=this.config.get(t));return e}static create(e){return new Promise(t=>{const i=new this(e);t(i.initPlugins().then(()=>i))})}}class an{constructor(e){this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}function ln(e,t){const i=Math.min(e.length,t.length);for(let n=0;ne.data.length)throw new l.a("view-textproxy-wrong-offsetintext",this);if(i<0||t+i>e.data.length)throw new l.a("view-textproxy-wrong-length",this);this.data=e.data.substring(t,t+i),this.offsetInText=t}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let i=e.includeSelf?this.textNode:this.parent;for(;null!==i;)t[e.parentFirst?"push":"unshift"](i),i=i.parent;return t}}function gn(e){return Ji(e)?new Map(e):function(e){const t=new Map;for(const i in e)t.set(i,e[i]);return t}(e)}class mn{constructor(...e){this._patterns=[],this.add(...e)}add(...e){for(let t of e)("string"==typeof t||t instanceof RegExp)&&(t={name:t}),this._patterns.push(t)}match(...e){for(const t of e)for(const e of this._patterns){const i=fn(t,e);if(i)return{element:t,pattern:e,match:i}}return null}matchAll(...e){const t=[];for(const i of e)for(const e of this._patterns){const n=fn(i,e);n&&t.push({element:i,pattern:e,match:n})}return t.length>0?t:null}getElementName(){if(1!==this._patterns.length)return null;const e=this._patterns[0],t=e.name;return"function"==typeof e||!t||t instanceof RegExp?null:t}}function fn(e,t){if("function"==typeof t)return t(e);const i={};return t.name&&(i.name=function(e,t){if(e instanceof RegExp)return e.test(t);return e===t}(t.name,e.name),!i.name)||t.attributes&&(i.attributes=function(e,t){const i=new Set(t.getAttributeKeys());lt(e)?(void 0!==e.style&&Object(l.b)("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&Object(l.b)("matcher-pattern-deprecated-attributes-class-key",e)):(i.delete("style"),i.delete("class"));return pn(e,i,e=>t.getAttribute(e))}(t.attributes,e),!i.attributes)?null:!(t.classes&&(i.classes=function(e,t){return pn(e,t.getClassNames())}(t.classes,e),!i.classes))&&(!(t.styles&&(i.styles=function(e,t){return pn(e,t.getStyleNames(!0),e=>t.getStyle(e))}(t.styles,e),!i.styles))&&i)}function pn(e,t,i){const n=function(e){if(Array.isArray(e))return e.map(e=>lt(e)?(void 0!==e.key&&void 0!==e.value||Object(l.b)("matcher-pattern-missing-key-or-value",e),[e.key,e.value]):[e,!0]);if(lt(e))return Object.entries(e);return[[e,!0]]}(e),o=Array.from(t),r=[];return n.forEach(([e,t])=>{o.forEach(n=>{(function(e,t){return!0===e||e===t||e instanceof RegExp&&e.test(t)})(e,n)&&function(e,t,i){if(!0===e)return!0;const n=i(t);return e===n||e instanceof RegExp&&e.test(n)}(t,n,i)&&r.push(n)})}),!n.length||r.lengtho?0:o+t),(i=i>o?o:i)<0&&(i+=o),o=t>i?0:i-t>>>0,t>>>=0;for(var r=Array(o);++nt===e);return Array.isArray(t)}set(e,t){if(w(e))for(const[t,i]of Object.entries(e))this._styleProcessor.toNormalizedForm(t,i,this._styles);else this._styleProcessor.toNormalizedForm(e,t,this._styles)}remove(e){const t=Zn(e);Ln(this._styles,t),delete this._styles[e],this._cleanEmptyObjectsOnPath(t)}getNormalized(e){return this._styleProcessor.getNormalized(e,this._styles)}toString(){return this.isEmpty?"":this._getStylesEntries().map(e=>e.join(":")).sort().join(";")+";"}getAsString(e){if(this.isEmpty)return;if(this._styles[e]&&!w(this._styles[e]))return this._styles[e];const t=this._styleProcessor.getReducedForm(e,this._styles).find(([t])=>t===e);return Array.isArray(t)?t[1]:void 0}getStyleNames(e=!1){if(this.isEmpty)return[];if(e)return this._styleProcessor.getStyleNames(this._styles);return this._getStylesEntries().map(([e])=>e)}clear(){this._styles={}}_getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const i of t)e.push(...this._styleProcessor.getReducedForm(i,this._styles));return e}_cleanEmptyObjectsOnPath(e){const t=e.split(".");if(!(t.length>1))return;const i=t.splice(0,t.length-1).join("."),n=jn(this._styles,i);if(!n)return;!Array.from(Object.keys(n)).length&&this.remove(i)}}class Jn{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,i){if(w(t))Xn(i,Zn(e),t);else if(this._normalizers.has(e)){const n=this._normalizers.get(e),{path:o,value:r}=n(t);Xn(i,o,r)}else Xn(i,e,t)}getNormalized(e,t){if(!e)return Yn({},t);if(void 0!==t[e])return t[e];if(this._extractors.has(e)){const i=this._extractors.get(e);if("string"==typeof i)return jn(t,i);const n=i(e,t);if(n)return n}return jn(t,Zn(e))}getReducedForm(e,t){const i=this.getNormalized(e,t);if(void 0===i)return[];if(this._reducers.has(e)){return this._reducers.get(e)(i)}return[[e,i]]}getStyleNames(e){const t=Array.from(this._consumables.keys()).filter(t=>{const i=this.getNormalized(t,e);return i&&"object"==typeof i?Object.keys(i).length:i}),i=new Set([...t,...Object.keys(e)]);return Array.from(i.values())}getRelatedStyles(e){return this._consumables.get(e)||[]}setNormalizer(e,t){this._normalizers.set(e,t)}setExtractor(e,t){this._extractors.set(e,t)}setReducer(e,t){this._reducers.set(e,t)}setStyleRelation(e,t){this._mapStyleNames(e,t);for(const i of t)this._mapStyleNames(i,[e])}_mapStyleNames(e,t){this._consumables.has(e)||this._consumables.set(e,[]),this._consumables.get(e).push(...t)}}function Zn(e){return e.replace("-",".")}function Xn(e,t,i){let n=i;w(i)&&(n=Yn({},jn(e,t),i)),Kn(e,t,n)}class eo extends dn{constructor(e,t,i,n){if(super(e),this.name=t,this._attrs=function(e){e=gn(e);for(const[t,i]of e)null===i?e.delete(t):"string"!=typeof i&&e.set(t,String(i));return e}(i),this._children=[],n&&this._insertChild(0,n),this._classes=new Set,this._attrs.has("class")){const e=this._attrs.get("class");to(this._classes,e),this._attrs.delete("class")}this._styles=new Qn(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map,this._isAllowedInsideAttributeElement=!1}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}get isAllowedInsideAttributeElement(){return this._isAllowedInsideAttributeElement}is(e,t=null){return t?t===this.name&&("element"===e||"view:element"===e):"element"===e||"view:element"===e||"node"===e||"view:node"===e}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(e){if("class"==e)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==e){const e=this._styles.toString();return""==e?void 0:e}return this._attrs.get(e)}hasAttribute(e){return"class"==e?this._classes.size>0:"style"==e?!this._styles.isEmpty:this._attrs.has(e)}isSimilar(e){if(!(e instanceof eo))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this.isAllowedInsideAttributeElement!=e.isAllowedInsideAttributeElement)return!1;if(this._attrs.size!==e._attrs.size||this._classes.size!==e._classes.size||this._styles.size!==e._styles.size)return!1;for(const[t,i]of this._attrs)if(!e._attrs.has(t)||e._attrs.get(t)!==i)return!1;for(const t of this._classes)if(!e._classes.has(t))return!1;for(const t of this._styles.getStyleNames())if(!e._styles.has(t)||e._styles.getAsString(t)!==this._styles.getAsString(t))return!1;return!0}hasClass(...e){for(const t of e)if(!this._classes.has(t))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(e){return this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles.getNormalized(e)}getStyleNames(e=!1){return this._styles.getStyleNames(e)}hasStyle(...e){for(const t of e)if(!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new mn(...e);let i=this.parent;for(;i;){if(t.match(i))return i;i=i.parent}return null}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const e=Array.from(this._classes).sort().join(","),t=this._styles.toString(),i=Array.from(this._attrs).map(e=>`${e[0]}="${e[1]}"`).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==i?"":" "+i)}_clone(e=!1){const t=[];if(e)for(const i of this.getChildren())t.push(i._clone(e));const i=new this.constructor(this.document,this.name,this._attrs,t);return i._classes=new Set(this._classes),i._styles.set(this._styles.getNormalized()),i._customProperties=new Map(this._customProperties),i.getFillerOffset=this.getFillerOffset,i._isAllowedInsideAttributeElement=this.isAllowedInsideAttributeElement,i}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this);let i=0;const n=function(e,t){if("string"==typeof t)return[new hn(e,t)];Ji(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new hn(e,t):t instanceof un?new hn(e,t.data):t)}(this.document,t);for(const t of n)null!==t.parent&&t._remove(),t.parent=this,t.document=this.document,this._children.splice(e,0,t),e++,i++;return i}_removeChildren(e,t=1){this._fireChange("children",this);for(let i=e;i0&&(this._classes.clear(),!0):"style"==e?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(e)}_addClass(e){this._fireChange("attributes",this);for(const t of en(e))this._classes.add(t)}_removeClass(e){this._fireChange("attributes",this);for(const t of en(e))this._classes.delete(t)}_setStyle(e,t){this._fireChange("attributes",this),this._styles.set(e,t)}_removeStyle(e){this._fireChange("attributes",this);for(const t of en(e))this._styles.remove(t)}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}}function to(e,t){const i=t.split(/\s+/);e.clear(),i.forEach(t=>e.add(t))}class io extends eo{constructor(e,t,i,n){super(e,t,i,n),this.getFillerOffset=no}is(e,t=null){return t?t===this.name&&("containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}}function no(){const e=[...this.getChildren()],t=e[this.childCount-1];if(t&&t.is("element","br"))return this.childCount;for(const t of e)if(!t.is("uiElement"))return null;return this.childCount}class oo extends io{constructor(e,t,i,n){super(e,t,i,n),this.set("isReadOnly",!1),this.set("isFocused",!1),this.bind("isReadOnly").to(e),this.bind("isFocused").to(e,"isFocused",t=>t&&e.selection.editableElement==this),this.listenTo(e.selection,"change",()=>{this.isFocused=e.isFocused&&e.selection.editableElement==this})}is(e,t=null){return t?t===this.name&&("editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}destroy(){this.stopListening()}}Ke(oo,Ue);const ro=Symbol("rootName");class so extends oo{constructor(e,t){super(e,t),this.rootName="main"}is(e,t=null){return t?t===this.name&&("rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}get rootName(){return this.getCustomProperty(ro)}set rootName(e){this._setCustomProperty(ro,e)}set _name(e){this.name=e}}class ao{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new l.a("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new l.a("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this.position=lo._createAt(e.startPosition):this.position=lo._createAt(e.boundaries["backward"==e.direction?"end":"start"]),this.direction=e.direction||"forward",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(e){let t,i,n;do{n=this.position,({done:t,value:i}=this.next())}while(!t&&e(i));t||(this.position=n)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let e=this.position.clone();const t=this.position,i=e.parent;if(null===i.parent&&e.offset===i.childCount)return{done:!0};if(i===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0};let n;if(i instanceof hn){if(e.isAtEnd)return this.position=lo._createAfter(i),this._next();n=i.data[e.offset]}else n=i.getChild(e.offset);if(n instanceof eo)return this.shallow?e.offset++:e=new lo(n,0),this.position=e,this._formatReturnValue("elementStart",n,t,e,1);if(n instanceof hn){if(this.singleCharacters)return e=new lo(n,0),this.position=e,this._next();{let i,o=n.data.length;return n==this._boundaryEndParent?(o=this.boundaries.end.offset,i=new un(n,0,o),e=lo._createAfter(i)):(i=new un(n,0,n.data.length),e.offset++),this.position=e,this._formatReturnValue("text",i,t,e,o)}}if("string"==typeof n){let n;if(this.singleCharacters)n=1;else{n=(i===this._boundaryEndParent?this.boundaries.end.offset:i.data.length)-e.offset}const o=new un(i,e.offset,n);return e.offset+=n,this.position=e,this._formatReturnValue("text",o,t,e,n)}return e=lo._createAfter(i),this.position=e,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",i,t,e)}_previous(){let e=this.position.clone();const t=this.position,i=e.parent;if(null===i.parent&&0===e.offset)return{done:!0};if(i==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0};let n;if(i instanceof hn){if(e.isAtStart)return this.position=lo._createBefore(i),this._previous();n=i.data[e.offset-1]}else n=i.getChild(e.offset-1);if(n instanceof eo)return this.shallow?(e.offset--,this.position=e,this._formatReturnValue("elementStart",n,t,e,1)):(e=new lo(n,n.childCount),this.position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",n,t,e));if(n instanceof hn){if(this.singleCharacters)return e=new lo(n,n.data.length),this.position=e,this._previous();{let i,o=n.data.length;if(n==this._boundaryStartParent){const t=this.boundaries.start.offset;i=new un(n,t,n.data.length-t),o=i.data.length,e=lo._createBefore(i)}else i=new un(n,0,n.data.length),e.offset--;return this.position=e,this._formatReturnValue("text",i,t,e,o)}}if("string"==typeof n){let n;if(this.singleCharacters)n=1;else{const t=i===this._boundaryStartParent?this.boundaries.start.offset:0;n=e.offset-t}e.offset-=n;const o=new un(i,e.offset,n);return this.position=e,this._formatReturnValue("text",o,t,e,n)}return e=lo._createBefore(i),this.position=e,this._formatReturnValue("elementStart",i,t,e,1)}_formatReturnValue(e,t,i,n,o){return t instanceof un&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?i=lo._createAfter(t.textNode):(n=lo._createAfter(t.textNode),this.position=n)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?i=lo._createBefore(t.textNode):(n=lo._createBefore(t.textNode),this.position=n))),{done:!1,value:{type:e,item:t,previousPosition:i,nextPosition:n,length:o}}}}class lo{constructor(e,t){this.parent=e,this.offset=t}get nodeAfter(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}get root(){return this.parent.root}get editableElement(){let e=this.parent;for(;!(e instanceof oo);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=lo._createAt(this),i=t.offset+e;return t.offset=i<0?0:i,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const i=new ao(t);return i.skip(e),i.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(e){const t=this.getAncestors(),i=e.getAncestors();let n=0;for(;t[n]==i[n]&&t[n];)n++;return 0===n?null:t[n-1]}is(e){return"position"===e||"view:position"===e}isEqual(e){return this.parent==e.parent&&this.offset==e.offset}isBefore(e){return"before"==this.compareWith(e)}isAfter(e){return"after"==this.compareWith(e)}compareWith(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";const t=this.parent.is("node")?this.parent.getPath():[],i=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),i.push(e.offset);const n=ln(t,i);switch(n){case"prefix":return"before";case"extension":return"after";default:return t[n]0?new this(i,n):new this(n,i)}static _createIn(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}static _createOn(e){const t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(lo._createBefore(e),t)}}function ho(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}function uo(e){let t=0;for(const i of e)t++;return t}class go{constructor(e=null,t,i){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",this.setTo(e,t,i)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}get focus(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const e of this._ranges)yield e.clone()}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?e.clone():null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?e.clone():null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}isEqual(e){if(this.isFake!=e.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel)return!1;if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let i=!1;for(const n of e._ranges)if(t.isEqual(n)){i=!0;break}if(!i)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=uo(this.getRanges());if(t!=uo(e.getRanges()))return!1;if(0==t)return!0;for(let t of this.getRanges()){t=t.getTrimmed();let i=!1;for(let n of e.getRanges())if(n=n.getTrimmed(),t.start.isEqual(n.start)&&t.end.isEqual(n.end)){i=!0;break}if(!i)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(e,t,i){if(null===e)this._setRanges([]),this._setFakeOptions(t);else if(e instanceof go||e instanceof mo)this._setRanges(e.getRanges(),e.isBackward),this._setFakeOptions({fake:e.isFake,label:e.fakeSelectionLabel});else if(e instanceof co)this._setRanges([e],t&&t.backward),this._setFakeOptions(t);else if(e instanceof lo)this._setRanges([new co(e)]),this._setFakeOptions(t);else if(e instanceof dn){const n=!!i&&!!i.backward;let o;if(void 0===t)throw new l.a("view-selection-setto-required-second-parameter",this);o="in"==t?co._createIn(e):"on"==t?co._createOn(e):new co(lo._createAt(e,t)),this._setRanges([o],n),this._setFakeOptions(i)}else{if(!Ji(e))throw new l.a("view-selection-setto-not-selectable",this);this._setRanges(e,t&&t.backward),this._setFakeOptions(t)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new l.a("view-selection-setfocus-no-ranges",this);const i=lo._createAt(e,t);if("same"==i.compareWith(this.focus))return;const n=this.anchor;this._ranges.pop(),"before"==i.compareWith(n)?this._addRange(new co(i,n),!0):this._addRange(new co(n,i)),this.fire("change")}is(e){return"selection"===e||"view:selection"===e}_setRanges(e,t=!1){e=Array.from(e),this._ranges=[];for(const t of e)this._addRange(t);this._lastRangeBackward=!!t}_setFakeOptions(e={}){this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}_addRange(e,t=!1){if(!(e instanceof co))throw new l.a("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}_pushRange(e){for(const t of this._ranges)if(e.isIntersecting(t))throw new l.a("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new co(e.start,e.end))}}Ke(go,h);class mo{constructor(e=null,t,i){this._selection=new go,this._selection.delegate("change").to(this),this._selection.setTo(e,t,i)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(e){return this._selection.isEqual(e)}isSimilar(e){return this._selection.isSimilar(e)}is(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e}_setTo(e,t,i){this._selection.setTo(e,t,i)}_setFocus(e,t){this._selection.setFocus(e,t)}}Ke(mo,h);class fo extends o{constructor(e,t,i){super(e,t),this.startRange=i,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}const po=Symbol("bubbling contexts");var bo={fire(e,...t){try{const i=e instanceof o?e:new o(this,e),n=vo(this);if(!n.size)return;if(wo(i,"capturing",this),ko(n,"$capture",i,...t))return i.return;const r=i.startRange||this.selection.getFirstRange(),s=r?r.getContainedElement():null,a=!!s&&Boolean(_o(n,s));let l=s||function(e){if(!e)return null;const t=e.start.parent,i=e.end.parent,n=t.getPath(),o=i.getPath();return n.length>o.length?t:i}(r);if(wo(i,"atTarget",l),!a){if(ko(n,"$text",i,...t))return i.return;wo(i,"bubbling",l)}for(;l;){if(l.is("rootElement")){if(ko(n,"$root",i,...t))return i.return}else if(l.is("element")&&ko(n,l.name,i,...t))return i.return;if(ko(n,l,i,...t))return i.return;l=l.parent,wo(i,"bubbling",l)}return wo(i,"bubbling",this),ko(n,"$document",i,...t),i.return}catch(e){l.a.rethrowUnexpectedError(e,this)}},_addEventListener(e,t,i){const n=en(i.context||"$document"),o=vo(this);for(const r of n){let n=o.get(r);n||(n=Object.create(h),o.set(r,n)),this.listenTo(n,e,t,i)}},_removeEventListener(e,t){const i=vo(this);for(const n of i.values())this.stopListening(n,e,t)}};function wo(e,t,i){e instanceof fo&&(e._eventPhase=t,e._currentTarget=i)}function ko(e,t,i,...n){const o="string"==typeof t?e.get(t):_o(e,t);return!!o&&(o.fire(i,...n),i.stop.called)}function _o(e,t){for(const[i,n]of e)if("function"==typeof i&&i(t))return n;return null}function vo(e){return e[po]||(e[po]=new Map),e[po]}class yo{constructor(e){this.selection=new mo,this.roots=new Zi({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.map(e=>e.destroy()),this.stopListening()}_callPostFixers(e){let t=!1;do{for(const i of this._postFixers)if(t=i(e),t)break}while(t)}}Ke(yo,bo),Ke(yo,Ue);class xo extends eo{constructor(e,t,i,n){super(e,t,i,n),this.getFillerOffset=Ao,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new l.a("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}is(e,t=null){return t?t===this.name&&("attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e):"attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}}function Ao(){if(Co(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(Co(e)>1)return null;e=e.parent}return!e||Co(e)>1?null:this.childCount}function Co(e){return Array.from(e.getChildren()).filter(e=>!e.is("uiElement")).length}xo.DEFAULT_PRIORITY=10;class To extends eo{constructor(e,t,i,n){super(e,t,i,n),this._isAllowedInsideAttributeElement=!0,this.getFillerOffset=Eo}is(e,t=null){return t?t===this.name&&("emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e):"emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof dn||Array.from(t).length>0))throw new l.a("view-emptyelement-cannot-add",[this,t])}}function Eo(){return null}const Io=navigator.userAgent.toLowerCase();var So={isMac:function(e){return e.indexOf("macintosh")>-1}(Io),isGecko:function(e){return!!e.match(/gecko\/\d+/)}(Io),isSafari:function(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}(Io),isAndroid:function(e){return e.indexOf("android")>-1}(Io),isBlink:function(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}(Io),features:{isRegExpUnicodePropertySupported:function(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}()}};const Po={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},Mo={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},No=function(){const e={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,shift:2228224,alt:4456448,cmd:8912896};for(let t=65;t<=90;t++){const i=String.fromCharCode(t);e[i.toLowerCase()]=t}for(let t=48;t<=57;t++)e[t-48]=t;for(let t=112;t<=123;t++)e["f"+(t-111)]=t;return e}(),Ro=Object.fromEntries(Object.entries(No).map(([e,t])=>[t,e.charAt(0).toUpperCase()+e.slice(1)]));function Oo(e){let t;if("string"==typeof e){if(t=No[e.toLowerCase()],!t)throw new l.a("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?No.alt:0)+(e.ctrlKey?No.ctrl:0)+(e.shiftKey?No.shift:0)+(e.metaKey?No.cmd:0);return t}function zo(e){return"string"==typeof e&&(e=function(e){return e.split("+").map(e=>e.trim())}(e)),e.map(e=>"string"==typeof e?function(e){if(e.endsWith("!"))return Oo(e.slice(0,-1));const t=Oo(e);return So.isMac&&t==No.ctrl?No.cmd:t}(e):e).reduce((e,t)=>t+e,0)}function Do(e){let t=zo(e);return Object.entries(So.isMac?Po:Mo).reduce((e,[i,n])=>(0!=(t&No[i])&&(t&=~No[i],e+=n),e),"")+(t?Ro[t]:"")}function Vo(e,t){const i="ltr"===t;switch(e){case No.arrowleft:return i?"left":"right";case No.arrowright:return i?"right":"left";case No.arrowup:return"up";case No.arrowdown:return"down"}}function Lo(e,t){const i=Vo(e,t);return"down"===i||"right"===i}class jo extends eo{constructor(e,t,i,n){super(e,t,i,n),this._isAllowedInsideAttributeElement=!0,this.getFillerOffset=Fo}is(e,t=null){return t?t===this.name&&("uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e):"uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof dn||Array.from(t).length>0))throw new l.a("view-uielement-cannot-add",this)}render(e){return this.toDomElement(e)}toDomElement(e){const t=e.createElement(this.name);for(const e of this.getAttributeKeys())t.setAttribute(e,this.getAttribute(e));return t}}function Bo(e){e.document.on("arrowKey",(t,i)=>function(e,t,i){if(t.keyCode==No.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),n=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(n||t.shiftKey){const t=e.focusNode,o=e.focusOffset,r=i.domPositionToView(t,o);if(null===r)return;let s=!1;const a=r.getLastMatchingPosition(e=>(e.item.is("uiElement")&&(s=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement"))));if(s){const t=i.viewPositionToDom(a);n?e.collapse(t.parent,t.offset):e.extend(t.parent,t.offset)}}}}(0,i,e.domConverter),{priority:"low"})}function Fo(){return null}class Ho extends eo{constructor(e,t,i,n){super(e,t,i,n),this._isAllowedInsideAttributeElement=!0,this.getFillerOffset=Uo}is(e,t=null){return t?t===this.name&&("rawElement"===e||"view:rawElement"===e||"element"===e||"view:element"===e):"rawElement"===e||"view:rawElement"===e||e===this.name||e==="view:"+this.name||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof dn||Array.from(t).length>0))throw new l.a("view-rawelement-cannot-add",[this,t])}}function Uo(){return null}class Wo{constructor(e,t){this.document=e,this._children=[],t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(e){return"documentFragment"===e||"view:documentFragment"===e}_appendChild(e){return this._insertChild(this.childCount,e)}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(e,t){this._fireChange("children",this);let i=0;const n=function(e,t){if("string"==typeof t)return[new hn(e,t)];Ji(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new hn(e,t):t instanceof un?new hn(e,t.data):t)}(this.document,t);for(const t of n)null!==t.parent&&t._remove(),t.parent=this,this._children.splice(e,0,t),e++,i++;return i}_removeChildren(e,t=1){this._fireChange("children",this);for(let i=e;i{}),void 0!==n.isAllowedInsideAttributeElement&&(o._isAllowedInsideAttributeElement=n.isAllowedInsideAttributeElement),o}setAttribute(e,t,i){i._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,i){lt(e)&&void 0===i&&(i=t),i._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,i){i._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}breakAttributes(e){return e instanceof lo?this._breakAttributes(e):this._breakAttributesRange(e)}breakContainer(e){const t=e.parent;if(!t.is("containerElement"))throw new l.a("view-writer-break-non-container-element",this.document);if(!t.parent)throw new l.a("view-writer-break-root",this.document);if(e.isAtStart)return lo._createBefore(t);if(!e.isAtEnd){const i=t._clone(!1);this.insert(lo._createAfter(t),i);const n=new co(e,lo._createAt(t,"end")),o=new lo(i,0);this.move(n,o)}return lo._createAfter(t)}mergeAttributes(e){const t=e.offset,i=e.parent;if(i.is("$text"))return e;if(i.is("attributeElement")&&0===i.childCount){const e=i.parent,t=i.index;return i._remove(),this._removeFromClonedElementsGroup(i),this.mergeAttributes(new lo(e,t))}const n=i.getChild(t-1),o=i.getChild(t);if(!n||!o)return e;if(n.is("$text")&&o.is("$text"))return Qo(n,o);if(n.is("attributeElement")&&o.is("attributeElement")&&n.isSimilar(o)){const e=n.childCount;return n._appendChild(o.getChildren()),o._remove(),this._removeFromClonedElementsGroup(o),this.mergeAttributes(new lo(n,e))}return e}mergeContainers(e){const t=e.nodeBefore,i=e.nodeAfter;if(!(t&&i&&t.is("containerElement")&&i.is("containerElement")))throw new l.a("view-writer-merge-containers-invalid-position",this.document);const n=t.getChild(t.childCount-1),o=n instanceof hn?lo._createAt(n,"end"):lo._createAt(t,"end");return this.move(co._createIn(i),lo._createAt(t,"end")),this.remove(co._createOn(i)),o}insert(e,t){(function e(t,i){for(const n of t){if(!Jo.some(e=>n instanceof e))throw new l.a("view-writer-insert-invalid-node-type",i);n.is("$text")||e(n.getChildren(),i)}})(t=Ji(t)?[...t]:[t],this.document);const i=t.reduce((e,t)=>{const i=e[e.length-1],n=!(t.is("uiElement")&&t.isAllowedInsideAttributeElement);return i&&i.breakAttributes==n?i.nodes.push(t):e.push({breakAttributes:n,nodes:[t]}),e},[]);let n=null,o=e;for(const{nodes:e,breakAttributes:t}of i){const i=this._insertNodes(o,e,t);n||(n=i.start),o=i.end}return n?new co(n,o):new co(e)}remove(e){const t=e instanceof co?e:co._createOn(e);if(Xo(t,this.document),t.isCollapsed)return new Wo(this.document);const{start:i,end:n}=this._breakAttributesRange(t,!0),o=i.parent,r=n.offset-i.offset,s=o._removeChildren(i.offset,r);for(const e of s)this._removeFromClonedElementsGroup(e);const a=this.mergeAttributes(i);return t.start=a,t.end=a.clone(),new Wo(this.document,s)}clear(e,t){Xo(e,this.document);const i=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const n of i){const i=n.item;let o;if(i.is("element")&&t.isSimilar(i))o=co._createOn(i);else if(!n.nextPosition.isAfter(e.start)&&i.is("$textProxy")){const e=i.getAncestors().find(e=>e.is("element")&&t.isSimilar(e));e&&(o=co._createIn(e))}o&&(o.end.isAfter(e.end)&&(o.end=e.end),o.start.isBefore(e.start)&&(o.start=e.start),this.remove(o))}}move(e,t){let i;if(t.isAfter(e.end)){const n=(t=this._breakAttributes(t,!0)).parent,o=n.childCount;e=this._breakAttributesRange(e,!0),i=this.remove(e),t.offset+=n.childCount-o}else i=this.remove(e);return this.insert(t,i)}wrap(e,t){if(!(t instanceof xo))throw new l.a("view-writer-wrap-invalid-attribute",this.document);if(Xo(e,this.document),e.isCollapsed){let n=e.start;n.parent.is("element")&&(i=n.parent,!Array.from(i.getChildren()).some(e=>!e.is("uiElement")))&&(n=n.getLastMatchingPosition(e=>e.item.is("uiElement"))),n=this._wrapPosition(n,t);const o=this.document.selection;return o.isCollapsed&&o.getFirstPosition().isEqual(e.start)&&this.setSelection(n),new co(n)}return this._wrapRange(e,t);var i}unwrap(e,t){if(!(t instanceof xo))throw new l.a("view-writer-unwrap-invalid-attribute",this.document);if(Xo(e,this.document),e.isCollapsed)return e;const{start:i,end:n}=this._breakAttributesRange(e,!0),o=i.parent,r=this._unwrapChildren(o,i.offset,n.offset,t),s=this.mergeAttributes(r.start);s.isEqual(r.start)||r.end.offset--;const a=this.mergeAttributes(r.end);return new co(s,a)}rename(e,t){const i=new io(this.document,e,t.getAttributes());return this.insert(lo._createAfter(t),i),this.move(co._createIn(t),lo._createAt(i,0)),this.remove(co._createOn(t)),i}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return lo._createAt(e,t)}createPositionAfter(e){return lo._createAfter(e)}createPositionBefore(e){return lo._createBefore(e)}createRange(e,t){return new co(e,t)}createRangeOn(e){return co._createOn(e)}createRangeIn(e){return co._createIn(e)}createSelection(e,t,i){return new go(e,t,i)}_insertNodes(e,t,i){let n,o;if(n=i?$o(e):e.parent.is("$text")?e.parent.parent:e.parent,!n)throw new l.a("view-writer-invalid-position-container",this.document);o=i?this._breakAttributes(e,!0):e.parent.is("$text")?Ko(e):e;const r=n._insertChild(o.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const s=o.getShiftedBy(r),a=this.mergeAttributes(o);a.isEqual(o)||s.offset--;const c=this.mergeAttributes(s);return new co(a,c)}_wrapChildren(e,t,i,n){let o=t;const r=[];for(;o!1,e.parent._insertChild(e.offset,i);const n=new co(e,e.getShiftedBy(1));this.wrap(n,t);const o=new lo(i.parent,i.index);i._remove();const r=o.nodeBefore,s=o.nodeAfter;return r instanceof hn&&s instanceof hn?Qo(r,s):Go(o)}_wrapAttributeElement(e,t){if(!er(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const i of e.getAttributeKeys())if("class"!==i&&"style"!==i&&t.hasAttribute(i)&&t.getAttribute(i)!==e.getAttribute(i))return!1;for(const i of e.getStyleNames())if(t.hasStyle(i)&&t.getStyle(i)!==e.getStyle(i))return!1;for(const i of e.getAttributeKeys())"class"!==i&&"style"!==i&&(t.hasAttribute(i)||this.setAttribute(i,e.getAttribute(i),t));for(const i of e.getStyleNames())t.hasStyle(i)||this.setStyle(i,e.getStyle(i),t);for(const i of e.getClassNames())t.hasClass(i)||this.addClass(i,t);return!0}_unwrapAttributeElement(e,t){if(!er(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const i of e.getAttributeKeys())if("class"!==i&&"style"!==i&&(!t.hasAttribute(i)||t.getAttribute(i)!==e.getAttribute(i)))return!1;if(!t.hasClass(...e.getClassNames()))return!1;for(const i of e.getStyleNames())if(!t.hasStyle(i)||t.getStyle(i)!==e.getStyle(i))return!1;for(const i of e.getAttributeKeys())"class"!==i&&"style"!==i&&this.removeAttribute(i,t);return this.removeClass(Array.from(e.getClassNames()),t),this.removeStyle(Array.from(e.getStyleNames()),t),!0}_breakAttributesRange(e,t=!1){const i=e.start,n=e.end;if(Xo(e,this.document),e.isCollapsed){const i=this._breakAttributes(e.start,t);return new co(i,i)}const o=this._breakAttributes(n,t),r=o.parent.childCount,s=this._breakAttributes(i,t);return o.offset+=o.parent.childCount-r,new co(s,o)}_breakAttributes(e,t=!1){const i=e.offset,n=e.parent;if(e.parent.is("emptyElement"))throw new l.a("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new l.a("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new l.a("view-writer-cannot-break-raw-element",this.document);if(!t&&n.is("$text")&&Zo(n.parent))return e.clone();if(Zo(n))return e.clone();if(n.is("$text"))return this._breakAttributes(Ko(e),t);if(i==n.childCount){const e=new lo(n.parent,n.index+1);return this._breakAttributes(e,t)}if(0===i){const e=new lo(n.parent,n.index);return this._breakAttributes(e,t)}{const e=n.index+1,o=n._clone();n.parent._insertChild(e,o),this._addToClonedElementsGroup(o);const r=n.childCount-i,s=n._removeChildren(i,r);o._appendChild(s);const a=new lo(n.parent,e);return this._breakAttributes(a,t)}}_addToClonedElementsGroup(e){if(!e.root.is("rootElement"))return;if(e.is("element"))for(const t of e.getChildren())this._addToClonedElementsGroup(t);const t=e.id;if(!t)return;let i=this._cloneGroups.get(t);i||(i=new Set,this._cloneGroups.set(t,i)),i.add(e),e._clonesGroup=i}_removeFromClonedElementsGroup(e){if(e.is("element"))for(const t of e.getChildren())this._removeFromClonedElementsGroup(t);const t=e.id;if(!t)return;const i=this._cloneGroups.get(t);i&&i.delete(e)}}function $o(e){let t=e.parent;for(;!Zo(t);){if(!t)return;t=t.parent}return t}function Yo(e,t){return e.priorityt.priority)&&e.getIdentity()e.createTextNode(" "),nr=e=>{const t=e.createElement("span");return t.dataset.ckeFiller=!0,t.innerHTML=" ",t},or=e=>{const t=e.createElement("br");return t.dataset.ckeFiller=!0,t},rr="⁠".repeat(7);function sr(e){return tr(e)&&e.data.substr(0,7)===rr}function ar(e){return 7==e.data.length&&sr(e)}function lr(e){return sr(e)?e.data.slice(7):e.data}function cr(e,t){if(t.keyCode==No.arrowleft){const e=t.domTarget.ownerDocument.defaultView.getSelection();if(1==e.rangeCount&&e.getRangeAt(0).collapsed){const t=e.getRangeAt(0).startContainer,i=e.getRangeAt(0).startOffset;sr(t)&&i<=7&&e.collapse(t,0)}}}function dr(e,t,i,n=!1){i=i||function(e,t){return e===t},Array.isArray(e)||(e=Array.prototype.slice.call(e)),Array.isArray(t)||(t=Array.prototype.slice.call(t));const o=function(e,t,i){const n=hr(e,t,i);if(-1===n)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const o=ur(e,n),r=ur(t,n),s=hr(o,r,i),a=e.length-s,l=t.length-s;return{firstIndex:n,lastIndexOld:a,lastIndexNew:l}}(e,t,i);return n?function(e,t){const{firstIndex:i,lastIndexOld:n,lastIndexNew:o}=e;if(-1===i)return Array(t).fill("equal");let r=[];i>0&&(r=r.concat(Array(i).fill("equal")));o-i>0&&(r=r.concat(Array(o-i).fill("insert")));n-i>0&&(r=r.concat(Array(n-i).fill("delete")));o0&&i.push({index:n,type:"insert",values:e.slice(n,r)});o-n>0&&i.push({index:n+(r-n),type:"delete",howMany:o-n});return i}(t,o)}function hr(e,t,i){for(let n=0;n200||o>200||n+o>300)return gr.fastDiff(e,t,i,!0);let r,s;if(oc?-1:1;d[n+u]&&(d[n]=d[n+u].slice(0)),d[n]||(d[n]=[]),d[n].push(o>c?r:s);let g=Math.max(o,c),m=g-n;for(;mc;g--)h[g]=u(g);h[c]=u(c),m++}while(h[c]!==l);return d[c].slice(1)}function mr(e,t,i){e.insertBefore(i,e.childNodes[t]||null)}function fr(e){const t=e.parentNode;t&&t.removeChild(e)}function pr(e){if(e){if(e.defaultView)return e instanceof e.defaultView.Document;if(e.ownerDocument&&e.ownerDocument.defaultView)return e instanceof e.ownerDocument.defaultView.Node}return!1}gr.fastDiff=dr;class br{constructor(e,t){this.domDocuments=new Set,this.domConverter=e,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=t,this.isFocused=!1,this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(e,t){if("text"===e)this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if("attributes"===e)this.markedAttributes.add(t);else{if("children"!==e)throw new l.a("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}render(){let e;for(const e of this.markedChildren)this._updateChildrenMappings(e);this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent));for(const e of this.markedAttributes)this._updateAttrs(e);for(const t of this.markedChildren)this._updateChildren(t,{inlineFillerPosition:e});for(const t of this.markedTexts)!this.markedChildren.has(t.parent)&&this.domConverter.mapViewToDom(t.parent)&&this._updateText(t,{inlineFillerPosition:e});if(e){const t=this.domConverter.viewPositionToDom(e),i=t.parent.ownerDocument;sr(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=wr(i,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const i=Array.from(this.domConverter.mapViewToDom(e).childNodes),n=Array.from(this.domConverter.viewChildrenToDom(e,t.ownerDocument,{withChildren:!1})),o=this._diffNodeLists(i,n),r=this._findReplaceActions(o,i,n);if(-1!==r.indexOf("replace")){const t={equal:0,insert:0,delete:0};for(const o of r)if("replace"===o){const o=t.equal+t.insert,r=t.equal+t.delete,s=e.getChild(o);!s||s.is("uiElement")||s.is("rawElement")||this._updateElementMappings(s,i[r]),fr(n[o]),t.equal++}else t[o]++}}_updateElementMappings(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}_getInlineFillerPosition(){const e=this.selection.getFirstPosition();return e.parent.is("$text")?lo._createBefore(this.selection.getFirstPosition().parent):e}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&tr(t.parent)&&sr(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!sr(e))throw new l.a("view-renderer-filler-was-lost",this);ar(e)?e.parentNode.removeChild(e):e.data=e.data.substr(7),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=e.parent,i=e.offset;if(!this.domConverter.mapViewToDom(t.root))return!1;if(!t.is("element"))return!1;if(!function(e){if("false"==e.getAttribute("contenteditable"))return!1;const t=e.findAncestor(e=>e.hasAttribute("contenteditable"));return!t||"true"==t.getAttribute("contenteditable")}(t))return!1;if(i===t.getFillerOffset())return!1;const n=e.nodeBefore,o=e.nodeAfter;return!(n instanceof hn||o instanceof hn)}_updateText(e,t){const i=this.domConverter.findCorrespondingDomText(e),n=this.domConverter.viewToDom(e,i.ownerDocument),o=i.data;let r=n.data;const s=t.inlineFillerPosition;if(s&&s.parent==e.parent&&s.offset==e.index&&(r=rr+r),o!=r){const e=dr(o,r);for(const t of e)"insert"===t.type?i.insertData(t.index,t.values.join("")):i.deleteData(t.index,t.howMany)}}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const i=Array.from(t.attributes).map(e=>e.name),n=e.getAttributeKeys();for(const i of n)t.setAttribute(i,e.getAttribute(i));for(const n of i)e.hasAttribute(n)||t.removeAttribute(n)}_updateChildren(e,t){const i=this.domConverter.mapViewToDom(e);if(!i)return;const n=t.inlineFillerPosition,o=this.domConverter.mapViewToDom(e).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,i.ownerDocument,{bind:!0,inlineFillerPosition:n}));n&&n.parent===e&&wr(i.ownerDocument,r,n.offset);const s=this._diffNodeLists(o,r);let a=0;const l=new Set;for(const e of s)"delete"===e?(l.add(o[a]),fr(o[a])):"equal"===e&&a++;a=0;for(const e of s)"insert"===e?(mr(i,a,r[a]),a++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(r[a])),a++);for(const e of l)e.parentNode||this.domConverter.unbindDomElement(e)}_diffNodeLists(e,t){return gr(e=function(e,t){const i=Array.from(e);if(0==i.length||!t)return i;i[i.length-1]==t&&i.pop();return i}(e,this._fakeSelectionContainer),t,_r.bind(null,this.domConverter))}_findReplaceActions(e,t,i){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let n=[],o=[],r=[];const s={equal:0,insert:0,delete:0};for(const a of e)"insert"===a?r.push(i[s.equal+s.insert]):"delete"===a?o.push(t[s.equal+s.delete]):(n=n.concat(gr(o,r,kr).map(e=>"equal"===e?"replace":e)),n.push("equal"),o=[],r=[]),s[a]++;return n.concat(gr(o,r,kr).map(e=>"equal"===e?"replace":e))}_markDescendantTextToSync(e){if(e)if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element"))for(const t of e.getChildren())this._markDescendantTextToSync(t)}_updateSelection(){if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const e=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&e&&(this.selection.isFake?this._updateFakeSelection(e):(this._removeFakeSelection(),this._updateDomSelection(e)))}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(e){const t=e.createElement("div");return t.className="ck-fake-selection-container",Object.assign(t.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),t.textContent=" ",t}(t));const i=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(i,this.selection),!this._fakeSelectionNeedsUpdate(e))return;i.parentElement&&i.parentElement==e||e.appendChild(i),i.textContent=this.selection.fakeSelectionLabel||" ";const n=t.getSelection(),o=t.createRange();n.removeAllRanges(),o.selectNodeContents(i),n.addRange(o)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const i=this.domConverter.viewPositionToDom(this.selection.anchor),n=this.domConverter.viewPositionToDom(this.selection.focus);t.collapse(i.parent,i.offset),t.extend(n.parent,n.offset),So.isGecko&&function(e,t){const i=e.parent;if(i.nodeType!=Node.ELEMENT_NODE||e.offset!=i.childNodes.length-1)return;const n=i.childNodes[e.offset];n&&"BR"==n.tagName&&t.addRange(t.getRangeAt(0))}(n,t)}_domSelectionNeedsUpdate(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;const t=e&&this.domConverter.domSelectionToView(e);return(!t||!this.selection.isEqual(t))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(t))}_fakeSelectionNeedsUpdate(e){const t=this._fakeSelectionContainer,i=e.ownerDocument.getSelection();return!t||t.parentElement!==e||(i.anchorNode!==t&&!t.contains(i.anchorNode)||t.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const e of this.domDocuments){if(e.getSelection().rangeCount){const t=e.activeElement,i=this.domConverter.mapDomToView(t);t&&i&&e.getSelection().removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function wr(e,t,i){const n=t instanceof Array?t:t.childNodes,o=n[i];if(tr(o))return o.data=rr+o.data,o;{const o=e.createTextNode(rr);return Array.isArray(t)?n.splice(i,0,o):mr(t,i,o),o}}function kr(e,t){return pr(e)&&pr(t)&&!tr(e)&&!tr(t)&&e.nodeType!==Node.COMMENT_NODE&&t.nodeType!==Node.COMMENT_NODE&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function _r(e,t,i){return t===i||(tr(t)&&tr(i)?t.data===i.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(i)))}Ke(br,Ue);var vr={window:window,document:document};function yr(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function xr(e){const t=[];for(;e&&e.nodeType!=Node.DOCUMENT_NODE;)t.unshift(e),e=e.parentNode;return t}const Ar=or(document),Cr=ir(document),Tr=nr(document);class Er{constructor(e,t={}){this.document=e,this.blockFillerMode=t.blockFillerMode||"br",this.preElements=["pre"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap,this._rawContentElementMatcher=new mn,this._encounteredRawContentDomNodes=new WeakSet}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new go(t))}fakeSelectionToView(e){return this._fakeSelectionMapping.get(e)}bindElements(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}unbindDomElement(e){const t=this._domToViewMapping.get(e);if(t){this._domToViewMapping.delete(e),this._viewToDomMapping.delete(t);for(const t of e.childNodes)this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}viewToDom(e,t,i={}){if(e.is("$text")){const i=this._processDataFromViewText(e);return t.createTextNode(i)}{if(this.mapViewToDom(e))return this.mapViewToDom(e);let n;if(e.is("documentFragment"))n=t.createDocumentFragment(),i.bind&&this.bindDocumentFragments(n,e);else{if(e.is("uiElement"))return n="$comment"===e.name?t.createComment(e.getCustomProperty("$rawContent")):e.render(t),i.bind&&this.bindElements(n,e),n;n=e.hasAttribute("xmlns")?t.createElementNS(e.getAttribute("xmlns"),e.name):t.createElement(e.name),e.is("rawElement")&&e.render(n),i.bind&&this.bindElements(n,e);for(const t of e.getAttributeKeys())n.setAttribute(t,e.getAttribute(t))}if(!1!==i.withChildren)for(const o of this.viewChildrenToDom(e,t,i))n.appendChild(o);return n}}*viewChildrenToDom(e,t,i={}){const n=e.getFillerOffset&&e.getFillerOffset();let o=0;for(const r of e.getChildren())n===o&&(yield this._getBlockFiller(t)),yield this.viewToDom(r,t,i),o++;n===o&&(yield this._getBlockFiller(t))}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),i=this.viewPositionToDom(e.end),n=document.createRange();return n.setStart(t.parent,t.offset),n.setEnd(i.parent,i.offset),n}viewPositionToDom(e){const t=e.parent;if(t.is("$text")){const i=this.findCorrespondingDomText(t);if(!i)return null;let n=e.offset;return sr(i)&&(n+=7),{parent:i,offset:n}}{let i,n,o;if(0===e.offset){if(i=this.mapViewToDom(t),!i)return null;o=i.childNodes[0]}else{const t=e.nodeBefore;if(n=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(e.nodeBefore),!n)return null;i=n.parentNode,o=n.nextSibling}if(tr(o)&&sr(o))return{parent:o,offset:7};return{parent:i,offset:n?yr(n)+1:0}}}domToView(e,t={}){if(this.isBlockFiller(e))return null;const i=this.getHostViewElement(e);if(i)return i;if(this.isComment(e)&&t.skipComments)return null;if(tr(e)){if(ar(e))return null;{const t=this._processDataFromDomText(e);return""===t?null:new hn(this.document,t)}}{if(this.mapDomToView(e))return this.mapDomToView(e);let i;if(this.isDocumentFragment(e))i=new Wo(this.document),t.bind&&this.bindDocumentFragments(e,i);else{i=this._createViewElement(e,t),t.bind&&this.bindElements(e,i);const n=e.attributes;if(n)for(let e=n.length-1;e>=0;e--)i._setAttribute(n[e].name,n[e].value);if(this._isViewElementWithRawContent(i,t)||this.isComment(e)){const t=this.isComment(e)?e.data:e.innerHTML;return i._setCustomProperty("$rawContent",t),this._encounteredRawContentDomNodes.add(e),i}}if(!1!==t.withChildren)for(const n of this.domChildrenToView(e,t))i._appendChild(n);return i}}*domChildrenToView(e,t={}){for(let i=0;i{const{scrollLeft:t,scrollTop:i}=e;n.push([t,i])}),t.focus(),Ir(t,e=>{const[t,i]=n.shift();e.scrollLeft=t,e.scrollTop=i}),vr.window.scrollTo(e,i)}}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isComment(e){return e&&e.nodeType==Node.COMMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(Ar):!("BR"!==e.tagName||!Sr(e,this.blockElements)||1!==e.parentNode.childNodes.length)||(e.isEqualNode(Tr)||function(e,t){return e.isEqualNode(Cr)&&Sr(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=document.createRange();t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset);const i=t.collapsed;return t.detach(),i}getHostViewElement(e){const t=xr(e);for(t.pop();t.length;){const e=t.pop(),i=this._domToViewMapping.get(e);if(i&&(i.is("uiElement")||i.is("rawElement")))return i}return null}isDomSelectionCorrect(e){return this._isDomSelectionPositionCorrect(e.anchorNode,e.anchorOffset)&&this._isDomSelectionPositionCorrect(e.focusNode,e.focusOffset)}registerRawContentMatcher(e){this._rawContentElementMatcher.add(e)}_getBlockFiller(e){switch(this.blockFillerMode){case"nbsp":return ir(e);case"markedNbsp":return nr(e);case"br":return or(e)}}_isDomSelectionPositionCorrect(e,t){if(tr(e)&&sr(e)&&t<7)return!1;if(this.isElement(e)&&sr(e.childNodes[t]))return!1;const i=this.mapDomToView(e);return!i||!i.is("uiElement")&&!i.is("rawElement")}_processDataFromViewText(e){let t=e.data;if(e.getAncestors().some(e=>this.preElements.includes(e.name)))return t;if(" "==t.charAt(0)){const i=this._getTouchingInlineViewNode(e,!1);!(i&&i.is("$textProxy")&&this._nodeEndsWithSpace(i))&&i||(t=" "+t.substr(1))}if(" "==t.charAt(t.length-1)){const i=this._getTouchingInlineViewNode(e,!0),n=i&&i.is("$textProxy")&&" "==i.data.charAt(0);" "!=t.charAt(t.length-2)&&i&&!n||(t=t.substr(0,t.length-1)+" ")}return t.replace(/ {2}/g,"  ")}_nodeEndsWithSpace(e){if(e.getAncestors().some(e=>this.preElements.includes(e.name)))return!1;const t=this._processDataFromViewText(e);return" "==t.charAt(t.length-1)}_processDataFromDomText(e){let t=e.data;if(function(e,t){return xr(e).some(e=>e.tagName&&t.includes(e.tagName.toLowerCase()))}(e,this.preElements))return lr(e);t=t.replace(/[ \n\t\r]{1,}/g," ");const i=this._getTouchingInlineDomNode(e,!1),n=this._getTouchingInlineDomNode(e,!0),o=this._checkShouldLeftTrimDomText(e,i),r=this._checkShouldRightTrimDomText(e,n);o&&(t=t.replace(/^ /,"")),r&&(t=t.replace(/ $/,"")),t=lr(new Text(t)),t=t.replace(/ \u00A0/g," ");const s=n&&this.isElement(n)&&"BR"!=n.tagName,a=n&&tr(n)&&" "==n.data.charAt(0);return(/( |\u00A0)\u00A0$/.test(t)||!n||s||a)&&(t=t.replace(/\u00A0$/," ")),(o||i&&this.isElement(i)&&"BR"!=i.tagName)&&(t=t.replace(/^\u00A0/," ")),t}_checkShouldLeftTrimDomText(e,t){return!t||(this.isElement(t)?"BR"===t.tagName:!this._encounteredRawContentDomNodes.has(e.previousSibling)&&/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(e,t){return!t&&!sr(e)}_getTouchingInlineViewNode(e,t){const i=new ao({startPosition:t?lo._createAfter(e):lo._createBefore(e),direction:t?"forward":"backward"});for(const e of i){if(e.item.is("element")&&this.inlineObjectElements.includes(e.item.name))return e.item;if(e.item.is("containerElement"))return null;if(e.item.is("element","br"))return null;if(e.item.is("$textProxy"))return e.item}return null}_getTouchingInlineDomNode(e,t){if(!e.parentNode)return null;const i=t?"firstChild":"lastChild",n=t?"nextSibling":"previousSibling";let o=!0;do{if(!o&&e[i]?e=e[i]:e[n]?(e=e[n],o=!1):(e=e.parentNode,o=!0),!e||this._isBlockElement(e))return null}while(!tr(e)&&"BR"!=e.tagName&&!this._isInlineObjectElement(e));return e}_isBlockElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isInlineObjectElement(e){return this.isElement(e)&&this.inlineObjectElements.includes(e.tagName.toLowerCase())}_createViewElement(e,t){if(this.isComment(e))return new jo(this.document,"$comment");const i=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new eo(this.document,i)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&this._rawContentElementMatcher.match(e)}}function Ir(e,t){for(;e&&e!=vr.document;)t(e),e=e.parentNode}function Sr(e,t){const i=e.parentNode;return i&&i.tagName&&t.includes(i.tagName.toLowerCase())}function Pr(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}var Mr=De({},h,{listenTo(e,...t){if(pr(e)||Pr(e)){const i=this._getProxyEmitter(e)||new Nr(e);i.attach(...t),e=i}h.listenTo.call(this,e,...t)},stopListening(e,t,i){if(pr(e)||Pr(e)){const t=this._getProxyEmitter(e);if(!t)return;e=t}h.stopListening.call(this,e,t,i),e instanceof Nr&&e.detach(t)},_getProxyEmitter(e){return t=this,i=Rr(e),t[c]&&t[c][i]?t[c][i].emitter:null;var t,i}});class Nr{constructor(e){u(this,Rr(e)),this._domNode=e}}function Rr(e){return e["data-ck-expando"]||(e["data-ck-expando"]=s())}De(Nr.prototype,h,{attach(e,t,i={}){if(this._domListeners&&this._domListeners[e])return;const n={capture:!!i.useCapture,passive:!!i.usePassive},o=this._createDomListener(e,n);this._domNode.addEventListener(e,o,n),this._domListeners||(this._domListeners={}),this._domListeners[e]=o},detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()},_createDomListener(e,t){const i=t=>{this.fire(e,t)};return i.removeListener=()=>{this._domNode.removeEventListener(e,i,t),delete this._domListeners[e]},i}});class Or{constructor(e){this.view=e,this.document=e.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(e){return e&&3===e.nodeType&&(e=e.parentNode),!(!e||1!==e.nodeType)&&e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}Ke(Or,Mr);var zr=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};var Dr=function(e){return this.__data__.has(e)};function Vr(e){var t=-1,i=null==e?0:e.length;for(this.__data__=new Ft;++ta))return!1;var c=r.get(e),d=r.get(t);if(c&&d)return c==t&&d==e;var h=-1,u=!0,g=2&i?new Lr:void 0;for(r.set(e,t),r.set(t,e);++h{this.listenTo(e,t,(e,t)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(t.target)&&this.onDomEvent(t)},{useCapture:this.useCapture})})}fire(e,t,i){this.isEnabled&&this.document.fire(e,new es(this.view,t,i))}}class is extends ts{constructor(e){super(e),this.domEventType=["keydown","keyup"]}onDomEvent(e){this.fire(e.type,e,{keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return Oo(this)}})}}var ns=function(){return k.a.Date.now()},os=/\s/;var rs=function(e){for(var t=e.length;t--&&os.test(e.charAt(t)););return t},ss=/^\s+/;var as=function(e){return e?e.slice(0,rs(e)+1).replace(ss,""):e},ls=/^[-+]0x[0-9a-f]+$/i,cs=/^0b[01]+$/i,ds=/^0o[0-7]+$/i,hs=parseInt;var us=function(e){if("number"==typeof e)return e;if(bn(e))return NaN;if(w(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=w(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=as(e);var i=cs.test(e);return i||ds.test(e)?hs(e.slice(2),i?2:8):ls.test(e)?NaN:+e},gs=Math.max,ms=Math.min;var fs=function(e,t,i){var n,o,r,s,a,l,c=0,d=!1,h=!1,u=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function g(t){var i=n,r=o;return n=o=void 0,c=t,s=e.apply(r,i)}function m(e){return c=e,a=setTimeout(p,t),d?g(e):s}function f(e){var i=e-l;return void 0===l||i>=t||i<0||h&&e-c>=r}function p(){var e=ns();if(f(e))return b(e);a=setTimeout(p,function(e){var i=t-(e-l);return h?ms(i,r-(e-c)):i}(e))}function b(e){return a=void 0,u&&n?g(e):(n=o=void 0,s)}function k(){var e=ns(),i=f(e);if(n=arguments,o=this,l=e,i){if(void 0===a)return m(l);if(h)return clearTimeout(a),a=setTimeout(p,t),g(l)}return void 0===a&&(a=setTimeout(p,t)),s}return t=us(t)||0,w(i)&&(d=!!i.leading,r=(h="maxWait"in i)?gs(us(i.maxWait)||0,t):r,u="trailing"in i?!!i.trailing:u),k.cancel=function(){void 0!==a&&clearTimeout(a),c=0,n=l=o=a=void 0},k.flush=function(){return void 0===a?s:b(ns())},k};class ps extends Or{constructor(e){super(e),this._fireSelectionChangeDoneDebounced=fs(e=>this.document.fire("selectionChangeDone",e),200)}observe(){const e=this.document;e.on("arrowKey",(t,i)=>{e.selection.isFake&&this.isEnabled&&i.preventDefault()},{context:"$capture"}),e.on("arrowKey",(t,i)=>{e.selection.isFake&&this.isEnabled&&this._handleSelectionMove(i.keyCode)},{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,i=new go(t.getRanges(),{backward:t.isBackward,fake:!1});e!=No.arrowleft&&e!=No.arrowup||i.setTo(i.getFirstPosition()),e!=No.arrowright&&e!=No.arrowdown||i.setTo(i.getLastPosition());const n={oldSelection:t,newSelection:i,domSelection:null};this.document.fire("selectionChange",n),this._fireSelectionChangeDoneDebounced(n)}}class bs extends Or{constructor(e){super(e),this.mutationObserver=e.getObserver(Xr),this.selection=this.document.selection,this.domConverter=e.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=fs(e=>this.document.fire("selectionChangeDone",e),200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._loopbackCounter=0}observe(e){const t=e.ownerDocument;this._documents.has(t)||(this.listenTo(t,"selectionchange",(e,i)=>{this._handleSelectionChange(i,t)}),this._documents.add(t))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionChange(e,t){if(!this.isEnabled)return;const i=t.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(i.anchorNode))return;this.mutationObserver.flush();const n=this.domConverter.domSelectionToView(i);if(0!=n.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(n)&&this.domConverter.isDomSelectionCorrect(i)||++this._loopbackCounter>60))if(this.selection.isSimilar(n))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:n,domSelection:i};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class ws extends ts{constructor(e){super(e),this.domEventType=["focus","blur"],this.useCapture=!0;const t=this.document;t.on("focus",()=>{t.isFocused=!0,this._renderTimeoutId=setTimeout(()=>e.change(()=>{}),50)}),t.on("blur",(i,n)=>{const o=t.selection.editableElement;null!==o&&o!==n.target||(t.isFocused=!1,e.change(()=>{}))})}onDomEvent(e){this.fire(e.type,e)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class ks extends ts{constructor(e){super(e),this.domEventType=["compositionstart","compositionupdate","compositionend"];const t=this.document;t.on("compositionstart",()=>{t.isComposing=!0}),t.on("compositionend",()=>{t.isComposing=!1})}onDomEvent(e){this.fire(e.type,e)}}class _s extends ts{constructor(e){super(e),this.domEventType=["beforeinput"]}onDomEvent(e){this.fire(e.type,e)}}var vs=function(e){return"string"==typeof e||!_e(e)&&me(e)&&"[object String]"==S(e)};function ys(e){return"[object Range]"==Object.prototype.toString.apply(e)}function xs(e){const t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}const As=["top","right","bottom","left","width","height"];class Cs{constructor(e){const t=ys(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),Yi(e)||t)if(t){const t=Cs.getDomRangeRects(e);Ts(this,Cs.getBoundingRect(t))}else Ts(this,e.getBoundingClientRect());else if(Pr(e)){const{innerWidth:t,innerHeight:i}=e;Ts(this,{top:0,right:t,bottom:i,left:0,width:t,height:i})}else Ts(this,e)}clone(){return new Cs(this)}moveTo(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}moveBy(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}getIntersection(e){const t={top:Math.max(this.top,e.top),right:Math.min(this.right,e.right),bottom:Math.min(this.bottom,e.bottom),left:Math.max(this.left,e.left)};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new Cs(t)}getIntersectionArea(e){const t=this.getIntersection(e);return t?t.getArea():0}getArea(){return this.width*this.height}getVisible(){const e=this._source;let t=this.clone();if(!Es(e)){let i=e.parentNode||e.commonAncestorContainer;for(;i&&!Es(i);){const e=new Cs(i),n=t.getIntersection(e);if(!n)return null;n.getArea(){for(const t of e){const e=Is._getElementCallbacks(t.target);if(e)for(const i of e)i(t)}})}}Is._observerInstance=null,Is._elementCallbacks=null;class Ss{constructor(e){this._callback=e,this._elements=new Set,this._previousRects=new Map,this._periodicCheckTimeout=null}observe(e){this._elements.add(e),this._checkElementRectsAndExecuteCallback(),1===this._elements.size&&this._startPeriodicCheck()}unobserve(e){this._elements.delete(e),this._previousRects.delete(e),this._elements.size||this._stopPeriodicCheck()}_startPeriodicCheck(){const e=()=>{this._checkElementRectsAndExecuteCallback(),this._periodicCheckTimeout=setTimeout(e,100)};this.listenTo(vr.window,"resize",()=>{this._checkElementRectsAndExecuteCallback()}),this._periodicCheckTimeout=setTimeout(e,100)}_stopPeriodicCheck(){clearTimeout(this._periodicCheckTimeout),this.stopListening(),this._previousRects.clear()}_checkElementRectsAndExecuteCallback(){const e=[];for(const t of this._elements)this._hasRectChanged(t)&&e.push({target:t,contentRect:this._previousRects.get(t)});e.length&&this._callback(e)}_hasRectChanged(e){if(!e.ownerDocument.body.contains(e))return!1;const t=new Cs(e),i=this._previousRects.get(e),n=!i||!i.isEqual(t);return this._previousRects.set(e,t),n}}function Ps(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}function Ms(e){return t=>t+e}function Ns(e){const t=e.next();return t.done?null:t.value}Ke(Ss,Mr);class Rs{constructor(){this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(e){if(this._elements.has(e))throw new l.a("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",()=>this._focus(e),{useCapture:!0}),this.listenTo(e,"blur",()=>this._blur(),{useCapture:!0}),this._elements.add(e)}remove(e){e===this.focusedElement&&this._blur(e),this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e))}destroy(){this.stopListening()}_focus(e){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=e,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0)}}Ke(Rs,Mr),Ke(Rs,Ue);class Os{constructor(){this._listener=Object.create(Mr)}listenTo(e){this._listener.listenTo(e,"keydown",(e,t)=>{this._listener.fire("_keydown:"+Oo(t),t)})}set(e,t,i={}){const n=zo(e),o=i.priority;this._listener.listenTo(this._listener,"_keydown:"+n,(e,i)=>{t(i,()=>{i.preventDefault(),i.stopPropagation(),e.stop()}),e.return=!0},{priority:o})}press(e){return!!this._listener.fire("_keydown:"+Oo(e),e)}destroy(){this._listener.stopListening()}}class zs extends Or{constructor(e){super(e),this.document.on("keydown",(e,t)=>{if(this.isEnabled&&((i=t.keyCode)==No.arrowright||i==No.arrowleft||i==No.arrowup||i==No.arrowdown)){const i=new fo(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(i,t),i.stop.called&&e.stop()}var i})}observe(){}}function Ds({target:e,viewportOffset:t=0}){const i=Us(e);let n=i,o=null;for(;n;){let r;r=Ws(n==i?e:o),Ls(r,()=>qs(e,n));const s=qs(e,n);if(Vs(n,s,t),n.parent!=n){if(o=n.frameElement,n=n.parent,!o)return}else n=null}}function Vs(e,t,i){const n=t.clone().moveBy(0,i),o=t.clone().moveBy(0,-i),r=new Cs(e).excludeScrollbarsAndBorders();if(![o,n].every(e=>r.contains(e))){let{scrollX:s,scrollY:a}=e;Bs(o,r)?a-=r.top-t.top+i:js(n,r)&&(a+=t.bottom-r.bottom+i),Fs(t,r)?s-=r.left-t.left+i:Hs(t,r)&&(s+=t.right-r.right+i),e.scrollTo(s,a)}}function Ls(e,t){const i=Us(e);let n,o;for(;e!=i.document.body;)o=t(),n=new Cs(e).excludeScrollbarsAndBorders(),n.contains(o)||(Bs(o,n)?e.scrollTop-=n.top-o.top:js(o,n)&&(e.scrollTop+=o.bottom-n.bottom),Fs(o,n)?e.scrollLeft-=n.left-o.left:Hs(o,n)&&(e.scrollLeft+=o.right-n.right)),e=e.parentNode}function js(e,t){return e.bottom>t.bottom}function Bs(e,t){return e.topt.right}function Us(e){return ys(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function Ws(e){if(ys(e)){let t=e.commonAncestorContainer;return tr(t)&&(t=t.parentNode),t}return e.parentNode}function qs(e,t){const i=Us(e),n=new Cs(e);if(i===t)return n;{let e=i;for(;e!=t;){const t=e.frameElement,i=new Cs(t).excludeScrollbarsAndBorders();n.moveBy(i.left,i.top),e=e.parent}}return n}Object.assign({},{scrollViewportToShowTarget:Ds,scrollAncestorsToShowTarget:function(e){Ls(Ws(e),()=>new Cs(e))}});class $s{constructor(e){this.document=new yo(e),this.domConverter=new Er(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new br(this.domConverter,this.document.selection),this._renderer.bind("isFocused").to(this.document),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new qo(this.document),this.addObserver(Xr),this.addObserver(bs),this.addObserver(ws),this.addObserver(is),this.addObserver(ps),this.addObserver(ks),this.addObserver(zs),So.isAndroid&&this.addObserver(_s),this.document.on("arrowKey",cr,{priority:"low"}),Bo(this),this.on("render",()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1}),this.listenTo(this.document.selection,"change",()=>{this._hasChangedSinceTheLastRendering=!0}),this.listenTo(this.document,"change:isFocused",()=>{this._hasChangedSinceTheLastRendering=!0})}attachDomRoot(e,t="main"){const i=this.document.getRoot(t);i._name=e.tagName.toLowerCase();const n={};for(const{name:t,value:o}of Array.from(e.attributes))n[t]=o,"class"===t?this._writer.addClass(o.split(" "),i):this._writer.setAttribute(t,o,i);this._initialDomRootAttributes.set(e,n);const o=()=>{this._writer.setAttribute("contenteditable",!i.isReadOnly,i),i.isReadOnly?this._writer.addClass("ck-read-only",i):this._writer.removeClass("ck-read-only",i)};o(),this.domRoots.set(t,e),this.domConverter.bindElements(e,i),this._renderer.markToSync("children",i),this._renderer.markToSync("attributes",i),this._renderer.domDocuments.add(e.ownerDocument),i.on("change:children",(e,t)=>this._renderer.markToSync("children",t)),i.on("change:attributes",(e,t)=>this._renderer.markToSync("attributes",t)),i.on("change:text",(e,t)=>this._renderer.markToSync("text",t)),i.on("change:isReadOnly",()=>this.change(o)),i.on("change",()=>{this._hasChangedSinceTheLastRendering=!0});for(const i of this._observers.values())i.observe(e,t)}detachDomRoot(e){const t=this.domRoots.get(e);Array.from(t.attributes).forEach(({name:e})=>t.removeAttribute(e));const i=this._initialDomRootAttributes.get(t);for(const e in i)t.setAttribute(e,i[e]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t)}getDomRoot(e="main"){return this.domRoots.get(e)}addObserver(e){let t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);for(const[e,i]of this.domRoots)t.observe(i,e);return t.enable(),t}getObserver(e){return this._observers.get(e)}disableObservers(){for(const e of this._observers.values())e.disable()}enableObservers(){for(const e of this._observers.values())e.enable()}scrollToTheSelection(){const e=this.document.selection.getFirstRange();e&&Ds({target:this.domConverter.viewRangeToDom(e),viewportOffset:20})}focus(){if(!this.document.isFocused){const e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}change(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new l.a("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;const t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(e){l.a.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change(()=>{})}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return lo._createAt(e,t)}createPositionAfter(e){return lo._createAfter(e)}createPositionBefore(e){return lo._createBefore(e)}createRange(e,t){return new co(e,t)}createRangeOn(e){return co._createOn(e)}createRangeIn(e){return co._createIn(e)}createSelection(e,t,i){return new go(e,t,i)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change(()=>{})}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}Ke($s,Ue);class Ys{constructor(e){this.parent=null,this._attrs=gn(e)}get index(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildIndex(this)))throw new l.a("model-node-not-found-in-parent",this);return e}get startOffset(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildStartOffset(this)))throw new l.a("model-node-not-found-in-parent",this);return e}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let i=e.includeSelf?this:this.parent;for(;i;)t[e.parentFirst?"push":"unshift"](i),i=i.parent;return t}getCommonAncestor(e,t={}){const i=this.getAncestors(t),n=e.getAncestors(t);let o=0;for(;i[o]==n[o]&&i[o];)o++;return 0===o?null:i[o-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),i=e.getPath(),n=ln(t,i);switch(n){case"prefix":return!0;case"extension":return!1;default:return t[n](e[t[0]]=t[1],e),{})),e}is(e){return"node"===e||"model:node"===e}_clone(){return new Ys(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=gn(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}class Gs extends Ys{constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}is(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new Gs(this.data,this.getAttributes())}static fromJSON(e){return new Gs(e.data,e.attributes)}}class Ks{constructor(e,t,i){if(this.textNode=e,t<0||t>e.offsetSize)throw new l.a("model-textproxy-wrong-offsetintext",this);if(i<0||t+i>e.offsetSize)throw new l.a("model-textproxy-wrong-length",this);this.data=e.data.substring(t,t+i),this.offsetInText=t}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}is(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let i=e.includeSelf?this:this.parent;for(;i;)t[e.parentFirst?"push":"unshift"](i),i=i.parent;return t}hasAttribute(e){return this.textNode.hasAttribute(e)}getAttribute(e){return this.textNode.getAttribute(e)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}class Qs{constructor(e){this._nodes=[],e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce((e,t)=>e+t.offsetSize,0)}getNode(e){return this._nodes[e]||null}getNodeIndex(e){const t=this._nodes.indexOf(e);return-1==t?null:t}getNodeStartOffset(e){const t=this.getNodeIndex(e);return null===t?null:this._nodes.slice(0,t).reduce((e,t)=>e+t.offsetSize,0)}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new l.a("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){let t=0;for(const i of this._nodes){if(e>=t&&ee.toJSON())}}class Js extends Ys{constructor(e,t,i){super(t),this.name=e,this._children=new Qs,i&&this._insertChild(0,i)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(e,t=null){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}offsetToIndex(e){return this._children.offsetToIndex(e)}getNodeByPath(e){let t=this;for(const i of e)t=t.getChild(t.offsetToIndex(i));return t}findAncestor(e,t={includeSelf:!1}){let i=t.includeSelf?this:this.parent;for(;i;){if(i.name===e)return i;i=i.parent}return null}toJSON(){const e=super.toJSON();if(e.name=this.name,this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_clone(e=!1){const t=e?Array.from(this._children).map(e=>e._clone(!0)):null;return new Js(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const i=function(e){if("string"==typeof e)return[new Gs(e)];Ji(e)||(e=[e]);return Array.from(e).map(e=>"string"==typeof e?new Gs(e):e instanceof Ks?new Gs(e.data,e.getAttributes()):e)}(t);for(const e of i)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,i)}_removeChildren(e,t=1){const i=this._children._removeNodes(e,t);for(const e of i)e.parent=null;return i}static fromJSON(e){let t=null;if(e.children){t=[];for(const i of e.children)i.name?t.push(Js.fromJSON(i)):t.push(Gs.fromJSON(i))}return new Js(e.name,e.attributes,t)}}class Zs{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new l.a("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new l.a("model-tree-walker-unknown-direction",e,{direction:t});this.direction=t,this.boundaries=e.boundaries||null,e.startPosition?this.position=e.startPosition.clone():this.position=ea._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(e){let t,i,n,o;do{n=this.position,o=this._visitedParent,({done:t,value:i}=this.next())}while(!t&&e(i));t||(this.position=n,this._visitedParent=o)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const e=this.position,t=this.position.clone(),i=this._visitedParent;if(null===i.parent&&t.offset===i.maxOffset)return{done:!0};if(i===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};const n=t.parent,o=ta(t,n),r=o||ia(t,n,o);if(r instanceof Js)return this.shallow?t.offset++:(t.path.push(0),this._visitedParent=r),this.position=t,Xs("elementStart",r,e,t,1);if(r instanceof Gs){let n;if(this.singleCharacters)n=1;else{let e=r.endOffset;this._boundaryEndParent==i&&this.boundaries.end.offsete&&(e=this.boundaries.start.offset),n=t.offset-e}const o=t.offset-r.startOffset,s=new Ks(r,o-n,n);return t.offset-=n,this.position=t,Xs("text",s,e,t,n)}return t.path.pop(),this.position=t,this._visitedParent=i.parent,Xs("elementStart",i,e,t,1)}}function Xs(e,t,i,n,o){return{done:!1,value:{type:e,item:t,previousPosition:i,nextPosition:n,length:o}}}class ea{constructor(e,t,i="toNone"){if(!e.is("element")&&!e.is("documentFragment"))throw new l.a("model-position-root-invalid",e);if(!(t instanceof Array)||0===t.length)throw new l.a("model-position-path-incorrect-format",e,{path:t});e.is("rootElement")?t=t.slice():(t=[...e.getPath(),...t],e=e.root),this.root=e,this.path=t,this.stickiness=i}get offset(){return this.path[this.path.length-1]}set offset(e){this.path[this.path.length-1]=e}get parent(){let e=this.root;for(let t=0;ti.path.length){if(t.offset!==n.maxOffset)return!1;t.path=t.path.slice(0,-1),n=n.parent,t.offset++}else{if(0!==i.offset)return!1;i.path=i.path.slice(0,-1)}}}is(e){return"position"===e||"model:position"===e}hasSameParentAs(e){if(this.root!==e.root)return!1;return"same"==ln(this.getParentPath(),e.getParentPath())}getTransformedByOperation(e){let t;switch(e.type){case"insert":t=this._getTransformedByInsertOperation(e);break;case"move":case"remove":case"reinsert":t=this._getTransformedByMoveOperation(e);break;case"split":t=this._getTransformedBySplitOperation(e);break;case"merge":t=this._getTransformedByMergeOperation(e);break;default:t=ea._createAt(this)}return t}_getTransformedByInsertOperation(e){return this._getTransformedByInsertion(e.position,e.howMany)}_getTransformedByMoveOperation(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}_getTransformedBySplitOperation(e){const t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}_getTransformedByMergeOperation(e){const t=e.movedRange;let i;return t.containsPosition(this)||t.start.isEqual(this)?(i=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(i=i._getTransformedByDeletion(e.deletionPosition,1))):i=this.isEqual(e.deletionPosition)?ea._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),i}_getTransformedByDeletion(e,t){const i=ea._createAt(this);if(this.root!=e.root)return i;if("same"==ln(e.getParentPath(),this.getParentPath())){if(e.offsetthis.offset)return null;i.offset-=t}}else if("prefix"==ln(e.getParentPath(),this.getParentPath())){const n=e.path.length-1;if(e.offset<=this.path[n]){if(e.offset+t>this.path[n])return null;i.path[n]-=t}}return i}_getTransformedByInsertion(e,t){const i=ea._createAt(this);if(this.root!=e.root)return i;if("same"==ln(e.getParentPath(),this.getParentPath()))(e.offsett+1;){const t=n.maxOffset-i.offset;0!==t&&e.push(new oa(i,i.getShiftedBy(t))),i.path=i.path.slice(0,-1),i.offset++,n=n.parent}for(;i.path.length<=this.end.path.length;){const t=this.end.path[i.path.length-1],n=t-i.offset;0!==n&&e.push(new oa(i,i.getShiftedBy(n))),i.offset=t,i.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new Zs(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new Zs(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new Zs(e);yield t.position;for(const e of t)yield e.nextPosition}getTransformedByOperation(e){switch(e.type){case"insert":return this._getTransformedByInsertOperation(e);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(e);case"split":return[this._getTransformedBySplitOperation(e)];case"merge":return[this._getTransformedByMergeOperation(e)]}return[new oa(this.start,this.end)]}getTransformedByOperations(e){const t=[new oa(this.start,this.end)];for(const i of e)for(let e=0;e0?new this(i,n):new this(n,i)}static _createIn(e){return new this(ea._createAt(e,0),ea._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(ea._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new l.a("range-create-from-ranges-empty-array",null);if(1==e.length)return e[0].clone();const t=e[0];e.sort((e,t)=>e.start.isAfter(t.start)?1:-1);const i=e.indexOf(t),n=new this(t.start,t.end);if(i>0)for(let t=i-1;e[t].end.isEqual(n.start);t++)n.start=ea._createAt(e[t].start);for(let t=i+1;t{if(t.viewPosition)return;const i=this._modelToViewMapping.get(t.modelPosition.parent);t.viewPosition=this.findPositionIn(i,t.modelPosition.offset)},{priority:"low"}),this.on("viewToModelPosition",(e,t)=>{if(t.modelPosition)return;const i=this.findMappedViewAncestor(t.viewPosition),n=this._viewToModelMapping.get(i),o=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,i);t.modelPosition=ea._createAt(n,o)},{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e){const t=this.toModelElement(e);if(this._viewToModelMapping.delete(e),this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);this._modelToViewMapping.get(t)==e&&this._modelToViewMapping.delete(t)}unbindModelElement(e){const t=this.toViewElement(e);this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e&&this._viewToModelMapping.delete(t)}bindElementToMarker(e,t){const i=this._markerNameToElements.get(t)||new Set;i.add(e);const n=this._elementToMarkerNames.get(e)||new Set;n.add(t),this._markerNameToElements.set(t,i),this._elementToMarkerNames.set(e,n)}unbindElementFromMarkerName(e,t){const i=this._markerNameToElements.get(t);i&&(i.delete(e),0==i.size&&this._markerNameToElements.delete(t));const n=this._elementToMarkerNames.get(e);n&&(n.delete(t),0==n.size&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new oa(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new co(this.toViewPosition(e.start),this.toViewPosition(e.end))}toModelPosition(e){const t={viewPosition:e,mapper:this};return this.fire("viewToModelPosition",t),t.modelPosition}toViewPosition(e,t={isPhantom:!1}){const i={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",i),i.viewPosition}markerNameToElements(e){const t=this._markerNameToElements.get(e);if(!t)return null;const i=new Set;for(const e of t)if(e.is("attributeElement"))for(const t of e.getElementsWithSameId())i.add(t);else i.add(e);return i}registerViewToModelLength(e,t){this._viewToModelLengthCallbacks.set(e,t)}findMappedViewAncestor(e){let t=e.parent;for(;!this._viewToModelMapping.has(t);)t=t.parent;return t}_toModelOffset(e,t,i){if(i!=e){return this._toModelOffset(e.parent,e.index,i)+this._toModelOffset(e,t,e)}if(e.is("$text"))return t;let n=0;for(let i=0;i1?t[0]+":"+t[1]:t[0]}class la{constructor(e){this.conversionApi=Object.assign({dispatcher:this},e),this._reconversionEventsMapping=new Map}convertChanges(e,t,i){for(const t of e.getMarkersToRemove())this.convertMarkerRemove(t.name,t.range,i);const n=this._mapChangesWithAutomaticReconversion(e);for(const e of n)"insert"===e.type?this.convertInsert(oa._createFromPositionAndShift(e.position,e.length),i):"remove"===e.type?this.convertRemove(e.position,e.length,e.name,i):"reconvert"===e.type?this.reconvertElement(e.element,i):this.convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,i);for(const e of this.conversionApi.mapper.flushUnboundMarkerNames()){const n=t.get(e).getRange();this.convertMarkerRemove(e,n,i),this.convertMarkerAdd(e,n,i)}for(const t of e.getMarkersToAdd())this.convertMarkerAdd(t.name,t.range,i)}convertInsert(e,t){this.conversionApi.writer=t,this.conversionApi.consumable=this._createInsertConsumable(e);for(const t of Array.from(e).map(da))this._convertInsertWithAttributes(t);this._clearConversionApi()}convertRemove(e,t,i,n){this.conversionApi.writer=n,this.fire("remove:"+i,{position:e,length:t},this.conversionApi),this._clearConversionApi()}convertAttribute(e,t,i,n,o){this.conversionApi.writer=o,this.conversionApi.consumable=this._createConsumableForRange(e,"attribute:"+t);for(const o of e){const e={item:o.item,range:oa._createFromPositionAndShift(o.previousPosition,o.length),attributeKey:t,attributeOldValue:i,attributeNewValue:n};this._testAndFire("attribute:"+t,e)}this._clearConversionApi()}reconvertElement(e,t){const i=oa._createOn(e);this.conversionApi.writer=t,this.conversionApi.consumable=this._createInsertConsumable(i);const n=this.conversionApi.mapper,o=n.toViewElement(e);t.remove(o),this._convertInsertWithAttributes({item:e,range:i});const r=n.toViewElement(e);for(const i of oa._createIn(e)){const{item:e}=i,o=ha(e,n);o?o.root!==r.root&&t.move(t.createRangeOn(o),n.toViewPosition(ea._createBefore(e))):this._convertInsertWithAttributes(da(i))}n.unbindViewElement(o),this._clearConversionApi()}convertSelection(e,t,i){const n=Array.from(t.getMarkersAtPosition(e.getFirstPosition()));if(this.conversionApi.writer=i,this.conversionApi.consumable=this._createSelectionConsumable(e,n),this.fire("selection",{selection:e},this.conversionApi),e.isCollapsed){for(const t of n){const i=t.getRange();if(!ca(e.getFirstPosition(),t,this.conversionApi.mapper))continue;const n={item:e,markerName:t.name,markerRange:i};this.conversionApi.consumable.test(e,"addMarker:"+t.name)&&this.fire("addMarker:"+t.name,n,this.conversionApi)}for(const t of e.getAttributeKeys()){const i={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};this.conversionApi.consumable.test(e,"attribute:"+i.attributeKey)&&this.fire("attribute:"+i.attributeKey+":$text",i,this.conversionApi)}this._clearConversionApi()}else this._clearConversionApi()}convertMarkerAdd(e,t,i){if("$graveyard"==t.root.rootName)return;this.conversionApi.writer=i;const n="addMarker:"+e,o=new sa;if(o.add(t,n),this.conversionApi.consumable=o,this.fire(n,{markerName:e,markerRange:t},this.conversionApi),o.test(t,n)){this.conversionApi.consumable=this._createConsumableForRange(t,n);for(const i of t.getItems()){if(!this.conversionApi.consumable.test(i,n))continue;const o={item:i,range:oa._createOn(i),markerName:e,markerRange:t};this.fire(n,o,this.conversionApi)}this._clearConversionApi()}else this._clearConversionApi()}convertMarkerRemove(e,t,i){"$graveyard"!=t.root.rootName&&(this.conversionApi.writer=i,this.fire("removeMarker:"+e,{markerName:e,markerRange:t},this.conversionApi),this._clearConversionApi())}_mapReconversionTriggerEvent(e,t){this._reconversionEventsMapping.set(t,e)}_createInsertConsumable(e){const t=new sa;for(const i of e){const e=i.item;t.add(e,"insert");for(const i of e.getAttributeKeys())t.add(e,"attribute:"+i)}return t}_createConsumableForRange(e,t){const i=new sa;for(const n of e.getItems())i.add(n,t);return i}_createSelectionConsumable(e,t){const i=new sa;i.add(e,"selection");for(const n of t)i.add(e,"addMarker:"+n.name);for(const t of e.getAttributeKeys())i.add(e,"attribute:"+t);return i}_testAndFire(e,t){this.conversionApi.consumable.test(t.item,e)&&this.fire(function(e,t){const i=t.item.name||"$text";return`${e}:${i}`}(e,t),t,this.conversionApi)}_clearConversionApi(){delete this.conversionApi.writer,delete this.conversionApi.consumable}_convertInsertWithAttributes(e){this._testAndFire("insert",e);for(const t of e.item.getAttributeKeys())e.attributeKey=t,e.attributeOldValue=null,e.attributeNewValue=e.item.getAttribute(t),this._testAndFire("attribute:"+t,e)}_mapChangesWithAutomaticReconversion(e){const t=new Set,i=[];for(const n of e.getChanges()){const e=n.position||n.range.start,o=e.parent;if(ta(e,o)){i.push(n);continue}const r="attribute"===n.type?ia(e,o,null):o;if(r.is("$text")){i.push(n);continue}let s;if(s="attribute"===n.type?`attribute:${n.attributeKey}:${r.name}`:`${n.type}:${n.name}`,this._isReconvertTriggerEvent(s,r.name)){if(t.has(r))continue;t.add(r),i.push({type:"reconvert",element:r})}else i.push(n)}return i}_isReconvertTriggerEvent(e,t){return this._reconversionEventsMapping.get(e)===t}}function ca(e,t,i){const n=t.getRange(),o=Array.from(e.getAncestors());o.shift(),o.reverse();return!o.some(e=>{if(n.containsItem(e)){return!!i.toViewElement(e).getCustomProperty("addHighlight")}})}function da(e){return{item:e.item,range:oa._createFromPositionAndShift(e.previousPosition,e.length)}}function ha(e,t){if(e.is("textProxy")){const i=t.toViewPosition(ea._createBefore(e)).parent;return i.is("$text")?i:null}return t.toViewElement(e)}Ke(la,h);class ua{constructor(e,t,i){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,e&&this.setTo(e,t,i)}get anchor(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}get focus(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(e){if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let i=!1;for(const n of e._ranges)if(t.isEqual(n)){i=!0;break}if(!i)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new oa(e.start,e.end)}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?new oa(e.start,e.end):null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?new oa(e.start,e.end):null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}setTo(e,t,i){if(null===e)this._setRanges([]);else if(e instanceof ua)this._setRanges(e.getRanges(),e.isBackward);else if(e&&"function"==typeof e.getRanges)this._setRanges(e.getRanges(),e.isBackward);else if(e instanceof oa)this._setRanges([e],!!t&&!!t.backward);else if(e instanceof ea)this._setRanges([new oa(e)]);else if(e instanceof Ys){const n=!!i&&!!i.backward;let o;if("in"==t)o=oa._createIn(e);else if("on"==t)o=oa._createOn(e);else{if(void 0===t)throw new l.a("model-selection-setto-required-second-parameter",[this,e]);o=new oa(ea._createAt(e,t))}this._setRanges([o],n)}else{if(!Ji(e))throw new l.a("model-selection-setto-not-selectable",[this,e]);this._setRanges(e,t&&!!t.backward)}}_setRanges(e,t=!1){const i=(e=Array.from(e)).some(t=>{if(!(t instanceof oa))throw new l.a("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every(e=>!e.isEqual(t))});if(e.length!==this._ranges.length||i){this._removeAllRanges();for(const t of e)this._pushRange(t);this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0})}}setFocus(e,t){if(null===this.anchor)throw new l.a("model-selection-setfocus-no-ranges",[this,e]);const i=ea._createAt(e,t);if("same"==i.compareWith(this.focus))return;const n=this.anchor;this._ranges.length&&this._popRange(),"before"==i.compareWith(n)?(this._pushRange(new oa(i,n)),this._lastRangeBackward=!0):(this._pushRange(new oa(n,i)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(e){return this._attrs.has(e)}removeAttribute(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}setAttribute(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}is(e){return"selection"===e||"model:selection"===e}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const i=fa(t.start,e);i&&pa(i,t)&&(yield i);for(const i of t.getWalker()){const n=i.item;"elementEnd"==i.type&&ma(n,e,t)&&(yield n)}const n=fa(t.end,e);n&&!t.end.isTouching(ea._createAt(n,0))&&pa(n,t)&&(yield n)}}containsEntireContent(e=this.anchor.root){const t=ea._createAt(e,0),i=ea._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&i.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new oa(e.start,e.end))}_checkRange(e){for(let t=0;t0;)this._popRange()}_popRange(){this._ranges.pop()}}function ga(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&e.parent)}function ma(e,t,i){return ga(e,t)&&pa(e,i)}function fa(e,t){const i=e.parent.root.document.model.schema,n=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let o=!1;const r=n.find(e=>!o&&(o=i.isLimit(e),!o&&ga(e,t)));return n.forEach(e=>t.add(e)),r}function pa(e,t){const i=function(e){const t=e.root.document.model.schema;let i=e.parent;for(;i;){if(t.isBlock(i))return i;i=i.parent}}(e);if(!i)return!0;return!t.containsRange(oa._createOn(i),!0)}Ke(ua,h);class ba extends oa{constructor(e,t){super(e,t),wa.call(this)}detach(){this.stopListening()}is(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e}toRange(){return new oa(this.start,this.end)}static fromRange(e){return new ba(e.start,e.end)}}function wa(){this.listenTo(this.root.document.model,"applyOperation",(e,t)=>{const i=t[0];i.isDocumentOperation&&ka.call(this,i)},{priority:"low"})}function ka(e){const t=this.getTransformedByOperation(e),i=oa._createFromRanges(t),n=!i.isEqual(this),o=function(e,t){switch(t.type){case"insert":return e.containsPosition(t.position);case"move":case"remove":case"reinsert":case"merge":return e.containsPosition(t.sourcePosition)||e.start.isEqual(t.sourcePosition)||e.containsPosition(t.targetPosition);case"split":return e.containsPosition(t.splitPosition)||e.containsPosition(t.insertionPosition)}return!1}(this,e);let r=null;if(n){"$graveyard"==i.root.rootName&&(r="remove"==e.type?e.sourcePosition:e.deletionPosition);const t=this.toRange();this.start=i.start,this.end=i.end,this.fire("change:range",t,{deletionPosition:r})}else o&&this.fire("change:content",this.toRange(),{deletionPosition:r})}Ke(ba,h);class _a{constructor(e){this._selection=new va(e),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(e){return this._selection.containsEntireContent(e)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(e){return this._selection.getAttribute(e)}hasAttribute(e){return this._selection.hasAttribute(e)}refresh(){this._selection._updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(e){this._selection.observeMarkers(e)}is(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(e,t,i){this._selection.setTo(e,t,i)}_setAttribute(e,t){this._selection.setAttribute(e,t)}_removeAttribute(e){this._selection.removeAttribute(e)}_getStoredAttributes(){return this._selection._getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(e){this._selection.restoreGravity(e)}static _getStoreAttributeKey(e){return"selection:"+e}static _isStoreAttributeKey(e){return e.startsWith("selection:")}}Ke(_a,h);class va extends ua{constructor(e){super(),this.markers=new Zi({idProperty:"name"}),this._model=e.model,this._document=e,this._attributePriority=new Map,this._selectionRestorePosition=null,this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this._observedMarkers=new Set,this.listenTo(this._model,"applyOperation",(e,t)=>{const i=t[0];i.isDocumentOperation&&"marker"!=i.type&&"rename"!=i.type&&"noop"!=i.type&&(0==this._ranges.length&&this._selectionRestorePosition&&this._fixGraveyardSelection(this._selectionRestorePosition),this._selectionRestorePosition=null,this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1})))},{priority:"lowest"}),this.on("change:range",()=>{for(const e of this.getRanges())if(!this._document._validateSelectionRange(e))throw new l.a("document-selection-wrong-position",this,{range:e})}),this.listenTo(this._model.markers,"update",(e,t,i,n)=>{this._updateMarker(t,n)}),this.listenTo(this._document,"change",(e,t)=>{!function(e,t){const i=e.document.differ;for(const n of i.getChanges()){if("insert"!=n.type)continue;const i=n.position.parent;n.length===i.maxOffset&&e.enqueueChange(t,e=>{const t=Array.from(i.getAttributeKeys()).filter(e=>e.startsWith("selection:"));for(const n of t)e.removeAttribute(n,i)})}}(this._model,t)})}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let e=0;e{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=n.deletionPosition;const e=this._ranges.indexOf(t);this._ranges.splice(e,1),t.detach()}}),t}_updateMarkers(){if(!this._observedMarkers.size)return;const e=[];let t=!1;for(const t of this._model.markers){const i=t.name.split(":",1)[0];if(!this._observedMarkers.has(i))continue;const n=t.getRange();for(const i of this.getRanges())n.containsRange(i,!i.isCollapsed)&&e.push(t)}const i=Array.from(this.markers);for(const i of e)this.markers.has(i)||(this.markers.add(i),t=!0);for(const i of Array.from(this.markers))e.includes(i)||(this.markers.remove(i),t=!0);t&&this.fire("change:marker",{oldMarkers:i,directChange:!1})}_updateMarker(e,t){const i=e.name.split(":",1)[0];if(!this._observedMarkers.has(i))return;let n=!1;const o=Array.from(this.markers),r=this.markers.has(e);if(t){let i=!1;for(const e of this.getRanges())if(t.containsRange(e,!e.isCollapsed)){i=!0;break}i&&!r?(this.markers.add(e),n=!0):!i&&r&&(this.markers.remove(e),n=!0)}else r&&(this.markers.remove(e),n=!0);n&&this.fire("change:marker",{oldMarkers:o,directChange:!1})}_updateAttributes(e){const t=gn(this._getSurroundingAttributes()),i=gn(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[e,t]of this._attributePriority)"low"==t&&(this._attrs.delete(e),this._attributePriority.delete(e));this._setAttributesTo(t);const n=[];for(const[e,t]of this.getAttributes())i.has(e)&&i.get(e)===t||n.push(e);for(const[e]of i)this.hasAttribute(e)||n.push(e);n.length>0&&this.fire("change:attribute",{attributeKeys:n,directChange:!1})}_setAttribute(e,t,i=!0){const n=i?"normal":"low";if("low"==n&&"normal"==this._attributePriority.get(e))return!1;return super.getAttribute(e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,n),!0)}_removeAttribute(e,t=!0){const i=t?"normal":"low";return("low"!=i||"normal"!=this._attributePriority.get(e))&&(this._attributePriority.set(e,i),!!super.hasAttribute(e)&&(this._attrs.delete(e),!0))}_setAttributesTo(e){const t=new Set;for(const[t,i]of this.getAttributes())e.get(t)!==i&&this._removeAttribute(t,!1);for(const[i,n]of e){this._setAttribute(i,n,!1)&&t.add(i)}return t}*_getStoredAttributes(){const e=this.getFirstPosition().parent;if(this.isCollapsed&&e.isEmpty)for(const t of e.getAttributeKeys())if(t.startsWith("selection:")){const i=t.substr("selection:".length);yield[i,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;let i=null;if(this.isCollapsed){const n=e.textNode?e.textNode:e.nodeBefore,o=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(i=ya(n)),i||(i=ya(o)),!this.isGravityOverridden&&!i){let e=n;for(;e&&!t.isInline(e)&&!i;)e=e.previousSibling,i=ya(e)}if(!i){let e=o;for(;e&&!t.isInline(e)&&!i;)e=e.nextSibling,i=ya(e)}i||(i=this._getStoredAttributes())}else{const e=this.getFirstRange();for(const n of e){if(n.item.is("element")&&t.isObject(n.item))break;if("text"==n.type){i=n.item.getAttributes();break}}}return i}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function ya(e){return e instanceof Ks||e instanceof Gs?e.getAttributes():null}class xa{constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}var Aa=function(e){return qi(e,5)};class Ca extends xa{elementToElement(e){return this.add(function(e){return(e=Aa(e)).view=Ia(e.view,"container"),t=>{var i;if(t.on("insert:"+e.model,(i=e.view,(e,t,n)=>{const o=i(t.item,n);if(!o)return;if(!n.consumable.consume(t.item,"insert"))return;const r=n.mapper.toViewPosition(t.range.start);n.mapper.bindElements(t.item,o),n.writer.insert(r,o)}),{priority:e.converterPriority||"normal"}),e.triggerBy){if(e.triggerBy.attributes)for(const i of e.triggerBy.attributes)t._mapReconversionTriggerEvent(e.model,`attribute:${i}:${e.model}`);if(e.triggerBy.children)for(const i of e.triggerBy.children)t._mapReconversionTriggerEvent(e.model,"insert:"+i),t._mapReconversionTriggerEvent(e.model,"remove:"+i)}}}(e))}attributeToElement(e){return this.add(function(e){e=Aa(e);let t="attribute:"+(e.model.key?e.model.key:e.model);e.model.name&&(t+=":"+e.model.name);if(e.model.values)for(const t of e.model.values)e.view[t]=Ia(e.view[t],"attribute");else e.view=Ia(e.view,"attribute");const i=Sa(e);return n=>{n.on(t,function(e){return(t,i,n)=>{const o=e(i.attributeOldValue,n),r=e(i.attributeNewValue,n);if(!o&&!r)return;if(!n.consumable.consume(i.item,t.name))return;const s=n.writer,a=s.document.selection;if(i.item instanceof ua||i.item instanceof _a)s.wrap(a.getFirstRange(),r);else{let e=n.mapper.toViewRange(i.range);null!==i.attributeOldValue&&o&&(e=s.unwrap(e,o)),null!==i.attributeNewValue&&r&&s.wrap(e,r)}}}(i),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=Aa(e);let t="attribute:"+(e.model.key?e.model.key:e.model);e.model.name&&(t+=":"+e.model.name);if(e.model.values)for(const t of e.model.values)e.view[t]=Pa(e.view[t]);else e.view=Pa(e.view);const i=Sa(e);return n=>{var o;n.on(t,(o=i,(e,t,i)=>{const n=o(t.attributeOldValue,i),r=o(t.attributeNewValue,i);if(!n&&!r)return;if(!i.consumable.consume(t.item,e.name))return;const s=i.mapper.toViewElement(t.item),a=i.writer;if(!s)throw new l.a("conversion-attribute-to-attribute-on-text",[t,i]);if(null!==t.attributeOldValue&&n)if("class"==n.key){const e=en(n.value);for(const t of e)a.removeClass(t,s)}else if("style"==n.key){const e=Object.keys(n.value);for(const t of e)a.removeStyle(t,s)}else a.removeAttribute(n.key,s);if(null!==t.attributeNewValue&&r)if("class"==r.key){const e=en(r.value);for(const t of e)a.addClass(t,s)}else if("style"==r.key){const e=Object.keys(r.value);for(const t of e)a.setStyle(t,r.value[t],s)}else a.setAttribute(r.key,r.value,s)}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){return(e=Aa(e)).view=Ia(e.view,"ui"),t=>{var i;t.on("addMarker:"+e.model,(i=e.view,(e,t,n)=>{t.isOpening=!0;const o=i(t,n);t.isOpening=!1;const r=i(t,n);if(!o||!r)return;const s=t.markerRange;if(s.isCollapsed&&!n.consumable.consume(s,e.name))return;for(const t of s)if(!n.consumable.consume(t.item,e.name))return;const a=n.mapper,l=n.writer;l.insert(a.toViewPosition(s.start),o),n.mapper.bindElementToMarker(o,t.markerName),s.isCollapsed||(l.insert(a.toViewPosition(s.end),r),n.mapper.bindElementToMarker(r,t.markerName)),e.stop()}),{priority:e.converterPriority||"normal"}),t.on("removeMarker:"+e.model,(e.view,(e,t,i)=>{const n=i.mapper.markerNameToElements(t.markerName);if(n){for(const e of n)i.mapper.unbindElementFromMarkerName(e,t.markerName),i.writer.clear(i.writer.createRangeOn(e),e);i.writer.clearClonedElementsGroup(t.markerName),e.stop()}}),{priority:e.converterPriority||"normal"})}}(e))}markerToHighlight(e){return this.add(function(e){return t=>{var i;t.on("addMarker:"+e.model,(i=e.view,(e,t,n)=>{if(!t.item)return;if(!(t.item instanceof ua||t.item instanceof _a||t.item.is("$textProxy")))return;const o=Ma(i,t,n);if(!o)return;if(!n.consumable.consume(t.item,e.name))return;const r=n.writer,s=Ta(r,o),a=r.document.selection;if(t.item instanceof ua||t.item instanceof _a)r.wrap(a.getFirstRange(),s,a);else{const e=n.mapper.toViewRange(t.range),i=r.wrap(e,s);for(const e of i.getItems())if(e.is("attributeElement")&&e.isSimilar(s)){n.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on("addMarker:"+e.model,function(e){return(t,i,n)=>{if(!i.item)return;if(!(i.item instanceof Js))return;const o=Ma(e,i,n);if(!o)return;if(!n.consumable.test(i.item,t.name))return;const r=n.mapper.toViewElement(i.item);if(r&&r.getCustomProperty("addHighlight")){n.consumable.consume(i.item,t.name);for(const e of oa._createIn(i.item))n.consumable.consume(e.item,t.name);r.getCustomProperty("addHighlight")(r,o,n.writer),n.mapper.bindElementToMarker(r,i.markerName)}}}(e.view),{priority:e.converterPriority||"normal"}),t.on("removeMarker:"+e.model,function(e){return(t,i,n)=>{if(i.markerRange.isCollapsed)return;const o=Ma(e,i,n);if(!o)return;const r=Ta(n.writer,o),s=n.mapper.markerNameToElements(i.markerName);if(s){for(const e of s)n.mapper.unbindElementFromMarkerName(e,i.markerName),e.is("attributeElement")?n.writer.unwrap(n.writer.createRangeOn(e),r):e.getCustomProperty("removeHighlight")(e,o.id,n.writer);n.writer.clearClonedElementsGroup(i.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){const t=(e=Aa(e)).model;e.view||(e.view=i=>({group:t,name:i.substr(e.model.length+1)}));return i=>{var n;i.on("addMarker:"+t,(n=e.view,(e,t,i)=>{const o=n(t.markerName,i);if(!o)return;const r=t.markerRange;i.consumable.consume(r,e.name)&&(Ea(r,!1,i,t,o),Ea(r,!0,i,t,o),e.stop())}),{priority:e.converterPriority||"normal"}),i.on("removeMarker:"+t,function(e){return(t,i,n)=>{const o=e(i.markerName,n);if(!o)return;const r=n.mapper.markerNameToElements(i.markerName);if(r){for(const e of r)n.mapper.unbindElementFromMarkerName(e,i.markerName),e.is("containerElement")?(s(`data-${o.group}-start-before`,e),s(`data-${o.group}-start-after`,e),s(`data-${o.group}-end-before`,e),s(`data-${o.group}-end-after`,e)):n.writer.clear(n.writer.createRangeOn(e),e);n.writer.clearClonedElementsGroup(i.markerName),t.stop()}function s(e,t){if(t.hasAttribute(e)){const i=new Set(t.getAttribute(e).split(","));i.delete(o.name),0==i.size?n.writer.removeAttribute(e,t):n.writer.setAttribute(e,Array.from(i).join(","),t)}}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}}function Ta(e,t){const i=e.createAttributeElement("span",t.attributes);return t.classes&&i._addClass(t.classes),"number"==typeof t.priority&&(i._priority=t.priority),i._id=t.id,i}function Ea(e,t,i,n,o){const r=t?e.start:e.end,s=r.nodeAfter&&r.nodeAfter.is("element")?r.nodeAfter:null,a=r.nodeBefore&&r.nodeBefore.is("element")?r.nodeBefore:null;if(s||a){let e,r;t&&s||!t&&!a?(e=s,r=!0):(e=a,r=!1);const l=i.mapper.toViewElement(e);if(l)return void function(e,t,i,n,o,r){const s=`data-${r.group}-${t?"start":"end"}-${i?"before":"after"}`,a=e.hasAttribute(s)?e.getAttribute(s).split(","):[];a.unshift(r.name),n.writer.setAttribute(s,a.join(","),e),n.mapper.bindElementToMarker(e,o.markerName)}(l,t,r,i,n,o)}!function(e,t,i,n,o){const r=`${o.group}-${t?"start":"end"}`,s=o.name?{name:o.name}:null,a=i.writer.createUIElement(r,s);i.writer.insert(e,a),i.mapper.bindElementToMarker(a,n.markerName)}(i.mapper.toViewPosition(r),t,i,n,o)}function Ia(e,t){return"function"==typeof e?e:(i,n)=>function(e,t,i){"string"==typeof e&&(e={name:e});let n;const o=t.writer,r=Object.assign({},e.attributes);if("container"==i)n=o.createContainerElement(e.name,r);else if("attribute"==i){const t={priority:e.priority||xo.DEFAULT_PRIORITY};n=o.createAttributeElement(e.name,r,t)}else n=o.createUIElement(e.name,r);if(e.styles){const t=Object.keys(e.styles);for(const i of t)o.setStyle(i,e.styles[i],n)}if(e.classes){const t=e.classes;if("string"==typeof t)o.addClass(t,n);else for(const e of t)o.addClass(e,n)}return n}(e,n,t)}function Sa(e){return e.model.values?(t,i)=>{const n=e.view[t];return n?n(t,i):null}:e.view}function Pa(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function Ma(e,t,i){const n="function"==typeof e?e(t,i):e;return n?(n.priority||(n.priority=10),n.id||(n.id=t.markerName),n):null}function Na(e){const{schema:t,document:i}=e.model;for(const n of i.getRootNames()){const o=i.getRoot(n);if(o.isEmpty&&!t.checkChild(o,"$text")&&t.checkChild(o,"paragraph"))return e.insertElement("paragraph",o),!0}return!1}function Ra(e,t,i){const n=i.createContext(e);return!!i.checkChild(n,"paragraph")&&!!i.checkChild(n.push("paragraph"),t)}function Oa(e,t){const i=t.createElement("paragraph");return t.insert(i,e),t.createPositionAt(i,0)}class za extends xa{elementToElement(e){return this.add(Da(e))}elementToAttribute(e){return this.add(function(e){ja(e=Aa(e));const t=Ba(e,!1),i=Va(e.view),n=i?"element:"+i:"element";return i=>{i.on(n,t,{priority:e.converterPriority||"low"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=Aa(e);let t=null;("string"==typeof e.view||e.view.key)&&(t=function(e){"string"==typeof e.view&&(e.view={key:e.view});const t=e.view.key;let i;if("class"==t||"style"==t){i={["class"==t?"classes":"styles"]:e.view.value}}else{const n=void 0===e.view.value?/[\s\S]*/:e.view.value;i={attributes:{[t]:n}}}e.view.name&&(i.name=e.view.name);return e.view=i,t}(e));ja(e,t);const i=Ba(e,!0);return t=>{t.on("element",i,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){return function(e){const t=e.model;e.model=(e,i)=>{const n="string"==typeof t?t:t(e,i);return i.writer.createElement("$marker",{"data-name":n})}}(e=Aa(e)),Da(e)}(e))}dataToMarker(e){return this.add(function(e){(e=Aa(e)).model||(e.model=t=>t?e.view+":"+t:e.view);const t=La(Fa(e,"start")),i=La(Fa(e,"end"));return n=>{n.on("element:"+e.view+"-start",t,{priority:e.converterPriority||"normal"}),n.on("element:"+e.view+"-end",i,{priority:e.converterPriority||"normal"});const o=a.get("low"),r=a.get("highest"),s=a.get(e.converterPriority)/r;n.on("element",function(e){return(t,i,n)=>{const o="data-"+e.view;function r(t,o){for(const r of o){const o=e.model(r,n),s=n.writer.createElement("$marker",{"data-name":o});n.writer.insert(s,t),i.modelCursor.isEqual(t)?i.modelCursor=i.modelCursor.getShiftedBy(1):i.modelCursor=i.modelCursor._getTransformedByInsertion(t,1),i.modelRange=i.modelRange._getTransformedByInsertion(t,1)[0]}}(n.consumable.test(i.viewItem,{attributes:o+"-end-after"})||n.consumable.test(i.viewItem,{attributes:o+"-start-after"})||n.consumable.test(i.viewItem,{attributes:o+"-end-before"})||n.consumable.test(i.viewItem,{attributes:o+"-start-before"}))&&(i.modelRange||Object.assign(i,n.convertChildren(i.viewItem,i.modelCursor)),n.consumable.consume(i.viewItem,{attributes:o+"-end-after"})&&r(i.modelRange.end,i.viewItem.getAttribute(o+"-end-after").split(",")),n.consumable.consume(i.viewItem,{attributes:o+"-start-after"})&&r(i.modelRange.end,i.viewItem.getAttribute(o+"-start-after").split(",")),n.consumable.consume(i.viewItem,{attributes:o+"-end-before"})&&r(i.modelRange.start,i.viewItem.getAttribute(o+"-end-before").split(",")),n.consumable.consume(i.viewItem,{attributes:o+"-start-before"})&&r(i.modelRange.start,i.viewItem.getAttribute(o+"-start-before").split(",")))}}(e),{priority:o+s})}}(e))}}function Da(e){const t=La(e=Aa(e)),i=Va(e.view),n=i?"element:"+i:"element";return i=>{i.on(n,t,{priority:e.converterPriority||"normal"})}}function Va(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function La(e){const t=new mn(e.view);return(i,n,o)=>{const r=t.match(n.viewItem);if(!r)return;const s=r.match;if(s.name=!0,!o.consumable.test(n.viewItem,s))return;const a=function(e,t,i){return e instanceof Function?e(t,i):i.writer.createElement(e)}(e.model,n.viewItem,o);a&&o.safeInsert(a,n.modelCursor)&&(o.consumable.consume(n.viewItem,s),o.convertChildren(n.viewItem,a),o.updateConversionResult(a,n))}}function ja(e,t=null){const i=null===t||(e=>e.getAttribute(t)),n="object"!=typeof e.model?e.model:e.model.key,o="object"!=typeof e.model||void 0===e.model.value?i:e.model.value;e.model={key:n,value:o}}function Ba(e,t){const i=new mn(e.view);return(n,o,r)=>{const s=i.match(o.viewItem);if(!s)return;if(!function(e,t){const i="function"==typeof e?e(t):e;if("object"==typeof i&&!Va(i))return!1;return!i.classes&&!i.attributes&&!i.styles}(e.view,o.viewItem)?delete s.match.name:s.match.name=!0,!r.consumable.test(o.viewItem,s.match))return;const a=e.model.key,l="function"==typeof e.model.value?e.model.value(o.viewItem,r):e.model.value;if(null===l)return;o.modelRange||Object.assign(o,r.convertChildren(o.viewItem,o.modelCursor));(function(e,t,i,n){let o=!1;for(const r of Array.from(e.getItems({shallow:i})))n.schema.checkAttribute(r,t.key)&&(o=!0,r.hasAttribute(t.key)||n.writer.setAttribute(t.key,t.value,r));return o})(o.modelRange,{key:a,value:l},t,r)&&r.consumable.consume(o.viewItem,s.match)}}function Fa(e,t){const i={};return i.view=e.view+"-"+t,i.model=(t,i)=>{const n=t.getAttribute("name"),o=e.model(n,i);return i.writer.createElement("$marker",{"data-name":o})},i}class Ha{constructor(e,t){this.model=e,this.view=new $s(t),this.mapper=new ra,this.downcastDispatcher=new la({mapper:this.mapper,schema:e.schema});const i=this.model.document,n=i.selection,o=this.model.markers;this.listenTo(this.model,"_beforeChanges",()=>{this.view._disableRendering(!0)},{priority:"highest"}),this.listenTo(this.model,"_afterChanges",()=>{this.view._disableRendering(!1)},{priority:"lowest"}),this.listenTo(i,"change",()=>{this.view.change(e=>{this.downcastDispatcher.convertChanges(i.differ,o,e),this.downcastDispatcher.convertSelection(n,o,e)})},{priority:"low"}),this.listenTo(this.view.document,"selectionChange",function(e,t){return(i,n)=>{const o=n.newSelection,r=[];for(const e of o.getRanges())r.push(t.toModelRange(e));const s=e.createSelection(r,{backward:o.isBackward});s.isEqual(e.document.selection)||e.change(e=>{e.setSelection(s)})}}(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",(e,t,i)=>{if(!i.consumable.consume(t.item,"insert"))return;const n=i.writer,o=i.mapper.toViewPosition(t.range.start),r=n.createText(t.item.data);n.insert(o,r)},{priority:"lowest"}),this.downcastDispatcher.on("remove",(e,t,i)=>{const n=i.mapper.toViewPosition(t.position),o=t.position.getShiftedBy(t.length),r=i.mapper.toViewPosition(o,{isPhantom:!0}),s=i.writer.createRange(n,r),a=i.writer.remove(s.getTrimmed());for(const e of i.writer.createRangeIn(a).getItems())i.mapper.unbindViewElement(e)},{priority:"low"}),this.downcastDispatcher.on("selection",(e,t,i)=>{const n=i.writer,o=n.document.selection;for(const e of o.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&i.writer.mergeAttributes(e.start);n.setSelection(null)},{priority:"high"}),this.downcastDispatcher.on("selection",(e,t,i)=>{const n=t.selection;if(n.isCollapsed)return;if(!i.consumable.consume(n,"selection"))return;const o=[];for(const e of n.getRanges()){const t=i.mapper.toViewRange(e);o.push(t)}i.writer.setSelection(o,{backward:n.isBackward})},{priority:"low"}),this.downcastDispatcher.on("selection",(e,t,i)=>{const n=t.selection;if(!n.isCollapsed)return;if(!i.consumable.consume(n,"selection"))return;const o=i.writer,r=n.getFirstPosition(),s=i.mapper.toViewPosition(r),a=o.breakAttributes(s);o.setSelection(a)},{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using(e=>{if("$graveyard"==e.rootName)return null;const t=new so(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t})}destroy(){this.view.destroy(),this.stopListening()}}Ke(Ha,Ue);class Ua{constructor(){this._commands=new Map}add(e,t){this._commands.set(e,t)}get(e){return this._commands.get(e)}execute(e,...t){const i=this.get(e);if(!i)throw new l.a("commandcollection-command-not-found",this,{commandName:e});return i.execute(...t)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const e of this.commands())e.destroy()}}class Wa{constructor(){this._consumables=new Map}add(e,t){let i;e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):(this._consumables.has(e)?i=this._consumables.get(e):(i=new qa(e),this._consumables.set(e,i)),i.add(t))}test(e,t){const i=this._consumables.get(e);return void 0===i?null:e.is("$text")||e.is("documentFragment")?i:i.test(t)}consume(e,t){return!!this.test(e,t)&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!1):this._consumables.get(e).consume(t),!0)}revert(e,t){const i=this._consumables.get(e);void 0!==i&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):i.revert(t))}static consumablesFromElement(e){const t={element:e,name:!0,attributes:[],classes:[],styles:[]},i=e.getAttributeKeys();for(const e of i)"style"!=e&&"class"!=e&&t.attributes.push(e);const n=e.getClassNames();for(const e of n)t.classes.push(e);const o=e.getStyleNames();for(const e of o)t.styles.push(e);return t}static createFrom(e,t){if(t||(t=new Wa(e)),e.is("$text"))return t.add(e),t;e.is("element")&&t.add(e,Wa.consumablesFromElement(e)),e.is("documentFragment")&&t.add(e);for(const i of e.getChildren())t=Wa.createFrom(i,t);return t}}class qa{constructor(e){this.element=e,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(e){e.name&&(this._canConsumeName=!0);for(const t in this._consumables)t in e&&this._add(t,e[t])}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const t in this._consumables)if(t in e){const i=this._test(t,e[t]);if(!0!==i)return i}return!0}consume(e){e.name&&(this._canConsumeName=!1);for(const t in this._consumables)t in e&&this._consume(t,e[t])}revert(e){e.name&&(this._canConsumeName=!0);for(const t in this._consumables)t in e&&this._revert(t,e[t])}_add(e,t){const i=_e(t)?t:[t],n=this._consumables[e];for(const t of i){if("attributes"===e&&("class"===t||"style"===t))throw new l.a("viewconsumable-invalid-attribute",this);if(n.set(t,!0),"styles"===e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))n.set(e,!0)}}_test(e,t){const i=_e(t)?t:[t],n=this._consumables[e];for(const t of i)if("attributes"!==e||"class"!==t&&"style"!==t){const e=n.get(t);if(void 0===e)return null;if(!e)return!1}else{const e="class"==t?"classes":"styles",i=this._test(e,[...this._consumables[e].keys()]);if(!0!==i)return i}return!0}_consume(e,t){const i=_e(t)?t:[t],n=this._consumables[e];for(const t of i)if("attributes"!==e||"class"!==t&&"style"!==t){if(n.set(t,!1),"styles"==e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))n.set(e,!1)}else{const e="class"==t?"classes":"styles";this._consume(e,[...this._consumables[e].keys()])}}_revert(e,t){const i=_e(t)?t:[t],n=this._consumables[e];for(const t of i)if("attributes"!==e||"class"!==t&&"style"!==t){!1===n.get(t)&&n.set(t,!0)}else{const e="class"==t?"classes":"styles";this._revert(e,[...this._consumables[e].keys()])}}}class $a{constructor(){this._sourceDefinitions={},this._attributeProperties={},this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",(e,t)=>{t[0]=new Ya(t[0])},{priority:"highest"}),this.on("checkChild",(e,t)=>{t[0]=new Ya(t[0]),t[1]=this.getDefinition(t[1])},{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new l.a("schema-cannot-register-item-twice",this,{itemName:e});this._sourceDefinitions[e]=[Object.assign({},t)],this._clearCache()}extend(e,t){if(!this._sourceDefinitions[e])throw new l.a("schema-cannot-extend-missing-item",this,{itemName:e});this._sourceDefinitions[e].push(Object.assign({},t)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(e){let t;return t="string"==typeof e?e:e.is&&(e.is("$text")||e.is("$textProxy"))?"$text":e.name,this.getDefinitions()[t]}isRegistered(e){return!!this.getDefinition(e)}isBlock(e){const t=this.getDefinition(e);return!(!t||!t.isBlock)}isLimit(e){const t=this.getDefinition(e);return!!t&&!(!t.isLimit&&!t.isObject)}isObject(e){const t=this.getDefinition(e);return!!t&&!!(t.isObject||t.isLimit&&t.isSelectable&&t.isContent)}isInline(e){const t=this.getDefinition(e);return!(!t||!t.isInline)}isSelectable(e){const t=this.getDefinition(e);return!!t&&!(!t.isSelectable&&!t.isObject)}isContent(e){const t=this.getDefinition(e);return!!t&&!(!t.isContent&&!t.isObject)}checkChild(e,t){return!!t&&this._checkContextMatch(t,e)}checkAttribute(e,t){const i=this.getDefinition(e.last);return!!i&&i.allowAttributes.includes(t)}checkMerge(e,t=null){if(e instanceof ea){const t=e.nodeBefore,i=e.nodeAfter;if(!(t instanceof Js))throw new l.a("schema-check-merge-no-element-before",this);if(!(i instanceof Js))throw new l.a("schema-check-merge-no-element-after",this);return this.checkMerge(t,i)}for(const i of t.getChildren())if(!this.checkChild(e,i))return!1;return!0}addChildCheck(e){this.on("checkChild",(t,[i,n])=>{if(!n)return;const o=e(i,n);"boolean"==typeof o&&(t.stop(),t.return=o)},{priority:"high"})}addAttributeCheck(e){this.on("checkAttribute",(t,[i,n])=>{const o=e(i,n);"boolean"==typeof o&&(t.stop(),t.return=o)},{priority:"high"})}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||{}}getLimitElement(e){let t;if(e instanceof ea)t=e.parent;else{t=(e instanceof oa?[e]:Array.from(e.getRanges())).reduce((e,t)=>{const i=t.getCommonAncestor();return e?e.getCommonAncestor(i,{includeSelf:!0}):i},null)}for(;!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const i=[...e.getFirstPosition().getAncestors(),new Gs("",e.getAttributes())];return this.checkAttribute(i,t)}{const i=e.getRanges();for(const e of i)for(const i of e)if(this.checkAttribute(i.item,t))return!0}return!1}*getValidRanges(e,t){e=function*(e){for(const t of e)yield*t.getMinimalFlatRanges()}(e);for(const i of e)yield*this._getValidRangesForRange(i,t)}getNearestSelectionRange(e,t="both"){if(this.checkChild(e,"$text"))return new oa(e);let i,n;const o=e.getAncestors().reverse().find(e=>this.isLimit(e))||e.root;"both"!=t&&"backward"!=t||(i=new Zs({boundaries:oa._createIn(o),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(n=new Zs({boundaries:oa._createIn(o),startPosition:e}));for(const e of function*(e,t){let i=!1;for(;!i;){if(i=!0,e){const t=e.next();t.done||(i=!1,yield{walker:e,value:t.value})}if(t){const e=t.next();e.done||(i=!1,yield{walker:t,value:e.value})}}}(i,n)){const t=e.walker==i?"elementEnd":"elementStart",n=e.value;if(n.type==t&&this.isObject(n.item))return oa._createOn(n.item);if(this.checkChild(n.nextPosition,"$text"))return new oa(n.nextPosition)}return null}findAllowedParent(e,t){let i=e.parent;for(;i;){if(this.checkChild(i,t))return i;if(this.isLimit(i))return null;i=i.parent}return null}removeDisallowedAttributes(e,t){for(const i of e)if(i.is("$text"))sl(this,i,t);else{const e=oa._createIn(i).getPositions();for(const i of e){sl(this,i.nodeBefore||i.parent,t)}}}createContext(e){return new Ya(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,i=Object.keys(t);for(const n of i)e[n]=Ga(t[n],n);for(const t of i)Ka(e,t);for(const t of i)Qa(e,t);for(const t of i)Ja(e,t);for(const t of i)Za(e,t),Xa(e,t);for(const t of i)el(e,t),tl(e,t),il(e,t);this._compiledDefinitions=e}_checkContextMatch(e,t,i=t.length-1){const n=t.getItem(i);if(e.allowIn.includes(n.name)){if(0==i)return!0;{const e=this.getDefinition(n);return this._checkContextMatch(e,t,i-1)}}return!1}*_getValidRangesForRange(e,t){let i=e.start,n=e.start;for(const o of e.getItems({shallow:!0}))o.is("element")&&(yield*this._getValidRangesForRange(oa._createIn(o),t)),this.checkAttribute(o,t)||(i.isEqual(n)||(yield new oa(i,n)),i=ea._createAfter(o)),n=ea._createAfter(o);i.isEqual(n)||(yield new oa(i,n))}}Ke($a,Ue);class Ya{constructor(e){if(e instanceof Ya)return e;"string"==typeof e?e=[e]:Array.isArray(e)||(e=e.getAncestors({includeSelf:!0})),this._items=e.map(rl)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(e){const t=new Ya([e]);return t._items=[...this._items,...t._items],t}getItem(e){return this._items[e]}*getNames(){yield*this._items.map(e=>e.name)}endsWith(e){return Array.from(this.getNames()).join(" ").endsWith(e)}startsWith(e){return Array.from(this.getNames()).join(" ").startsWith(e)}}function Ga(e,t){const i={name:t,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],allowChildren:[],inheritTypesFrom:[]};return function(e,t){for(const i of e){const e=Object.keys(i).filter(e=>e.startsWith("is"));for(const n of e)t[n]=i[n]}}(e,i),nl(e,i,"allowIn"),nl(e,i,"allowContentOf"),nl(e,i,"allowWhere"),nl(e,i,"allowAttributes"),nl(e,i,"allowAttributesOf"),nl(e,i,"allowChildren"),nl(e,i,"inheritTypesFrom"),function(e,t){for(const i of e){const e=i.inheritAllFrom;e&&(t.allowContentOf.push(e),t.allowWhere.push(e),t.allowAttributesOf.push(e),t.inheritTypesFrom.push(e))}}(e,i),i}function Ka(e,t){const i=e[t];for(const n of i.allowChildren){const i=e[n];i&&i.allowIn.push(t)}i.allowChildren.length=0}function Qa(e,t){for(const i of e[t].allowContentOf)if(e[i]){ol(e,i).forEach(e=>{e.allowIn.push(t)})}delete e[t].allowContentOf}function Ja(e,t){for(const i of e[t].allowWhere){const n=e[i];if(n){const i=n.allowIn;e[t].allowIn.push(...i)}}delete e[t].allowWhere}function Za(e,t){for(const i of e[t].allowAttributesOf){const n=e[i];if(n){const i=n.allowAttributes;e[t].allowAttributes.push(...i)}}delete e[t].allowAttributesOf}function Xa(e,t){const i=e[t];for(const t of i.inheritTypesFrom){const n=e[t];if(n){const e=Object.keys(n).filter(e=>e.startsWith("is"));for(const t of e)t in i||(i[t]=n[t])}}delete i.inheritTypesFrom}function el(e,t){const i=e[t],n=i.allowIn.filter(t=>e[t]);i.allowIn=Array.from(new Set(n))}function tl(e,t){const i=e[t];for(const n of i.allowIn){e[n].allowChildren.push(t)}}function il(e,t){const i=e[t];i.allowAttributes=Array.from(new Set(i.allowAttributes))}function nl(e,t,i){for(const n of e)"string"==typeof n[i]?t[i].push(n[i]):Array.isArray(n[i])&&t[i].push(...n[i])}function ol(e,t){const i=e[t];return(n=e,Object.keys(n).map(e=>n[e])).filter(e=>e.allowIn.includes(i.name));var n}function rl(e){return"string"==typeof e||e.is("documentFragment")?{name:"string"==typeof e?e:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:e.is("element")?e.name:"$text",*getAttributeKeys(){yield*e.getAttributeKeys()},getAttribute:t=>e.getAttribute(t)}}function sl(e,t,i){for(const n of t.getAttributeKeys())e.checkAttribute(t,n)||i.removeAttribute(n,t)}class al{constructor(e={}){this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this.conversionApi=Object.assign({},e),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this),this.conversionApi.safeInsert=this._safeInsert.bind(this),this.conversionApi.updateConversionResult=this._updateConversionResult.bind(this),this.conversionApi.splitToAllowedParent=this._splitToAllowedParent.bind(this),this.conversionApi.getSplitParts=this._getSplitParts.bind(this)}convert(e,t,i=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let i;for(const n of new Ya(e)){const e={};for(const t of n.getAttributeKeys())e[t]=n.getAttribute(t);const o=t.createElement(n.name,e);i&&t.append(o,i),i=ea._createAt(o,0)}return i}(i,t),this.conversionApi.writer=t,this.conversionApi.consumable=Wa.createFrom(e),this.conversionApi.store={};const{modelRange:n}=this._convertItem(e,this._modelCursor),o=t.createDocumentFragment();if(n){this._removeEmptyElements();for(const e of Array.from(this._modelCursor.parent.getChildren()))t.append(e,o);o.markers=function(e,t){const i=new Set,n=new Map,o=oa._createIn(e).getItems();for(const e of o)"$marker"==e.name&&i.add(e);for(const e of i){const i=e.getAttribute("data-name"),o=t.createPositionBefore(e);n.has(i)?n.get(i).end=o.clone():n.set(i,new oa(o.clone())),t.remove(e)}return n}(o,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,o}_convertItem(e,t){const i=Object.assign({viewItem:e,modelCursor:t,modelRange:null});if(e.is("element")?this.fire("element:"+e.name,i,this.conversionApi):e.is("$text")?this.fire("text",i,this.conversionApi):this.fire("documentFragment",i,this.conversionApi),i.modelRange&&!(i.modelRange instanceof oa))throw new l.a("view-conversion-dispatcher-incorrect-result",this);return{modelRange:i.modelRange,modelCursor:i.modelCursor}}_convertChildren(e,t){let i=t.is("position")?t:ea._createAt(t,0);const n=new oa(i);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,i);e.modelRange instanceof oa&&(n.end=e.modelRange.end,i=e.modelCursor)}return{modelRange:n,modelCursor:i}}_safeInsert(e,t){const i=this._splitToAllowedParent(e,t);return!!i&&(this.conversionApi.writer.insert(e,i.position),!0)}_updateConversionResult(e,t){const i=this._getSplitParts(e),n=this.conversionApi.writer;t.modelRange||(t.modelRange=n.createRange(n.createPositionBefore(e),n.createPositionAfter(i[i.length-1])));const o=this._cursorParents.get(e);t.modelCursor=o?n.createPositionAt(o,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:i,writer:n}=this.conversionApi;let o=i.findAllowedParent(t,e);if(o){if(o===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(o)&&(o=null)}if(!o)return Ra(t,e,i)?{position:Oa(t,n)}:null;const r=this.conversionApi.writer.split(t,o),s=[];for(const e of r.range.getWalker())if("elementEnd"==e.type)s.push(e.item);else{const t=s.pop(),i=e.item;this._registerSplitPair(t,i)}const a=r.range.end.parent;return this._cursorParents.set(e,a),{position:r.position,cursorParent:a}}_registerSplitPair(e,t){this._splitParts.has(e)||this._splitParts.set(e,[e]);const i=this._splitParts.get(e);this._splitParts.set(t,i),i.push(t)}_getSplitParts(e){let t;return t=this._splitParts.has(e)?this._splitParts.get(e):[e],t}_removeEmptyElements(){let e=!1;for(const t of this._splitParts.keys())t.isEmpty&&(this.conversionApi.writer.remove(t),this._splitParts.delete(t),e=!0);e&&this._removeEmptyElements()}}Ke(al,h);class ll{getHtml(e){const t=document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}class cl{constructor(e){this._domParser=new DOMParser,this._domConverter=new Er(e,{blockFillerMode:"nbsp"}),this._htmlWriter=new ll}toData(e){const t=this._domConverter.viewToDom(e,document);return this._htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this._domConverter.domToView(t)}registerRawContentMatcher(e){this._domConverter.registerRawContentMatcher(e)}useFillerType(e){this._domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){const t=this._domParser.parseFromString(e,"text/html"),i=t.createDocumentFragment();let n=t.firstChild;for(;!n.isSameNode(t.documentElement);){const e=n;n=n.nextSibling,e.nodeType==Node.COMMENT_NODE&&i.appendChild(e)}const o=t.body.childNodes;for(;o.length>0;)i.appendChild(o[0]);return i}}class dl{constructor(e,t){this.model=e,this.mapper=new ra,this.downcastDispatcher=new la({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",(e,t,i)=>{if(!i.consumable.consume(t.item,"insert"))return;const n=i.writer,o=i.mapper.toViewPosition(t.range.start),r=n.createText(t.item.data);n.insert(o,r)},{priority:"lowest"}),this.upcastDispatcher=new al({schema:e.schema}),this.viewDocument=new yo(t),this.stylesProcessor=t,this.htmlProcessor=new cl(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new qo(this.viewDocument),this.upcastDispatcher.on("text",(e,t,{schema:i,consumable:n,writer:o})=>{let r=t.modelCursor;if(!n.test(t.viewItem))return;if(!i.checkChild(r,"$text")){if(!Ra(r,"$text",i))return;r=Oa(r,o)}n.consume(t.viewItem);const s=o.createText(t.viewItem.data);o.insert(s,r),t.modelRange=o.createRange(r,r.getShiftedBy(s.offsetSize)),t.modelCursor=t.modelRange.end},{priority:"lowest"}),this.upcastDispatcher.on("element",(e,t,i)=>{if(!t.modelRange&&i.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:n}=i.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=n}},{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",(e,t,i)=>{if(!t.modelRange&&i.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:n}=i.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=n}},{priority:"lowest"}),this.decorate("init"),this.decorate("set"),this.on("init",()=>{this.fire("ready")},{priority:"lowest"}),this.on("ready",()=>{this.model.enqueueChange("transparent",Na)},{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:i="empty"}=e;if(!this._checkIfRootsExists([t]))throw new l.a("datacontroller-get-non-existent-root",this);const n=this.model.document.getRoot(t);return"empty"!==i||this.model.hasContent(n,{ignoreWhitespaces:!0})?this.stringify(n,e):""}stringify(e,t={}){const i=this.toView(e,t);return this.processor.toData(i)}toView(e,t={}){const i=this.viewDocument,n=this._viewWriter;this.mapper.clearBindings();const o=oa._createIn(e),r=new Wo(i);this.mapper.bindElements(e,r),this.downcastDispatcher.conversionApi.options=t,this.downcastDispatcher.convertInsert(o,n);const s=e.is("documentFragment")?Array.from(e.markers):function(e){const t=[],i=e.root.document;if(!i)return[];const n=oa._createIn(e);for(const e of i.model.markers){const i=e.getRange(),o=i.isCollapsed,r=i.start.isEqual(n.start)||i.end.isEqual(n.end);if(o&&r)t.push([e.name,i]);else{const o=n.getIntersection(i);o&&t.push([e.name,o])}}return t}(e);for(const[e,t]of s)this.downcastDispatcher.convertMarkerAdd(e,t,n);return delete this.downcastDispatcher.conversionApi.options,r}init(e){if(this.model.document.version)throw new l.a("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new l.a("datacontroller-init-non-existent-root",this);return this.model.enqueueChange("transparent",e=>{for(const i of Object.keys(t)){const n=this.model.document.getRoot(i);e.insert(this.parse(t[i],n),n,0)}}),Promise.resolve()}set(e,t={}){let i={};if("string"==typeof e?i.main=e:i=e,!this._checkIfRootsExists(Object.keys(i)))throw new l.a("datacontroller-set-non-existent-root",this);const n=t.batchType||"default";this.model.enqueueChange(n,e=>{e.setSelection(null),e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const t of Object.keys(i)){const n=this.model.document.getRoot(t);e.remove(e.createRangeIn(n)),e.insert(this.parse(i[t],n),n,0)}})}parse(e,t="$root"){const i=this.processor.toView(e);return this.toModel(i,t)}toModel(e,t="$root"){return this.model.change(i=>this.upcastDispatcher.convert(e,i,t))}addStyleProcessorRules(e){e(this.stylesProcessor)}registerRawContentMatcher(e){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(e),this.htmlProcessor.registerRawContentMatcher(e)}destroy(){this.stopListening()}_checkIfRootsExists(e){for(const t of e)if(!this.model.document.getRootNames().includes(t))return!1;return!0}}Ke(dl,Ue);class hl{constructor(e,t){this._helpers=new Map,this._downcast=en(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=en(t),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(e,t){const i=this._downcast.includes(t);if(!this._upcast.includes(t)&&!i)throw new l.a("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:i})}for(e){if(!this._helpers.has(e))throw new l.a("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:i}of ul(e))this.for("upcast").elementToElement({model:t,view:i,converterPriority:e.converterPriority})}attributeToElement(e){this.for("downcast").attributeToElement(e);for(const{model:t,view:i}of ul(e))this.for("upcast").elementToAttribute({view:i,model:t,converterPriority:e.converterPriority})}attributeToAttribute(e){this.for("downcast").attributeToAttribute(e);for(const{model:t,view:i}of ul(e))this.for("upcast").attributeToAttribute({view:i,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:i}){if(this._helpers.has(e))throw new l.a("conversion-group-exists",this);const n=i?new Ca(t):new za(t);this._helpers.set(e,n)}}function*ul(e){if(e.model.values)for(const t of e.model.values){const i={key:e.model.key,value:t},n=e.view[t],o=e.upcastAlso?e.upcastAlso[t]:void 0;yield*gl(i,n,o)}else yield*gl(e.model,e.view,e.upcastAlso)}function*gl(e,t,i){if(yield{model:e,view:t},i)for(const t of en(i))yield{model:e,view:t}}class ml{constructor(e="default"){this.operations=[],this.type=e}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.batch=this,this.operations.push(e),e}}class fl{constructor(e){this.baseVersion=e,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const e=Object.assign({},this);return e.__className=this.constructor.className,delete e.batch,delete e.isDocumentOperation,e}static get className(){return"Operation"}static fromJSON(e){return new this(e.baseVersion)}}class pl{constructor(e){this.markers=new Map,this._children=new Qs,e&&this._insertChild(0,e)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(e){return"documentFragment"===e||"model:documentFragment"===e}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}getPath(){return[]}getNodeByPath(e){let t=this;for(const i of e)t=t.getChild(t.offsetToIndex(i));return t}offsetToIndex(e){return this._children.offsetToIndex(e)}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return e}static fromJSON(e){const t=[];for(const i of e)i.name?t.push(Js.fromJSON(i)):t.push(Gs.fromJSON(i));return new pl(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const i=function(e){if("string"==typeof e)return[new Gs(e)];Ji(e)||(e=[e]);return Array.from(e).map(e=>"string"==typeof e?new Gs(e):e instanceof Ks?new Gs(e.data,e.getAttributes()):e)}(t);for(const e of i)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,i)}_removeChildren(e,t=1){const i=this._children._removeNodes(e,t);for(const e of i)e.parent=null;return i}}function bl(e,t){const i=(t=_l(t)).reduce((e,t)=>e+t.offsetSize,0),n=e.parent;yl(e);const o=e.index;return n._insertChild(o,t),vl(n,o+t.length),vl(n,o),new oa(e,e.getShiftedBy(i))}function wl(e){if(!e.isFlat)throw new l.a("operation-utils-remove-range-not-flat",this);const t=e.start.parent;yl(e.start),yl(e.end);const i=t._removeChildren(e.start.index,e.end.index-e.start.index);return vl(t,e.start.index),i}function kl(e,t){if(!e.isFlat)throw new l.a("operation-utils-move-range-not-flat",this);const i=wl(e);return bl(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),i)}function _l(e){const t=[];e instanceof Array||(e=[e]);for(let i=0;ie.maxOffset)throw new l.a("move-operation-nodes-do-not-exist",this);if(e===t&&i=i&&this.targetPosition.path[e]e._clone(!0))),t=new Il(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new ea(e,[0]);return new El(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffsete._clone(!0))),bl(this.position,e)}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e.nodes=this.nodes.toJSON(),e}static get className(){return"InsertOperation"}static fromJSON(e,t){const i=[];for(const t of e.nodes)t.name?i.push(Js.fromJSON(t)):i.push(Gs.fromJSON(t));const n=new Il(ea.fromJSON(e.position,t),i,e.baseVersion);return n.shouldReceiveAttributes=e.shouldReceiveAttributes,n}}class Sl extends fl{constructor(e,t,i,n,o,r){super(r),this.name=e,this.oldRange=t?t.clone():null,this.newRange=i?i.clone():null,this.affectsData=o,this._markers=n}get type(){return"marker"}clone(){return new Sl(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new Sl(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){const e=this.newRange?"_set":"_remove";this._markers[e](this.name,this.newRange,!0,this.affectsData)}toJSON(){const e=super.toJSON();return this.oldRange&&(e.oldRange=this.oldRange.toJSON()),this.newRange&&(e.newRange=this.newRange.toJSON()),delete e._markers,e}static get className(){return"MarkerOperation"}static fromJSON(e,t){return new Sl(e.name,e.oldRange?oa.fromJSON(e.oldRange,t):null,e.newRange?oa.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}class Pl extends fl{constructor(e,t,i,n){super(n),this.position=e,this.position.stickiness="toNext",this.oldName=t,this.newName=i}get type(){return"rename"}clone(){return new Pl(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new Pl(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const e=this.position.nodeAfter;if(!(e instanceof Js))throw new l.a("rename-operation-wrong-position",this);if(e.name!==this.oldName)throw new l.a("rename-operation-wrong-name",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e}static get className(){return"RenameOperation"}static fromJSON(e,t){return new Pl(ea.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}class Ml extends fl{constructor(e,t,i,n,o){super(o),this.root=e,this.key=t,this.oldValue=i,this.newValue=n}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new Ml(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new Ml(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new l.a("rootattribute-operation-not-a-root",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new l.a("rootattribute-operation-wrong-old-value",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new l.a("rootattribute-operation-attribute-exists",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const e=super.toJSON();return e.root=this.root.toJSON(),e}static get className(){return"RootAttributeOperation"}static fromJSON(e,t){if(!t.getRoot(e.root))throw new l.a("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new Ml(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}class Nl extends fl{constructor(e,t,i,n,o){super(o),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=t,this.targetPosition=i.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=n.clone()}get type(){return"merge"}get deletionPosition(){return new ea(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new oa(this.sourcePosition,e)}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.targetPosition._getTransformedByMergeOperation(this),t=this.sourcePosition.path.slice(0,-1),i=new ea(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new Rl(e,this.howMany,i,this.graveyardPosition,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent;if(!e.parent)throw new l.a("merge-operation-source-position-invalid",this);if(!t.parent)throw new l.a("merge-operation-target-position-invalid",this);if(this.howMany!=e.maxOffset)throw new l.a("merge-operation-how-many-invalid",this)}_execute(){const e=this.sourcePosition.parent;kl(oa._createIn(e),this.targetPosition),kl(oa._createOn(e),this.graveyardPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=e.sourcePosition.toJSON(),e.targetPosition=e.targetPosition.toJSON(),e.graveyardPosition=e.graveyardPosition.toJSON(),e}static get className(){return"MergeOperation"}static fromJSON(e,t){const i=ea.fromJSON(e.sourcePosition,t),n=ea.fromJSON(e.targetPosition,t),o=ea.fromJSON(e.graveyardPosition,t);return new this(i,e.howMany,n,o,e.baseVersion)}}class Rl extends fl{constructor(e,t,i,n,o){super(o),this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=i,this.graveyardPosition=n?n.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const e=this.insertionPosition.path.slice();return e.push(0),new ea(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new oa(this.splitPosition,e)}clone(){return new this.constructor(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new ea(e,[0]);return new Nl(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof oa)for(const i of e.getItems())t(i);else t(e)}move(e,t,i){if(this._assertWriterUsedCorrectly(),!(e instanceof oa))throw new l.a("writer-move-invalid-range",this);if(!e.isFlat)throw new l.a("writer-move-range-not-flat",this);const n=ea._createAt(t,i);if(n.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!Bl(e.root,n.root))throw new l.a("writer-move-different-document",this);const o=e.root.document?e.root.document.version:null,r=new El(e.start,e.end.offset-e.start.offset,n,o);this.batch.addOperation(r),this.model.applyOperation(r)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof oa?e:oa._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),jl(e.start,e.end.offset-e.start.offset,this.batch,this.model)}merge(e){this._assertWriterUsedCorrectly();const t=e.nodeBefore,i=e.nodeAfter;if(this._addOperationForAffectedMarkers("merge",e),!(t instanceof Js))throw new l.a("writer-merge-no-element-before",this);if(!(i instanceof Js))throw new l.a("writer-merge-no-element-after",this);e.root.document?this._merge(e):this._mergeDetached(e)}createPositionFromPath(e,t,i){return this.model.createPositionFromPath(e,t,i)}createPositionAt(e,t){return this.model.createPositionAt(e,t)}createPositionAfter(e){return this.model.createPositionAfter(e)}createPositionBefore(e){return this.model.createPositionBefore(e)}createRange(e,t){return this.model.createRange(e,t)}createRangeIn(e){return this.model.createRangeIn(e)}createRangeOn(e){return this.model.createRangeOn(e)}createSelection(e,t,i){return this.model.createSelection(e,t,i)}_mergeDetached(e){const t=e.nodeBefore,i=e.nodeAfter;this.move(oa._createIn(i),ea._createAt(t,"end")),this.remove(i)}_merge(e){const t=ea._createAt(e.nodeBefore,"end"),i=ea._createAt(e.nodeAfter,0),n=e.root.document.graveyard,o=new ea(n,[0]),r=e.root.document.version,s=new Nl(i,e.nodeAfter.maxOffset,t,o,r);this.batch.addOperation(s),this.model.applyOperation(s)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof Js))throw new l.a("writer-rename-not-element-instance",this);const i=e.root.document?e.root.document.version:null,n=new Pl(ea._createBefore(e),e.name,t,i);this.batch.addOperation(n),this.model.applyOperation(n)}split(e,t){this._assertWriterUsedCorrectly();let i,n,o=e.parent;if(!o.parent)throw new l.a("writer-split-element-no-parent",this);if(t||(t=o.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new l.a("writer-split-invalid-limit-element",this);do{const t=o.root.document?o.root.document.version:null,r=o.maxOffset-e.offset,s=Rl.getInsertionPosition(e),a=new Rl(e,r,s,null,t);this.batch.addOperation(a),this.model.applyOperation(a),i||n||(i=o,n=e.parent.nextSibling),o=(e=this.createPositionAfter(e.parent)).parent}while(o!==t);return{position:e,range:new oa(ea._createAt(i,"end"),ea._createAt(n,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new l.a("writer-wrap-range-not-flat",this);const i=t instanceof Js?t:new Js(t);if(i.childCount>0)throw new l.a("writer-wrap-element-not-empty",this);if(null!==i.parent)throw new l.a("writer-wrap-element-attached",this);this.insert(i,e.start);const n=new oa(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(n,ea._createAt(i,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new l.a("writer-unwrap-element-no-parent",this);this.move(oa._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new l.a("writer-addmarker-no-usingoperation",this);const i=t.usingOperation,n=t.range,o=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new l.a("writer-addmarker-marker-exists",this);if(!n)throw new l.a("writer-addmarker-no-range",this);return i?(Ll(this,e,null,n,o),this.model.markers.get(e)):this.model.markers._set(e,n,i,o)}updateMarker(e,t){this._assertWriterUsedCorrectly();const i="string"==typeof e?e:e.name,n=this.model.markers.get(i);if(!n)throw new l.a("writer-updatemarker-marker-not-exists",this);if(!t)return void this.model.markers._refresh(n);const o="boolean"==typeof t.usingOperation,r="boolean"==typeof t.affectsData,s=r?t.affectsData:n.affectsData;if(!o&&!t.range&&!r)throw new l.a("writer-updatemarker-wrong-options",this);const a=n.getRange(),c=t.range?t.range:a;o&&t.usingOperation!==n.managedUsingOperations?t.usingOperation?Ll(this,i,null,c,s):(Ll(this,i,a,null,s),this.model.markers._set(i,c,void 0,s)):n.managedUsingOperations?Ll(this,i,a,c,s):this.model.markers._set(i,c,void 0,s)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new l.a("writer-removemarker-no-marker",this);const i=this.model.markers.get(t);if(!i.managedUsingOperations)return void this.model.markers._remove(t);Ll(this,t,i.getRange(),null,i.affectsData)}setSelection(e,t,i){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(e,t,i)}setSelectionFocus(e,t){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(e,t)}setSelectionAttribute(e,t){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._setSelectionAttribute(e,t);else for(const[t,i]of gn(e))this._setSelectionAttribute(t,i)}removeSelectionAttribute(e){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._removeSelectionAttribute(e);else for(const t of e)this._removeSelectionAttribute(t)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(e){this.model.document.selection._restoreGravity(e)}_setSelectionAttribute(e,t){const i=this.model.document.selection;if(i.isCollapsed&&i.anchor.parent.isEmpty){const n=_a._getStoreAttributeKey(e);this.setAttribute(n,t,i.anchor.parent)}i._setAttribute(e,t)}_removeSelectionAttribute(e){const t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){const i=_a._getStoreAttributeKey(e);this.removeAttribute(i,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new l.a("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const i of this.model.markers){if(!i.managedUsingOperations)continue;const n=i.getRange();let o=!1;if("move"===e)o=t.containsPosition(n.start)||t.start.isEqual(n.start)||t.containsPosition(n.end)||t.end.isEqual(n.end);else{const e=t.nodeBefore,i=t.nodeAfter,r=n.start.parent==e&&n.start.isAtEnd,s=n.end.parent==i&&0==n.end.offset,a=n.end.nodeAfter==i,l=n.start.nodeAfter==i;o=r||s||a||l}o&&this.updateMarker(i.name,{range:n})}}}function Dl(e,t,i,n){const o=e.model,r=o.document;let s,a,l,c=n.start;for(const e of n.getWalker({shallow:!0}))l=e.item.getAttribute(t),s&&a!=l&&(a!=i&&d(),c=s),s=e.nextPosition,a=l;function d(){const n=new oa(c,s),l=n.root.document?r.version:null,d=new Cl(n,t,a,i,l);e.batch.addOperation(d),o.applyOperation(d)}s instanceof ea&&s!=c&&a!=i&&d()}function Vl(e,t,i,n){const o=e.model,r=o.document,s=n.getAttribute(t);let a,l;if(s!=i){if(n.root===n){const e=n.document?r.version:null;l=new Ml(n,t,s,i,e)}else{a=new oa(ea._createBefore(n),e.createPositionAfter(n));const o=a.root.document?r.version:null;l=new Cl(a,t,s,i,o)}e.batch.addOperation(l),o.applyOperation(l)}}function Ll(e,t,i,n,o){const r=e.model,s=r.document,a=new Sl(t,i,n,r.markers,o,s.version);e.batch.addOperation(a),r.applyOperation(a)}function jl(e,t,i,n){let o;if(e.root.document){const i=n.document,r=new ea(i.graveyard,[0]);o=new El(e,t,r,i.version)}else o=new Tl(e,t);i.addOperation(o),n.applyOperation(o)}function Bl(e,t){return e===t||e instanceof Ol&&t instanceof Ol}class Fl{constructor(e){this._markerCollection=e,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize);const t=oa._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getRange();this.bufferMarkerChange(e.name,t,t,e.affectsData)}this._cachedChanges=null}bufferOperation(e){switch(e.type){case"insert":if(this._isInInsertedElement(e.position.parent))return;this._markInsert(e.position.parent,e.position.offset,e.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const t of e.range.getItems({shallow:!0}))this._isInInsertedElement(t.parent)||this._markAttribute(t);break;case"remove":case"move":case"reinsert":{if(e.sourcePosition.isEqual(e.targetPosition)||e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition))return;const t=this._isInInsertedElement(e.sourcePosition.parent),i=this._isInInsertedElement(e.targetPosition.parent);t||this._markRemove(e.sourcePosition.parent,e.sourcePosition.offset,e.howMany),i||this._markInsert(e.targetPosition.parent,e.getMovedRangeStart().offset,e.howMany);break}case"rename":{if(this._isInInsertedElement(e.position.parent))return;this._markRemove(e.position.parent,e.position.offset,1),this._markInsert(e.position.parent,e.position.offset,1);const t=oa._createFromPositionAndShift(e.position,1);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getRange();this.bufferMarkerChange(e.name,t,t,e.affectsData)}break}case"split":{const t=e.splitPosition.parent;this._isInInsertedElement(t)||this._markRemove(t,e.splitPosition.offset,e.howMany),this._isInInsertedElement(e.insertionPosition.parent)||this._markInsert(e.insertionPosition.parent,e.insertionPosition.offset,1),e.graveyardPosition&&this._markRemove(e.graveyardPosition.parent,e.graveyardPosition.offset,1);break}case"merge":{const t=e.sourcePosition.parent;this._isInInsertedElement(t.parent)||this._markRemove(t.parent,t.startOffset,1);const i=e.graveyardPosition.parent;this._markInsert(i,e.graveyardPosition.offset,1);const n=e.targetPosition.parent;this._isInInsertedElement(n)||this._markInsert(n,e.targetPosition.offset,t.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(e,t,i,n){const o=this._changedMarkers.get(e);o?(o.newRange=i,o.affectsData=n,null==o.oldRange&&null==o.newRange&&this._changedMarkers.delete(e)):this._changedMarkers.set(e,{oldRange:t,newRange:i,affectsData:n})}getMarkersToRemove(){const e=[];for(const[t,i]of this._changedMarkers)null!=i.oldRange&&e.push({name:t,range:i.oldRange});return e}getMarkersToAdd(){const e=[];for(const[t,i]of this._changedMarkers)null!=i.newRange&&e.push({name:t,range:i.newRange});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map(e=>({name:e[0],data:{oldRange:e[1].oldRange,newRange:e[1].newRange}}))}hasDataChanges(){for(const[,e]of this._changedMarkers)if(e.affectsData)return!0;return this._changesInElement.size>0}getChanges(e={includeChangesInGraveyard:!1}){if(this._cachedChanges)return e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let t=[];for(const e of this._changesInElement.keys()){const i=this._changesInElement.get(e).sort((e,t)=>e.offset===t.offset?e.type!=t.type?"remove"==e.type?-1:1:0:e.offsete.position.root!=t.position.root?e.position.root.rootNamee);for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t.slice(),this._cachedChanges=t.filter(Wl),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard:this._cachedChanges}reset(){this._changesInElement.clear(),this._elementSnapshots.clear(),this._changedMarkers.clear(),this._cachedChanges=null}_markInsert(e,t,i){const n={type:"insert",offset:t,howMany:i,count:this._changeCount++};this._markChange(e,n)}_markRemove(e,t,i){const n={type:"remove",offset:t,howMany:i,count:this._changeCount++};this._markChange(e,n),this._removeAllNestedChanges(e,t,i)}_markAttribute(e){const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshot(e);const i=this._getChangesForElement(e);this._handleChange(t,i),i.push(t);for(let e=0;ei.offset){if(n>o){const e={type:"attribute",offset:o,howMany:n-o,count:this._changeCount++};this._handleChange(e,t),t.push(e)}e.nodesToHandle=i.offset-e.offset,e.howMany=e.nodesToHandle}else e.offset>=i.offset&&e.offseto?(e.nodesToHandle=n-o,e.offset=o):e.nodesToHandle=0);if("remove"==i.type&&e.offseti.offset){const o={type:"attribute",offset:i.offset,howMany:n-i.offset,count:this._changeCount++};this._handleChange(o,t),t.push(o),e.nodesToHandle=i.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==i.type&&(e.offset>=i.offset&&n<=o?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=i.offset&&n>=o&&(i.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,i){return{type:"insert",position:ea._createAt(e,t),name:i,length:1,changeCount:this._changeCount++}}_getRemoveDiff(e,t,i){return{type:"remove",position:ea._createAt(e,t),name:i,length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,i){const n=[];i=new Map(i);for(const[o,r]of t){const t=i.has(o)?i.get(o):null;t!==r&&n.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:o,attributeOldValue:r,attributeNewValue:t,changeCount:this._changeCount++}),i.delete(o)}for(const[t,o]of i)n.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:o,changeCount:this._changeCount++});return n}_isInInsertedElement(e){const t=e.parent;if(!t)return!1;const i=this._changesInElement.get(t),n=e.startOffset;if(i)for(const e of i)if("insert"==e.type&&n>=e.offset&&nn){for(let t=0;t=e&&n.baseVersion{const i=t[0];if(i.isDocumentOperation&&i.baseVersion!==this.version)throw new l.a("model-document-applyoperation-wrong-version",this,{operation:i})},{priority:"highest"}),this.listenTo(e,"applyOperation",(e,t)=>{const i=t[0];i.isDocumentOperation&&this.differ.bufferOperation(i)},{priority:"high"}),this.listenTo(e,"applyOperation",(e,t)=>{const i=t[0];i.isDocumentOperation&&(this.version++,this.history.addOperation(i))},{priority:"low"}),this.listenTo(this.selection,"change",()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0}),this.listenTo(e.markers,"update",(e,t,i,n)=>{this.differ.bufferMarkerChange(t.name,i,n,t.affectsData),null===i&&t.on("change",(e,i)=>{this.differ.bufferMarkerChange(t.name,i,t.getRange(),t.affectsData)})})}get graveyard(){return this.getRoot("$graveyard")}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new l.a("model-document-createroot-name-exists",this,{name:t});const i=new Ol(this,e,t);return this.roots.add(i),i}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(){return Array.from(this.roots,e=>e.rootName).filter(e=>"$graveyard"!=e)}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=cn(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}_handleChangeBlock(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const e of this.roots)if(e!==this.graveyard)return e;return this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,i=t.schema,n=t.createPositionFromPath(e,[0]);return i.getNearestSelectionRange(n)||t.createRange(n)}_validateSelectionRange(e){return Kl(e.start)&&Kl(e.end)}_callPostFixers(e){let t=!1;do{for(const i of this._postFixers)if(this.selection.refresh(),t=i(e),t)break}while(t)}}function Kl(e){const t=e.textNode;if(t){const i=t.data,n=e.offset-t.startOffset;return!$l(i,n)&&!Yl(i,n)}return!0}Ke(Gl,h);class Ql{constructor(){this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(e){return this._markers.has(e)}get(e){return this._markers.get(e)||null}_set(e,t,i=!1,n=!1){const o=e instanceof Jl?e.name:e;if(o.includes(","))throw new l.a("markercollection-incorrect-marker-name",this);const r=this._markers.get(o);if(r){const e=r.getRange();let s=!1;return e.isEqual(t)||(r._attachLiveRange(ba.fromRange(t)),s=!0),i!=r.managedUsingOperations&&(r._managedUsingOperations=i,s=!0),"boolean"==typeof n&&n!=r.affectsData&&(r._affectsData=n,s=!0),s&&this.fire("update:"+o,r,e,t),r}const s=ba.fromRange(t),a=new Jl(o,s,i,n);return this._markers.set(o,a),this.fire("update:"+o,a,null,t),a}_remove(e){const t=e instanceof Jl?e.name:e,i=this._markers.get(t);return!!i&&(this._markers.delete(t),this.fire("update:"+t,i,i.getRange(),null),this._destroyMarker(i),!0)}_refresh(e){const t=e instanceof Jl?e.name:e,i=this._markers.get(t);if(!i)throw new l.a("markercollection-refresh-marker-not-exists",this);const n=i.getRange();this.fire("update:"+t,i,n,n,i.managedUsingOperations,i.affectsData)}*getMarkersAtPosition(e){for(const t of this)t.getRange().containsPosition(e)&&(yield t)}*getMarkersIntersectingRange(e){for(const t of this)null!==t.getRange().getIntersection(e)&&(yield t)}destroy(){for(const e of this._markers.values())this._destroyMarker(e);this._markers=null,this.stopListening()}*getMarkersGroup(e){for(const t of this._markers.values())t.name.startsWith(e+":")&&(yield t)}_destroyMarker(e){e.stopListening(),e._detachLiveRange()}}Ke(Ql,h);class Jl{constructor(e,t,i,n){this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=i,this._affectsData=n}get managedUsingOperations(){if(!this._liveRange)throw new l.a("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new l.a("marker-destroyed",this);return this._affectsData}getStart(){if(!this._liveRange)throw new l.a("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new l.a("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new l.a("marker-destroyed",this);return this._liveRange.toRange()}is(e){return"marker"===e||"model:marker"===e}_attachLiveRange(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}Ke(Jl,h);class Zl extends fl{get type(){return"noop"}clone(){return new Zl(this.baseVersion)}getReversed(){return new Zl(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}const Xl={};Xl[Cl.className]=Cl,Xl[Il.className]=Il,Xl[Sl.className]=Sl,Xl[El.className]=El,Xl[Zl.className]=Zl,Xl[fl.className]=fl,Xl[Pl.className]=Pl,Xl[Ml.className]=Ml,Xl[Rl.className]=Rl,Xl[Nl.className]=Nl;class ec extends ea{constructor(e,t,i="toNone"){if(super(e,t,i),!this.root.is("rootElement"))throw new l.a("model-liveposition-root-not-rootelement",e);tc.call(this)}detach(){this.stopListening()}is(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e}toPosition(){return new ea(this.root,this.path.slice(),this.stickiness)}static fromPosition(e,t){return new this(e.root,e.path.slice(),t||e.stickiness)}}function tc(){this.listenTo(this.root.document.model,"applyOperation",(e,t)=>{const i=t[0];i.isDocumentOperation&&ic.call(this,i)},{priority:"low"})}function ic(e){const t=this.getTransformedByOperation(e);if(!this.isEqual(t)){const e=this.toPosition();this.path=t.path,this.root=t.root,this.fire("change",e)}}Ke(ec,h);class nc{constructor(e,t,i){this.model=e,this.writer=t,this.position=i,this.canMergeWith=new Set([this.position.parent]),this.schema=e.schema,this._documentFragment=t.createDocumentFragment(),this._documentFragmentPosition=t.createPositionAt(this._documentFragment,0),this._firstNode=null,this._lastNode=null,this._lastAutoParagraph=null,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(e){for(const t of Array.from(e))this._handleNode(t);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(e){const t=this.writer.createPositionAfter(this._lastNode),i=this.writer.createPositionAfter(e);if(i.isAfter(t)){if(this._lastNode=e,this.position.parent!=e||!this.position.isAtEnd)throw new l.a("insertcontent-invalid-insertion-position",this);this.position=i,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this.nodeToSelect?oa._createOn(this.nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new oa(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){if(this.schema.isObject(e))return void this._handleObject(e);let t=this._checkAndAutoParagraphToAllowedPosition(e);t||(t=this._checkAndSplitToAllowedPosition(e),t)?(this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=ec.fromPosition(this.position,"toNext");this._setAffectedBoundaries(this.position),this._documentFragment.getChild(0)==this._firstNode&&(this.writer.insert(this._firstNode,this.position),this._mergeOnLeft(),this.position=e.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=e.toPosition(),e.detach()}_handleObject(e){this._checkAndSplitToAllowedPosition(e)?this._appendToFragment(e):this._tryAutoparagraphing(e)}_handleDisallowedNode(e){e.is("element")?this.handleNodes(e.getChildren()):this._tryAutoparagraphing(e)}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new l.a("insertcontent-wrong-position",this,{node:e,position:this.position});this.writer.insert(e,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(e.offsetSize),this.schema.isObject(e)&&!this.schema.checkChild(this.position,"$text")?this.nodeToSelect=e:this.nodeToSelect=null,this._filterAttributesOf.push(e)}_setAffectedBoundaries(e){this._affectedStart||(this._affectedStart=ec.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=ec.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof Js))return;if(!this._canMergeLeft(e))return;const t=ec._createBefore(e);t.stickiness="toNext";const i=ec.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=ec._createAt(t.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=ec._createAt(t.nodeBefore,"end","toNext")),this.position=i.toPosition(),i.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_mergeOnRight(){const e=this._lastNode;if(!(e instanceof Js))return;if(!this._canMergeRight(e))return;const t=ec._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new l.a("insertcontent-invalid-insertion-position",this);this.position=ea._createAt(t.nodeBefore,"end");const i=ec.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=ec._createAt(t.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=ec._createAt(t.nodeBefore,0,"toPrevious")),this.position=i.toPosition(),i.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_canMergeLeft(e){const t=e.previousSibling;return t instanceof Js&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof Js&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_tryAutoparagraphing(e){const t=this.writer.createElement("paragraph");this._getAllowedIn(this.position.parent,t)&&this.schema.checkChild(t,e)&&(t._appendChild(e),this._handleNode(t))}_checkAndAutoParagraphToAllowedPosition(e){if(this.schema.checkChild(this.position.parent,e))return!0;if(!this.schema.checkChild(this.position.parent,"paragraph")||!this.schema.checkChild("paragraph",e))return!1;this._insertPartialFragment();const t=this.writer.createElement("paragraph");return this.writer.insert(t,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=t,this.position=this.writer.createPositionAt(t,0),!0}_checkAndSplitToAllowedPosition(e){const t=this._getAllowedIn(this.position.parent,e);if(!t)return!1;for(t!=this.position.parent&&this._insertPartialFragment();t!=this.position.parent;)if(this.position.isAtStart){const e=this.position.parent;this.position=this.writer.createPositionBefore(e),e.isEmpty&&e.parent===t&&this.writer.remove(e)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const e=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=e,this.canMergeWith.add(this.position.nodeAfter)}return!0}_getAllowedIn(e,t){return this.schema.checkChild(e,t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}function oc(e,t,i={}){if(t.isCollapsed)return;const n=t.getFirstRange();if("$graveyard"==n.root.rootName)return;const o=e.schema;e.change(e=>{if(!i.doNotResetEntireContent&&function(e,t){const i=e.getLimitElement(t);if(!t.containsEntireContent(i))return!1;const n=t.getFirstRange();if(n.start.parent==n.end.parent)return!1;return e.checkChild(i,"paragraph")}(o,t))return void function(e,t){const i=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(i)),sc(e,e.createPositionAt(i,0),t)}(e,t);const[r,s]=function(e){const t=e.root.document.model,i=e.start;let n=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){const i=function(e){const t=e.parent,i=t.root.document.model.schema,n=t.getAncestors({parentFirst:!0,includeSelf:!0});for(const e of n){if(i.isLimit(e))return null;if(i.isBlock(e))return e}}(n);if(i&&n.isTouching(t.createPositionAt(i,0))){const i=t.createSelection(e);t.modifySelection(i,{direction:"backward"});const o=i.getLastPosition(),r=t.createRange(o,n);t.hasContent(r,{ignoreMarkers:!0})||(n=o)}}return[ec.fromPosition(i,"toPrevious"),ec.fromPosition(n,"toNext")]}(n);r.isTouching(s)||e.remove(e.createRange(r,s)),i.leaveUnmerged||(!function(e,t,i){const n=e.model;if(!rc(e.model.schema,t,i))return;const[o,r]=function(e,t){const i=e.getAncestors(),n=t.getAncestors();let o=0;for(;i[o]&&i[o]==n[o];)o++;return[i[o],n[o]]}(t,i);if(!o||!r)return;!n.hasContent(o,{ignoreMarkers:!0})&&n.hasContent(r,{ignoreMarkers:!0})?function e(t,i,n,o){const r=i.parent,s=n.parent;if(r==o||s==o)return;i=t.createPositionAfter(r),(n=t.createPositionBefore(s)).isEqual(i)||t.insert(r,n);for(;i.parent.isEmpty;){const e=i.parent;i=t.createPositionBefore(e),t.remove(e)}if(n=t.createPositionBefore(s),function(e,t){const i=t.nodeBefore,n=t.nodeAfter;i.name!=n.name&&e.rename(i,n.name);e.clearAttributes(i),e.setAttributes(Object.fromEntries(n.getAttributes()),i),e.merge(t)}(t,n),!rc(t.model.schema,i,n))return;e(t,i,n,o)}(e,t,i,o.parent):function e(t,i,n,o){const r=i.parent,s=n.parent;if(r==o||s==o)return;i=t.createPositionAfter(r),(n=t.createPositionBefore(s)).isEqual(i)||t.insert(s,i);t.merge(i);for(;n.parent.isEmpty;){const e=n.parent;n=t.createPositionBefore(e),t.remove(e)}if(!rc(t.model.schema,i,n))return;e(t,i,n,o)}(e,t,i,o.parent)}(e,r,s),o.removeDisallowedAttributes(r.parent.getChildren(),e)),ac(e,t,r),!i.doNotAutoparagraph&&function(e,t){const i=e.checkChild(t,"$text"),n=e.checkChild(t,"paragraph");return!i&&n}(o,r)&&sc(e,r,t),r.detach(),s.detach()})}function rc(e,t,i){const n=t.parent,o=i.parent;return n!=o&&(!e.isLimit(n)&&!e.isLimit(o)&&function(e,t,i){const n=new oa(e,t);for(const e of n.getWalker())if(i.isLimit(e.item))return!1;return!0}(t,i,e))}function sc(e,t,i){const n=e.createElement("paragraph");e.insert(n,t),ac(e,i,e.createPositionAt(n,0))}function ac(e,t,i){t instanceof _a?e.setSelection(i):t.setTo(i)}function lc(e,t){const{isForward:i,walker:n,unit:o,schema:r}=e,{type:s,item:a,nextPosition:l}=t;if("text"==s)return"word"===e.unit?function(e,t){let i=e.position.textNode;if(i){let n=e.position.offset-i.startOffset;for(;!dc(i.data,n,t)&&!hc(i,n,t);){e.next();const o=t?e.position.nodeAfter:e.position.nodeBefore;if(o&&o.is("$text")){const n=o.data.charAt(t?0:o.data.length-1);' ,.?!:;"-()'.includes(n)||(e.next(),i=e.position.textNode)}n=e.position.offset-i.startOffset}}return e.position}(n,i):function(e,t){const i=e.position.textNode;if(i){const n=i.data;let o=e.position.offset-i.startOffset;for(;$l(n,o)||"character"==t&&Yl(n,o);)e.next(),o=e.position.offset-i.startOffset}return e.position}(n,o);if(s==(i?"elementStart":"elementEnd")){if(r.isSelectable(a))return ea._createAt(a,i?"after":"before");if(r.checkChild(l,"$text"))return l}else{if(r.isLimit(a))return void n.skip(()=>!0);if(r.checkChild(l,"$text"))return l}}function cc(e,t){const i=e.root,n=ea._createAt(i,t?"end":0);return t?new oa(e,n):new oa(n,e)}function dc(e,t,i){const n=t+(i?0:-1);return' ,.?!:;"-()'.includes(e.charAt(n))}function hc(e,t,i){return t===(i?e.endOffset:0)}function uc(e,t){const i=[];Array.from(e.getItems({direction:"backward"})).map(e=>t.createRangeOn(e)).filter(t=>(t.start.isAfter(e.start)||t.start.isEqual(e.start))&&(t.end.isBefore(e.end)||t.end.isEqual(e.end))).forEach(e=>{i.push(e.start.parent),t.remove(e)}),i.forEach(e=>{let i=e;for(;i.parent&&i.isEmpty;){const e=t.createRangeOn(i);i=i.parent,t.remove(e)}})}function gc(e){e.document.registerPostFixer(t=>function(e,t){const i=t.document.selection,n=t.schema,o=[];let r=!1;for(const e of i.getRanges()){const t=mc(e,n);t&&!t.isEqual(e)?(o.push(t),r=!0):o.push(e)}r&&e.setSelection(function(e){const t=[];t.push(e.shift());for(const i of e){const e=t.pop();if(i.isEqual(e))t.push(e);else if(i.isIntersecting(e)){const n=e.start.isAfter(i.start)?i.start:e.start,o=e.end.isAfter(i.end)?e.end:i.end,r=new oa(n,o);t.push(r)}else t.push(e),t.push(i)}return t}(o),{backward:i.isBackward})}(t,e))}function mc(e,t){return e.isCollapsed?function(e,t){const i=e.start,n=t.getNearestSelectionRange(i);if(!n)return null;if(!n.isCollapsed)return n;const o=n.start;if(i.isEqual(o))return null;return new oa(o)}(e,t):function(e,t){const{start:i,end:n}=e,o=t.checkChild(i,"$text"),r=t.checkChild(n,"$text"),s=t.getLimitElement(i),a=t.getLimitElement(n);if(s===a){if(o&&r)return null;if(function(e,t,i){const n=e.nodeAfter&&!i.isLimit(e.nodeAfter)||i.checkChild(e,"$text"),o=t.nodeBefore&&!i.isLimit(t.nodeBefore)||i.checkChild(t,"$text");return n||o}(i,n,t)){const e=i.nodeAfter&&t.isSelectable(i.nodeAfter)?null:t.getNearestSelectionRange(i,"forward"),o=n.nodeBefore&&t.isSelectable(n.nodeBefore)?null:t.getNearestSelectionRange(n,"backward"),r=e?e.start:i,s=o?o.end:n;return new oa(r,s)}}const l=s&&!s.is("rootElement"),c=a&&!a.is("rootElement");if(l||c){const e=i.nodeAfter&&n.nodeBefore&&i.nodeAfter.parent===n.nodeBefore.parent,o=l&&(!e||!pc(i.nodeAfter,t)),r=c&&(!e||!pc(n.nodeBefore,t));let d=i,h=n;return o&&(d=ea._createBefore(fc(s,t))),r&&(h=ea._createAfter(fc(a,t))),new oa(d,h)}return null}(e,t)}function fc(e,t){let i=e,n=i;for(;t.isLimit(n)&&n.parent;)i=n,n=n.parent;return i}function pc(e,t){return e&&t.isSelectable(e)}class bc{constructor(){this.markers=new Ql,this.document=new Gl(this),this.schema=new $a,this._pendingChanges=[],this._currentWriter=null,["insertContent","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach(e=>this.decorate(e)),this.on("applyOperation",(e,t)=>{t[0]._validate()},{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$block",{allowIn:"$root",isBlock:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0,isContent:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$documentFragment",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$marker"),this.schema.addChildCheck((e,t)=>{if("$marker"===t.name)return!0}),gc(this),this.document.registerPostFixer(Na)}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new ml,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){l.a.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{"string"==typeof e?e=new ml(e):"function"==typeof e&&(t=e,e=new ml),this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){l.a.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,i){return function(e,t,i,n){return e.change(o=>{let r;r=i?i instanceof ua||i instanceof _a?i:o.createSelection(i,n):e.document.selection,r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0});const s=new nc(e,o,r.anchor);let a;a=t.is("documentFragment")?t.getChildren():[t],s.handleNodes(a);const l=s.getSelectionRange();l&&(r instanceof _a?o.setSelection(l):r.setTo(l));const c=s.getAffectedRange()||e.createRange(r.anchor);return s.destroy(),c})}(this,e,t,i)}deleteContent(e,t){oc(this,e,t)}modifySelection(e,t){!function(e,t,i={}){const n=e.schema,o="backward"!=i.direction,r=i.unit?i.unit:"character",s=t.focus,a=new Zs({boundaries:cc(s,o),singleCharacters:!0,direction:o?"forward":"backward"}),l={walker:a,schema:n,isForward:o,unit:r};let c;for(;c=a.next();){if(c.done)return;const i=lc(l,c.value);if(i)return void(t instanceof _a?e.change(e=>{e.setSelectionFocus(i)}):t.setFocus(i))}}(this,e,t)}getSelectedContent(e){return function(e,t){return e.change(e=>{const i=e.createDocumentFragment(),n=t.getFirstRange();if(!n||n.isCollapsed)return i;const o=n.start.root,r=n.start.getCommonPath(n.end),s=o.getNodeByPath(r);let a;a=n.start.parent==n.end.parent?n:e.createRange(e.createPositionAt(s,n.start.path[r.length]),e.createPositionAt(s,n.end.path[r.length]+1));const l=a.end.offset-a.start.offset;for(const t of a.getItems({shallow:!0}))t.is("$textProxy")?e.appendText(t.data,t.getAttributes(),i):e.append(e.cloneElement(t,!0),i);if(a!=n){const t=n._getTransformedByMove(a.start,e.createPositionAt(i,0),l)[0],o=e.createRange(e.createPositionAt(i,0),t.start);uc(e.createRange(t.end,e.createPositionAt(i,"end")),e),uc(o,e)}return i})}(this,e)}hasContent(e,t={}){const i=e instanceof Js?oa._createIn(e):e;if(i.isCollapsed)return!1;const{ignoreWhitespaces:n=!1,ignoreMarkers:o=!1}=t;if(!o)for(const e of this.markers.getMarkersIntersectingRange(i))if(e.affectsData)return!0;for(const e of i.getItems())if(this.schema.isContent(e)){if(!e.is("$textProxy"))return!0;if(!n)return!0;if(-1!==e.data.search(/\S/))return!0}return!1}createPositionFromPath(e,t,i){return new ea(e,t,i)}createPositionAt(e,t){return ea._createAt(e,t)}createPositionAfter(e){return ea._createAfter(e)}createPositionBefore(e){return ea._createBefore(e)}createRange(e,t){return new oa(e,t)}createRangeIn(e){return oa._createIn(e)}createRangeOn(e){return oa._createOn(e)}createSelection(e,t,i){return new ua(e,t,i)}createBatch(e){return new ml(e)}createOperationFromJSON(e){return class{static fromJSON(e,t){return Xl[e.__className].fromJSON(e,t)}}.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];for(this.fire("_beforeChanges");this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new zl(this,t);const i=this._pendingChanges[0].callback(this._currentWriter);e.push(i),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}return this.fire("_afterChanges"),e}}Ke(bc,Ue);class wc extends Os{constructor(e){super(),this.editor=e}set(e,t,i={}){if("string"==typeof t){const e=t;t=(t,i)=>{this.editor.execute(e),i()}}super.set(e,t,i)}}class kc{constructor(e={}){this._context=e.context||new sn({language:e.language}),this._context._addEditor(this,!e.context);const t=Array.from(this.constructor.builtinPlugins||[]);this.config=new Gi(e,this.constructor.defaultConfig),this.config.define("plugins",t),this.config.define(this._context._getEditorConfig()),this.plugins=new Xi(this,t,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this.commands=new Ua,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.set("isReadOnly",!1),this.model=new bc;const i=new Jn;this.data=new dl(this.model,i),this.editing=new Ha(this.model,i),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new hl([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new wc(this),this.keystrokes.listenTo(this.editing.view.document)}initPlugins(){const e=this.config,t=e.get("plugins"),i=e.get("removePlugins")||[],n=e.get("extraPlugins")||[],o=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(n),i,o)}destroy(){let e=Promise.resolve();return"initializing"==this.state&&(e=new Promise(e=>this.once("ready",e))),e.then(()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()}).then(()=>this.plugins.destroy()).then(()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()}).then(()=>this._context._removeEditor(this))}execute(...e){try{return this.commands.execute(...e)}catch(e){l.a.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}}Ke(kc,Ue);class _c{constructor(e){this.editor=e,this._components=new Map}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(vc(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new l.a("componentfactory-item-missing",this,{name:e});return this._components.get(vc(e)).callback(this.editor.locale)}has(e){return this._components.has(vc(e))}}function vc(e){return String(e).toLowerCase()}class yc{constructor(e){this.editor=e,this.componentFactory=new _c(e),this.focusTracker=new Rs,this._editableElementsMap=new Map,this.listenTo(e.editing.view.document,"layoutChanged",()=>this.update())}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy();for(const e of this._editableElementsMap.values())e.ckeditorInstance=null;this._editableElementsMap=new Map}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}}Ke(yc,h);var xc={setData(e){this.data.set(e)},getData(e){return this.data.get(e)}};var Ac={updateSourceElement(){if(!this.sourceElement)throw new l.a("editor-missing-sourceelement",this);Ps(this.sourceElement,this.data.get())}};class Cc extends an{static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new Zi({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new l.a("pendingactions-add-invalid-message",this);const t=Object.create(Ue);return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}const Tc={cancel:'',caption:'',check:'',cog:'',eraser:'',lowVision:'',image:'',alignBottom:'',alignMiddle:'',alignTop:'',alignLeft:'',alignCenter:'',alignRight:'',alignJustify:'',objectLeft:'',objectCenter:'',objectRight:'',objectFullWidth:'',objectInline:'',objectBlockLeft:'',objectBlockRight:'',objectSizeFull:'',objectSizeLarge:'',objectSizeSmall:'',objectSizeMedium:'',pencil:'',pilcrow:'',quote:'',threeVerticalDots:''};function Ec({emitter:e,activator:t,callback:i,contextElements:n}){e.listenTo(document,"mousedown",(e,o)=>{if(!t())return;const r="function"==typeof o.composedPath?o.composedPath():[];for(const e of n)if(e.contains(o.target)||r.includes(e))return;i()})}function Ic(e){e.set("_isCssTransitionsDisabled",!1),e.disableCssTransitions=()=>{e._isCssTransitionsDisabled=!0},e.enableCssTransitions=()=>{e._isCssTransitionsDisabled=!1},e.extendTemplate({attributes:{class:[e.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}function Sc({view:e}){e.listenTo(e.element,"submit",(t,i)=>{i.preventDefault(),e.fire("submit")},{useCapture:!0})}class Pc extends Zi{constructor(e=[]){super(e,{idProperty:"viewUid"}),this.on("add",(e,t,i)=>{this._renderViewIntoCollectionParent(t,i)}),this.on("remove",(e,t)=>{t.element&&this._parentElement&&t.element.remove()}),this._parentElement=null}destroy(){this.map(e=>e.destroy())}setParent(e){this._parentElement=e;for(const e of this)this._renderViewIntoCollectionParent(e)}delegate(...e){if(!e.length||!e.every(e=>"string"==typeof e))throw new l.a("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const i of this)for(const n of e)i.delegate(n).to(t);this.on("add",(i,n)=>{for(const i of e)n.delegate(i).to(t)}),this.on("remove",(i,n)=>{for(const i of e)n.stopDelegating(i,t)})}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}}i(15);class Mc{constructor(e){this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new Zi,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",(t,i)=>{i.locale=e}),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=Nc.bind(this,this)}createCollection(e){const t=new Pc(e);return this._viewCollections.add(t),t}registerChild(e){Ji(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){Ji(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new Nc(e)}extendTemplate(e){Nc.extend(this.template,e)}render(){if(this.isRendered)throw new l.a("ui-view-render-already-rendered",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map(e=>e.destroy()),this.template&&this.template._revertData&&this.template.revert(this.element)}}Ke(Mc,Mr),Ke(Mc,Ue);class Nc{constructor(e){Object.assign(this,Hc(Fc(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:e,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new l.a("ui-template-revert-not-applied",[this,e]);this._revertTemplateFromNode(e,this._revertData)}*getViews(){yield*function*e(t){if(t.children)for(const i of t.children)Yc(i)?yield i:Gc(i)&&(yield*e(i))}(this)}static bind(e,t){return{to:(i,n)=>new Oc({eventNameOrFunction:i,attribute:i,observable:e,emitter:t,callback:n}),if:(i,n,o)=>new zc({observable:e,emitter:t,attribute:i,valueIfTrue:n,callback:o})}}static extend(e,t){if(e._isRendered)throw new l.a("template-extend-render",[this,e]);!function e(t,i){i.attributes&&(t.attributes||(t.attributes={}),qc(t.attributes,i.attributes));i.eventListeners&&(t.eventListeners||(t.eventListeners={}),qc(t.eventListeners,i.eventListeners));i.text&&t.text.push(...i.text);if(i.children&&i.children.length){if(t.children.length!=i.children.length)throw new l.a("ui-template-extend-children-mismatch",t);let n=0;for(const o of i.children)e(t.children[n++],o)}}(e,Hc(Fc(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new l.a("ui-template-wrong-syntax",this);return this.text?this._renderText(e):this._renderElement(e)}_renderElement(e){let t=e.node;return t||(t=e.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(e),this._renderElementChildren(e),this._setUpListeners(e),t}_renderText(e){let t=e.node;return t?e.revertData.text=t.textContent:t=e.node=document.createTextNode(""),Dc(this.text)?this._bindToObservable({schema:this.text,updater:Lc(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){let t,i,n,o;if(!this.attributes)return;const r=e.node,s=e.revertData;for(t in this.attributes)if(n=r.getAttribute(t),i=this.attributes[t],s&&(s.attributes[t]=n),o=w(i[0])&&i[0].ns?i[0].ns:null,Dc(i)){const a=o?i[0].value:i;s&&Qc(t)&&a.unshift(n),this._bindToObservable({schema:a,updater:jc(r,t,o),data:e})}else"style"==t&&"string"!=typeof i[0]?this._renderStyleAttribute(i[0],e):(s&&n&&Qc(t)&&i.unshift(n),i=i.map(e=>e&&e.value||e).reduce((e,t)=>e.concat(t),[]).reduce(Wc,""),$c(i)||r.setAttributeNS(o,t,i))}_renderStyleAttribute(e,t){const i=t.node;for(const n in e){const o=e[n];Dc(o)?this._bindToObservable({schema:[o],updater:Bc(i,n),data:t}):i.style[n]=o}}_renderElementChildren(e){const t=e.node,i=e.intoFragment?document.createDocumentFragment():t,n=e.isApplying;let o=0;for(const r of this.children)if(Kc(r)){if(!n){r.setParent(t);for(const e of r)i.appendChild(e.element)}}else if(Yc(r))n||(r.isRendered||r.render(),i.appendChild(r.element));else if(pr(r))i.appendChild(r);else if(n){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),r._renderNode({node:i.childNodes[o++],isApplying:!0,revertData:t})}else i.appendChild(r.render());e.intoFragment&&t.appendChild(i)}_setUpListeners(e){if(this.eventListeners)for(const t in this.eventListeners){const i=this.eventListeners[t].map(i=>{const[n,o]=t.split("@");return i.activateDomEventListener(n,o,e)});e.revertData&&e.revertData.bindings.push(i)}}_bindToObservable({schema:e,updater:t,data:i}){const n=i.revertData;Vc(e,t,i);const o=e.filter(e=>!$c(e)).filter(e=>e.observable).map(n=>n.activateAttributeListener(e,t,i));n&&n.bindings.push(o)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)e.textContent=t.text;else{for(const i in t.attributes){const n=t.attributes[i];null===n?e.removeAttribute(i):e.setAttribute(i,n)}for(let i=0;iVc(e,t,i);return this.emitter.listenTo(this.observable,"change:"+this.attribute,n),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,n)}}}class Oc extends Rc{activateDomEventListener(e,t,i){const n=(e,i)=>{t&&!i.target.matches(t)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(i):this.observable.fire(this.eventNameOrFunction,i))};return this.emitter.listenTo(i.node,e,n),()=>{this.emitter.stopListening(i.node,e,n)}}}class zc extends Rc{getValue(e){return!$c(super.getValue(e))&&(this.valueIfTrue||!0)}}function Dc(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(Dc):e instanceof Rc)}function Vc(e,t,{node:i}){let n=function(e,t){return e.map(e=>e instanceof Rc?e.getValue(t):e)}(e,i);n=1==e.length&&e[0]instanceof zc?n[0]:n.reduce(Wc,""),$c(n)?t.remove():t.set(n)}function Lc(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function jc(e,t,i){return{set(n){e.setAttributeNS(i,t,n)},remove(){e.removeAttributeNS(i,t)}}}function Bc(e,t){return{set(i){e.style[t]=i},remove(){e.style[t]=null}}}function Fc(e){return $i(e,e=>{if(e&&(e instanceof Rc||Gc(e)||Yc(e)||Kc(e)))return e})}function Hc(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=en(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)Uc(e,t);return e}(e.on),delete e.on),!e.text){e.attributes&&function(e){for(const t in e)e[t].value&&(e[t].value=en(e[t].value)),Uc(e,t)}(e.attributes);const t=[];if(e.children)if(Kc(e.children))t.push(e.children);else for(const i of e.children)Gc(i)||Yc(i)||pr(i)?t.push(i):t.push(new Nc(i));e.children=t}return e}function Uc(e,t){e[t]=en(e[t])}function Wc(e,t){return $c(t)?e:$c(e)?t:`${e} ${t}`}function qc(e,t){for(const i in t)e[i]?e[i].push(...t[i]):e[i]=t[i]}function $c(e){return!e&&0!==e}function Yc(e){return e instanceof Mc}function Gc(e){return e instanceof Nc}function Kc(e){return e instanceof Pc}function Qc(e){return"class"==e||"style"==e}class Jc extends Pc{constructor(e,t=[]){super(t),this.locale=e}attachToDom(){this._bodyCollectionContainer=new Nc({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();let e=document.querySelector(".ck-body-wrapper");e||(e=function(e,t,i={},n=[]){const o=i&&i.xmlns,r=o?e.createElementNS(o,t):e.createElement(t);for(const e in i)r.setAttribute(e,i[e]);!vs(n)&&Ji(n)||(n=[n]);for(let t of n)vs(t)&&(t=e.createTextNode(t)),r.appendChild(t);return r}(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(e)),e.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const e=document.querySelector(".ck-body-wrapper");e&&0==e.childElementCount&&e.remove()}}i(17);class Zc extends Mc{constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:e.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",()=>{this._updateXMLContent(),this._colorFillPaths()}),this.on("change:fillColor",()=>{this._colorFillPaths()})}_updateXMLContent(){if(this.content){const e=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),t=e.getAttribute("viewBox");for(t&&(this.viewBox=t),this.element.innerHTML="";e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach(e=>{e.style.fill=this.fillColor})}}i(19);class Xc extends Mc{constructor(e){super(e),this.set("text",""),this.set("position","s");const t=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip",t.to("position",e=>"ck-tooltip_"+e),t.if("text","ck-hidden",e=>!e.trim())]},children:[{tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:t.to("text")}]}]})}}i(21);class ed extends Mc{constructor(e){super(e);const t=this.bindTemplate,i=s();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.tooltipView=this._createTooltipView(),this.labelView=this._createLabelView(i),this.iconView=new Zc,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this)),this.setTemplate({tag:"button",attributes:{class:["ck","ck-button",t.to("class"),t.if("isEnabled","ck-disabled",e=>!e),t.if("isVisible","ck-hidden",e=>!e),t.to("isOn",e=>e?"ck-on":"ck-off"),t.if("withText","ck-button_with-text"),t.if("withKeystroke","ck-button_with-keystroke")],type:t.to("type",e=>e||"button"),tabindex:t.to("tabindex"),"aria-labelledby":"ck-editor__aria-label_"+i,"aria-disabled":t.if("isEnabled",!0,e=>!e),"aria-pressed":t.to("isOn",e=>!!this.isToggleable&&String(e))},children:this.children,on:{mousedown:t.to(e=>{e.preventDefault()}),click:t.to(e=>{this.isEnabled?this.fire("execute"):e.preventDefault()})}})}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.tooltipView),this.children.add(this.labelView),this.withKeystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createTooltipView(){const e=new Xc;return e.bind("text").to(this,"_tooltipString"),e.bind("position").to(this,"tooltipPosition"),e}_createLabelView(e){const t=new Mc,i=this.bindTemplate;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:i.to("labelStyle"),id:"ck-editor__aria-label_"+e},children:[{text:this.bindTemplate.to("label")}]}),t}_createKeystrokeView(){const e=new Mc;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",e=>Do(e))}]}),e}_getTooltipString(e,t,i){return e?"string"==typeof e?e:(i&&(i=Do(i)),e instanceof Function?e(t,i):`${t}${i?` (${i})`:""}`):""}}i(23);class td extends ed{constructor(e){super(e),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const e=new Mc;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}class id{constructor(e){if(Object.assign(this,e),e.actions&&e.keystrokeHandler)for(const t in e.actions){let i=e.actions[t];"string"==typeof i&&(i=[i]);for(const n of i)e.keystrokeHandler.set(n,(e,i)=>{this[t](),i()})}}get first(){return this.focusables.find(nd)||null}get last(){return this.focusables.filter(nd).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let e=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((t,i)=>{const n=t.element===this.focusTracker.focusedElement;return n&&(e=i),n}),e)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(e){e&&e.focus()}_getFocusableItem(e){const t=this.current,i=this.focusables.length;if(!i)return null;if(null===t)return this[1===e?"first":"last"];let n=(t+i+e)%i;do{const t=this.focusables.get(n);if(nd(t))return t;n=(n+i+e)%i}while(n!==t);return null}}function nd(e){return!(!e.focus||"none"==vr.window.getComputedStyle(e.element).display)}i(25);var od='';class rd extends ed{constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new Zc;return e.content=od,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}i(27);class sd extends Mc{constructor(e){super(e);const t=this.bindTemplate;this.set("class"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(),this.arrowView=this._createArrowView(),this.keystrokes=new Os,this.focusTracker=new Rs,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",t.to("class"),t.if("isVisible","ck-hidden",e=>!e),this.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:this.children})}render(){super.render(),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",(e,t)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),t())}),this.keystrokes.set("arrowleft",(e,t)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),t())})}focus(){this.actionView.focus()}_createActionView(){const e=new ed;return e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}_createArrowView(){const e=new ed,t=e.bindTemplate;return e.icon=od,e.extendTemplate({attributes:{class:"ck-splitbutton__arrow","aria-haspopup":!0,"aria-expanded":t.to("isOn",e=>String(e))}}),e.bind("isEnabled").to(this),e.delegate("execute").to(this,"open"),e}}class ad extends Mc{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",t.to("position",e=>"ck-dropdown__panel_"+e),t.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:t.to(e=>e.preventDefault())}})}focus(){this.children.length&&this.children.first.focus()}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}i(29);function ld({element:e,target:t,positions:i,limiter:n,fitInViewport:o}){M(t)&&(t=t()),M(n)&&(n=n());const r=function(e){return e&&e.parentNode?e.offsetParent===vr.document.body?null:e.offsetParent:null}(e),s=new Cs(e),a=new Cs(t);let l,c;if(n||o){const e=function(e,t){const{elementRect:i,viewportRect:n}=t,o=i.getArea(),r=function(e,{targetRect:t,elementRect:i,limiterRect:n,viewportRect:o}){const r=[],s=i.getArea();for(const a of e){const e=cd(a,t,i);if(!e)continue;const[l,c]=e;let d=0,h=0;if(n)if(o){const e=n.getIntersection(o);e&&(d=e.getIntersectionArea(c))}else d=n.getIntersectionArea(c);o&&(h=o.getIntersectionArea(c));const u={positionName:l,positionRect:c,limiterIntersectArea:d,viewportIntersectArea:h};if(d===s)return[u];r.push(u)}return r}(e,t);if(n){const e=dd(r.filter(({viewportIntersectArea:e})=>e===o),o);if(e)return e}return dd(r,o)}(i,{targetRect:a,elementRect:s,limiterRect:n&&new Cs(n).getVisible(),viewportRect:o&&new Cs(vr.window)});[c,l]=e||cd(i[0],a,s)}else[c,l]=cd(i[0],a,s);let d=hd(l);return r&&(d=function({left:e,top:t},i){const n=hd(new Cs(i)),o=xs(i);return e-=n.left,t-=n.top,e+=i.scrollLeft,t+=i.scrollTop,e-=o.left,t-=o.top,{left:e,top:t}}(d,r)),{left:d.left,top:d.top,name:c}}function cd(e,t,i){const n=e(t,i);if(!n)return null;const{left:o,top:r,name:s}=n;return[s,i.clone().moveTo(o,r)]}function dd(e,t){let i,n,o=0;for(const{positionName:r,positionRect:s,limiterIntersectArea:a,viewportIntersectArea:l}of e){if(a===t)return[r,s];const e=l**2+a**2;e>o&&(o=e,i=s,n=r)}return i?[n,i]:null}function hd({left:e,top:t}){const{scrollX:i,scrollY:n}=vr.window;return{left:e+i,top:t+n}}class ud extends Mc{constructor(e,t,i){super(e);const n=this.bindTemplate;this.buttonView=t,this.panelView=i,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("id"),this.set("panelPosition","auto"),this.keystrokes=new Os,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",n.to("class"),n.if("isEnabled","ck-disabled",e=>!e)],id:n.to("id"),"aria-describedby":n.to("ariaDescribedById")},children:[t,i]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"]}})}render(){super.render(),this.listenTo(this.buttonView,"open",()=>{this.isOpen=!this.isOpen}),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",()=>{this.isOpen&&("auto"===this.panelPosition?this.panelView.position=ud._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition)}),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(this.buttonView.focus(),this.isOpen=!1,t())};this.keystrokes.set("arrowdown",(e,t)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,t())}),this.keystrokes.set("arrowright",(e,t)=>{this.isOpen&&t()}),this.keystrokes.set("arrowleft",e),this.keystrokes.set("esc",e)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:e,north:t,southEast:i,southWest:n,northEast:o,northWest:r,southMiddleEast:s,southMiddleWest:a,northMiddleEast:l,northMiddleWest:c}=ud.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[i,n,s,a,e,o,r,l,c,t]:[n,i,a,s,e,r,o,c,l,t]}}ud.defaultPanelPositions={south:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/2,name:"s"}),southEast:e=>({top:e.bottom,left:e.left,name:"se"}),southWest:(e,t)=>({top:e.bottom,left:e.left-t.width+e.width,name:"sw"}),southMiddleEast:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/4,name:"sme"}),southMiddleWest:(e,t)=>({top:e.bottom,left:e.left-3*(t.width-e.width)/4,name:"smw"}),north:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/2,name:"n"}),northEast:(e,t)=>({top:e.top-t.height,left:e.left,name:"ne"}),northWest:(e,t)=>({top:e.top-t.height,left:e.left-t.width+e.width,name:"nw"}),northMiddleEast:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/4,name:"nme"}),northMiddleWest:(e,t)=>({top:e.top-t.height,left:e.left-3*(t.width-e.width)/4,name:"nmw"})},ud._getOptimalPosition=ld;class gd extends Mc{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}class md extends Mc{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}function fd(e){return Array.isArray(e)?{items:e,removeItems:[]}:e?Object.assign({items:[],removeItems:[]},e):{items:[],removeItems:[]}}i(31);class pd extends Mc{constructor(e,t){super(e);const i=this.bindTemplate,n=this.t;this.options=t||{},this.set("ariaLabel",n("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new Rs,this.keystrokes=new Os,this.set("class"),this.set("isCompact",!1),this.itemsView=new bd(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const o="rtl"===e.uiLanguageDirection;this._focusCycler=new id({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[o?"arrowright":"arrowleft","arrowup"],focusNext:[o?"arrowleft":"arrowright","arrowdown"]}});const r=["ck","ck-toolbar",i.to("class"),i.if("isCompact","ck-toolbar_compact")];var s;this.options.shouldGroupWhenFull&&this.options.isFloating&&r.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:r,role:"toolbar","aria-label":i.to("ariaLabel"),style:{maxWidth:i.to("maxWidth")}},children:this.children,on:{mousedown:(s=this,s.bindTemplate.to(e=>{e.target===s.element&&e.preventDefault()}))}}),this._behavior=this.options.shouldGroupWhenFull?new kd(this):new wd(this)}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",(e,t)=>{this.focusTracker.add(t.element)}),this.items.on("remove",(e,t)=>{this.focusTracker.remove(t.element)}),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t){const i=fd(e),n=i.items.filter((e,n,o)=>"|"===e||-1===i.removeItems.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||(Object(l.b)("toolbarview-line-break-ignored-when-grouping-items",o),!1):!!t.has(e)||(Object(l.b)("toolbarview-item-unavailable",{name:e}),!1))),o=this._cleanSeparators(n).map(e=>"|"===e?new gd:"-"===e?new md:t.create(e));this.items.addMany(o)}_cleanSeparators(e){const t=e=>"-"!==e&&"|"!==e,i=e.length,n=e.findIndex(t),o=i-e.slice().reverse().findIndex(t);return e.slice(n,o).filter((e,i,n)=>{if(t(e))return!0;return!(i>0&&n[i-1]===e)})}}class bd extends Mc{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class wd{constructor(e){const t=e.bindTemplate;e.set("isVertical",!1),e.itemsView.children.bindTo(e.items).using(e=>e),e.focusables.bindTo(e.items).using(e=>e),e.extendTemplate({attributes:{class:[t.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class kd{constructor(e){this.view=e,this.viewChildren=e.children,this.viewFocusables=e.focusables,this.viewItemsView=e.itemsView,this.viewFocusTracker=e.focusTracker,this.viewLocale=e.locale,this.ungroupedItems=e.createCollection(),this.groupedItems=e.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,e.itemsView.children.bindTo(this.ungroupedItems).using(e=>e),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),e.children.on("add",this._updateFocusCycleableItems.bind(this)),e.children.on("remove",this._updateFocusCycleableItems.bind(this)),e.items.on("change",(e,t)=>{const i=t.index;for(const e of t.removed)i>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=i;ethis.ungroupedItems.length?this.groupedItems.add(n,e-this.ungroupedItems.length):this.ungroupedItems.add(n,e)}this._updateGrouping()}),e.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!this.viewElement.offsetParent)return void(this.shouldUpdateGroupingOnNextResize=!0);const e=this.groupedItems.length;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==e&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const e=this.viewElement,t=this.viewLocale.uiLanguageDirection,i=new Cs(e.lastChild),n=new Cs(e);if(!this.cachedPadding){const i=vr.window.getComputedStyle(e),n="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(i[n])}return"ltr"===t?i.right>n.right-this.cachedPadding:i.left{e&&e===t.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),e=t.contentRect.width)}),this._updateGrouping()}_enableGroupingOnMaxWidthChange(e){e.on("change:maxWidth",()=>{this._updateGrouping()})}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new gd),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const e=this.viewLocale,t=e.t,i=xd(e);return i.class="ck-toolbar__grouped-dropdown",i.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",Ad(i,[]),i.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:Tc.threeVerticalDots}),i.toolbarView.items.bindTo(this.groupedItems).using(e=>e),i}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map(e=>{this.viewFocusables.add(e)}),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}i(33);class _d extends Mc{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new Rs,this.keystrokes=new Os,this._focusCycler=new id({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",(e,t)=>{this.focusTracker.add(t.element)}),this.items.on("remove",(e,t)=>{this.focusTracker.remove(t.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}class vd extends Mc{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item"]},children:this.children})}focus(){this.children.first.focus()}}class yd extends Mc{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}i(35),i(37);function xd(e,t=rd){const i=new t(e),n=new ad(e),o=new ud(e,i,n);return i.bind("isEnabled").to(o),i instanceof rd?i.bind("isOn").to(o,"isOpen"):i.arrowView.bind("isOn").to(o,"isOpen"),function(e){(function(e){e.on("render",()=>{Ec({emitter:e,activator:()=>e.isOpen,callback:()=>{e.isOpen=!1},contextElements:[e.element]})})})(e),function(e){e.on("execute",t=>{t.source instanceof td||(e.isOpen=!1)})}(e),function(e){e.keystrokes.set("arrowdown",(t,i)=>{e.isOpen&&(e.panelView.focus(),i())}),e.keystrokes.set("arrowup",(t,i)=>{e.isOpen&&(e.panelView.focusLast(),i())})}(e)}(o),o}function Ad(e,t){const i=e.locale,n=i.t,o=e.toolbarView=new pd(i);o.set("ariaLabel",n("Dropdown toolbar")),e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.map(e=>o.items.add(e)),e.panelView.children.add(o),o.items.delegate("execute").to(e)}function Cd(e,t){const i=e.locale,n=e.listView=new _d(i);n.items.bindTo(t).using(({type:e,model:t})=>{if("separator"===e)return new yd(i);if("button"===e||"switchbutton"===e){const n=new vd(i);let o;return o="button"===e?new ed(i):new td(i),o.bind(...Object.keys(t)).to(t),o.delegate("execute").to(n),n.children.add(o),n}}),e.panelView.children.add(n),n.items.delegate("execute").to(e)}i(39);class Td extends Mc{constructor(e){super(e),this.body=new Jc(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}i(41);class Ed extends Mc{constructor(e){super(e),this.set("text"),this.set("for"),this.id="ck-editor__label_"+s();const t=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:t.to("for")},children:[{text:t.to("text")}]})}}class Id extends Mc{constructor(e,t,i){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=i,this._hasExternalElement=!!this._editableElement,this._editingView=t}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",()=>this._updateIsFocusedClasses()),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const e=this._editingView;function t(t){e.change(i=>{const n=e.document.getRoot(t.name);i.addClass(t.isFocused?"ck-focused":"ck-blurred",n),i.removeClass(t.isFocused?"ck-blurred":"ck-focused",n)})}e.isRenderingInProgress?function i(n){e.once("change:isRenderingInProgress",(e,o,r)=>{r?i(n):t(n)})}(this):t(this)}}class Sd extends Id{constructor(e,t,i){super(e,t,i),this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const e=this._editingView,t=this.t;e.change(i=>{const n=e.document.getRoot(this.name);i.setAttribute("aria-label",t("Rich Text Editor, %0",this.name),n)})}}i(43);i(45);class Pd extends Mc{constructor(e){super(e),this.set("value"),this.set("id"),this.set("placeholder"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById"),this.focusTracker=new Rs,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{type:"text",class:["ck","ck-input","ck-input-text",t.if("isFocused","ck-input_focused"),t.if("isEmpty","ck-input-text_empty"),t.if("hasError","ck-error")],id:t.to("id"),placeholder:t.to("placeholder"),readonly:t.to("isReadOnly"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById")},on:{input:t.to("input"),change:t.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",(e,t,i)=>{this._setDomElementValue(i),this._updateIsEmpty()})}select(){this.element.select()}focus(){this.element.focus()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}i(47);class Md extends Mc{constructor(e,t){super(e);const i="ck-labeled-field-view-"+s(),n="ck-labeled-field-view-status-"+s();this.fieldView=t(this,i,n),this.set("label"),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class"),this.set("placeholder"),this.labelView=this._createLabelView(i),this.statusView=this._createStatusView(n),this.bind("_statusText").to(this,"errorText",this,"infoText",(e,t)=>e||t);const o=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",o.to("class"),o.if("isEnabled","ck-disabled",e=>!e),o.if("isEmpty","ck-labeled-field-view_empty"),o.if("isFocused","ck-labeled-field-view_focused"),o.if("placeholder","ck-labeled-field-view_placeholder"),o.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:[this.fieldView,this.labelView]},this.statusView]})}_createLabelView(e){const t=new Ed(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new Mc(this.locale),i=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",i.if("errorText","ck-labeled-field-view__status_error"),i.if("_statusText","ck-hidden",e=>!e)],id:e,role:i.if("errorText","alert")},children:[{text:i.to("_statusText")}]}),t}focus(){this.fieldView.focus()}}function Nd(e,t,i){const n=new Pd(e.locale);return n.set({id:t,ariaDescribedById:i}),n.bind("isReadOnly").to(e,"isEnabled",e=>!e),n.bind("hasError").to(e,"errorText",e=>!!e),n.on("input",()=>{e.errorText=null}),e.bind("isEmpty","isFocused","placeholder").to(n),n}class Rd extends an{static get pluginName(){return"Notification"}init(){this.on("show:warning",(e,t)=>{window.alert(t.message)},{priority:"lowest"})}showSuccess(e,t={}){this._showNotification({message:e,type:"success",namespace:t.namespace,title:t.title})}showInfo(e,t={}){this._showNotification({message:e,type:"info",namespace:t.namespace,title:t.title})}showWarning(e,t={}){this._showNotification({message:e,type:"warning",namespace:t.namespace,title:t.title})}_showNotification(e){const t="show:"+e.type+(e.namespace?":"+e.namespace:"");this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}class Od{constructor(e,t){t&&De(this,t),e&&this.set(e)}}Ke(Od,Ue);i(49);const zd=Ms("px"),Dd=vr.document.body;class Vd extends Mc{constructor(e){super(e);const t=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",t.to("position",e=>"ck-balloon-panel_"+e),t.if("isVisible","ck-balloon-panel_visible"),t.if("withArrow","ck-balloon-panel_with-arrow"),t.to("class")],style:{top:t.to("top",zd),left:t.to("left",zd)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){this.show();const t=Vd.defaultPositions,i=Object.assign({},{element:this.element,positions:[t.southArrowNorth,t.southArrowNorthMiddleWest,t.southArrowNorthMiddleEast,t.southArrowNorthWest,t.southArrowNorthEast,t.northArrowSouth,t.northArrowSouthMiddleWest,t.northArrowSouthMiddleEast,t.northArrowSouthWest,t.northArrowSouthEast],limiter:Dd,fitInViewport:!0},e),n=Vd._getOptimalPosition(i),o=parseInt(n.left),r=parseInt(n.top),s=n.name;Object.assign(this,{top:r,left:o,position:s})}pin(e){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},this._startPinning(e),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(e){this.attachTo(e);const t=Ld(e.target),i=e.limiter?Ld(e.limiter):Dd;this.listenTo(vr.document,"scroll",(n,o)=>{const r=o.target,s=t&&r.contains(t),a=i&&r.contains(i);!s&&!a&&t&&i||this.attachTo(e)},{useCapture:!0}),this.listenTo(vr.window,"resize",()=>{this.attachTo(e)})}_stopPinning(){this.stopListening(vr.document,"scroll"),this.stopListening(vr.window,"resize")}}function Ld(e){return Yi(e)?e:ys(e)?e.commonAncestorContainer:"function"==typeof e?Ld(e()):null}function jd(e,t){return e.top-t.height-Vd.arrowVerticalOffset}function Bd(e){return e.bottom+Vd.arrowVerticalOffset}Vd.arrowHorizontalOffset=25,Vd.arrowVerticalOffset=10,Vd._getOptimalPosition=ld,Vd.defaultPositions={northWestArrowSouthWest:(e,t)=>({top:jd(e,t),left:e.left-Vd.arrowHorizontalOffset,name:"arrow_sw"}),northWestArrowSouthMiddleWest:(e,t)=>({top:jd(e,t),left:e.left-.25*t.width-Vd.arrowHorizontalOffset,name:"arrow_smw"}),northWestArrowSouth:(e,t)=>({top:jd(e,t),left:e.left-t.width/2,name:"arrow_s"}),northWestArrowSouthMiddleEast:(e,t)=>({top:jd(e,t),left:e.left-.75*t.width+Vd.arrowHorizontalOffset,name:"arrow_sme"}),northWestArrowSouthEast:(e,t)=>({top:jd(e,t),left:e.left-t.width+Vd.arrowHorizontalOffset,name:"arrow_se"}),northArrowSouthWest:(e,t)=>({top:jd(e,t),left:e.left+e.width/2-Vd.arrowHorizontalOffset,name:"arrow_sw"}),northArrowSouthMiddleWest:(e,t)=>({top:jd(e,t),left:e.left+e.width/2-.25*t.width-Vd.arrowHorizontalOffset,name:"arrow_smw"}),northArrowSouth:(e,t)=>({top:jd(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s"}),northArrowSouthMiddleEast:(e,t)=>({top:jd(e,t),left:e.left+e.width/2-.75*t.width+Vd.arrowHorizontalOffset,name:"arrow_sme"}),northArrowSouthEast:(e,t)=>({top:jd(e,t),left:e.left+e.width/2-t.width+Vd.arrowHorizontalOffset,name:"arrow_se"}),northEastArrowSouthWest:(e,t)=>({top:jd(e,t),left:e.right-Vd.arrowHorizontalOffset,name:"arrow_sw"}),northEastArrowSouthMiddleWest:(e,t)=>({top:jd(e,t),left:e.right-.25*t.width-Vd.arrowHorizontalOffset,name:"arrow_smw"}),northEastArrowSouth:(e,t)=>({top:jd(e,t),left:e.right-t.width/2,name:"arrow_s"}),northEastArrowSouthMiddleEast:(e,t)=>({top:jd(e,t),left:e.right-.75*t.width+Vd.arrowHorizontalOffset,name:"arrow_sme"}),northEastArrowSouthEast:(e,t)=>({top:jd(e,t),left:e.right-t.width+Vd.arrowHorizontalOffset,name:"arrow_se"}),southWestArrowNorthWest:(e,t)=>({top:Bd(e),left:e.left-Vd.arrowHorizontalOffset,name:"arrow_nw"}),southWestArrowNorthMiddleWest:(e,t)=>({top:Bd(e),left:e.left-.25*t.width-Vd.arrowHorizontalOffset,name:"arrow_nmw"}),southWestArrowNorth:(e,t)=>({top:Bd(e),left:e.left-t.width/2,name:"arrow_n"}),southWestArrowNorthMiddleEast:(e,t)=>({top:Bd(e),left:e.left-.75*t.width+Vd.arrowHorizontalOffset,name:"arrow_nme"}),southWestArrowNorthEast:(e,t)=>({top:Bd(e),left:e.left-t.width+Vd.arrowHorizontalOffset,name:"arrow_ne"}),southArrowNorthWest:(e,t)=>({top:Bd(e),left:e.left+e.width/2-Vd.arrowHorizontalOffset,name:"arrow_nw"}),southArrowNorthMiddleWest:(e,t)=>({top:Bd(e),left:e.left+e.width/2-.25*t.width-Vd.arrowHorizontalOffset,name:"arrow_nmw"}),southArrowNorth:(e,t)=>({top:Bd(e),left:e.left+e.width/2-t.width/2,name:"arrow_n"}),southArrowNorthMiddleEast:(e,t)=>({top:Bd(e),left:e.left+e.width/2-.75*t.width+Vd.arrowHorizontalOffset,name:"arrow_nme"}),southArrowNorthEast:(e,t)=>({top:Bd(e),left:e.left+e.width/2-t.width+Vd.arrowHorizontalOffset,name:"arrow_ne"}),southEastArrowNorthWest:(e,t)=>({top:Bd(e),left:e.right-Vd.arrowHorizontalOffset,name:"arrow_nw"}),southEastArrowNorthMiddleWest:(e,t)=>({top:Bd(e),left:e.right-.25*t.width-Vd.arrowHorizontalOffset,name:"arrow_nmw"}),southEastArrowNorth:(e,t)=>({top:Bd(e),left:e.right-t.width/2,name:"arrow_n"}),southEastArrowNorthMiddleEast:(e,t)=>({top:Bd(e),left:e.right-.75*t.width+Vd.arrowHorizontalOffset,name:"arrow_nme"}),southEastArrowNorthEast:(e,t)=>({top:Bd(e),left:e.right-t.width+Vd.arrowHorizontalOffset,name:"arrow_ne"})};i(51),i(53);const Fd=Ms("px");class Hd extends Qe{static get pluginName(){return"ContextualBalloon"}constructor(e){super(e),this.positionLimiter=()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},this.set("visibleView",null),this.view=new Vd(e.locale),e.ui.view.body.add(this.view),e.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this.hasView(e.view))throw new l.a("contextualballoon-add-view-exist",[this,e]);const t=e.stackId||"main";if(!this._idToStack.has(t))return this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!e.singleViewMode||this.showStack(t));const i=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),i.set(e.view,e),this._viewToStack.set(e.view,i),i===this._visibleStack&&this._showView(e)}remove(e){if(!this.hasView(e))throw new l.a("contextualballoon-remove-view-not-exist",[this,e]);const t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(1===t.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),1===t.size?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}updatePosition(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new l.a("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(e){return Array.from(this._idToStack.entries()).find(t=>t[1]===e)[0]}_showNextStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}_showPrevStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}_createRotatorView(){const e=new Ud(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",(e,t)=>!t&&e>1),e.on("change:isNavigationVisible",()=>this.updatePosition(),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",(e,i)=>{if(i<2)return"";const n=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[n,i])}),e.buttonNextView.on("execute",()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()}),e.buttonPrevView.on("execute",()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()}),e}_createFakePanelsView(){const e=new Wd(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",(e,t)=>!t&&e>=2?Math.min(e-1,2):0),e.listenTo(this.view,"change:top",()=>e.updatePosition()),e.listenTo(this.view,"change:left",()=>e.updatePosition()),this.editor.ui.view.body.add(e),e}_showView({view:e,balloonClassName:t="",withArrow:i=!0,singleViewMode:n=!1}){this.view.class=t,this.view.withArrow=i,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),n&&(this._singleViewMode=!0)}_getBalloonPosition(){let e=Array.from(this._visibleStack.values()).pop().position;return e&&!e.limiter&&(e=Object.assign({},e,{limiter:this.positionLimiter})),e}}class Ud extends Mc{constructor(e){super(e);const t=e.t,i=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new Rs,this.buttonPrevView=this._createButtonView(t("Previous"),''),this.buttonNextView=this._createButtonView(t("Next"),''),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",i.to("isNavigationVisible",e=>e?"":"ck-hidden")]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:i.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const i=new ed(this.locale);return i.set({label:e,icon:t,tooltip:!0}),i}}class Wd extends Mc{constructor(e,t){super(e);const i=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=t,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",i.to("numberOfPanels",e=>e?"":"ck-hidden")],style:{top:i.to("top",Fd),left:i.to("left",Fd),width:i.to("width",Fd),height:i.to("height",Fd)}},children:this.content}),this.on("change:numberOfPanels",(e,t,i,n)=>{i>n?this._addPanels(i-n):this._removePanels(n-i),this.updatePosition()})}_addPanels(e){for(;e--;){const e=new Mc;e.setTemplate({tag:"div"}),this.content.add(e),this.registerChild(e)}}_removePanels(e){for(;e--;){const e=this.content.last;this.content.remove(e),this.deregisterChild(e),e.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:e,left:t}=this._balloonPanelView,{width:i,height:n}=new Cs(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:i,height:n})}}}i(55);Ms("px");const qd=Ms("px");class $d extends Qe{static get pluginName(){return"BalloonToolbar"}static get requires(){return[Hd]}constructor(e){super(e),this._balloonConfig=fd(e.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new Rs,e.ui.once("ready",()=>{this.focusTracker.add(e.ui.getEditableElement()),this.focusTracker.add(this.toolbarView.element)}),this._resizeObserver=null,this._balloon=e.plugins.get(Hd),this._fireSelectionChangeDebounced=fs(()=>this.fire("_selectionChangeDebounced"),200),this.decorate("show")}init(){const e=this.editor,t=e.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",(e,t,i)=>{const n=this._balloon.visibleView===this.toolbarView;!i&&n?this.hide():i&&this.show()}),this.listenTo(t,"change:range",(e,i)=>{(i.directChange||t.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()}),this.listenTo(this,"_selectionChangeDebounced",()=>{this.editor.editing.view.document.isFocused&&this.show()}),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(e,"ready",()=>{const t=e.ui.view.editable.element;this._resizeObserver=new Is(t,()=>{this.toolbarView.maxWidth=qd(.9*new Cs(t).width)})}),this.listenTo(this.toolbarView,"groupedItemsUpdate",()=>{this._updatePosition()})}afterInit(){const e=this.editor.ui.componentFactory;this.toolbarView.fillFromConfig(this._balloonConfig,e)}_createToolbarView(){const e=!this._balloonConfig.shouldNotGroupWhenFull,t=new pd(this.editor.locale,{shouldGroupWhenFull:e,isFloating:!0});return t.render(),t}show(){const e=this.editor,t=e.model.document.selection,i=e.model.schema;this._balloon.hasView(this.toolbarView)||t.isCollapsed||function(e,t){if(1===e.rangeCount)return!1;return[...e.getRanges()].every(e=>{const i=e.getContainedElement();return i&&t.isSelectable(i)})}(t,i)||Array.from(this.toolbarView.items).every(e=>void 0!==e.isEnabled&&!e.isEnabled)||(this.listenTo(this.editor.ui,"update",()=>{this._updatePosition()}),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document,i=t.selection,n=t.selection.isBackward;return{target:()=>{const t=n?i.getFirstRange():i.getLastRange(),o=Cs.getDomRangeRects(e.domConverter.viewRangeToDom(t));return n?o[0]:(o.length>1&&0===o[o.length-1].width&&o.pop(),o[o.length-1])},positions:Yd(n)}}_updatePosition(){this._balloon.updatePosition(this._getBalloonPositionData())}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}}function Yd(e){const t=Vd.defaultPositions;return e?[t.northWestArrowSouth,t.northWestArrowSouthWest,t.northWestArrowSouthEast,t.northWestArrowSouthMiddleEast,t.northWestArrowSouthMiddleWest,t.southWestArrowNorth,t.southWestArrowNorthWest,t.southWestArrowNorthEast,t.southWestArrowNorthMiddleWest,t.southWestArrowNorthMiddleEast]:[t.southEastArrowNorth,t.southEastArrowNorthEast,t.southEastArrowNorthWest,t.southEastArrowNorthMiddleEast,t.southEastArrowNorthMiddleWest,t.northEastArrowSouth,t.northEastArrowSouthEast,t.northEastArrowSouthWest,t.northEastArrowSouthMiddleEast,t.northEastArrowSouthMiddleWest]}i(57);const Gd=Ms("px");class Kd extends ed{constructor(e){super(e);const t=this.bindTemplate;this.isVisible=!1,this.isToggleable=!0,this.set("top",0),this.set("left",0),this.extendTemplate({attributes:{class:"ck-block-toolbar-button",style:{top:t.to("top",e=>Gd(e)),left:t.to("left",e=>Gd(e))}}})}}const Qd=Ms("px");i(59);const Jd=new WeakMap;function Zd(e){const{view:t,element:i,text:n,isDirectHost:o=!0,keepOnFocus:r=!1}=e,s=t.document;Jd.has(s)||(Jd.set(s,new Map),s.registerPostFixer(e=>eh(s,e))),Jd.get(s).set(i,{text:n,isDirectHost:o,keepOnFocus:r,hostElement:o?i:null}),t.change(e=>eh(s,e))}function Xd(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function eh(e,t){const i=Jd.get(e),n=[];let o=!1;for(const[e,r]of i)r.isDirectHost&&(n.push(e),th(t,e,r)&&(o=!0));for(const[e,r]of i){if(r.isDirectHost)continue;const i=ih(e);i&&(n.includes(i)||(r.hostElement=i,th(t,e,r)&&(o=!0)))}return o}function th(e,t,i){const{text:n,isDirectHost:o,hostElement:r}=i;let s=!1;r.getAttribute("data-placeholder")!==n&&(e.setAttribute("data-placeholder",n,r),s=!0);return(o||1==t.childCount)&&function(e,t){if(!e.isAttached())return!1;if(Array.from(e.getChildren()).some(e=>!e.is("uiElement")))return!1;if(t)return!0;const i=e.document;if(!i.isFocused)return!0;const n=i.selection.anchor;return n&&n.parent!==e}(r,i.keepOnFocus)?function(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}(e,r)&&(s=!0):Xd(e,r)&&(s=!0),s}function ih(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement"))return t}return null}const nh=new Map;function oh(e,t,i){let n=nh.get(e);n||(n=new Map,nh.set(e,n)),n.set(t,i)}function rh(e){return[e]}function sh(e,t,i={}){const n=function(e,t){const i=nh.get(e);return i&&i.has(t)?i.get(t):rh}(e.constructor,t.constructor);try{return n(e=e.clone(),t,i)}catch(e){throw e}}function ah(e,t,i){e=e.slice(),t=t.slice();const n=new lh(i.document,i.useRelations,i.forceWeakRemove);n.setOriginalOperations(e),n.setOriginalOperations(t);const o=n.originalOperations;if(0==e.length||0==t.length)return{operationsA:e,operationsB:t,originalOperations:o};const r=new WeakMap;for(const t of e)r.set(t,0);const s={nextBaseVersionA:e[e.length-1].baseVersion+1,nextBaseVersionB:t[t.length-1].baseVersion+1,originalOperationsACount:e.length,originalOperationsBCount:t.length};let a=0;for(;a{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const n=e.range.getDifference(t.range).map(t=>new Cl(t,e.key,e.oldValue,e.newValue,0)),o=e.range.getIntersection(t.range);return o&&i.aIsStrong&&n.push(new Cl(o,t.key,t.newValue,e.newValue,0)),0==n.length?[new Zl(0)]:n}return[e]}),oh(Cl,Il,(e,t)=>{if(e.range.start.hasSameParentAs(t.position)&&e.range.containsPosition(t.position)){const i=e.range._getTransformedByInsertion(t.position,t.howMany,!t.shouldReceiveAttributes).map(t=>new Cl(t,e.key,e.oldValue,e.newValue,e.baseVersion));if(t.shouldReceiveAttributes){const n=hh(t,e.key,e.oldValue);n&&i.unshift(n)}return i}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]}),oh(Cl,Nl,(e,t)=>{const i=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&i.push(oa._createFromPositionAndShift(t.graveyardPosition,1));const n=e.range._getTransformedByMergeOperation(t);return n.isCollapsed||i.push(n),i.map(t=>new Cl(t,e.key,e.oldValue,e.newValue,e.baseVersion))}),oh(Cl,El,(e,t)=>function(e,t){const i=oa._createFromPositionAndShift(t.sourcePosition,t.howMany);let n=null,o=[];i.containsRange(e,!0)?n=e:e.start.hasSameParentAs(i.start)?(o=e.getDifference(i),n=e.getIntersection(i)):o=[e];const r=[];for(let e of o){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const i=t.getMovedRangeStart(),n=e.start.hasSameParentAs(i);e=e._getTransformedByInsertion(i,t.howMany,n),r.push(...e)}n&&r.push(n._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return r}(e.range,t).map(t=>new Cl(t,e.key,e.oldValue,e.newValue,e.baseVersion))),oh(Cl,Rl,(e,t)=>{if(e.range.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.range.end.offset++,[e];if(e.range.start.hasSameParentAs(t.splitPosition)&&e.range.containsPosition(t.splitPosition)){const i=e.clone();return i.range=new oa(t.moveTargetPosition.clone(),e.range.end._getCombined(t.splitPosition,t.moveTargetPosition)),e.range.end=t.splitPosition.clone(),e.range.end.stickiness="toPrevious",[e,i]}return e.range=e.range._getTransformedBySplitOperation(t),[e]}),oh(Il,Cl,(e,t)=>{const i=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const n=hh(e,t.key,t.newValue);n&&i.push(n)}return i}),oh(Il,Il,(e,t,i)=>(e.position.isEqual(t.position)&&i.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e])),oh(Il,El,(e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e])),oh(Il,Rl,(e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e])),oh(Il,Nl,(e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e])),oh(Sl,Il,(e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e])),oh(Sl,Sl,(e,t,i)=>{if(e.name==t.name){if(!i.aIsStrong)return[new Zl(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]}),oh(Sl,Nl,(e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e])),oh(Sl,El,(e,t,i)=>{if(e.oldRange&&(e.oldRange=oa._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){if(i.abRelation){const n=oa._createFromRanges(e.newRange._getTransformedByMoveOperation(t));if("left"==i.abRelation.side&&t.targetPosition.isEqual(e.newRange.start))return e.newRange.start.path=i.abRelation.path,e.newRange.end=n.end,[e];if("right"==i.abRelation.side&&t.targetPosition.isEqual(e.newRange.end))return e.newRange.start=n.start,e.newRange.end.path=i.abRelation.path,[e]}e.newRange=oa._createFromRanges(e.newRange._getTransformedByMoveOperation(t))}return[e]}),oh(Sl,Rl,(e,t,i)=>{if(e.oldRange&&(e.oldRange=e.oldRange._getTransformedBySplitOperation(t)),e.newRange){if(i.abRelation){const n=e.newRange._getTransformedBySplitOperation(t);return e.newRange.start.isEqual(t.splitPosition)&&i.abRelation.wasStartBeforeMergedElement?e.newRange.start=ea._createAt(t.insertionPosition):e.newRange.start.isEqual(t.splitPosition)&&!i.abRelation.wasInLeftElement&&(e.newRange.start=ea._createAt(t.moveTargetPosition)),e.newRange.end.isEqual(t.splitPosition)&&i.abRelation.wasInRightElement?e.newRange.end=ea._createAt(t.moveTargetPosition):e.newRange.end.isEqual(t.splitPosition)&&i.abRelation.wasEndBeforeMergedElement?e.newRange.end=ea._createAt(t.insertionPosition):e.newRange.end=n.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]}),oh(Nl,Il,(e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e])),oh(Nl,Nl,(e,t,i)=>{if(e.sourcePosition.isEqual(t.sourcePosition)&&e.targetPosition.isEqual(t.targetPosition)){if(i.bWasUndone){const i=t.graveyardPosition.path.slice();return i.push(0),e.sourcePosition=new ea(t.graveyardPosition.root,i),e.howMany=0,[e]}return[new Zl(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!i.bWasUndone&&"splitAtSource"!=i.abRelation){const n="$graveyard"==e.targetPosition.root.rootName,o="$graveyard"==t.targetPosition.root.rootName,r=n&&!o;if(o&&!n||!r&&i.aIsStrong){const i=t.targetPosition._getTransformedByMergeOperation(t),n=e.targetPosition._getTransformedByMergeOperation(t);return[new El(i,e.howMany,n,0)]}return[new Zl(0)]}return e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMergeOperation(t),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),e.graveyardPosition.isEqual(t.graveyardPosition)&&i.aIsStrong||(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]}),oh(Nl,El,(e,t,i)=>{const n=oa._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!i.bWasUndone&&!i.forceWeakRemove&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&n.containsPosition(e.sourcePosition)?[new Zl(0)]:(e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition.hasSameParentAs(t.sourcePosition)&&(e.howMany-=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMoveOperation(t),e.targetPosition=e.targetPosition._getTransformedByMoveOperation(t),e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])}),oh(Nl,Rl,(e,t,i)=>{if(t.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByDeletion(t.graveyardPosition,1),e.deletionPosition.isEqual(t.graveyardPosition)&&(e.howMany=t.howMany)),e.targetPosition.isEqual(t.splitPosition)){const n=0!=t.howMany,o=t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition);if(n||o||"mergeTargetNotMoved"==i.abRelation)return e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),[e]}if(e.sourcePosition.isEqual(t.splitPosition)){if("mergeSourceNotMoved"==i.abRelation)return e.howMany=0,e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e];if("mergeSameElement"==i.abRelation||e.sourcePosition.offset>0)return e.sourcePosition=t.moveTargetPosition.clone(),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}return e.sourcePosition.hasSameParentAs(t.splitPosition)&&(e.howMany=t.splitPosition.offset),e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}),oh(El,Il,(e,t)=>{const i=oa._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByInsertOperation(t,!1)[0];return e.sourcePosition=i.start,e.howMany=i.end.offset-i.start.offset,e.targetPosition.isEqual(t.position)||(e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t)),[e]}),oh(El,El,(e,t,i)=>{const n=oa._createFromPositionAndShift(e.sourcePosition,e.howMany),o=oa._createFromPositionAndShift(t.sourcePosition,t.howMany);let r,s=i.aIsStrong,a=!i.aIsStrong;if("insertBefore"==i.abRelation||"insertAfter"==i.baRelation?a=!0:"insertAfter"!=i.abRelation&&"insertBefore"!=i.baRelation||(a=!1),r=e.targetPosition.isEqual(t.targetPosition)&&a?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),uh(e,t)&&uh(t,e))return[t.getReversed()];if(n.containsPosition(t.targetPosition)&&n.containsRange(o,!0))return n.start=n.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),n.end=n.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),gh([n],r);if(o.containsPosition(e.targetPosition)&&o.containsRange(n,!0))return n.start=n.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),n.end=n.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),gh([n],r);const l=ln(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==l||"extension"==l)return n.start=n.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),n.end=n.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),gh([n],r);"remove"!=e.type||"remove"==t.type||i.aWasUndone||i.forceWeakRemove?"remove"==e.type||"remove"!=t.type||i.bWasUndone||i.forceWeakRemove||(s=!1):s=!0;const c=[],d=n.getDifference(o);for(const e of d){e.start=e.start._getTransformedByDeletion(t.sourcePosition,t.howMany),e.end=e.end._getTransformedByDeletion(t.sourcePosition,t.howMany);const i="same"==ln(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),n=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,i);c.push(...n)}const h=n.getIntersection(o);return null!==h&&s&&(h.start=h.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),h.end=h.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===c.length?c.push(h):1==c.length?o.start.isBefore(n.start)||o.start.isEqual(n.start)?c.unshift(h):c.push(h):c.splice(1,0,h)),0===c.length?[new Zl(e.baseVersion)]:gh(c,r)}),oh(El,Rl,(e,t,i)=>{let n=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=i.abRelation||(n=e.targetPosition._getTransformedBySplitOperation(t));const o=oa._createFromPositionAndShift(e.sourcePosition,e.howMany);if(o.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=n,[e];if(o.start.hasSameParentAs(t.splitPosition)&&o.containsPosition(t.splitPosition)){let e=new oa(t.splitPosition,o.end);e=e._getTransformedBySplitOperation(t);return gh([new oa(o.start,t.splitPosition),e],n)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==i.abRelation&&(n=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==i.abRelation&&(n=e.targetPosition);const r=[o._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const n=o.start.isEqual(t.graveyardPosition)||o.containsPosition(t.graveyardPosition);e.howMany>1&&n&&!i.aWasUndone&&r.push(oa._createFromPositionAndShift(t.insertionPosition,1))}return gh(r,n)}),oh(El,Nl,(e,t,i)=>{const n=oa._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&n.containsPosition(t.sourcePosition))if("remove"!=e.type||i.forceWeakRemove){if(1==e.howMany)return i.bWasUndone?(e.sourcePosition=t.graveyardPosition.clone(),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]):[new Zl(0)]}else if(!i.aWasUndone){const i=[];let n=t.graveyardPosition.clone(),o=t.targetPosition._getTransformedByMergeOperation(t);e.howMany>1&&(i.push(new El(e.sourcePosition,e.howMany-1,e.targetPosition,0)),n=n._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1),o=o._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1));const r=t.deletionPosition._getCombined(e.sourcePosition,e.targetPosition),s=new El(n,1,r,0),a=s.getMovedRangeStart().path.slice();a.push(0);const l=new ea(s.targetPosition.root,a);o=o._getTransformedByMove(n,r,1);const c=new El(o,t.howMany,l,0);return i.push(s),i.push(c),i}const o=oa._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=o.start,e.howMany=o.end.offset-o.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]}),oh(Pl,Il,(e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e])),oh(Pl,Nl,(e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e])),oh(Pl,El,(e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e])),oh(Pl,Pl,(e,t,i)=>{if(e.position.isEqual(t.position)){if(!i.aIsStrong)return[new Zl(0)];e.oldName=t.newName}return[e]}),oh(Pl,Rl,(e,t)=>{if("same"==ln(e.position.path,t.splitPosition.getParentPath())&&!t.graveyardPosition){const t=new Pl(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]}),oh(Ml,Ml,(e,t,i)=>{if(e.root===t.root&&e.key===t.key){if(!i.aIsStrong||e.newValue===t.newValue)return[new Zl(0)];e.oldValue=t.newValue}return[e]}),oh(Rl,Il,(e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset{if(!e.graveyardPosition&&!i.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const i=t.graveyardPosition.path.slice();i.push(0);const n=new ea(t.graveyardPosition.root,i),o=Rl.getInsertionPosition(new ea(t.graveyardPosition.root,i)),r=new Rl(n,0,o,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=Rl.getInsertionPosition(e.splitPosition),e.graveyardPosition=r.insertionPosition.clone(),e.graveyardPosition.stickiness="toNext",[r,e]}return e.splitPosition.hasSameParentAs(t.deletionPosition)&&!e.splitPosition.isAfter(t.deletionPosition)&&e.howMany--,e.splitPosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=Rl.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]}),oh(Rl,El,(e,t,i)=>{const n=oa._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const o=n.start.isEqual(e.graveyardPosition)||n.containsPosition(e.graveyardPosition);if(!i.bWasUndone&&o){const i=e.splitPosition._getTransformedByMoveOperation(t),n=e.graveyardPosition._getTransformedByMoveOperation(t),o=n.path.slice();o.push(0);const r=new ea(n.root,o);return[new El(i,e.howMany,r,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const o=e.splitPosition.isEqual(t.targetPosition);if(o&&("insertAtSource"==i.baRelation||"splitBefore"==i.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=Rl.getInsertionPosition(e.splitPosition),[e];if(o&&i.abRelation&&i.abRelation.howMany){const{howMany:t,offset:n}=i.abRelation;return e.howMany+=t,e.splitPosition=e.splitPosition.getShiftedBy(n),[e]}if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&n.containsPosition(e.splitPosition)){const i=t.howMany-(e.splitPosition.offset-t.sourcePosition.offset);return e.howMany-=i,e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new Zl(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new Zl(0)];if("splitBefore"==i.abRelation)return e.howMany=0,e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t),[e]}if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition)){const n="$graveyard"==e.splitPosition.root.rootName,o="$graveyard"==t.splitPosition.root.rootName,r=n&&!o;if(o&&!n||!r&&i.aIsStrong){const i=[];return t.howMany&&i.push(new El(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&i.push(new El(e.splitPosition,e.howMany,e.moveTargetPosition,0)),i}return[new Zl(0)]}if(e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t)),e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==i.abRelation)return e.howMany++,[e];if(t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==i.baRelation){const i=t.insertionPosition.path.slice();i.push(0);const n=new ea(t.insertionPosition.root,i);return[e,new El(e.insertionPosition,1,n,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset{i.isFocused&&!n.focusTracker.isFocused&&(o&&o(),n.focus(),t())}),n.keystrokes.set("Esc",(t,i)=>{n.focusTracker.isFocused&&(e.focus(),r&&r(),i())})}({origin:n,originFocusTracker:this.focusTracker,originKeystrokeHandler:e.keystrokes,toolbar:i.toolbarView,beforeFocus(){i.show()},afterBlur(){i.hide()}}),this._initPlaceholder(),this.fire("ready")}destroy(){const e=this.view;this.editor.editing.view.detachDomRoot(e.editable.name),e.destroy(),super.destroy()}_initPlaceholder(){const e=this.editor,t=e.editing.view,i=t.document.getRoot(),n=e.sourceElement,o=e.config.get("placeholder")||n&&"textarea"===n.tagName.toLowerCase()&&n.getAttribute("placeholder");o&&Zd({view:t,element:i,text:o,isDirectHost:!1,keepOnFocus:!0})}}class wh extends Td{constructor(e,t,i){super(e),this.editable=new Sd(e,t,i)}render(){super.render(),this.registerChild(this.editable)}}class kh extends kc{constructor(e,t){super(t),Yi(e)&&(this.sourceElement=e,function(e){const t=e.sourceElement;if(t){if(t.ckeditorInstance)throw new l.a("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",()=>{delete t.ckeditorInstance})}}(this));const i=this.config.get("plugins");i.push($d),this.config.set("plugins",i),this.config.define("balloonToolbar",this.config.get("toolbar")),this.model.document.createRoot();const n=new wh(this.locale,this.editing.view,this.sourceElement);this.ui=new bh(this,n),function(e){if(!M(e.updateSourceElement))throw new l.a("attachtoform-missing-elementapi-interface",e);const t=e.sourceElement;if(t&&"textarea"===t.tagName.toLowerCase()&&t.form){let i;const n=t.form,o=()=>e.updateSourceElement();M(n.submit)&&(i=n.submit,n.submit=()=>{o(),i.apply(n)}),n.addEventListener("submit",o),e.on("destroy",()=>{n.removeEventListener("submit",o),i&&(n.submit=i)})}}(this)}destroy(){const e=this.getData();return this.ui.destroy(),super.destroy().then(()=>{this.sourceElement&&Ps(this.sourceElement,e)})}static create(e,t={}){return new Promise(i=>{const n=Yi(e);if(n&&"TEXTAREA"===e.tagName)throw new l.a("editor-wrong-element",null);const o=new this(e,t);i(o.initPlugins().then(()=>{o.ui.init()}).then(()=>{if(!n&&t.initialData)throw new l.a("editor-create-initial-data",null);const i=void 0!==t.initialData?t.initialData:function(e){return Yi(e)?(t=e,t instanceof HTMLTextAreaElement?t.value:t.innerHTML):e;var t}(e);return o.data.init(i)}).then(()=>o.fire("ready")).then(()=>o))})}}Ke(kh,xc),Ke(kh,Ac);class _h{constructor(e){this.files=function(e){const t=Array.from(e.files||[]),i=Array.from(e.items||[]);if(t.length)return t;return i.filter(e=>"file"===e.kind).map(e=>e.getAsFile())}(e),this._native=e}get types(){return this._native.types}getData(e){return this._native.getData(e)}setData(e,t){this._native.setData(e,t)}set effectAllowed(e){this._native.effectAllowed=e}get effectAllowed(){return this._native.effectAllowed}set dropEffect(e){this._native.dropEffect=e}get dropEffect(){return this._native.dropEffect}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}class vh extends ts{constructor(e){super(e);const t=this.document;function i(e){return(i,n)=>{n.preventDefault();const r=n.dropRange?[n.dropRange]:null,s=new o(t,e);t.fire(s,{dataTransfer:n.dataTransfer,method:i.name,targetRanges:r,target:n.target}),s.stop.called&&n.stopPropagation()}}this.domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"],this.listenTo(t,"paste",i("clipboardInput"),{priority:"low"}),this.listenTo(t,"drop",i("clipboardInput"),{priority:"low"}),this.listenTo(t,"dragover",i("dragging"),{priority:"low"})}onDomEvent(e){const t={dataTransfer:new _h(e.clipboardData?e.clipboardData:e.dataTransfer)};"drop"!=e.type&&"dragover"!=e.type||(t.dropRange=function(e,t){const i=t.target.ownerDocument,n=t.clientX,o=t.clientY;let r;i.caretRangeFromPoint&&i.caretRangeFromPoint(n,o)?r=i.caretRangeFromPoint(n,o):t.rangeParent&&(r=i.createRange(),r.setStart(t.rangeParent,t.rangeOffset),r.collapse(!0));if(r)return e.domConverter.domRangeToView(r);return null}(this.view,e)),this.fire(e.type,e,t)}}const yh=["figcaption","li"];class xh extends Qe{static get pluginName(){return"ClipboardPipeline"}init(){this.editor.editing.view.addObserver(vh),this._setupPasteDrop(),this._setupCopyCut()}_setupPasteDrop(){const e=this.editor,t=e.model,i=e.editing.view,n=i.document;this.listenTo(n,"clipboardInput",t=>{e.isReadOnly&&t.stop()},{priority:"highest"}),this.listenTo(n,"clipboardInput",(e,t)=>{const n=t.dataTransfer;let r=t.content||"";var s;r||(n.getData("text/html")?r=function(e){return e.replace(/(\s+)<\/span>/g,(e,t)=>1==t.length?" ":t).replace(//g,"")}(n.getData("text/html")):n.getData("text/plain")&&(((s=(s=n.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),r=s),r=this.editor.data.htmlProcessor.toView(r));const a=new o(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:n,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),i.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(e,i)=>{if(i.content.isEmpty)return;const n=this.editor.data.toModel(i.content,"$clipboardHolder");0!=n.childCount&&(e.stop(),t.change(()=>{this.fire("contentInsertion",{content:n,method:i.method,dataTransfer:i.dataTransfer,targetRanges:i.targetRanges})}))},{priority:"low"}),this.listenTo(this,"contentInsertion",(e,i)=>{i.resultRange=t.insertContent(i.content)},{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,i=e.editing.view.document;function n(n,o){const r=o.dataTransfer;o.preventDefault();const s=e.data.toView(e.model.getSelectedContent(t.selection));i.fire("clipboardOutput",{dataTransfer:r,content:s,method:n.name})}this.listenTo(i,"copy",n,{priority:"low"}),this.listenTo(i,"cut",(t,i)=>{e.isReadOnly?i.preventDefault():n(t,i)},{priority:"low"}),this.listenTo(i,"clipboardOutput",(i,n)=>{n.content.isEmpty||(n.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(n.content)),n.dataTransfer.setData("text/plain",function e(t){let i="";if(t.is("$text")||t.is("$textProxy"))i=t.data;else if(t.is("element","img")&&t.hasAttribute("alt"))i=t.getAttribute("alt");else if(t.is("element","br"))i="\n";else{let n=null;for(const o of t.getChildren()){const t=e(o);n&&(n.is("containerElement")||o.is("containerElement"))&&(yh.includes(n.name)||yh.includes(o.name)?i+="\n":i+="\n\n"),i+=t,n=o}}return i}(n.content))),"cut"==n.method&&e.model.deleteContent(t.selection)},{priority:"low"})}}function*Ah(e,t){for(const i of t)i&&e.getAttributeProperties(i[0]).copyOnEnter&&(yield i)}class Ch extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i,n){const o=i.isCollapsed,r=i.getFirstRange(),s=r.start.parent,a=r.end.parent;if(n.isLimit(s)||n.isLimit(a))return void(o||s!=a||e.deleteContent(i));if(o){const e=Ah(t.model.schema,i.getAttributes());Th(t,r.start),t.setSelectionAttribute(e)}else{const n=!(r.start.isAtStart&&r.end.isAtEnd),o=s==a;e.deleteContent(i,{leaveUnmerged:n}),n&&(o?Th(t,i.focus):t.setSelection(a,0))}}(this.editor.model,i,t.selection,e.schema),this.fire("afterExecute",{writer:i})})}}function Th(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}class Eh extends Or{constructor(e){super(e);const t=this.document;t.on("keydown",(e,i)=>{if(this.isEnabled&&i.keyCode==No.enter){const n=new fo(t,"enter",t.selection.getFirstRange());t.fire(n,new es(t,i.domEvent,{isSoft:i.shiftKey})),n.stop.called&&e.stop()}})}observe(){}}class Ih extends Qe{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Eh),e.commands.add("enter",new Ch(e)),this.listenTo(i,"enter",(i,n)=>{n.preventDefault(),n.isSoft||(e.execute("enter"),t.scrollToTheSelection())},{priority:"low"})}}class Sh{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{"transparent"!=t.type&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}class Ph extends Ze{constructor(e,t){super(e),this.direction=t,this._buffer=new Sh(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,i=t.document;t.enqueueChange(this._buffer.batch,n=>{this._buffer.lock();const o=n.createSelection(e.selection||i.selection),r=e.sequence||1,s=o.isCollapsed;if(o.isCollapsed&&t.modifySelection(o,{direction:this.direction,unit:e.unit}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(n);if(this._shouldReplaceFirstBlockWithParagraph(o,r))return void this.editor.execute("paragraph",{selection:o});if(o.isCollapsed)return;let a=0;o.getFirstRange().getMinimalFlatRanges().forEach(e=>{a+=uo(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(o,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),n.setSelection(o),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i);if(!(i.isCollapsed&&i.containsEntireContent(n)))return!1;if(!t.schema.checkChild(n,"paragraph"))return!1;const o=n.getChild(0);return!o||"paragraph"!==o.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i),o=e.createElement("paragraph");e.remove(e.createRangeIn(n)),e.insert(o,n),e.setSelection(o,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const i=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const n=e.getFirstPosition(),o=i.schema.getLimitElement(n),r=o.getChild(0);return n.parent==r&&(!!e.containsEntireContent(r)&&(!!i.schema.checkChild(o,"paragraph")&&"paragraph"!=r.name))}}class Mh extends Or{constructor(e){super(e);const t=e.document;let i=0;function n(e,i,n){const o=new fo(t,"delete",t.selection.getFirstRange());t.fire(o,new es(t,i,n)),o.stop.called&&e.stop()}t.on("keyup",(e,t)=>{t.keyCode!=No.delete&&t.keyCode!=No.backspace||(i=0)}),t.on("keydown",(e,t)=>{const o={};if(t.keyCode==No.delete)o.direction="forward",o.unit="character";else{if(t.keyCode!=No.backspace)return;o.direction="backward",o.unit="codePoint"}const r=So.isMac?t.altKey:t.ctrlKey;o.unit=r?"word":o.unit,o.sequence=++i,n(e,t.domEvent,o)}),So.isAndroid&&t.on("beforeinput",(t,i)=>{if("deleteContentBackward"!=i.domEvent.inputType)return;const o={unit:"codepoint",direction:"backward",sequence:1},r=i.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(o.selectionToRemove=e.domConverter.domSelectionToView(r)),n(t,i.domEvent,o)})}observe(){}}class Nh extends Qe{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Mh);const n=new Ph(e,"forward");if(e.commands.add("deleteForward",n),e.commands.add("forwardDelete",n),e.commands.add("delete",new Ph(e,"backward")),this.listenTo(i,"delete",(i,n)=>{const o={unit:n.unit,sequence:n.sequence};if(n.selectionToRemove){const t=e.model.createSelection(),i=[];for(const t of n.selectionToRemove.getRanges())i.push(e.editing.mapper.toModelRange(t));t.setTo(i),o.selection=t}e.execute("forward"==n.direction?"deleteForward":"delete",o),n.preventDefault(),t.scrollToTheSelection()},{priority:"low"}),So.isAndroid){let e=null;this.listenTo(i,"delete",(t,i)=>{const n=i.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}},{priority:"lowest"}),this.listenTo(i,"keyup",(t,i)=>{if(e){const t=i.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}})}}}class Rh{constructor(){this._stack=[]}add(e,t){const i=this._stack,n=i[0];this._insertDescriptor(e);const o=i[0];n===o||Oh(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}remove(e,t){const i=this._stack,n=i[0];this._removeDescriptor(e);const o=i[0];n===o||Oh(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}_insertDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e.id);if(Oh(e,t[i]))return;i>-1&&t.splice(i,1);let n=0;for(;t[n]&&zh(t[n],e);)n++;t.splice(n,0,e)}_removeDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e);i>-1&&t.splice(i,1)}}function Oh(e,t){return e&&t&&e.priority==t.priority&&Dh(e.classes)==Dh(t.classes)}function zh(e,t){return e.priority>t.priority||!(e.priorityDh(t.classes)}function Dh(e){return Array.isArray(e)?e.sort().join(","):e}Ke(Rh,h);function Vh(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function Lh(e,t,i={}){if(!e.is("containerElement"))throw new l.a("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=$h,i.label&&function(e,t,i){i.setCustomProperty("widgetLabel",t,e)}(e,i.label,t),i.hasSelectionHandle&&function(e,t){const i=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),i=new Zc;return i.set("content",''),i.render(),t.appendChild(i.element),t}));t.insert(t.createPositionAt(e,0),i),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),Fh(e,t,jh,Bh),e}function jh(e,t,i){if(t.classes&&i.addClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.setAttribute(n,t.attributes[n],e)}function Bh(e,t,i){if(t.classes&&i.removeClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.removeAttribute(n,e)}function Fh(e,t,i,n){const o=new Rh;o.on("change:top",(t,o)=>{o.oldDescriptor&&n(e,o.oldDescriptor,o.writer),o.newDescriptor&&i(e,o.newDescriptor,o.writer)}),t.setCustomProperty("addHighlight",(e,t,i)=>o.add(t,i),e),t.setCustomProperty("removeHighlight",(e,t,i)=>o.remove(t,i),e)}function Hh(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function Uh(e,t){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",(i,n,o)=>{t.setAttribute("contenteditable",o?"false":"true",e)}),e.on("change:isFocused",(i,n,o)=>{o?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)}),e}function Wh(e,t){const i=e.getSelectedElement();if(i){const n=Gh(e);if(n)return t.createRange(t.createPositionAt(i,n));if(t.schema.isObject(i)&&!t.schema.isInline(i))return t.createRangeOn(i)}const n=e.getSelectedBlocks().next().value;if(n){if(n.isEmpty)return t.createRange(t.createPositionAt(n,0));const i=t.createPositionAfter(n);return e.focus.isTouching(i)?t.createRange(i):t.createRange(t.createPositionBefore(n))}return t.createRange(e.focus)}function qh(e,t){const i=new Cs(vr.window),n=i.getIntersection(e),o=t.height+Vd.arrowVerticalOffset;if(e.top-o>i.top||e.bottom+o',"image/svg+xml").firstChild;class Xh extends Qe{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[Ih,Nh]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(i,n,o)=>{t.change(e=>{for(const i of t.document.roots)o?e.removeClass("ck-widget__type-around_disabled",i):e.addClass("ck-widget__type-around_disabled",i)}),o||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const i=this.editor,n=i.editing.view;i.execute("insertParagraph",{position:i.model.createPositionAt(e,t)}),n.focus(),n.scrollToTheSelection()}_listenToIfEnabled(e,t,i,n){this.listenTo(e,t,(...e)=>{this.isEnabled&&i(...e)},n)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=Gh(e);if(!t)return!1;const i=e.getSelectedElement();return this._insertParagraph(i,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,i=e.locale.t,n={before:i("Insert paragraph before block"),after:i("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(e,i,o)=>{const r=o.mapper.toViewElement(i.item);Yh(r,i.item,t)&&function(e,t,i){const n=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const i=this.toDomElement(e);return function(e,t){for(const i of Jh){const n=new Nc({tag:"div",attributes:{class:["ck","ck-widget__type-around__button","ck-widget__type-around__button_"+i],title:t[i]},children:[e.ownerDocument.importNode(Zh,!0)]});e.appendChild(n.render())}}(i,t),function(e){const t=new Nc({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(i),i}));e.insert(e.createPositionAt(i,"end"),n)}(o.writer,n,r)},{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,i=t.document.selection,n=t.schema,o=e.editing.view;function r(e){return"ck-widget_type-around_show-fake-caret_"+e}this._listenToIfEnabled(o.document,"arrowKey",(e,t)=>{this._handleArrowKeyPress(e,t)},{context:[Vh,"$text"],priority:"high"}),this._listenToIfEnabled(i,"change:range",(t,i)=>{i.directChange&&e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(t.document,"change:data",()=>{const t=i.getSelectedElement();if(t){if(Yh(e.editing.mapper.toViewElement(t),t,n))return}e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",(e,t,i)=>{const o=i.writer;if(this._currentFakeCaretModelElement){const e=i.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(o.removeClass(Jh.map(r),e),this._currentFakeCaretModelElement=null)}const s=t.selection.getSelectedElement();if(!s)return;const a=i.mapper.toViewElement(s);if(!Yh(a,s,n))return;const l=Gh(t.selection);l&&(o.addClass(r(l),a),this._currentFakeCaretModelElement=s)}),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",(t,i,n)=>{n||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})})}_handleArrowKeyPress(e,t){const i=this.editor,n=i.model,o=n.document.selection,r=n.schema,s=i.editing.view,a=Lo(t.keyCode,i.locale.contentLanguageDirection),l=s.document.selection.getSelectedElement();let c;Yh(l,i.editing.mapper.toModelElement(l),r)?c=this._handleArrowKeyPressOnSelectedWidget(a):o.isCollapsed&&(c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a)),c&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,i=Gh(t.document.selection);return t.change(t=>{if(!i)return t.setSelectionAttribute("widget-type-around",e?"after":"before"),!0;if(!(i===(e?"after":"before")))return t.removeSelectionAttribute("widget-type-around"),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,i=t.model,n=i.schema,o=t.plugins.get("Widget"),r=o._getObjectElementNextToSelection(e);return!!Yh(t.editing.mapper.toViewElement(r),r,n)&&(i.change(t=>{o._setSelectionOverElement(r),t.setSelectionAttribute("widget-type-around",e?"before":"after")}),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(i,n)=>{const o=n.domTarget.closest(".ck-widget__type-around__button");if(!o)return;const r=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(o),s=function(e,t){const i=e.closest(".ck-widget");return t.mapDomToView(i)}(o,t.domConverter),a=e.editing.mapper.toModelElement(s);this._insertParagraph(a,r),n.preventDefault(),i.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,i=e.editing.view;this._listenToIfEnabled(i.document,"enter",(i,n)=>{if("atTarget"!=i.eventPhase)return;const o=t.getSelectedElement(),r=e.editing.mapper.toViewElement(o),s=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:Yh(r,o,s)&&(this._insertParagraph(o,n.isSoft?"before":"after"),a=!0),a&&(n.preventDefault(),i.stop())},{context:Vh})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[No.enter,No.delete,No.backspace];this._listenToIfEnabled(e.document,"keydown",(e,i)=>{t.includes(i.keyCode)||Qh(i)||this._insertParagraphAccordingToFakeCaretPosition()},{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,i=e.model,n=i.schema;this._listenToIfEnabled(t.document,"delete",(t,o)=>{if("atTarget"!=t.eventPhase)return;const r=Gh(i.document.selection);if(!r)return;const s=o.direction,a=i.document.selection.getSelectedElement(),l="forward"==s;if("before"===r===l)e.execute("delete",{selection:i.createSelection(a,"on")});else{const t=n.getNearestSelectionRange(i.createPositionAt(a,r),s);if(t)if(t.isCollapsed){const o=i.createSelection(t.start);if(i.modifySelection(o,{direction:s}),o.focus.isEqual(t.start)){const e=function(e,t){let i=t;for(const n of t.getAncestors({parentFirst:!0})){if(n.childCount>1||e.isLimit(n))break;i=n}return i}(n,t.start.parent);i.deleteContent(i.createSelection(e,"on"),{doNotAutoparagraph:!0})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}o.preventDefault(),t.stop()},{context:Vh})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,i=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(e,[n,o])=>{if(o&&!o.is("documentSelection"))return;const r=Gh(i);return r?(e.stop(),t.change(e=>{const o=i.getSelectedElement(),s=t.createPositionAt(o,r),a=e.createSelection(s),l=t.insertContent(n,a);return e.setSelection(a),l})):void 0},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(e,[i])=>{if(i&&!i.is("documentSelection"))return;Gh(t)&&e.stop()},{priority:"high"})}}i(63);function eu(e){const t=e.model;return(i,n)=>{const o=n.keyCode==No.arrowup,r=n.keyCode==No.arrowdown,s=n.shiftKey,a=t.document.selection;if(!o&&!r)return;const l=r;if(s&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,l))return;const c=function(e,t,i){const n=e.model;if(i){const e=t.isCollapsed?t.focus:t.getLastPosition(),i=tu(n,e,"forward");if(!i)return null;const o=n.createRange(e,i),r=iu(n.schema,o,"backward");return r&&e.isBefore(r)?n.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),i=tu(n,e,"backward");if(!i)return null;const o=n.createRange(i,e),r=iu(n.schema,o,"forward");return r&&e.isAfter(r)?n.createRange(r,e):null}}(e,a,l);c&&!c.isCollapsed&&function(e,t,i){const n=e.model,o=e.view.domConverter;if(i){const e=n.createSelection(t.start);n.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=n.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),s=o.viewRangeToDom(r),a=Cs.getDomRangeRects(s);let l;for(const e of a)if(void 0!==l){if(Math.round(e.top)>=l)return!1;l=Math.max(l,Math.round(e.bottom))}else l=Math.round(e.bottom);return!0}(e,c,l)&&(t.change(e=>{const i=l?c.end:c.start;if(s){const n=t.createSelection(a.anchor);n.setFocus(i),e.setSelection(n)}else e.setSelection(i)}),i.stop(),n.preventDefault(),n.stopPropagation())}}function tu(e,t,i){const n=e.schema,o=e.createRangeIn(t.root),r="forward"==i?"elementStart":"elementEnd";for(const{previousPosition:e,item:s,type:a}of o.getWalker({startPosition:t,direction:i})){if(n.isLimit(s)&&!n.isInline(s))return e;if(a==r&&n.isBlock(s))return null}return null}function iu(e,t,i){const n="backward"==i?t.end:t.start;if(e.checkChild(n,"$text"))return n;for(const{nextPosition:n}of t.getWalker({direction:i}))if(e.checkChild(n,"$text"))return n}class nu extends Qe{static get pluginName(){return"Widget"}static get requires(){return[Xh,Nh]}init(){const e=this.editor,t=e.editing.view,i=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(t,i,n)=>{const o=n.writer,r=i.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=e.editing.mapper.toViewElement(s);Vh(a)&&n.consumable.consume(r,"selection")&&o.setSelection(o.createRangeOn(a),{fake:!0,label:Hh(a)})}),this.editor.editing.downcastDispatcher.on("selection",(e,t,i)=>{this._clearPreviouslySelectedWidgets(i.writer);const n=i.writer,o=n.document.selection;let r=null;for(const e of o.getRanges())for(const t of e){const e=t.item;Vh(e)&&!ou(e,r)&&(n.addClass("ck-widget_selected",e),this._previouslySelected.add(e),r=e)}},{priority:"low"}),t.addObserver(fh),this.listenTo(i,"mousedown",(...e)=>this._onMousedown(...e)),this.listenTo(i,"arrowKey",(...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)},{context:[Vh,"$text"]}),this.listenTo(i,"arrowKey",(...e)=>{this._preventDefaultOnArrowKeyPress(...e)},{context:"$root"}),this.listenTo(i,"arrowKey",eu(this.editor.editing),{context:"$text"}),this.listenTo(i,"delete",(e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())},{context:"$root"})}_onMousedown(e,t){const i=this.editor,n=i.editing.view,o=n.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(Vh(e))return!1;e=e.parent}return!1}(r)){if((So.isSafari||So.isGecko)&&t.domEvent.detail>=3){const e=i.editing.mapper,n=r.is("attributeElement")?r.findAncestor(e=>!e.is("attributeElement")):r,o=e.toModelElement(n);t.preventDefault(),this.editor.model.change(e=>{e.setSelection(o,"in")})}return}if(!Vh(r)&&(r=r.findAncestor(Vh),!r))return;So.isAndroid&&t.preventDefault(),o.isFocused||n.focus();const s=i.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(e,t){const i=t.keyCode,n=this.editor.model,o=n.schema,r=n.document.selection,s=r.getSelectedElement(),a=Lo(i,this.editor.locale.contentLanguageDirection);if(s&&o.isObject(s)){const i=a?r.getLastPosition():r.getFirstPosition(),s=o.getNearestSelectionRange(i,a?"forward":"backward");return void(s&&(n.change(e=>{e.setSelection(s)}),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const l=this._getObjectElementNextToSelection(a);l&&o.isObject(l)&&(this._setSelectionOverElement(l),t.preventDefault(),e.stop())}_preventDefaultOnArrowKeyPress(e,t){const i=this.editor.model,n=i.schema,o=i.document.selection.getSelectedElement();o&&n.isObject(o)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const i=this._getObjectElementNextToSelection(e);return i?(this.editor.model.change(e=>{let n=t.anchor.parent;for(;n.isEmpty;){const t=n;n=t.parent,e.remove(t)}this._setSelectionOverElement(i)}),!0):void 0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,i=t.schema,n=t.document.selection,o=t.createSelection(n);t.modifySelection(o,{direction:e?"forward":"backward"});const r=e?o.focus.nodeBefore:o.focus.nodeAfter;return r&&i.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass("ck-widget_selected",t);this._previouslySelected.clear()}}function ou(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}var ru=function(e,t,i){var n=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return w(i)&&(n="leading"in i?!!i.leading:n,o="trailing"in i?!!i.trailing:o),fs(e,t,{leading:n,maxWait:t,trailing:o})};i(65);class su extends Qe{static get pluginName(){return"DragDrop"}static get requires(){return[xh,nu]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=ru(e=>this._updateDropMarker(e),40),this._removeDropMarkerDelayed=cu(()=>this._removeDropMarker(),40),this._clearDraggableAttributesDelayed=cu(()=>this._clearDraggableAttributes(),40),t.addObserver(vh),t.addObserver(fh),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(e,t,i)=>{i?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(e,t,i)=>{i||this._finalizeDragging(!1)}),So.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,i=t.document,n=e.editing.view,o=n.document;this.listenTo(o,"dragstart",(n,r)=>{const a=i.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const l=r.target?du(r.target):null;if(l){const i=e.editing.mapper.toModelElement(l);this._draggedRange=ba.fromRange(t.createRangeOn(i)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&Vh(e)||(this._draggedRange=ba.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=s(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),d=e.data.toView(t.getSelectedContent(c));o.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:d,method:n.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")},{priority:"low"}),this.listenTo(o,"dragend",(e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)},{priority:"low"}),this.listenTo(o,"dragenter",()=>{this.isEnabled&&n.focus()}),this.listenTo(o,"dragleave",()=>{this._removeDropMarkerDelayed()}),this.listenTo(o,"dragging",(t,i)=>{if(!this.isEnabled)return void(i.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const n=au(e,i.targetRanges,i.target);this._draggedRange||(i.dataTransfer.dropEffect="copy"),So.isGecko||("copy"==i.dataTransfer.effectAllowed?i.dataTransfer.dropEffect="copy":["all","copyMove"].includes(i.dataTransfer.effectAllowed)&&(i.dataTransfer.dropEffect="move")),n&&this._updateDropMarkerThrottled(n)},{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",(t,i)=>{if("drop"!=i.method)return;const n=au(e,i.targetRanges,i.target);if(this._removeDropMarker(),!n)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=i.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==lu(i.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(n,!0))return this._finalizeDragging(!1),void t.stop();i.targetRanges=[e.editing.mapper.toViewRange(n)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(xh);e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i=t.targetRanges.map(e=>this.editor.editing.mapper.toModelRange(e));this.editor.model.change(e=>e.setSelection(i))},{priority:"high"}),e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i="move"==lu(t.dataTransfer),n=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(n&&i)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,i=t.document;this.listenTo(i,"mousedown",(n,o)=>{if(So.isAndroid||!o)return;this._clearDraggableAttributesDelayed.cancel();let r=du(o.target);if(So.isBlink&&!e.isReadOnly&&!r&&!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&Vh(e)||(r=i.selection.editableElement)}r&&(t.change(e=>{e.setAttribute("draggable","true",r)}),this._draggableElement=e.editing.mapper.toModelElement(r))}),this.listenTo(i,"mouseup",()=>{So.isAndroid||this._clearDraggableAttributesDelayed()})}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change(t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null})}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:i})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return i.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.innerHTML="⁠⁠",t}))}})}_updateDropMarker(e){const t=this.editor,i=t.model.markers;t.model.change(t=>{i.has("drop-target")?i.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})})}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change(e=>{e.removeMarker("drop-target")})}_finalizeDragging(e){const t=this.editor,i=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&i.deleteContent(i.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function au(e,t,i){const n=e.model,o=e.editing.mapper;let r=null;const s=t?t[0].start:null;if(i.is("uiElement")&&(i=i.parent),r=function(e,t){const i=e.model,n=e.editing.mapper;if(Vh(t))return i.createRangeOn(n.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor(e=>Vh(e)||e.is("editableElement"));if(Vh(e))return i.createRangeOn(n.toModelElement(e))}return null}(e,i),r)return r;const a=function(e,t){const i=e.editing.mapper,n=e.editing.view,o=i.toModelElement(t);if(o)return o;const r=n.createPositionBefore(t),s=i.findMappedViewAncestor(r);return i.toModelElement(s)}(e,i),l=s?o.toModelPosition(s):null;return l?(r=function(e,t,i){const n=e.model;if(!n.schema.checkChild(i,"$block"))return null;const o=n.createPositionAt(i,0),r=t.path.slice(0,o.path.length),s=n.createPositionFromPath(t.root,r).nodeAfter;if(s&&n.schema.isObject(s))return n.createRangeOn(s);return null}(e,l,a),r||(r=n.schema.getNearestSelectionRange(l,So.isGecko?"forward":"backward"),r||function(e,t){const i=e.model;for(;t;){if(i.schema.isObject(t))return i.createRangeOn(t);t=t.parent}}(e,l.parent))):function(e,t){const i=e.model,n=i.schema,o=i.createPositionAt(t,0);return n.getNearestSelectionRange(o,"forward")}(e,a)}function lu(e){return So.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function cu(e,t){let i;function n(...o){n.cancel(),i=setTimeout(()=>e(...o),t)}return n.cancel=()=>{clearTimeout(i)},n}function du(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(Vh);if(Vh(e))return e;const t=e.findAncestor(e=>Vh(e)||e.is("editableElement"));return Vh(t)?t:null}class hu extends Qe{static get pluginName(){return"PastePlainText"}static get requires(){return[xh]}init(){const e=this.editor,t=e.model,i=e.editing.view,n=i.document,o=t.document.selection;let r=!1;i.addObserver(vh),this.listenTo(n,"keydown",(e,t)=>{r=t.shiftKey}),e.plugins.get(xh).on("contentInsertion",(e,i)=>{(r||function(e,t){if(e.childCount>1)return!1;const i=e.getChild(0);if(t.isObject(i))return!1;return 0==[...i.getAttributeKeys()].length}(i.content,t.schema))&&t.change(e=>{const n=Array.from(o.getAttributes()).filter(([e])=>t.schema.getAttributeProperties(e).isFormatting);o.isCollapsed||t.deleteContent(o,{doNotAutoparagraph:!0}),n.push(...o.getAttributes());const r=e.createRangeIn(i.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(n,t)})})}}class uu extends Qe{static get pluginName(){return"Clipboard"}static get requires(){return[xh,su,hu]}}class gu extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i){const n=i.isCollapsed,o=i.getFirstRange(),r=o.start.parent,s=o.end.parent,a=r==s;if(n){const n=Ah(e.schema,i.getAttributes());mu(e,t,o.end),t.removeSelectionAttribute(i.getAttributeKeys()),t.setSelectionAttribute(n)}else{const n=!(o.start.isAtStart&&o.end.isAtEnd);e.deleteContent(i,{leaveUnmerged:n}),a?mu(e,t,i.focus):n&&t.setSelection(s,0)}}(e,i,t.selection),this.fire("afterExecute",{writer:i})})}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const i=t.anchor;if(!i||!e.checkChild(i,"softBreak"))return!1;const n=t.getFirstRange(),o=n.start.parent,r=n.end.parent;if((fu(o,e)||fu(r,e))&&o!==r)return!1;return!0}(e.schema,t.selection)}}function mu(e,t,i){const n=t.createElement("softBreak");e.insertContent(n,i),t.setSelection(n,"after")}function fu(e,t){return!e.is("rootElement")&&(t.isLimit(e)||fu(e.parent,t))}class pu extends Qe{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,i=e.conversion,n=e.editing.view,o=n.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),i.for("upcast").elementToElement({model:"softBreak",view:"br"}),i.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),n.addObserver(Eh),e.commands.add("shiftEnter",new gu(e)),this.listenTo(o,"enter",(t,i)=>{i.preventDefault(),i.isSoft&&(e.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"})}}class bu extends Ze{execute(){const e=this.editor.model,t=e.document.selection;let i=e.schema.getLimitElement(t);if(t.containsEntireContent(i)||!wu(e.schema,i))do{if(i=i.parent,!i)return}while(!wu(e.schema,i));e.change(e=>{e.setSelection(i,"in")})}}function wu(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const ku=zo("Ctrl+A");class _u extends Qe{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new bu(e)),this.listenTo(t,"keydown",(t,i)=>{Oo(i)===ku&&(e.execute("selectAll"),i.preventDefault())})}}class vu extends Qe{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",t=>{const i=e.commands.get("selectAll"),n=new ed(t),o=t.t;return n.set({label:o("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),n.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(n,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),n})}}class yu extends Qe{static get requires(){return[_u,vu]}static get pluginName(){return"SelectAll"}}class xu extends Ze{constructor(e,t){super(e),this._buffer=new Sh(e.model,t),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,i=t.document,n=e.text||"",o=n.length,r=e.range?t.createSelection(e.range):i.selection,s=e.resultRange;t.enqueueChange(this._buffer.batch,e=>{this._buffer.lock(),this._batches.add(this._buffer.batch),t.deleteContent(r),n&&t.insertContent(e.createText(n,i.selection.getAttributes()),r),s?e.setSelection(s):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(o)})}}function Au(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const i=[];let n,o=0;return e.forEach(e=>{"equal"==e?(r(),o++):"insert"==e?(s("insert")?n.values.push(t[o]):(r(),n={type:"insert",index:o,values:[t[o]]}),o++):s("delete")?n.howMany++:(r(),n={type:"delete",index:o,howMany:1})}),r(),i;function r(){n&&(i.push(n),n=null)}function s(e){return n&&n.type==e}}(gr(e.oldChildren,e.newChildren,Cu),e.newChildren);if(t.length>1)return;const i=t[0];return i.values[0]&&i.values[0].is("$text")?i:void 0}function Cu(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}class Tu{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if(function(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!Au(t))return!0;return!1}(e))this._handleContainerChildrenMutations(e,t);else for(const i of e)this._handleTextMutation(i,t),this._handleTextNodeInsertion(i)}_handleContainerChildrenMutations(e,t){const i=function(e){const t=e.map(e=>e.node).reduce((e,t)=>e.getCommonAncestor(t,{includeSelf:!0}));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find(e=>e.is("containerElement")||e.is("rootElement"))}(e);if(!i)return;const n=this.editor.editing.view.domConverter.mapViewToDom(i),o=new Er(this.editor.editing.view.document),r=this.editor.data.toModel(o.domToView(n)).getChild(0),s=this.editor.editing.mapper.toModelElement(i);if(!s)return;const a=Array.from(r.getChildren()),l=Array.from(s.getChildren()),c=a[a.length-1],d=l[l.length-1],h=c&&c.is("element","softBreak"),u=d&&!d.is("element","softBreak");h&&u&&a.pop();const g=this.editor.model.schema;if(!Eu(a,g)||!Eu(l,g))return;const m=a.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," "),f=l.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," ");if(f===m)return;const p=gr(f,m),{firstChangeAt:b,insertions:w,deletions:k}=Iu(p);let _=null;t&&(_=this.editing.mapper.toModelRange(t.getFirstRange()));const v=m.substr(b,w),y=this.editor.model.createRange(this.editor.model.createPositionAt(s,b),this.editor.model.createPositionAt(s,b+k));this.editor.execute("input",{text:v,range:y,resultRange:_})}_handleTextMutation(e,t){if("text"!=e.type)return;const i=e.newText.replace(/\u00A0/g," "),n=e.oldText.replace(/\u00A0/g," ");if(n===i)return;const o=gr(n,i),{firstChangeAt:r,insertions:s,deletions:a}=Iu(o);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const c=this.editing.view.createPositionAt(e.node,r),d=this.editing.mapper.toModelPosition(c),h=this.editor.model.createRange(d,d.getShiftedBy(a)),u=i.substr(r,s);this.editor.execute("input",{text:u,range:h,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=Au(e),i=this.editing.view.createPositionAt(e.node,t.index),n=this.editing.mapper.toModelPosition(i),o=t.values[0].data;this.editor.execute("input",{text:o.replace(/\u00A0/g," "),range:this.editor.model.createRange(n)})}}function Eu(e,t){return e.every(e=>t.isInline(e))}function Iu(e){let t=null,i=null;for(let n=0;n{i.deleteContent(i.document.selection)}),e.unlock()}So.isAndroid?n.document.on("beforeinput",(e,t)=>r(t),{priority:"lowest"}):n.document.on("keydown",(e,t)=>r(t),{priority:"lowest"}),n.document.on("compositionstart",(function(){const e=i.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;s()}),{priority:"lowest"}),n.document.on("compositionend",()=>{t=i.createSelection(i.document.selection)},{priority:"lowest"})}(e),function(e){e.editing.view.document.on("mutations",(t,i,n)=>{new Tu(e).handle(i,n)})}(e)}isInput(e){return this.editor.commands.get("input")._batches.has(e)}}class Pu extends Qe{static get requires(){return[Su,Nh]}static get pluginName(){return"Typing"}}function Mu(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>n.is("$text")||n.is("$textProxy")?e+n.data:(i=t.createPositionAfter(n),""),""),range:t.createRange(i,e.end)}}class Nu{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))}),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",(t,{directChange:i})=>{i&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))}),this.listenTo(e,"change:data",(e,t)=>{"transparent"!=t.type&&this._evaluateTextBeforeSelection("data",{batch:t})})}_evaluateTextBeforeSelection(e,t={}){const i=this.model,n=i.document.selection,o=i.createRange(i.createPositionAt(n.focus.parent,0),n.focus),{text:r,range:s}=Mu(o,i),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const i=Object.assign(t,{text:r,range:s});"object"==typeof a&&Object.assign(i,a),this.fire("matched:"+e,i)}}}Ke(Nu,Ue);class Ru extends Qe{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,i=e.editing.view,n=e.locale,o=t.document.selection;this.listenTo(i.document,"arrowKey",(e,t)=>{if(!o.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const i=t.keyCode==No.arrowright,r=t.keyCode==No.arrowleft;if(!i&&!r)return;const s=n.contentLanguageDirection;let a=!1;a="ltr"===s&&i||"rtl"===s&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()},{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(o,"change:range",(e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&Vu(o.getFirstPosition(),this.attributes)||this._restoreGravity())})}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,i=this.editor.model.document.selection,n=i.getFirstPosition();return!this._isGravityOverridden&&((!n.isAtStart||!Ou(i,t))&&(Vu(n,t)?(Du(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,i=this.editor.model,n=i.document.selection,o=n.getFirstPosition();return this._isGravityOverridden?(Du(e),this._restoreGravity(),zu(i,t,o),!0):o.isAtStart?!!Ou(n,t)&&(Du(e),zu(i,t,o),!0):function(e,t){return Vu(e.getShiftedBy(-1),t)}(o,t)?o.isAtEnd&&!Ou(n,t)&&Vu(o,t)?(Du(e),zu(i,t,o),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change(e=>e.overrideSelectionGravity())}_restoreGravity(){this.editor.model.change(e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}}function Ou(e,t){for(const i of t)if(e.hasAttribute(i))return!0;return!1}function zu(e,t,i){const n=i.nodeBefore;e.change(e=>{n?e.setSelectionAttribute(n.getAttributes()):e.removeSelectionAttribute(t)})}function Du(e){e.preventDefault()}function Vu(e,t){const{nodeBefore:i,nodeAfter:n}=e;for(const e of t){const t=i?i.getAttribute(e):void 0;if((n?n.getAttribute(e):void 0)!==t)return!0}return!1}var Lu=/[\\^$.*+?()[\]{}|]/g,ju=RegExp(Lu.source);var Bu=function(e){return(e=Pn(e))&&ju.test(e)?e.replace(Lu,"\\$&"):e};const Fu={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:"1/2",to:"½"},oneThird:{from:"1/3",to:"⅓"},twoThirds:{from:"2/3",to:"⅔"},oneForth:{from:"1/4",to:"¼"},threeQuarters:{from:"3/4",to:"¾"},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:Yu('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:Yu("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:Yu("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:Yu('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:Yu('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:Yu("'"),to:[null,"‚",null,"’"]}},Hu={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},Uu=["symbols","mathematical","typography","quotes"];function Wu(e){return"string"==typeof e?new RegExp(`(${Bu(e)})$`):e}function qu(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function $u(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function Yu(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function Gu(e,t,i,n){return n.createRange(Ku(e,t,i,!0,n),Ku(e,t,i,!1,n))}function Ku(e,t,i,n,o){let r=e.textNode||(n?e.nodeBefore:e.nodeAfter),s=null;for(;r&&r.getAttribute(t)==i;)s=r,r=n?r.previousSibling:r.nextSibling;return s?o.createPositionAt(s,n?"before":"after"):e}class Qu extends Ze{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",(e,t)=>{t[1]={...t[1]};const i=t[1];i.batchType||(i.batchType="transparent")},{priority:"high"}),this.listenTo(e.data,"set",(e,t)=>{"transparent"===t[1].batchType&&this.clearStack()})}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,i={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:i}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,i){const n=this.editor.model,o=n.document,r=[],s=e.map(e=>e.getTransformedByOperations(i)),a=s.flat();for(const e of s){const t=e.filter(e=>e.root!=o.graveyard).filter(e=>!Zu(e,a));t.length&&(Ju(t),r.push(t[0]))}r.length&&n.change(e=>{e.setSelection(r,{backward:t})})}_undo(e,t){const i=this.editor.model,n=i.document;this._createdBatches.add(t);const o=e.operations.slice().filter(e=>e.isDocumentOperation);o.reverse();for(const e of o){const o=e.baseVersion+1,r=Array.from(n.history.getOperations(o)),s=ah([e.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const o of s)t.addOperation(o),i.applyOperation(o),n.history.setOperationAsUndone(e,o)}}}function Ju(e){e.sort((e,t)=>e.start.isBefore(t.start)?-1:1);for(let t=1;tt!==e&&t.containsRange(e,!0))}class Xu extends Qu{execute(e=null){const t=e?this._stack.findIndex(t=>t.batch==e):this._stack.length-1,i=this._stack.splice(t,1)[0],n=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(n,()=>{this._undo(i.batch,n);const e=this.editor.model.document.history.getOperations(i.batch.baseVersion);this._restoreSelection(i.selection.ranges,i.selection.isBackward,e),this.fire("revert",i.batch,n)}),this.refresh()}}class eg extends Qu{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(t,()=>{const i=e.batch.operations[e.batch.operations.length-1].baseVersion+1,n=this.editor.model.document.history.getOperations(i);this._restoreSelection(e.selection.ranges,e.selection.isBackward,n),this._undo(e.batch,t)}),this.refresh()}}class tg extends Qe{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new Xu(e),this._redoCommand=new eg(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(e,t)=>{const i=t[0];if(!i.isDocumentOperation)return;const n=i.batch,o=this._redoCommand._createdBatches.has(n),r=this._undoCommand._createdBatches.has(n);this._batchRegistry.has(n)||"transparent"==n.type&&!o&&!r||(o?this._undoCommand.addBatch(n):r||(this._undoCommand.addBatch(n),this._redoCommand.clearStack()),this._batchRegistry.add(n))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(e,t,i)=>{this._redoCommand.addBatch(i)}),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var ig='',ng='';class og extends Qe{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?ig:ng,o="ltr"==t.uiLanguageDirection?ng:ig;this._addButton("undo",i("Undo"),"CTRL+Z",n),this._addButton("redo",i("Redo"),"CTRL+Y",o)}_addButton(e,t,i,n){const o=this.editor;o.ui.componentFactory.add(e,r=>{const s=o.commands.get(e),a=new ed(r);return a.set({label:t,icon:n,keystroke:i,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",()=>{o.execute(e),o.editing.view.focus()}),a})}}class rg extends Qe{static get requires(){return[tg,og]}static get pluginName(){return"Undo"}}class sg{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise((i,n)=>{t.onload=()=>{const e=t.result;this._data=e,i(e)},t.onerror=()=>{n("error")},t.onabort=()=>{n("aborted")},this._reader.readAsDataURL(e)})}abort(){this._reader.abort()}}Ke(sg,Ue);class ag extends Qe{static get pluginName(){return"FileRepository"}static get requires(){return[Cc]}init(){this.loaders=new Zi,this.loaders.on("add",()=>this._updatePendingAction()),this.loaders.on("remove",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0)}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return Object(l.b)("filerepository-no-upload-adapter"),null;const t=new lg(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then(e=>{this._loadersMap.set(e,t)}).catch(()=>{}),t.on("change:uploaded",()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e}),t.on("change:uploadTotal",()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e}),t}destroyLoader(e){const t=e instanceof lg?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach((e,i)=>{e===t&&this._loadersMap.delete(i)})}_updatePendingAction(){const e=this.editor.plugins.get(Cc);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,i=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(i(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",i)}}else e.remove(this._pendingAction),this._pendingAction=null}}Ke(ag,Ue);class lg{constructor(e,t){this.id=s(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new sg,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(e=>this._filePromiseWrapper?e:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new l.a("filerepository-read-wrong-status",this);return this.status="reading",this.file.then(e=>this._reader.read(e)).then(e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e}).catch(e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e})}upload(){if("idle"!=this.status)throw new l.a("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(e=>(this.uploadResponse=e,this.status="idle",e)).catch(e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e})}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise((i,n)=>{t.rejecter=n,t.isFulfilled=!1,e.then(e=>{t.isFulfilled=!0,i(e)}).catch(e=>{t.isFulfilled=!0,n(e)})}),t}}Ke(lg,Ue);class cg extends Mc{constructor(e){super(e),this.buttonView=new ed(e),this._fileInputView=new dg(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class dg extends Mc{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}function hg(){let e=function(e){e=e.toLowerCase();const t=document.cookie.split(";");for(const i of t){const t=i.split("=");if(decodeURIComponent(t[0].trim().toLowerCase())===e)return decodeURIComponent(t[1])}return null}("ckCsrfToken");var t,i;return e&&40==e.length||(e=function(e){let t="";const i=new Uint8Array(e);window.crypto.getRandomValues(i);for(let e=0;e.5?n.toUpperCase():n}return t}(40),t="ckCsrfToken",i=e,document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(i)+";path=/"),e}class ug{constructor(e,t,i){this.loader=e,this.url=t,this.t=i}upload(){return this.loader.file.then(e=>new Promise((t,i)=>{this._initRequest(),this._initListeners(t,i,e),this._sendRequest(e)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.url,!0),e.responseType="json"}_initListeners(e,t,i){const n=this.xhr,o=this.loader,r=(0,this.t)("Cannot upload file:")+` ${i.name}.`;n.addEventListener("error",()=>t(r)),n.addEventListener("abort",()=>t()),n.addEventListener("load",()=>{const i=n.response;if(!i||!i.uploaded)return t(i&&i.error&&i.error.message?i.error.message:r);e({default:i.url})}),n.upload&&n.upload.addEventListener("progress",e=>{e.lengthComputable&&(o.uploadTotal=e.total,o.uploaded=e.loaded)})}_sendRequest(e){const t=new FormData;t.append("upload",e),t.append("ckCsrfToken",hg()),this.xhr.send(t)}}function gg(e,t,i,n){let o,r=null;"function"==typeof n?o=n:(r=e.commands.get(n),o=()=>{e.execute(n)}),e.model.document.on("change:data",(s,a)=>{if(r&&!r.isEnabled||!t.isEnabled)return;const l=Ns(e.model.document.selection.getRanges());if(!l.isCollapsed)return;if("transparent"==a.type)return;const c=Array.from(e.model.document.differ.getChanges()),d=c[0];if(1!=c.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const h=d.position.parent;if(h.is("element","codeBlock"))return;if(h.is("element","listItem")&&"function"!=typeof n&&!["numberedList","bulletedList","todoList"].includes(n))return;if(r&&!0===r.value)return;const u=h.getChild(0),g=e.model.createRangeOn(u);if(!g.containsRange(l)&&!l.end.isEqual(g.end))return;const m=i.exec(u.data.substr(0,l.end.offset));m&&e.model.enqueueChange(t=>{const i=t.createPositionAt(h,0),n=t.createPositionAt(h,m[0].length),r=new ba(i,n);if(!1!==o({match:m})){t.remove(r);const i=e.model.document.selection.getFirstRange(),n=t.createRangeIn(h);!h.isEmpty||n.isEqual(i)||n.containsRange(i,!0)||t.remove(h)}r.detach()})})}function mg(e,t,i,n){let o,r;i instanceof RegExp?o=i:r=i,r=r||(e=>{let t;const i=[],n=[];for(;null!==(t=o.exec(e))&&!(t&&t.length<4);){let{index:e,1:o,2:r,3:s}=t;const a=o+r+s;e+=t[0].length-a.length;const l=[e,e+o.length],c=[e+o.length+r.length,e+o.length+r.length+s.length];i.push(l),i.push(c),n.push([e+o.length,e+o.length+r.length])}return{remove:i,format:n}}),e.model.document.on("change:data",(i,o)=>{if("transparent"==o.type||!t.isEnabled)return;const s=e.model,a=s.document.selection;if(!a.isCollapsed)return;const l=Array.from(s.document.differ.getChanges()),c=l[0];if(1!=l.length||"insert"!==c.type||"$text"!=c.name||1!=c.length)return;const d=a.focus,h=d.parent,{text:u,range:g}=function(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>!n.is("$text")&&!n.is("$textProxy")||n.getAttribute("code")?(i=t.createPositionAfter(n),""):e+n.data,""),range:t.createRange(i,e.end)}}(s.createRange(s.createPositionAt(h,0),d),s),m=r(u),f=fg(g.start,m.format,s),p=fg(g.start,m.remove,s);f.length&&p.length&&s.enqueueChange(e=>{if(!1!==n(e,f))for(const t of p.reverse())e.remove(t)})})}function fg(e,t,i){return t.filter(e=>void 0!==e[0]&&void 0!==e[1]).map(t=>i.createRange(e.getShiftedBy(t[0]),e.getShiftedBy(t[1])))}function pg(e,t){return(i,n)=>{if(!e.commands.get(t).isEnabled)return!1;const o=e.model.schema.getValidRanges(n,t);for(const e of o)i.setAttribute(t,!0,e);i.removeSelectionAttribute(t)}}class bg extends Ze{constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,i=t.document.selection,n=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(i.isCollapsed)n?e.setSelectionAttribute(this.attributeKey,!0):e.removeSelectionAttribute(this.attributeKey);else{const o=t.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const t of o)n?e.setAttribute(this.attributeKey,n,t):e.removeAttribute(this.attributeKey,t)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,i=e.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const e of i.getRanges())for(const i of e.getItems())if(t.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}class wg extends Qe{static get pluginName(){return"BoldEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"bold"}),e.model.schema.setAttributeProperties("bold",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"bold",view:"strong",upcastAlso:["b",e=>{const t=e.getStyle("font-weight");return t?"bold"==t||Number(t)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),e.commands.add("bold",new bg(e,"bold")),e.keystrokes.set("CTRL+B","bold")}}class kg extends Qe{static get pluginName(){return"BoldUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("bold",i=>{const n=e.commands.get("bold"),o=new ed(i);return o.set({label:t("Bold"),icon:'',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("bold"),e.editing.view.focus()}),o})}}class _g extends Qe{static get pluginName(){return"ItalicEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"italic"}),e.model.schema.setAttributeProperties("italic",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"italic",view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add("italic",new bg(e,"italic")),e.keystrokes.set("CTRL+I","italic")}}class vg extends Qe{static get pluginName(){return"ItalicUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("italic",i=>{const n=e.commands.get("italic"),o=new ed(i);return o.set({label:t("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("italic"),e.editing.view.focus()}),o})}}class yg extends Ze{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.schema,n=t.document.selection,o=Array.from(n.getSelectedBlocks()),r=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(r){const t=o.filter(e=>xg(e)||Cg(i,e));this._applyQuote(e,t)}else this._removeQuote(e,o.filter(xg))})}_getValue(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!xg(e))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,i=Ns(e.getSelectedBlocks());return!!i&&Cg(t,i)}_removeQuote(e,t){Ag(e,t).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const i=e.createPositionBefore(t.start.parent);return void e.move(t,i)}t.end.isAtEnd||e.split(t.end);const i=e.createPositionAfter(t.end.parent);e.move(t,i)})}_applyQuote(e,t){const i=[];Ag(e,t).reverse().forEach(t=>{let n=xg(t.start);n||(n=e.createElement("blockQuote"),e.wrap(t,n)),i.push(n)}),i.reverse().reduce((t,i)=>t.nextSibling==i?(e.merge(e.createPositionAfter(t)),t):i)}}function xg(e){return"blockQuote"==e.parent.name?e.parent:null}function Ag(e,t){let i,n=0;const o=[];for(;n{const n=e.model.document.differ.getChanges();for(const e of n)if("insert"==e.type){const n=e.position.nodeAfter;if(!n)continue;if(n.is("element","blockQuote")&&n.isEmpty)return i.remove(n),!0;if(n.is("element","blockQuote")&&!t.checkChild(e.position,n))return i.unwrap(n),!0;if(n.is("element")){const e=i.createRangeIn(n);for(const n of e.getItems())if(n.is("element","blockQuote")&&!t.checkChild(i.createPositionBefore(n),n))return i.unwrap(n),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return i.remove(t),!0}return!1});const i=this.editor.editing.view.document,n=e.model.document.selection,o=e.commands.get("blockQuote");this.listenTo(i,"enter",(t,i)=>{if(!n.isCollapsed||!o.value)return;n.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"}),this.listenTo(i,"delete",(t,i)=>{if("backward"!=i.direction||!n.isCollapsed||!o.value)return;const r=n.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"})}}i(67);class Eg extends Qe{static get pluginName(){return"BlockQuoteUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("blockQuote",i=>{const n=e.commands.get("blockQuote"),o=new ed(i);return o.set({label:t("Block quote"),icon:Tc.quote,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),o})}}class Ig extends Qe{static get pluginName(){return"CKFinderUI"}init(){const e=this.editor,t=e.ui.componentFactory,i=e.t;t.add("ckfinder",t=>{const n=e.commands.get("ckfinder"),o=new ed(t);return o.set({label:i("Insert image or file"),icon:'',tooltip:!0}),o.bind("isEnabled").to(n),o.on("execute",()=>{e.execute("ckfinder"),e.editing.view.focus()}),o})}}class Sg extends Ze{constructor(e){super(e),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",()=>this.refresh(),{priority:"low"})}refresh(){const e=this.editor.commands.get("insertImage"),t=this.editor.commands.get("link");this.isEnabled=e.isEnabled||t.isEnabled}execute(){const e=this.editor,t=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=t&&"modal"!=t)throw new l.a("ckfinder-unknown-openermethod",e);const i=this.editor.config.get("ckfinder.options")||{};i.chooseFiles=!0;const n=i.onInit;i.language||(i.language=e.locale.uiLanguage),i.onInit=t=>{n&&n(t),t.on("files:choose",i=>{const n=i.data.files.toArray(),o=n.filter(e=>!e.isImage()),r=n.filter(e=>e.isImage());for(const t of o)e.execute("link",t.getUrl());const s=[];for(const e of r){const i=e.getUrl();s.push(i||t.request("file:getProxyUrl",{file:e}))}s.length&&Pg(e,s)}),t.on("file:choose:resizedImage",t=>{const i=t.data.resizedUrl;if(i)Pg(e,[i]);else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not obtain resized image URL."),{title:i("Selecting resized image failed"),namespace:"ckfinder"})}})},window.CKFinder[t](i)}}function Pg(e,t){if(e.commands.get("insertImage").isEnabled)e.execute("insertImage",{source:t});else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not insert image at the current position."),{title:i("Inserting image failed"),namespace:"ckfinder"})}}class Mg extends Qe{static get pluginName(){return"CKFinderEditing"}static get requires(){return[Rd,"LinkEditing"]}init(){const e=this.editor;if(!e.plugins.has("ImageBlockEditing")&&!e.plugins.has("ImageInlineEditing"))throw new l.a("ckfinder-missing-image-plugin",e);e.commands.add("ckfinder",new Sg(e))}}class Ng extends Qe{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",ag]}init(){const e=this.editor,t=e.plugins.get("CloudServices"),i=t.token,n=t.uploadUrl;i&&(this._uploadGateway=e.plugins.get("CloudServicesCore").createUploadGateway(i,n),e.plugins.get(ag).createUploadAdapter=e=>new Rg(this._uploadGateway,e))}}class Rg{constructor(e,t){this.uploadGateway=e,this.loader=t}upload(){return this.loader.file.then(e=>(this.fileUploader=this.uploadGateway.upload(e),this.fileUploader.on("progress",(e,t)=>{this.loader.uploadTotal=t.total,this.loader.uploaded=t.uploaded}),this.fileUploader.send()))}abort(){this.fileUploader.abort()}}class Og extends Ze{refresh(){const e=this.editor.model,t=Ns(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&zg(t,e.schema)}execute(e={}){const t=this.editor.model,i=t.document;t.change(n=>{const o=(e.selection||i.selection).getSelectedBlocks();for(const e of o)!e.is("element","paragraph")&&zg(e,t.schema)&&n.rename(e,"paragraph")})}}function zg(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class Dg extends Ze{execute(e){const t=this.editor.model;let i=e.position;t.change(e=>{const n=e.createElement("paragraph");if(!t.schema.checkChild(i.parent,n)){const o=t.schema.findAllowedParent(i,n);if(!o)return;i=e.split(i,o).position}t.insertContent(n,i),e.setSelection(n,"in")})}}class Vg extends Qe{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new Og(e)),e.commands.add("insertParagraph",new Dg(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>Vg.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Vg.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class Lg extends Ze{constructor(e,t){super(e),this.modelElements=t}refresh(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some(t=>jg(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,i=t.document,n=e.value;t.change(e=>{const o=Array.from(i.selection.getSelectedBlocks()).filter(e=>jg(e,n,t.schema));for(const t of o)t.is("element",n)||e.rename(t,n)})}}function jg(e,t,i){return i.checkChild(e.parent,t)&&!i.isObject(e)}class Bg extends Qe{static get pluginName(){return"HeadingEditing"}constructor(e){super(e),e.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Vg]}init(){const e=this.editor,t=e.config.get("heading.options"),i=[];for(const n of t)"paragraph"!==n.model&&(e.model.schema.register(n.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(n),i.push(n.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new Lg(e,i))}afterInit(){const e=this.editor,t=e.commands.get("enter"),i=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",(t,n)=>{const o=e.model.document.selection.getFirstPosition().parent;i.some(e=>o.is("element",e.model))&&!o.is("element","paragraph")&&0===o.childCount&&n.writer.rename(o,"paragraph")})}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:a.get("low")+1})}}i(13);class Fg extends Qe{static get pluginName(){return"HeadingUI"}init(){const e=this.editor,t=e.t,i=function(e){const t=e.t,i={Paragraph:t("Paragraph"),"Heading 1":t("Heading 1"),"Heading 2":t("Heading 2"),"Heading 3":t("Heading 3"),"Heading 4":t("Heading 4"),"Heading 5":t("Heading 5"),"Heading 6":t("Heading 6")};return e.config.get("heading.options").map(e=>{const t=i[e.title];return t&&t!=e.title&&(e.title=t),e})}(e),n=t("Choose heading"),o=t("Heading");e.ui.componentFactory.add("heading",t=>{const r={},s=new Zi,a=e.commands.get("heading"),l=e.commands.get("paragraph"),c=[a];for(const e of i){const t={type:"button",model:new Od({label:e.title,class:e.class,withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(l,"value"),t.model.set("commandName","paragraph"),c.push(l)):(t.model.bind("isOn").to(a,"value",t=>t===e.model),t.model.set({commandName:"heading",commandValue:e.model})),s.add(t),r[e.model]=e.title}const d=xd(t);return Cd(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:o}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(c,"isEnabled",(...e)=>e.some(e=>e)),d.buttonView.bind("label").to(a,"value",l,"value",(e,t)=>{const i=e||t&&"paragraph";return r[i]?r[i]:n}),this.listenTo(d,"execute",t=>{e.execute(t.source.commandName,t.source.commandValue?{value:t.source.commandValue}:void 0),e.editing.view.focus()}),d})}}class Hg extends Qe{static get requires(){return[Hd]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",t=>{(function(e){const t=e.getSelectedElement();return!(!t||!Vh(t))})(e.editing.view.document.selection)&&t.stop()},{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:i,getRelatedElement:n,balloonClassName:o="ck-toolbar-container"}){if(!i.length)return void Object(l.b)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,s=r.t,a=new pd(r.locale);if(a.ariaLabel=t||s("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.a("widget-toolbar-duplicated",this,{toolbarId:e});a.fillFromConfig(i,r.ui.componentFactory),this._toolbarDefinitions.set(e,{view:a,getRelatedElement:n,balloonClassName:o})}_updateToolbarsVisibility(){let e=0,t=null,i=null;for(const n of this._toolbarDefinitions.values()){const o=n.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&o)if(this.editor.ui.focusTracker.isFocused){const r=o.getAncestors().length;r>e&&(e=r,t=o,i=n)}else this._isToolbarVisible(n)&&this._hideToolbar(n);else this._isToolbarInBalloon(n)&&this._hideToolbar(n)}i&&this._showToolbar(i,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?Ug(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:Wg(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);Ug(this.editor,t)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function Ug(e,t){const i=e.plugins.get("ContextualBalloon"),n=Wg(e,t);i.updatePosition(n)}function Wg(e,t){const i=e.editing.view,n=Vd.defaultPositions;return{target:i.domConverter.mapViewToDom(t),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,qh]}}class qg{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,i){const n=new Cs(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const i of t)if(e.classList.contains("ck-widget__resizer__handle-"+i))return i}(e),this._referenceCoordinates=function(e,t){const i=new Cs(e),n=t.split("-"),o={x:"right"==n[1]?i.right:i.left,y:"bottom"==n[0]?i.bottom:i.top};return o.x+=e.ownerDocument.defaultView.scrollX,o.y+=e.ownerDocument.defaultView.scrollY,o}(t,function(e){const t=e.split("-"),i={top:"bottom",bottom:"top",left:"right",right:"left"};return`${i[t[0]]}-${i[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=n.width,this.originalHeight=n.height,this.aspectRatio=n.width/n.height;const o=i.style.width;o&&o.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(o):this.originalWidthPercents=function(e,t){const i=e.parentElement,n=parseFloat(i.ownerDocument.defaultView.getComputedStyle(i).width);return t.width/n*100}(i,n)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}Ke(qg,Ue);class $g extends Mc{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",e=>e?"ck-orientation-"+e:"")],style:{display:e.if("_isVisible","none",e=>!e)}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",(e,t)=>null!==e&&null!==t),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",(t,i,n)=>"px"===e.unit?`${t}×${i}`:n+"%"),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",(e,t,i)=>t<50||i<50?"above-center":e)}_dismiss(){this.unbind(),this._isVisible=!1}}class Yg{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())},{priority:"high"}),this.on("change:isEnabled",()=>{this.isEnabled&&this.redraw()})}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change(i=>{const n=i.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const i=this.toDomElement(t);return e._appendHandles(i),e._appendSizeUI(i),e.on("change:isEnabled",(e,t,n)=>{i.style.display=n?"":"none"}),i.style.display=e.isEnabled?"":"none",i}));i.insert(i.createPositionAt(t,"end"),n),i.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=n})}begin(e){this.state=new qg(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change(e=>{const i=this._options.unit||"%",n=("%"===i?t.widthPercents:t.width)+i;e.setStyle("width",n,this._options.viewElement)});const i=this._getHandleHost(),n=new Cs(i);t.handleHostWidth=Math.round(n.width),t.handleHostHeight=Math.round(n.height);const o=new Cs(i);t.width=Math.round(o.width),t.height=Math.round(o.height),this.redraw(n),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change(()=>{this._cleanup(),this._options.onCommit(t)})}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((i=t)&&i.ownerDocument&&i.ownerDocument.contains(i)))return;var i;const n=t.parentElement,o=this._getHandleHost(),r=this._viewResizerWrapper,s=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(n.isSameNode(o)){const t=e||new Cs(o);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[o.offsetWidth+"px",o.offsetHeight+"px",o.offsetLeft+"px",o.offsetTop+"px"];"same"!==ln(s,a)&&this._options.editor.editing.view.change(e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)})}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change(e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)})}_proposeNewSize(e){const t=this.state,i={x:(n=e).pageX,y:n.pageY};var n;const o=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(i.x+t.originalWidth),y:i.y-t.originalHeight-t._referenceCoordinates.y};o&&t.activeHandlePosition.endsWith("-right")&&(r.x=i.x-(t._referenceCoordinates.x+t.originalWidth)),o&&(r.x*=2);const s={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};s.dominant=s.width/t.aspectRatio>s.height?"width":"height",s.max=s[s.dominant];const a={width:s.width,height:s.height};return"width"==s.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const n of t)e.appendChild(new Nc({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(i=n,"ck-widget__resizer__handle-"+i)}}).render());var i}_appendSizeUI(e){this._sizeView=new $g,this._sizeView.render(),e.appendChild(this._sizeView.element)}}Ke(Yg,Ue);i(70);Ke(class extends Qe{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=vr.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(fh),this._observer=Object.create(Mr),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const i=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=ru(i,200),this.on("change:visibleResizer",i),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())},{priority:"lowest"}),this._observer.listenTo(vr.window,"resize",this._redrawFocusedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",()=>{const e=n.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null})}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new Yg(e),i=this.editor.plugins;if(t.attach(),i.has("WidgetToolbarRepository")){const e=i.get("WidgetToolbarRepository");t.on("begin",()=>{e.forceDisabled("resize")},{priority:"lowest"}),t.on("cancel",()=>{e.clearForceDisabled("resize")},{priority:"highest"}),t.on("commit",()=>{e.clearForceDisabled("resize")},{priority:"highest"})}this._resizers.set(e.viewElement,t);const n=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(n)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const i=t.domTarget;Yg.isResizeHandle(i)&&(this._activeResizer=this._getResizerByHandle(i),this._activeResizer&&(this._activeResizer.begin(i),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}},Ue);class Gg extends Ze{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change(t=>{t.setAttribute("alt",e.newValue,o)})}}function Kg(e,t){const i=e.createEmptyElement("img"),n="imageBlock"===t?e.createContainerElement("figure",{class:"image"}):e.createContainerElement("span",{class:"image-inline"},{isAllowedInsideAttributeElement:!0});return e.insert(e.createPositionAt(n,0),i),n}function Qg(e,t){if(e.plugins.has("ImageInlineEditing")!==e.plugins.has("ImageBlockEditing"))return{name:"img",attributes:{src:!0}};const i=e.plugins.get("ImageUtils");return e=>{if(!i.isInlineImageView(e)||!e.hasAttribute("src"))return null;return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:{name:!0,attributes:["src"]}}}function Jg(e,t){const i=Ns(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class Zg extends Qe{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,r=o.document.selection;i=Xg(n,t||r,i),e={...Object.fromEntries(r.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change(n=>{const s=n.createElement(i,e);return t||"imageInline"==i||(t=Wh(r,o)),o.insertContent(s,t),s.parent?(n.setSelection(s,"on"),s):null})}getClosestSelectedImageWidget(e){const t=e.getSelectedElement();if(t&&this.isImageWidget(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&this.isImageWidget(i))return i;i=i.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==Xg(e,t)){const i=function(e,t){const i=Wh(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return Lh(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&Vh(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function Xg(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?Jg(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class em extends Qe{static get requires(){return[Zg]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new Gg(this.editor))}}i(72),i(7);class tm extends Mc{constructor(e){super(e);const t=this.locale.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(t("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(t("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),Ic(this)}render(){super.render(),this.keystrokes.listenTo(this.element),Sc({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)})}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new Md(this.locale,Nd);return t.label=e("Text alternative"),t}}function im(e){const t=e.editing.view,i=Vd.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.viewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}class nm extends Qe{static get requires(){return[Hd]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",i=>{const n=e.commands.get("imageTextAlternative"),o=new ed(i);return o.set({label:t("Change image text alternative"),icon:Tc.lowVision,tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",()=>{this._showForm()}),o})}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new tm(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this._form.keystrokes.set("Esc",(e,t)=>{this._hideForm(!0),t()}),this.listenTo(e.ui,"update",()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=im(e);t.updatePosition(i)}}(e):this._hideForm(!0)}),Ec({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:im(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class om extends Qe{static get requires(){return[em,nm]}static get pluginName(){return"ImageTextAlternative"}}function rm(e,t){return e=>{e.on("attribute:srcset:"+t,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function sm(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class am extends Or{observe(e){this.listenTo(e,"load",(e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)},{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class lm extends Ze{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&Object(l.b)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&Object(l.b)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=en(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})})}}class cm extends Qe{static get requires(){return[Zg]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(am),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new lm(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class dm extends Ze{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change(e=>{const r=Array.from(t.markers).filter(e=>e.getRange().containsItem(n)),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const a=e.createRangeOn(s);for(const t of r){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(a,!0):a;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}}):null}}class hm extends Qe{static get requires(){return[cm,Zg,xh]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new dm(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageBlock",view:(e,{writer:t})=>Kg(t,"imageBlock")}),i.for("editingDowncast").elementToElement({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(Kg(i,"imageBlock"),i,t("image widget"))}),i.for("downcast").add(sm(n,"imageBlock","src")).add(sm(n,"imageBlock","alt")).add(rm(n,"imageBlock")),i.for("upcast").elementToElement({view:Qg(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",{src:e.getAttribute("src")})}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!o.hasAttribute("src")||!n.consumable.test(o,{name:!0}))return;const r=Ns(n.convertItem(o,i.modelCursor).modelRange.getItems());r&&(n.convertChildren(i.viewItem,r),n.updateConversionResult(r,i))}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isInlineImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageBlock"===Jg(t.schema,l)){const e=new ph(i.document),t=s.map(t=>e.createElement("figure",{class:"image"},t));r.content=e.createDocumentFragment(t)}})}}i(11);class um extends Qe{static get requires(){return[hm,nu,om]}static get pluginName(){return"ImageBlock"}}class gm extends Qe{static get requires(){return[cm,Zg,xh]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{isObject:!0,isInline:!0,allowWhere:"$text",allowAttributes:["alt","src","srcset"]}),t.addChildCheck((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new dm(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToElement({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(Kg(i,"imageInline"),i,t("image widget"))}),i.for("downcast").add(sm(n,"imageInline","src")).add(sm(n,"imageInline","alt")).add(rm(n,"imageInline")),i.for("upcast").elementToElement({view:Qg(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",{src:e.getAttribute("src")})})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isBlockImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageInline"===Jg(t.schema,l)){const e=new ph(i.document),t=s.map(t=>1===t.childCount?(Array.from(t.getAttributes()).forEach(i=>e.setAttribute(...i,n.findViewImgElement(t))),t.getChild(0)):t);r.content=e.createDocumentFragment(t)}})}}class mm extends Qe{static get requires(){return[gm,nu,om]}static get pluginName(){return"ImageInline"}}function fm(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}function pm(e,t){const i=t.getFirstPosition().findAncestor("caption");return i&&e.isBlockImage(i.parent)?i:null}class bm extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils");if(!e.plugins.has(hm))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=pm(t,i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!fm(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)})}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const r=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=r||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageUtils");let r,s=i.getSelectedElement();s?r=fm(s):(r=pm(o,i),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class wm extends Qe{static get requires(){return[Zg]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new bm(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.conversion.for("upcast").elementToElement({view:e=>function(e,t){return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}(i,e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!i.isBlockImage(e.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Zd({view:t,element:r,text:n("Enter image caption"),keepOnFocus:!0});const s=Uh(r,o);return Fh(s,o,(e,t,i)=>i.addClass(en(t.classes),e),(e,t,i)=>i.removeClass(en(t.classes),e)),s}}),e.editing.mapper.on("modelToViewPosition",km(t)),e.data.mapper.on("modelToViewPosition",km(t))}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.commands.get("imageTypeInline"),n=e.commands.get("imageTypeBlock"),o=e=>{if(!e.return)return;const{oldElement:i,newElement:n}=e.return;if(!i)return;if(t.isBlockImage(i)){const e=fm(i);if(e)return void this._saveCaption(n,e)}const o=this._getSavedCaption(i);o&&this._saveCaption(n,o)};i&&this.listenTo(i,"execute",o,{priority:"low"}),n&&this.listenTo(n,"execute",o,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Js.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}function km(e){return(t,i)=>{const n=i.modelPosition,o=n.parent;if(!o.is("element","imageBlock"))return;const r=i.mapper.toViewElement(o);i.viewPosition=e.createPositionAt(r,n.offset+1)}}class _m extends Qe{static get requires(){return[Zg]}static get pluginName(){return"ImageCaptionUI"}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",o=>{const r=e.commands.get("toggleImageCaption"),s=new ed(o);return s.set({icon:Tc.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",e=>n(e?"Toggle caption off":"Toggle caption on")),this.listenTo(s,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const n=pm(i,e.model.document.selection);if(n){const i=e.editing.mapper.toViewElement(n);t.scrollToTheSelection(),t.change(e=>{e.addClass("image__caption_highlighted",i)})}}),s})}}i(76);class vm extends Ze{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]}))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change(t=>{const o=e.value;let r=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,r)&&(this.editor.execute(n.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",r):t.setAttribute("imageStyle",o,r)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:ym,objectInline:xm,objectLeft:Am,objectRight:Cm,objectCenter:Tm,objectBlockLeft:Em,objectBlockRight:Im}=Tc,Sm={inline:{name:"inline",title:"In line",icon:xm,modelElements:["imageInline"],isDefault:!0},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:Am,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"},alignBlockLeft:{name:"alignBlockLeft",title:"Left aligned image",icon:Em,modelElements:["imageBlock"],className:"image-style-block-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:Tm,modelElements:["imageBlock"],className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:Cm,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"},alignBlockRight:{name:"alignBlockRight",title:"Right aligned image",icon:Im,modelElements:["imageBlock"],className:"image-style-block-align-right"},block:{name:"block",title:"Centered image",icon:Tm,modelElements:["imageBlock"],isDefault:!0},side:{name:"side",title:"Side image",icon:Cm,modelElements:["imageBlock"],className:"image-style-side"}},Pm={full:ym,left:Em,right:Im,center:Tm,inlineLeft:Am,inlineRight:Cm,inline:xm},Mm=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Nm(e){Object(l.b)("image-style-configuration-definition-invalid",e)}var Rm={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map(e=>function(e){e="string"==typeof e?Sm[e]?{...Sm[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Sm[e.name],e);"string"==typeof e.icon&&(e.icon=Pm[e.icon]||e.icon);return e}(e)).filter(t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Nm({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some(e=>o.includes(e)))return Object(l.b)("image-style-missing-dependency",{style:e,missingPlugins:n.map(e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}(t,e))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...Mm]:[]},warnInvalidStyle:Nm,DEFAULT_OPTIONS:Sm,DEFAULT_ICONS:Pm,DEFAULT_DROPDOWN_DEFINITIONS:Mm};function Om(e,t){for(const i of t)if(i.name===e)return i}class zm extends Qe{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Zg]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Rm,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new vm(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(r=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Om(t.attributeNewValue,r),o=Om(t.attributeOldValue,r),s=i.mapper.toViewElement(t.item),a=i.writer;o&&a.removeClass(o.className,s),n&&a.addClass(n.className,s)});var r;const s=function(e){const t={imageInline:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,r=Ns(i.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle"))for(const e of t[r.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,r)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(Zg),n=new Map(this.normalizedStyles.map(e=>[e.name,e]));t.registerPostFixer(e=>{let o=!1;for(const r of t.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let t="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const a=n.get(s);a&&a.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o})}}i(78);class Dm extends Qe{static get requires(){return[zm]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=Vm(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=Vm([...t.filter(w),...Rm.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,n=>{let o;const{defaultItem:r,items:s,title:a}=e,l=s.filter(e=>t.find(({name:t})=>Lm(t)===e)).map(e=>{const t=i.create(e);return e===r&&(o=t),t});s.length!==l.length&&Rm.warnInvalidStyle({dropdown:e});const c=xd(n,sd),d=c.buttonView;return Ad(c,l),d.set({label:jm(a,o.label),class:null,tooltip:!0}),d.bind("icon").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return t<0?o.icon:l[t].icon}),d.bind("label").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return jm(a,t<0?o.label:l[t].label)}),d.bind("isOn").toMany(l,"isOn",(...e)=>e.some(Z)),d.bind("class").toMany(l,"isOn",(...e)=>e.some(Z)?"ck-splitbutton_flatten":null),d.on("execute",()=>{l.some(({isOn:e})=>e)?c.isOpen=!c.isOpen:o.fire("execute")}),c.bind("isEnabled").toMany(l,"isEnabled",(...e)=>e.some(Z)),c})}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(Lm(t),i=>{const n=this.editor.commands.get("imageStyle"),o=new ed(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",e=>e===t),o.on("execute",this._executeCommand.bind(this,t)),o})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function Vm(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function Lm(e){return"imageStyle:"+e}function jm(e,t){return(e?e+": ":"")+t}function Bm(e){const t=e.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${t.join("|")})$`)}function Fm(e){return new Promise((t,i)=>{const n=e.getAttribute("src");fetch(n).then(e=>e.blob()).then(e=>{const i=Hm(e,n),o=i.replace("image/",""),r=new File([e],"image."+o,{type:i});t(r)}).catch(e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise((t,i)=>{const n=vr.document.createElement("img");n.addEventListener("load",()=>{const e=vr.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob(e=>e?t(e):i())}),n.addEventListener("error",()=>i()),n.src=e})}(e).then(t=>{const i=Hm(t,e),n=i.replace("image/","");return new File([t],"image."+n,{type:i})})}(n).then(t).catch(i):i(e))})}function Hm(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Um extends Qe{static get pluginName(){return"ImageUploadUI"}init(){const e=this.editor,t=e.t,i=i=>{const n=new cg(i),o=e.commands.get("uploadImage"),r=e.config.get("image.upload.types"),s=Bm(r);return n.set({acceptedType:r.map(e=>"image/"+e).join(","),allowMultipleFiles:!0}),n.buttonView.set({label:t("Insert image"),icon:Tc.image,tooltip:!0}),n.buttonView.bind("isEnabled").to(o),n.on("done",(t,i)=>{const n=Array.from(i).filter(e=>s.test(e.type));n.length&&e.execute("uploadImage",{file:n})}),n};e.ui.componentFactory.add("uploadImage",i),e.ui.componentFactory.add("imageUpload",i)}}i(80),i(82),i(84);class Wm extends Qe{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/svg+xml;utf8,"+encodeURIComponent('')}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",(...e)=>this.uploadStatusChange(...e)),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",(...e)=>this.uploadStatusChange(...e))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,r=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),a=n.plugins.get(ag),l=r?t.attributeNewValue:null,c=this.placeholder,d=n.editing.mapper.toViewElement(o),h=i.writer;if("reading"==l)return qm(d,h),void $m(s,c,d,h);if("uploading"==l){const e=a.loaders.get(r);return qm(d,h),void(e?(Ym(d,h),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",(e,t,i)=>{n.change(e=>{e.setStyle("width",i+"%",o)})})}(d,h,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,d,h,e)):$m(s,c,d,h))}"complete"==l&&a.loaders.get(r)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout(()=>{i.change(e=>e.remove(e.createRangeOn(n)))},3e3)}(d,h,n.editing.view),function(e,t){Km(e,t,"progressBar")}(d,h),Ym(d,h),function(e,t){t.removeClass("ck-appear",e)}(d,h)}}function qm(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function $m(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),Gm(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function Ym(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),Km(e,t,"placeholder")}function Gm(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function Km(e,t,i){const n=Gm(e,i);n&&t.remove(t.createRangeOn(n))}class Qm extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=en(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if(t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);this._uploadImage(e,o,t)}else this._uploadImage(e,o)})}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(ag).createLoader(e),r=n.plugins.get("ImageUtils");o&&r.insertImage({...t,uploadId:o.id},i)}}class Jm extends Qe{static get requires(){return[ag,Rd,xh,Zg]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(ag),o=e.plugins.get("ImageUtils"),r=Bm(e.config.get("image.upload.types")),s=new Qm(e);e.commands.add("uploadImage",s),e.commands.add("imageUpload",s),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",(t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter(e=>!!e&&r.test(e.type));o.length&&(t.stop(),e.model.change(t=>{i.targetRanges&&t.setSelection(i.targetRanges.map(t=>e.editing.mapper.toModelRange(t))),e.model.enqueueChange("default",()=>{e.execute("uploadImage",{file:o})})}))}),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(t,i)=>{const r=Array.from(e.editing.view.createRangeIn(i.content)).filter(e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(o,e.item)&&!e.item.getAttribute("uploadProcessed")).map(e=>({promise:Fm(e.item),imageElement:e.item}));if(!r.length)return;const s=new ph(e.editing.view.document);for(const e of r){s.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(s.setAttribute("src","",e.imageElement),s.setAttribute("uploadId",t.id,e.imageElement))}}),e.editing.view.document.on("dragover",(e,t)=>{t.preventDefault()}),t.on("change",()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,r="$graveyard"==t.position.root.rootName;for(const t of Zm(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(r?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}}),this.on("uploadComplete",(e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change(e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(ag),r=t.plugins.get(Rd),s=t.plugins.get("ImageUtils"),a=this._uploadImageElements;return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","reading",a.get(e.id))}),e.read().then(()=>{const n=e.upload(),o=a.get(e.id);if(So.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n})}return i.enqueueChange("transparent",e=>{e.setAttribute("uploadStatus","uploading",o)}),n}).then(t=>{i.enqueueChange("transparent",i=>{const n=a.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})}),l()}).catch(t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&r.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange("transparent",t=>{t.remove(a.get(e.id))}),l()});function l(){i.enqueueChange("transparent",t=>{const i=a.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),a.delete(e.id)}),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter(e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0}).map(t=>`${e[t]} ${t}w`).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function Zm(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter(e=>i.isImage(e.item)).map(e=>e.item)}class Xm extends Qe{static get pluginName(){return"IndentEditing"}init(){const e=this.editor;e.commands.add("indent",new et(e)),e.commands.add("outdent",new et(e))}}var ef='',tf='';class nf extends Qe{static get pluginName(){return"IndentUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?ef:tf,o="ltr"==t.uiLanguageDirection?tf:ef;this._defineButton("indent",i("Increase indent"),n),this._defineButton("outdent",i("Decrease indent"),o)}_defineButton(e,t,i){const n=this.editor;n.ui.componentFactory.add(e,o=>{const r=n.commands.get(e),s=new ed(o);return s.set({label:t,icon:i,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",()=>{n.execute(e),n.editing.view.focus()}),s})}}class of{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(e=>this._definitions.add(e)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const r=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,r);for(const t in e.styles)n.setStyle(t,e.styles[t],r);n.setCustomProperty("link",!0,r),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(i.mapper.toViewRange(t.range),r):n.unwrap(i.mapper.toViewRange(t.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),r=Array.from(o.getChildren()).find(e=>"a"===e.name);for(const e of this._definitions){const n=gn(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,r);e.classes&&i.addClass(e.classes,r);for(const t in e.styles)i.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,r);e.classes&&i.removeClass(e.classes,r);for(const t in e.styles)i.removeStyle(t,r)}}})}}}var rf=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:zn(e,t,i)},sf=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var af=function(e){return sf.test(e)};var lf=function(e){return e.split("")},cf="[\\ud800-\\udfff]",df="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",hf="\\ud83c[\\udffb-\\udfff]",uf="[^\\ud800-\\udfff]",gf="(?:\\ud83c[\\udde6-\\uddff]){2}",mf="[\\ud800-\\udbff][\\udc00-\\udfff]",ff="(?:"+df+"|"+hf+")"+"?",pf="[\\ufe0e\\ufe0f]?"+ff+("(?:\\u200d(?:"+[uf,gf,mf].join("|")+")[\\ufe0e\\ufe0f]?"+ff+")*"),bf="(?:"+[uf+df+"?",df,gf,mf,cf].join("|")+")",wf=RegExp(hf+"(?="+hf+")|"+bf+pf,"g");var kf=function(e){return e.match(wf)||[]};var _f=function(e){return af(e)?kf(e):lf(e)};var vf=function(e){return function(t){t=Pn(t);var i=af(t)?_f(t):void 0,n=i?i[0]:t.charAt(0),o=i?rf(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase");const yf=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,xf=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,Af=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Cf=/^((\w+:(\/{2,})?)|(\W))/i;function Tf(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function Ef(e){return function(e){return e.replace(yf,"").match(xf)}(e=String(e))?e:"#"}function If(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function Sf(e,t){const i=(n=e,Af.test(n)?"mailto:":t);var n;const o=!!i&&!Cf.test(e);return e&&o?i+e:e}class Pf extends Ze{constructor(e){super(e),this.manualDecorators=new Zi,this.automaticDecorators=new of}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||Ns(t.getSelectedBlocks());If(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,o=[],r=[];for(const e in t)t[e]?o.push(e):r.push(e);i.change(t=>{if(n.isCollapsed){const s=n.getFirstPosition();if(n.hasAttribute("linkHref")){const a=Gu(s,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,a),o.forEach(e=>{t.setAttribute(e,!0,a)}),r.forEach(e=>{t.removeAttribute(e,a)}),t.setSelection(t.createPositionAfter(a.end.nodeBefore))}else if(""!==e){const r=gn(n.getAttributes());r.set("linkHref",e),o.forEach(e=>{r.set(e,!0)});const{end:a}=i.insertContent(t.createText(e,r),s);t.setSelection(a)}["linkHref",...o,...r].forEach(e=>{t.removeSelectionAttribute(e)})}else{const s=i.schema.getValidRanges(n.getRanges(),"linkHref"),a=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&a.push(t.createRangeOn(e));const l=a.slice();for(const e of s)this._isRangeToUpdate(e,a)&&l.push(e);for(const i of l)t.setAttribute("linkHref",e,i),o.forEach(e=>{t.setAttribute(e,!0,i)}),r.forEach(e=>{t.removeAttribute(e,i)})}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return If(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class Mf extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();If(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change(e=>{const o=i.isCollapsed?[Gu(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of o)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)})}}class Nf{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:r}){this.id=e,this.set("value"),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}Ke(Nf,Ue);i(86);const Rf=/^(https?:)?\/\//;class Of extends Qe{static get pluginName(){return"LinkEditing"}static get requires(){return[Ru,Su,xh]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Tf}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>Tf(Ef(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new Pf(e)),e.commands.add("unlink",new Mf(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach(e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e)),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:"link"+vf(i)});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter(e=>"automatic"===e.mode)),this._enableManualDecorators(t.filter(e=>"manual"===e.mode));e.plugins.get(Ru).registerAttribute("linkHref"),function(e,t,i,n){const o=e.editing.view,r=new Set;o.document.registerPostFixer(o=>{const s=e.model.document.selection;let a=!1;if(s.hasAttribute(t)){const l=Gu(s.getFirstPosition(),t,s.getAttribute(t),e.model),c=e.editing.mapper.toViewRange(l);for(const e of c.getItems())e.is("element",i)&&!e.hasClass(n)&&(o.addClass(n,e),r.add(e),a=!0)}return a}),e.conversion.for("editingDowncast").add(e=>{function t(){o.change(e=>{for(const t of r.values())e.removeClass(n,t),r.delete(t)})}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})})}(e,"linkHref","a","ck-link_selected"),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:"automatic",callback:e=>Rf.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach(e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new Nf(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i})=>{if(t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change(t=>{zf(t,Vf(e.schema))}))},{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,t=e.model;e.editing.view.addObserver(fh);let i=!1;this.listenTo(e.editing.view.document,"mousedown",()=>{i=!0}),this.listenTo(e.editing.view.document,"selectionChange",()=>{if(!i)return;i=!1;const e=t.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const n=e.getFirstPosition(),o=Gu(n,"linkHref",e.getAttribute("linkHref"),t);(n.isTouching(o.start)||n.isTouching(o.end))&&t.change(e=>{zf(e,Vf(t.schema))})})}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",()=>{n=!0},{priority:"high"}),this.listenTo(e.model,"deleteContent",()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:Df(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),o=i.nodeAfter;if(!o)return!1;if(!o.is("$text"))return!1;if(!o.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(o===r)return!0;return Gu(i,"linkHref",o.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))},{priority:"high"}),this.listenTo(e.model,"insertContent",(t,[o])=>{n=!1,Df(e)&&i&&(e.model.change(e=>{for(const[t,n]of i)e.setAttribute(t,n,o)}),i=null)},{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let o=!1,r=!1;this.listenTo(n.document,"delete",(e,t)=>{r=t.domEvent.keyCode===No.backspace},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{o=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=Gu(e,"linkHref",n,t);o=r.containsPosition(e)||r.end.isEqual(e)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{r&&(r=!1,o||e.model.enqueueChange(e=>{zf(e,Vf(t.schema))}))},{priority:"low"})}}function zf(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function Df(e){return e.plugins.get("Input").isInput(e.model.change(e=>e.batch))}function Vf(e){return e.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}i(88);class Lf extends Mc{constructor(e,t){super(e);const i=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(t),this.children=this._createFormChildren(t.manualDecorators),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const n=["ck","ck-link-form","ck-responsive-form"];t.manualDecorators.length&&n.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:n,tabindex:"-1"},children:this.children}),Ic(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((e,t)=>(e[t.name]=t.isOn,e),{})}render(){super.render(),Sc({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new Md(this.locale,Nd);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new td(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",(e,t)=>void 0===t&&void 0===e?i.defaultValue:e),n.on("execute",()=>{i.set("value",!n.isOn)}),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new Mc;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map(e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}})),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}i(90);class jf extends Mc{constructor(e){super(e);const t=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(t("Unlink"),'',"unlink"),this.editButtonView=this._createButton(t("Edit link"),Tc.pencil,"edit"),this.set("href"),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new ed(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new ed(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",e=>e&&Ef(e)),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",e=>e||i("This link has no URL")),e.bind("isEnabled").to(this,"href",e=>!!e),e.template.tag="a",e.template.eventListeners={},e}}class Bf extends Qe{static get requires(){return[Hd]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(mh),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(Hd),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:"link-ui",view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:"link-ui",view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new jf(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",()=>{this._addFormView()}),this.listenTo(t,"unlink",()=>{e.execute("unlink"),this._hideUI()}),t.keystrokes.set("Esc",(e,t)=>{this._hideUI(),t()}),t.keystrokes.set("Ctrl+K",(e,t)=>{this._addFormView(),t()}),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new Lf(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",e=>!e),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",()=>{const{value:t}=n.urlInputView.fieldView.element,o=Sf(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(e,t)=>{this._closeFormView(),t()}),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set("Ctrl+K",(e,i)=>{i(),t.isEnabled&&this._showUI(!0)}),e.ui.componentFactory.add("link",e=>{const n=new ed(e);return n.isEnabled=!0,n.label=i("Link"),n.icon='',n.keystroke="Ctrl+K",n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",e=>!!e),this.listenTo(n,"execute",()=>this._showUI(!0)),n})}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set("Tab",(e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Ec({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=r();const o=()=>{const e=this._getSelectedLinkElement(),t=r();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find(e=>e.is("element"))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has("link-ui")){const t=Array.from(this.editor.editing.mapper.markerNameToElements("link-ui")),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&Vh(i))return Ff(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Ff(i.start),o=Ff(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has("link-ui"))t.updateMarker("link-ui",{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition(({item:t})=>!e.schema.isContent(t),{boundaries:i});t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has("link-ui")&&e.change(e=>{e.removeMarker("link-ui")})}}function Ff(e){return e.getAncestors().find(e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t})}const Hf=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[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]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Uf extends Qe{static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new Nu(e.model,e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=Wf(e.substr(0,e.length-1));return t?{url:t}:void 0}),i=e.plugins.get("Input");t.on("matched:data",(t,n)=>{const{batch:o,range:r,url:s}=n;if(!i.isInput(o))return;const a=r.end.getShiftedBy(-1),l=a.getShiftedBy(-s.length),c=e.model.createRange(l,a);this._applyAutoLink(s,c)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=Mu(e,t),o=Wf(i);if(o){const e=t.createRange(n.end.getShiftedBy(-o.length),n.end);this._applyAutoLink(o,e)}}_applyAutoLink(e,t){const i=this.editor.model;this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange(i=>{const n=this.editor.config.get("link.defaultProtocol"),o=Sf(e,n);i.setAttribute("linkHref",o,t)})}}function Wf(e){const t=Hf.exec(e);return t?t[2]:null}class qf extends Ze{constructor(e,t){super(e),this.type=t}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document,n=Array.from(i.selection.getSelectedBlocks()).filter(e=>Yf(e,t.schema)),o=void 0!==e.forceValue?!e.forceValue:this.value;t.change(e=>{if(o){let t=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;t&&"listItem"==t.name&&0!==t.getAttribute("listIndent");){const e=t.getAttribute("listIndent");e=i;)r>o.getAttribute("listIndent")&&(r=o.getAttribute("listIndent")),o.getAttribute("listIndent")==r&&e[t?"unshift":"push"](o),o=o[t?"previousSibling":"nextSibling"]}}function Yf(e,t){return t.checkChild(e.parent,"listItem")&&!t.isObject(e)}class Gf extends Ze{constructor(e,t){super(e),this._indentBy="forward"==t?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=e.document;let i=Array.from(t.selection.getSelectedBlocks());e.change(e=>{const t=i[i.length-1];let n=t.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>t.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const t of i){const i=t.getAttribute("listIndent")+this._indentBy;i<0?e.rename(t,"paragraph"):e.setAttribute("listIndent",i,t)}this.fire("_executeCleanup",i)})}_checkEnabled(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());if(!e||!e.is("element","listItem"))return!1;if(this._indentBy>0){const t=e.getAttribute("listIndent"),i=e.getAttribute("listType");let n=e.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=t;){if(n.getAttribute("listIndent")==t)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}function Kf(e,t){const i=t.mapper,n=t.writer,o="numbered"==e.getAttribute("listType")?"ol":"ul",r=function(e){const t=e.createContainerElement("li");return t.getFillerOffset=tp,t}(n),s=n.createContainerElement(o,null);return n.insert(n.createPositionAt(s,0),r),i.bindElements(e,r),r}function Qf(e,t,i,n){const o=t.parent,r=i.mapper,s=i.writer;let a=r.toViewPosition(n.createPositionBefore(e));const l=Xf(e.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:e.getAttribute("listIndent")}),c=e.previousSibling;if(l&&l.getAttribute("listIndent")==e.getAttribute("listIndent")){const e=r.toViewElement(l);a=s.breakContainer(s.createPositionAfter(e))}else if(c&&"listItem"==c.name){a=r.toViewPosition(n.createPositionAt(c,"end"));const e=r.findMappedViewAncestor(a),t=function(e){for(const t of e.getChildren())if("ul"==t.name||"ol"==t.name)return t;return null}(e);a=t?s.createPositionBefore(t):s.createPositionAt(e,"end")}else a=r.toViewPosition(n.createPositionBefore(e));if(a=Zf(a),s.insert(a,o),c&&"listItem"==c.name){const e=r.toViewElement(c),i=s.createRange(s.createPositionAt(e,0),a).getWalker({ignoreElementEnd:!0});for(const e of i)if(e.item.is("element","li")){const n=s.breakContainer(s.createPositionBefore(e.item)),o=e.item.parent,r=s.createPositionAt(t,"end");Jf(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(o),r),i.position=n}}else{const i=o.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const t of i.getChildren()){const i=r.toModelElement(t);if(!(i&&i.getAttribute("listIndent")>e.getAttribute("listIndent")))break;n=t}n&&(s.breakContainer(s.createPositionAfter(n)),s.move(s.createRangeOn(n.parent),s.createPositionAt(t,"end")))}}Jf(s,o,o.nextSibling),Jf(s,o.previousSibling,o)}function Jf(e,t,i){return!t||!i||"ul"!=t.name&&"ol"!=t.name||t.name!=i.name||t.getAttribute("class")!==i.getAttribute("class")?null:e.mergeContainers(e.createPositionAfter(t))}function Zf(e){return e.getLastMatchingPosition(e=>e.item.is("uiElement"))}function Xf(e,t){const i=!!t.sameIndent,n=!!t.smallerIndent,o=t.listIndent;let r=e;for(;r&&"listItem"==r.name;){const e=r.getAttribute("listIndent");if(i&&o==e||n&&o>e)return r;r="forward"===t.direction?r.nextSibling:r.previousSibling}return null}function ep(e,t,i,n){e.ui.componentFactory.add(t,o=>{const r=e.commands.get(t),s=new ed(o);return s.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",()=>{e.execute(t),e.editing.view.focus()}),s})}function tp(){const e=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||e?0:no.call(this)}function ip(e){return(t,i,n)=>{const o=n.consumable;if(!o.test(i.item,"insert")||!o.test(i.item,"attribute:listType")||!o.test(i.item,"attribute:listIndent"))return;o.consume(i.item,"insert"),o.consume(i.item,"attribute:listType"),o.consume(i.item,"attribute:listIndent");const r=i.item;Qf(r,Kf(r,n),n,e)}}function np(e,t,i){if(!i.consumable.consume(t.item,"attribute:listType"))return;const n=i.mapper.toViewElement(t.item),o=i.writer;o.breakContainer(o.createPositionBefore(n)),o.breakContainer(o.createPositionAfter(n));const r=n.parent,s="numbered"==t.attributeNewValue?"ol":"ul";o.rename(s,r)}function op(e,t,i){const n=i.mapper.toViewElement(t.item).parent,o=i.writer;Jf(o,n,n.nextSibling),Jf(o,n.previousSibling,n);for(const e of t.item.getChildren())i.consumable.consume(e,"insert")}function rp(e,t,i){if("listItem"!=t.item.name){let e=i.mapper.toViewPosition(t.range.start);const n=i.writer,o=[];for(;("ul"==e.parent.name||"ol"==e.parent.name)&&(e=n.breakContainer(e),"li"==e.parent.name);){const t=e,i=n.createPositionAt(e.parent,"end");if(!t.isEqual(i)){const e=n.remove(n.createRange(t,i));o.push(e)}e=n.createPositionAfter(e.parent)}if(o.length>0){for(let t=0;t0){const t=Jf(n,i,i.nextSibling);t&&t.parent==i&&e.offset--}}Jf(n,e.nodeBefore,e.nodeAfter)}}}function sp(e,t,i){const n=i.mapper.toViewPosition(t.position),o=n.nodeBefore,r=n.nodeAfter;Jf(i.writer,o,r)}function ap(e,t,i){if(i.consumable.consume(t.viewItem,{name:!0})){const e=i.writer,n=e.createElement("listItem"),o=function(e){let t=0,i=e.parent;for(;i;){if(i.is("element","li"))t++;else{const e=i.previousSibling;e&&e.is("element","li")&&t++}i=i.parent}return t}(t.viewItem);e.setAttribute("listIndent",o,n);const r=t.viewItem.parent&&"ol"==t.viewItem.parent.name?"numbered":"bulleted";if(e.setAttribute("listType",r,n),!i.safeInsert(n,t.modelCursor))return;const s=function(e,t,i){const{writer:n,schema:o}=i;let r=n.createPositionAfter(e);for(const s of t)if("ul"==s.name||"ol"==s.name)r=i.convertItem(s,r).modelCursor;else{const t=i.convertItem(s,n.createPositionAt(e,"end")),a=t.modelRange.start.nodeAfter;a&&a.is("element")&&!o.checkChild(e,a.name)&&(e=t.modelCursor.parent.is("element","listItem")?t.modelCursor.parent:up(t.modelCursor),r=n.createPositionAfter(e))}return r}(n,t.viewItem.getChildren(),i);t.modelRange=e.createRange(t.modelCursor,s),i.updateConversionResult(n,t)}}function lp(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){const e=Array.from(t.viewItem.getChildren());for(const t of e){!(t.is("element","li")||mp(t))&&t._remove()}}}function cp(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){if(0===t.viewItem.childCount)return;const e=[...t.viewItem.getChildren()];let i=!1,n=!0;for(const t of e)i&&!mp(t)&&t._remove(),t.is("$text")?(n&&(t._data=t.data.trimStart()),t.nextSibling&&!mp(t.nextSibling)||(t._data=t.data.trimEnd())):mp(t)&&(i=!0),n=!1}}function dp(e){return(t,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const t=i.mapper.toViewElement(n),o=t.getAncestors().find(mp),r=e.createPositionAt(t,0).getWalker();for(const e of r){if("elementStart"==e.type&&e.item.is("element","li")){i.viewPosition=e.previousPosition;break}if("elementEnd"==e.type&&e.item==o){i.viewPosition=e.nextPosition;break}}}}}function hp(e,[t,i]){let n,o=t.is("documentFragment")?t.getChild(0):t;if(n=i?this.createSelection(i):this.document.selection,o&&o.is("element","listItem")){const e=n.getFirstPosition();let t=null;if(e.parent.is("element","listItem")?t=e.parent:e.nodeBefore&&e.nodeBefore.is("element","listItem")&&(t=e.nodeBefore),t){const e=t.getAttribute("listIndent");if(e>0)for(;o&&o.is("element","listItem");)o._setAttribute("listIndent",o.getAttribute("listIndent")+e),o=o.nextSibling}}}function up(e){const t=new Zs({startPosition:e});let i;do{i=t.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function gp(e,t,i,n,o,r){const s=Xf(t.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:e,foo:"b"}),a=o.mapper,l=o.writer,c=s?s.getAttribute("listIndent"):null;let d;if(s)if(c==e){const e=a.toViewElement(s).parent;d=l.createPositionAfter(e)}else{const e=r.createPositionAt(s,"end");d=a.toViewPosition(e)}else d=i;d=Zf(d);for(const e of[...n.getChildren()])mp(e)&&(d=l.move(l.createRangeOn(e),d).end,Jf(l,e,e.nextSibling),Jf(l,e.previousSibling,e))}function mp(e){return e.is("element","ol")||e.is("element","ul")}class fp extends Qe{static get pluginName(){return"ListEditing"}static get requires(){return[Ih,Nh]}init(){const e=this.editor;e.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const t=e.data,i=e.editing;var n;e.model.document.registerPostFixer(t=>function(e,t){const i=e.document.differ.getChanges(),n=new Map;let o=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)r(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(t.removeAttribute("listIndent",i),o=!0),i.hasAttribute("listType")&&(t.removeAttribute("listType",i),o=!0),i.hasAttribute("listStyle")&&(t.removeAttribute("listStyle",i),o=!0);for(const t of Array.from(e.createRangeIn(i)).filter(e=>e.item.is("element","listItem")))r(t.previousPosition)}r(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?r(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&r(n.range.start);for(const e of n.values())s(e),a(e);return o;function r(e){const t=e.nodeBefore;if(t&&t.is("element","listItem")){let e=t;if(n.has(e))return;for(let t=e.previousSibling;t&&t.is("element","listItem");t=e.previousSibling)if(e=t,n.has(e))return;n.set(t,e)}else{const t=e.nodeAfter;t&&t.is("element","listItem")&&n.set(t,t)}}function s(e){let i=0,n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(r>i){let s;null===n?(n=r-i,s=i):(n>r&&(n=r),s=r-n),t.setAttribute("listIndent",s,e),o=!0}else n=null,i=e.getAttribute("listIndent")+1;e=e.nextSibling}}function a(e){let i=[],n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const n=i[r];e.getAttribute("listType")!=n&&(t.setAttribute("listType",n,e),o=!0)}else i[r]=e.getAttribute("listType");n=e,e=e.nextSibling}}}(e.model,t)),i.mapper.registerViewToModelLength("li",pp),t.mapper.registerViewToModelLength("li",pp),i.mapper.on("modelToViewPosition",dp(i.view)),i.mapper.on("viewToModelPosition",(n=e.model,(e,t)=>{const i=t.viewPosition,o=i.parent,r=t.mapper;if("ul"==o.name||"ol"==o.name){if(i.isAtEnd){const e=r.toModelElement(i.nodeBefore),o=r.getModelLength(i.nodeBefore);t.modelPosition=n.createPositionBefore(e).getShiftedBy(o)}else{const e=r.toModelElement(i.nodeAfter);t.modelPosition=n.createPositionBefore(e)}e.stop()}else if("li"==o.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const s=r.toModelElement(o);let a=1,l=i.nodeBefore;for(;l&&mp(l);)a+=r.getModelLength(l),l=l.previousSibling;t.modelPosition=n.createPositionBefore(s).getShiftedBy(a),e.stop()}})),t.mapper.on("modelToViewPosition",dp(i.view)),e.conversion.for("editingDowncast").add(t=>{t.on("insert",rp,{priority:"high"}),t.on("insert:listItem",ip(e.model)),t.on("attribute:listType:listItem",np,{priority:"high"}),t.on("attribute:listType:listItem",op,{priority:"low"}),t.on("attribute:listIndent:listItem",function(e){return(t,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const o=n.mapper.toViewElement(i.item),r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s);r.remove(l),a&&a.nextSibling&&Jf(r,a,a.nextSibling),gp(i.attributeOldValue+1,i.range.start,l.start,o,n,e),Qf(i.item,o,n,e);for(const e of i.item.getChildren())n.consumable.consume(e,"insert")}}(e.model)),t.on("remove:listItem",function(e){return(t,i,n)=>{const o=n.mapper.toViewPosition(i.position).getLastMatchingPosition(e=>!e.item.is("element","li")).nodeAfter,r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s),c=r.remove(l);a&&a.nextSibling&&Jf(r,a,a.nextSibling);gp(n.mapper.toModelElement(o).getAttribute("listIndent")+1,i.position,l.start,o,n,e);for(const e of r.createRangeIn(c).getItems())n.mapper.unbindViewElement(e);t.stop()}}(e.model)),t.on("remove",sp,{priority:"low"})}),e.conversion.for("dataDowncast").add(t=>{t.on("insert",rp,{priority:"high"}),t.on("insert:listItem",ip(e.model))}),e.conversion.for("upcast").add(e=>{e.on("element:ul",lp,{priority:"high"}),e.on("element:ol",lp,{priority:"high"}),e.on("element:li",cp,{priority:"high"}),e.on("element:li",ap)}),e.model.on("insertContent",hp,{priority:"high"}),e.commands.add("numberedList",new qf(e,"numbered")),e.commands.add("bulletedList",new qf(e,"bulleted")),e.commands.add("indentList",new Gf(e,"forward")),e.commands.add("outdentList",new Gf(e,"backward"));const o=i.view.document;this.listenTo(o,"enter",(e,t)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"}),this.listenTo(o,"delete",(e,t)=>{if("backward"!==t.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const o=n.parent;if("listItem"!==o.name)return;o.previousSibling&&"listItem"===o.previousSibling.name||(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"});const r=e=>(t,i)=>{this.editor.commands.get(e).isEnabled&&(this.editor.execute(e),i())};e.keystrokes.set("Tab",r("indentList")),e.keystrokes.set("Shift+Tab",r("outdentList"))}afterInit(){const e=this.editor.commands,t=e.get("indent"),i=e.get("outdent");t&&t.registerChildCommand(e.get("indentList")),i&&i.registerChildCommand(e.get("outdentList"))}}function pp(e){let t=1;for(const i of e.getChildren())if("ul"==i.name||"ol"==i.name)for(const e of i.getChildren())t+=pp(e);return t}class bp extends Qe{static get pluginName(){return"ListUI"}init(){const e=this.editor.t;ep(this.editor,"numberedList",e("Numbered List"),''),ep(this.editor,"bulletedList",e("Bulleted List"),'')}}function wp(e,t){return e=>{e.on("attribute:url:media",i)};function i(i,n,o){if(!o.consumable.consume(n.item,i.name))return;const r=n.attributeNewValue,s=o.writer,a=o.mapper.toViewElement(n.item),l=[...a.getChildren()].find(e=>e.getCustomProperty("media-content"));s.remove(l);const c=e.getMediaViewElement(s,r,t);s.insert(s.createPositionAt(a,0),c)}}function kp(e,t,i,n){const o=e.createContainerElement("figure",{class:"media"});return e.insert(e.createPositionAt(o,0),t.getMediaViewElement(e,i,n)),o}function _p(e){const t=e.getSelectedElement();return t&&t.is("element","media")?t:null}function vp(e,t,i){e.change(n=>{const o=n.createElement("media",{url:t});e.insertContent(o,i),n.setSelection(o,"on")})}class yp extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=_p(t);this.value=i?i.getAttribute("url"):null,this.isEnabled=function(e){const t=e.getSelectedElement();return!!t&&"media"===t.name}(t)||function(e,t){let i=Wh(e,t).start.parent;i.isEmpty&&!t.schema.isLimit(i)&&(i=i.parent);return t.schema.checkChild(i,"media")}(t,e)}execute(e){const t=this.editor.model,i=t.document.selection,n=_p(i);n?t.change(t=>{t.setAttribute("url",e,n)}):vp(t,e,Wh(i,t))}}class xp{constructor(e,t){const i=t.providers,n=t.extraProviders||[],o=new Set(t.removeProviders),r=i.concat(n).filter(e=>{const t=e.name;return t?!o.has(t):(Object(l.b)("media-embed-no-provider-name",{provider:e}),!1)});this.locale=e,this.providerDefinitions=r}hasMedia(e){return!!this._getMedia(e)}getMediaViewElement(e,t,i){return this._getMedia(t).getViewElement(e,i)}_getMedia(e){if(!e)return new Ap(this.locale);e=e.trim();for(const t of this.providerDefinitions){const i=t.html,n=en(t.url);for(const t of n){const n=this._getUrlMatches(e,t);if(n)return new Ap(this.locale,e,n,i)}}return null}_getUrlMatches(e,t){let i=e.match(t);if(i)return i;let n=e.replace(/^https?:\/\//,"");return i=n.match(t),i||(n=n.replace(/^www\./,""),i=n.match(t),i||null)}}class Ap{constructor(e,t,i,n){this.url=this._getValidUrl(t),this._t=e.t,this._match=i,this._previewRenderer=n}getViewElement(e,t){const i={};let n;if(t.renderForEditingView||t.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(i["data-oembed-url"]=this.url),t.renderForEditingView&&(i.class="ck-media__wrapper");const o=this._getPreviewHtml(t);n=e.createRawElement("div",i,(function(e){e.innerHTML=o}))}else this.url&&(i.url=this.url),n=e.createEmptyElement(t.elementName,i);return e.setCustomProperty("media-content",!0,n),n}_getPreviewHtml(e){return this._previewRenderer?this._previewRenderer(this._match):this.url&&e.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const e=new Xc,t=new Zc;e.text=this._t("Open media in new tab"),t.content='',t.viewBox="0 0 64 42";return new Nc({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]},e]}]}).render().outerHTML}_getValidUrl(e){return e?e.match(/^https?/)?e:"https://"+e:null}}i(92);class Cp extends Qe{static get pluginName(){return"MediaEmbedEditing"}constructor(e){super(e),e.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:e=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:e=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)/,/^youtube\.com\/embed\/([\w-]+)/,/^youtu\.be\/([\w-]+)/],html:e=>`
`},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:e=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new xp(e.locale,e.config.get("mediaEmbed"))}init(){const e=this.editor,t=e.model.schema,i=e.t,n=e.conversion,o=e.config.get("mediaEmbed.previewsInData"),r=e.config.get("mediaEmbed.elementName"),s=this.registry;e.commands.add("mediaEmbed",new yp(e)),t.register("media",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["url"]}),n.for("dataDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const i=e.getAttribute("url");return kp(t,s,i,{elementName:r,renderMediaPreview:i&&o})}}),n.for("dataDowncast").add(wp(s,{elementName:r,renderMediaPreview:o})),n.for("editingDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const n=e.getAttribute("url");return function(e,t,i){return t.setCustomProperty("media",!0,e),Lh(e,t,{label:i})}(kp(t,s,n,{elementName:r,renderForEditingView:!0}),t,i("media widget"))}}),n.for("editingDowncast").add(wp(s,{elementName:r,renderForEditingView:!0})),n.for("upcast").elementToElement({view:e=>["oembed",r].includes(e.name)&&e.getAttribute("url")?{name:!0}:null,model:(e,{writer:t})=>{const i=e.getAttribute("url");if(s.hasMedia(i))return t.createElement("media",{url:i})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(e,{writer:t})=>{const i=e.getAttribute("data-oembed-url");if(s.hasMedia(i))return t.createElement("media",{url:i})}})}}const Tp=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class Ep extends Qe{static get requires(){return[uu,rg]}static get pluginName(){return"AutoMediaEmbed"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",()=>{const e=t.selection.getFirstRange(),i=ec.fromPosition(e.start);i.stickiness="toPrevious";const n=ec.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",()=>{this._embedMediaBetweenPositions(i,n),i.detach(),n.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(vr.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedMediaBetweenPositions(e,t){const i=this.editor,n=i.plugins.get(Cp).registry,o=new ba(e,t),r=o.getWalker({ignoreElementEnd:!0});let s="";for(const e of r)e.item.is("$textProxy")&&(s+=e.item.data);if(s=s.trim(),!s.match(Tp))return void o.detach();if(!n.hasMedia(s))return void o.detach();i.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=ec.fromPosition(e),this._timeoutId=vr.window.setTimeout(()=>{i.model.change(e=>{let t;this._timeoutId=null,e.remove(o),o.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert),vp(i.model,s,t),this._positionToInsert.detach(),this._positionToInsert=null})},100)):o.detach()}}i(94);class Ip extends Mc{constructor(e,t){super(t);const i=t.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",e=>!!e),this.cancelButtonView=this._createButton(i("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=e,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),Ic(this)}render(){super.render(),Sc({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element);const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e),this.listenTo(this.urlInputView.element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"})}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(e){this.urlInputView.fieldView.element.value=e.trim()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const e=this.locale.t,t=new Md(this.locale,Nd),i=t.fieldView;return this._urlInputViewInfoDefault=e("Paste the media URL in the input."),this._urlInputViewInfoTip=e("Tip: Paste the URL into the content to embed faster."),t.label=e("Media URL"),t.infoText=this._urlInputViewInfoDefault,i.on("input",()=>{t.infoText=i.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=i.element.value.trim()}),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}}class Sp extends Qe{static get requires(){return[Cp]}static get pluginName(){return"MediaEmbedUI"}init(){const e=this.editor,t=e.commands.get("mediaEmbed"),i=e.plugins.get(Cp).registry;e.ui.componentFactory.add("mediaEmbed",n=>{const o=xd(n),r=new Ip(function(e,t){return[t=>{if(!t.url.length)return e("The URL must not be empty.")},i=>{if(!t.hasMedia(i.url))return e("This media URL is not supported.")}]}(e.t,i),e.locale);return this._setUpDropdown(o,r,t,e),this._setUpForm(o,r,t),o})}_setUpDropdown(e,t,i){const n=this.editor,o=n.t,r=e.buttonView;function s(){n.editing.view.focus(),e.isOpen=!1}e.bind("isEnabled").to(i),e.panelView.children.add(t),r.set({label:o("Insert media"),icon:'',tooltip:!0}),r.on("open",()=>{t.disableCssTransitions(),t.url=i.value||"",t.urlInputView.fieldView.select(),t.focus(),t.enableCssTransitions()},{priority:"low"}),e.on("submit",()=>{t.isValid()&&(n.execute("mediaEmbed",t.url),s())}),e.on("change:isOpen",()=>t.resetFormStatus()),e.on("cancel",()=>s())}_setUpForm(e,t,i){t.delegate("submit","cancel").to(e),t.urlInputView.bind("value").to(i,"value"),t.urlInputView.bind("isReadOnly").to(i,"isEnabled",e=>!e)}}i(96);function Pp(e,t){if(!e.childCount)return;const i=new ph(e.document),n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),o=[];for(const e of i)if("elementStart"===e.type&&n.match(e.item)){const t=Rp(e.item);o.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return o}(e,i);if(!n.length)return;let o=null,r=1;n.forEach((e,s)=>{const a=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const i=t.element.previousSibling;if(!i)return!0;return n=i,!(n.is("element","ol")||n.is("element","ul"));var n}(n[s-1],e),l=a?null:n[s-1],c=(h=e,(d=l)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(o=null,r=1),!o||0!==c){const n=function(e,t){const i=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),n=/mso-level-number-format:([^;]{0,100});/gi,o=i.exec(t);let r="decimal",s="ol";if(o&&o[1]){const t=n.exec(o[1]);if(t&&t[1]&&(r=t[1].trim(),s="bullet"!==r&&"image"!==r?"ol":"ul"),"bullet"===r){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const i=t._data;if("o"===i)return"circle";if("·"===i)return"disc";if("§"===i)return"square";return null}(e.element);t&&(r=t)}}return{type:s,style:Mp(r)}}(e,t);if(o){if(e.indent>r){const e=o.getChild(o.childCount-1),t=e.getChild(e.childCount-1);o=Np(n,t,i),r+=1}else if(e.indente.indexOf(t)>-1)?r.push(i):i.getAttribute("src")||r.push(i)}for(const e of r)i.remove(e)}(function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i){const t=e.item,i=t.previousSibling&&t.previousSibling.name||null;n.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==i&&o.push(e.item.getAttribute("id"))}return o}(e,i),e,i),function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i)n.match(e.item)&&o.push(e.item);for(const e of o)t.remove(e)}(e,i);const n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:"img"}),o=[];for(const e of i)n.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&o.push(e.item);return o}(e,i);n.length&&function(e,t,i){if(e.length===t.length)for(let o=0;oString.fromCharCode(parseInt(e,16))).join(""))}`;i.setAttribute("src",r,e[o])}var n}(n,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,i=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),n=e.match(i),o=[];if(n)for(const e of n){let i=!1;e.includes("\\pngblip")?i="image/png":e.includes("\\jpegblip")&&(i="image/jpeg"),i&&o.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:i})}return o}(t),i)}const Vp=//i,Lp=/xmlns:o="urn:schemas-microsoft-com/i;class jp{constructor(e){this.document=e}isActive(e){return Vp.test(e)||Lp.test(e)}execute(e){const{body:t,stylesString:i}=e._parsedData;Pp(t,i),Dp(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function Bp(e){return e.replace(/(\s+)<\/span>/g,(e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length))}function Fp(e,t){const i=new DOMParser,n=function(e){return Bp(Bp(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(e){const t=e.indexOf("");if(t<0)return e;const i=e.indexOf("",t+"".length);return e.substring(0,t+"".length)+(i>=0?e.substring(i):"")}(e=e.replace(//g,"")}(n.getData("text/html")):n.getData("text/plain")&&(((s=(s=n.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),r=s),r=this.editor.data.htmlProcessor.toView(r));const a=new o(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:n,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),i.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(e,i)=>{if(i.content.isEmpty)return;const n=this.editor.data.toModel(i.content,"$clipboardHolder");0!=n.childCount&&(e.stop(),t.change(()=>{this.fire("contentInsertion",{content:n,method:i.method,dataTransfer:i.dataTransfer,targetRanges:i.targetRanges})}))},{priority:"low"}),this.listenTo(this,"contentInsertion",(e,i)=>{i.resultRange=t.insertContent(i.content)},{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,i=e.editing.view.document;function n(n,o){const r=o.dataTransfer;o.preventDefault();const s=e.data.toView(e.model.getSelectedContent(t.selection));i.fire("clipboardOutput",{dataTransfer:r,content:s,method:n.name})}this.listenTo(i,"copy",n,{priority:"low"}),this.listenTo(i,"cut",(t,i)=>{e.isReadOnly?i.preventDefault():n(t,i)},{priority:"low"}),this.listenTo(i,"clipboardOutput",(i,n)=>{n.content.isEmpty||(n.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(n.content)),n.dataTransfer.setData("text/plain",function e(t){let i="";if(t.is("$text")||t.is("$textProxy"))i=t.data;else if(t.is("element","img")&&t.hasAttribute("alt"))i=t.getAttribute("alt");else if(t.is("element","br"))i="\n";else{let n=null;for(const o of t.getChildren()){const t=e(o);n&&(n.is("containerElement")||o.is("containerElement"))&&(kh.includes(n.name)||kh.includes(o.name)?i+="\n":i+="\n\n"),i+=t,n=o}}return i}(n.content))),"cut"==n.method&&e.model.deleteContent(t.selection)},{priority:"low"})}}function*vh(e,t){for(const i of t)i&&e.getAttributeProperties(i[0]).copyOnEnter&&(yield i)}class yh extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i,n){const o=i.isCollapsed,r=i.getFirstRange(),s=r.start.parent,a=r.end.parent;if(n.isLimit(s)||n.isLimit(a))return void(o||s!=a||e.deleteContent(i));if(o){const e=vh(t.model.schema,i.getAttributes());xh(t,r.start),t.setSelectionAttribute(e)}else{const n=!(r.start.isAtStart&&r.end.isAtEnd),o=s==a;e.deleteContent(i,{leaveUnmerged:n}),n&&(o?xh(t,i.focus):t.setSelection(a,0))}}(this.editor.model,i,t.selection,e.schema),this.fire("afterExecute",{writer:i})})}}function xh(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}class Ah extends Or{constructor(e){super(e);const t=this.document;t.on("keydown",(e,i)=>{if(this.isEnabled&&i.keyCode==No.enter){const n=new fo(t,"enter",t.selection.getFirstRange());t.fire(n,new es(t,i.domEvent,{isSoft:i.shiftKey})),n.stop.called&&e.stop()}})}observe(){}}class Ch extends Qe{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Ah),e.commands.add("enter",new yh(e)),this.listenTo(i,"enter",(i,n)=>{n.preventDefault(),n.isSoft||(e.execute("enter"),t.scrollToTheSelection())},{priority:"low"})}}class Th{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{"transparent"!=t.type&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}class Eh extends Ze{constructor(e,t){super(e),this.direction=t,this._buffer=new Th(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,i=t.document;t.enqueueChange(this._buffer.batch,n=>{this._buffer.lock();const o=n.createSelection(e.selection||i.selection),r=e.sequence||1,s=o.isCollapsed;if(o.isCollapsed&&t.modifySelection(o,{direction:this.direction,unit:e.unit}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(n);if(this._shouldReplaceFirstBlockWithParagraph(o,r))return void this.editor.execute("paragraph",{selection:o});if(o.isCollapsed)return;let a=0;o.getFirstRange().getMinimalFlatRanges().forEach(e=>{a+=uo(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(o,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),n.setSelection(o),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i);if(!(i.isCollapsed&&i.containsEntireContent(n)))return!1;if(!t.schema.checkChild(n,"paragraph"))return!1;const o=n.getChild(0);return!o||"paragraph"!==o.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i),o=e.createElement("paragraph");e.remove(e.createRangeIn(n)),e.insert(o,n),e.setSelection(o,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const i=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const n=e.getFirstPosition(),o=i.schema.getLimitElement(n),r=o.getChild(0);return n.parent==r&&(!!e.containsEntireContent(r)&&(!!i.schema.checkChild(o,"paragraph")&&"paragraph"!=r.name))}}class Ih extends Or{constructor(e){super(e);const t=e.document;let i=0;function n(e,i,n){const o=new fo(t,"delete",t.selection.getFirstRange());t.fire(o,new es(t,i,n)),o.stop.called&&e.stop()}t.on("keyup",(e,t)=>{t.keyCode!=No.delete&&t.keyCode!=No.backspace||(i=0)}),t.on("keydown",(e,t)=>{const o={};if(t.keyCode==No.delete)o.direction="forward",o.unit="character";else{if(t.keyCode!=No.backspace)return;o.direction="backward",o.unit="codePoint"}const r=So.isMac?t.altKey:t.ctrlKey;o.unit=r?"word":o.unit,o.sequence=++i,n(e,t.domEvent,o)}),So.isAndroid&&t.on("beforeinput",(t,i)=>{if("deleteContentBackward"!=i.domEvent.inputType)return;const o={unit:"codepoint",direction:"backward",sequence:1},r=i.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(o.selectionToRemove=e.domConverter.domSelectionToView(r)),n(t,i.domEvent,o)})}observe(){}}class Sh extends Qe{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Ih);const n=new Eh(e,"forward");if(e.commands.add("deleteForward",n),e.commands.add("forwardDelete",n),e.commands.add("delete",new Eh(e,"backward")),this.listenTo(i,"delete",(i,n)=>{const o={unit:n.unit,sequence:n.sequence};if(n.selectionToRemove){const t=e.model.createSelection(),i=[];for(const t of n.selectionToRemove.getRanges())i.push(e.editing.mapper.toModelRange(t));t.setTo(i),o.selection=t}e.execute("forward"==n.direction?"deleteForward":"delete",o),n.preventDefault(),t.scrollToTheSelection()},{priority:"low"}),So.isAndroid){let e=null;this.listenTo(i,"delete",(t,i)=>{const n=i.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}},{priority:"lowest"}),this.listenTo(i,"keyup",(t,i)=>{if(e){const t=i.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}})}}}class Ph{constructor(){this._stack=[]}add(e,t){const i=this._stack,n=i[0];this._insertDescriptor(e);const o=i[0];n===o||Mh(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}remove(e,t){const i=this._stack,n=i[0];this._removeDescriptor(e);const o=i[0];n===o||Mh(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}_insertDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e.id);if(Mh(e,t[i]))return;i>-1&&t.splice(i,1);let n=0;for(;t[n]&&Nh(t[n],e);)n++;t.splice(n,0,e)}_removeDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e);i>-1&&t.splice(i,1)}}function Mh(e,t){return e&&t&&e.priority==t.priority&&Rh(e.classes)==Rh(t.classes)}function Nh(e,t){return e.priority>t.priority||!(e.priorityRh(t.classes)}function Rh(e){return Array.isArray(e)?e.sort().join(","):e}Ke(Ph,h);function Oh(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function zh(e,t,i={}){if(!e.is("containerElement"))throw new l.a("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=Uh,i.label&&function(e,t,i){i.setCustomProperty("widgetLabel",t,e)}(e,i.label,t),i.hasSelectionHandle&&function(e,t){const i=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),i=new Zc;return i.set("content",''),i.render(),t.appendChild(i.element),t}));t.insert(t.createPositionAt(e,0),i),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),Vh(e,t,Dh,Lh),e}function Dh(e,t,i){if(t.classes&&i.addClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.setAttribute(n,t.attributes[n],e)}function Lh(e,t,i){if(t.classes&&i.removeClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.removeAttribute(n,e)}function Vh(e,t,i,n){const o=new Ph;o.on("change:top",(t,o)=>{o.oldDescriptor&&n(e,o.oldDescriptor,o.writer),o.newDescriptor&&i(e,o.newDescriptor,o.writer)}),t.setCustomProperty("addHighlight",(e,t,i)=>o.add(t,i),e),t.setCustomProperty("removeHighlight",(e,t,i)=>o.remove(t,i),e)}function jh(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function Bh(e,t){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",(i,n,o)=>{t.setAttribute("contenteditable",o?"false":"true",e)}),e.on("change:isFocused",(i,n,o)=>{o?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)}),e}function Fh(e,t){const i=e.getSelectedElement();if(i){const n=qh(e);if(n)return t.createRange(t.createPositionAt(i,n));if(t.schema.isObject(i)&&!t.schema.isInline(i))return t.createRangeOn(i)}const n=e.getSelectedBlocks().next().value;if(n){if(n.isEmpty)return t.createRange(t.createPositionAt(n,0));const i=t.createPositionAfter(n);return e.focus.isTouching(i)?t.createRange(i):t.createRange(t.createPositionBefore(n))}return t.createRange(e.focus)}function Hh(e,t){const i=new Cs(vr.window),n=i.getIntersection(e),o=t.height+Ld.arrowVerticalOffset;if(e.top-o>i.top||e.bottom+o',"image/svg+xml").firstChild;class Qh extends Qe{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[Ch,Sh]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(i,n,o)=>{t.change(e=>{for(const i of t.document.roots)o?e.removeClass("ck-widget__type-around_disabled",i):e.addClass("ck-widget__type-around_disabled",i)}),o||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const i=this.editor,n=i.editing.view;i.execute("insertParagraph",{position:i.model.createPositionAt(e,t)}),n.focus(),n.scrollToTheSelection()}_listenToIfEnabled(e,t,i,n){this.listenTo(e,t,(...e)=>{this.isEnabled&&i(...e)},n)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=qh(e);if(!t)return!1;const i=e.getSelectedElement();return this._insertParagraph(i,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,i=e.locale.t,n={before:i("Insert paragraph before block"),after:i("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(e,i,o)=>{const r=o.mapper.toViewElement(i.item);Wh(r,i.item,t)&&function(e,t,i){const n=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const i=this.toDomElement(e);return function(e,t){for(const i of Gh){const n=new Nc({tag:"div",attributes:{class:["ck","ck-widget__type-around__button","ck-widget__type-around__button_"+i],title:t[i]},children:[e.ownerDocument.importNode(Kh,!0)]});e.appendChild(n.render())}}(i,t),function(e){const t=new Nc({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(i),i}));e.insert(e.createPositionAt(i,"end"),n)}(o.writer,n,r)},{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,i=t.document.selection,n=t.schema,o=e.editing.view;function r(e){return"ck-widget_type-around_show-fake-caret_"+e}this._listenToIfEnabled(o.document,"arrowKey",(e,t)=>{this._handleArrowKeyPress(e,t)},{context:[Oh,"$text"],priority:"high"}),this._listenToIfEnabled(i,"change:range",(t,i)=>{i.directChange&&e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(t.document,"change:data",()=>{const t=i.getSelectedElement();if(t){if(Wh(e.editing.mapper.toViewElement(t),t,n))return}e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",(e,t,i)=>{const o=i.writer;if(this._currentFakeCaretModelElement){const e=i.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(o.removeClass(Gh.map(r),e),this._currentFakeCaretModelElement=null)}const s=t.selection.getSelectedElement();if(!s)return;const a=i.mapper.toViewElement(s);if(!Wh(a,s,n))return;const l=qh(t.selection);l&&(o.addClass(r(l),a),this._currentFakeCaretModelElement=s)}),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",(t,i,n)=>{n||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})})}_handleArrowKeyPress(e,t){const i=this.editor,n=i.model,o=n.document.selection,r=n.schema,s=i.editing.view,a=Vo(t.keyCode,i.locale.contentLanguageDirection),l=s.document.selection.getSelectedElement();let c;Wh(l,i.editing.mapper.toModelElement(l),r)?c=this._handleArrowKeyPressOnSelectedWidget(a):o.isCollapsed&&(c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a)),c&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,i=qh(t.document.selection);return t.change(t=>{if(!i)return t.setSelectionAttribute("widget-type-around",e?"after":"before"),!0;if(!(i===(e?"after":"before")))return t.removeSelectionAttribute("widget-type-around"),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,i=t.model,n=i.schema,o=t.plugins.get("Widget"),r=o._getObjectElementNextToSelection(e);return!!Wh(t.editing.mapper.toViewElement(r),r,n)&&(i.change(t=>{o._setSelectionOverElement(r),t.setSelectionAttribute("widget-type-around",e?"before":"after")}),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(i,n)=>{const o=n.domTarget.closest(".ck-widget__type-around__button");if(!o)return;const r=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(o),s=function(e,t){const i=e.closest(".ck-widget");return t.mapDomToView(i)}(o,t.domConverter),a=e.editing.mapper.toModelElement(s);this._insertParagraph(a,r),n.preventDefault(),i.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,i=e.editing.view;this._listenToIfEnabled(i.document,"enter",(i,n)=>{if("atTarget"!=i.eventPhase)return;const o=t.getSelectedElement(),r=e.editing.mapper.toViewElement(o),s=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:Wh(r,o,s)&&(this._insertParagraph(o,n.isSoft?"before":"after"),a=!0),a&&(n.preventDefault(),i.stop())},{context:Oh})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[No.enter,No.delete,No.backspace];this._listenToIfEnabled(e.document,"keydown",(e,i)=>{t.includes(i.keyCode)||Yh(i)||this._insertParagraphAccordingToFakeCaretPosition()},{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,i=e.model,n=i.schema;this._listenToIfEnabled(t.document,"delete",(t,o)=>{if("atTarget"!=t.eventPhase)return;const r=qh(i.document.selection);if(!r)return;const s=o.direction,a=i.document.selection.getSelectedElement(),l="forward"==s;if("before"===r===l)e.execute("delete",{selection:i.createSelection(a,"on")});else{const t=n.getNearestSelectionRange(i.createPositionAt(a,r),s);if(t)if(t.isCollapsed){const o=i.createSelection(t.start);if(i.modifySelection(o,{direction:s}),o.focus.isEqual(t.start)){const e=function(e,t){let i=t;for(const n of t.getAncestors({parentFirst:!0})){if(n.childCount>1||e.isLimit(n))break;i=n}return i}(n,t.start.parent);i.deleteContent(i.createSelection(e,"on"),{doNotAutoparagraph:!0})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}o.preventDefault(),t.stop()},{context:Oh})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,i=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(e,[n,o])=>{if(o&&!o.is("documentSelection"))return;const r=qh(i);return r?(e.stop(),t.change(e=>{const o=i.getSelectedElement(),s=t.createPositionAt(o,r),a=e.createSelection(s),l=t.insertContent(n,a);return e.setSelection(a),l})):void 0},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(e,[i])=>{if(i&&!i.is("documentSelection"))return;qh(t)&&e.stop()},{priority:"high"})}}i(63);function Jh(e){const t=e.model;return(i,n)=>{const o=n.keyCode==No.arrowup,r=n.keyCode==No.arrowdown,s=n.shiftKey,a=t.document.selection;if(!o&&!r)return;const l=r;if(s&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,l))return;const c=function(e,t,i){const n=e.model;if(i){const e=t.isCollapsed?t.focus:t.getLastPosition(),i=Zh(n,e,"forward");if(!i)return null;const o=n.createRange(e,i),r=Xh(n.schema,o,"backward");return r&&e.isBefore(r)?n.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),i=Zh(n,e,"backward");if(!i)return null;const o=n.createRange(i,e),r=Xh(n.schema,o,"forward");return r&&e.isAfter(r)?n.createRange(r,e):null}}(e,a,l);c&&!c.isCollapsed&&function(e,t,i){const n=e.model,o=e.view.domConverter;if(i){const e=n.createSelection(t.start);n.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=n.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),s=o.viewRangeToDom(r),a=Cs.getDomRangeRects(s);let l;for(const e of a)if(void 0!==l){if(Math.round(e.top)>=l)return!1;l=Math.max(l,Math.round(e.bottom))}else l=Math.round(e.bottom);return!0}(e,c,l)&&(t.change(e=>{const i=l?c.end:c.start;if(s){const n=t.createSelection(a.anchor);n.setFocus(i),e.setSelection(n)}else e.setSelection(i)}),i.stop(),n.preventDefault(),n.stopPropagation())}}function Zh(e,t,i){const n=e.schema,o=e.createRangeIn(t.root),r="forward"==i?"elementStart":"elementEnd";for(const{previousPosition:e,item:s,type:a}of o.getWalker({startPosition:t,direction:i})){if(n.isLimit(s)&&!n.isInline(s))return e;if(a==r&&n.isBlock(s))return null}return null}function Xh(e,t,i){const n="backward"==i?t.end:t.start;if(e.checkChild(n,"$text"))return n;for(const{nextPosition:n}of t.getWalker({direction:i}))if(e.checkChild(n,"$text"))return n}class eu extends Qe{static get pluginName(){return"Widget"}static get requires(){return[Qh,Sh]}init(){const e=this.editor,t=e.editing.view,i=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(t,i,n)=>{const o=n.writer,r=i.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=e.editing.mapper.toViewElement(s);Oh(a)&&n.consumable.consume(r,"selection")&&o.setSelection(o.createRangeOn(a),{fake:!0,label:jh(a)})}),this.editor.editing.downcastDispatcher.on("selection",(e,t,i)=>{this._clearPreviouslySelectedWidgets(i.writer);const n=i.writer,o=n.document.selection;let r=null;for(const e of o.getRanges())for(const t of e){const e=t.item;Oh(e)&&!tu(e,r)&&(n.addClass("ck-widget_selected",e),this._previouslySelected.add(e),r=e)}},{priority:"low"}),t.addObserver(uh),this.listenTo(i,"mousedown",(...e)=>this._onMousedown(...e)),this.listenTo(i,"arrowKey",(...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)},{context:[Oh,"$text"]}),this.listenTo(i,"arrowKey",(...e)=>{this._preventDefaultOnArrowKeyPress(...e)},{context:"$root"}),this.listenTo(i,"arrowKey",Jh(this.editor.editing),{context:"$text"}),this.listenTo(i,"delete",(e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())},{context:"$root"})}_onMousedown(e,t){const i=this.editor,n=i.editing.view,o=n.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(Oh(e))return!1;e=e.parent}return!1}(r)){if((So.isSafari||So.isGecko)&&t.domEvent.detail>=3){const e=i.editing.mapper,n=r.is("attributeElement")?r.findAncestor(e=>!e.is("attributeElement")):r,o=e.toModelElement(n);t.preventDefault(),this.editor.model.change(e=>{e.setSelection(o,"in")})}return}if(!Oh(r)&&(r=r.findAncestor(Oh),!r))return;So.isAndroid&&t.preventDefault(),o.isFocused||n.focus();const s=i.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(e,t){const i=t.keyCode,n=this.editor.model,o=n.schema,r=n.document.selection,s=r.getSelectedElement(),a=Vo(i,this.editor.locale.contentLanguageDirection);if(s&&o.isObject(s)){const i=a?r.getLastPosition():r.getFirstPosition(),s=o.getNearestSelectionRange(i,a?"forward":"backward");return void(s&&(n.change(e=>{e.setSelection(s)}),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const l=this._getObjectElementNextToSelection(a);l&&o.isObject(l)&&(this._setSelectionOverElement(l),t.preventDefault(),e.stop())}_preventDefaultOnArrowKeyPress(e,t){const i=this.editor.model,n=i.schema,o=i.document.selection.getSelectedElement();o&&n.isObject(o)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const i=this._getObjectElementNextToSelection(e);return i?(this.editor.model.change(e=>{let n=t.anchor.parent;for(;n.isEmpty;){const t=n;n=t.parent,e.remove(t)}this._setSelectionOverElement(i)}),!0):void 0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,i=t.schema,n=t.document.selection,o=t.createSelection(n);t.modifySelection(o,{direction:e?"forward":"backward"});const r=e?o.focus.nodeBefore:o.focus.nodeAfter;return r&&i.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass("ck-widget_selected",t);this._previouslySelected.clear()}}function tu(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}var iu=function(e,t,i){var n=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return w(i)&&(n="leading"in i?!!i.leading:n,o="trailing"in i?!!i.trailing:o),fs(e,t,{leading:n,maxWait:t,trailing:o})};i(65);class nu extends Qe{static get pluginName(){return"DragDrop"}static get requires(){return[_h,eu]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=iu(e=>this._updateDropMarker(e),40),this._removeDropMarkerDelayed=su(()=>this._removeDropMarker(),40),this._clearDraggableAttributesDelayed=su(()=>this._clearDraggableAttributes(),40),t.addObserver(wh),t.addObserver(uh),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(e,t,i)=>{i?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(e,t,i)=>{i||this._finalizeDragging(!1)}),So.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,i=t.document,n=e.editing.view,o=n.document;this.listenTo(o,"dragstart",(n,r)=>{const a=i.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const l=r.target?au(r.target):null;if(l){const i=e.editing.mapper.toModelElement(l);this._draggedRange=ba.fromRange(t.createRangeOn(i)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&Oh(e)||(this._draggedRange=ba.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=s(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),d=e.data.toView(t.getSelectedContent(c));o.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:d,method:n.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")},{priority:"low"}),this.listenTo(o,"dragend",(e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)},{priority:"low"}),this.listenTo(o,"dragenter",()=>{this.isEnabled&&n.focus()}),this.listenTo(o,"dragleave",()=>{this._removeDropMarkerDelayed()}),this.listenTo(o,"dragging",(t,i)=>{if(!this.isEnabled)return void(i.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const n=ou(e,i.targetRanges,i.target);this._draggedRange||(i.dataTransfer.dropEffect="copy"),So.isGecko||("copy"==i.dataTransfer.effectAllowed?i.dataTransfer.dropEffect="copy":["all","copyMove"].includes(i.dataTransfer.effectAllowed)&&(i.dataTransfer.dropEffect="move")),n&&this._updateDropMarkerThrottled(n)},{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",(t,i)=>{if("drop"!=i.method)return;const n=ou(e,i.targetRanges,i.target);if(this._removeDropMarker(),!n)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=i.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==ru(i.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(n,!0))return this._finalizeDragging(!1),void t.stop();i.targetRanges=[e.editing.mapper.toViewRange(n)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(_h);e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i=t.targetRanges.map(e=>this.editor.editing.mapper.toModelRange(e));this.editor.model.change(e=>e.setSelection(i))},{priority:"high"}),e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i="move"==ru(t.dataTransfer),n=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(n&&i)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,i=t.document;this.listenTo(i,"mousedown",(n,o)=>{if(So.isAndroid||!o)return;this._clearDraggableAttributesDelayed.cancel();let r=au(o.target);if(So.isBlink&&!e.isReadOnly&&!r&&!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&Oh(e)||(r=i.selection.editableElement)}r&&(t.change(e=>{e.setAttribute("draggable","true",r)}),this._draggableElement=e.editing.mapper.toModelElement(r))}),this.listenTo(i,"mouseup",()=>{So.isAndroid||this._clearDraggableAttributesDelayed()})}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change(t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null})}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:i})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return i.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.innerHTML="⁠⁠",t}))}})}_updateDropMarker(e){const t=this.editor,i=t.model.markers;t.model.change(t=>{i.has("drop-target")?i.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})})}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change(e=>{e.removeMarker("drop-target")})}_finalizeDragging(e){const t=this.editor,i=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&i.deleteContent(i.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function ou(e,t,i){const n=e.model,o=e.editing.mapper;let r=null;const s=t?t[0].start:null;if(i.is("uiElement")&&(i=i.parent),r=function(e,t){const i=e.model,n=e.editing.mapper;if(Oh(t))return i.createRangeOn(n.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor(e=>Oh(e)||e.is("editableElement"));if(Oh(e))return i.createRangeOn(n.toModelElement(e))}return null}(e,i),r)return r;const a=function(e,t){const i=e.editing.mapper,n=e.editing.view,o=i.toModelElement(t);if(o)return o;const r=n.createPositionBefore(t),s=i.findMappedViewAncestor(r);return i.toModelElement(s)}(e,i),l=s?o.toModelPosition(s):null;return l?(r=function(e,t,i){const n=e.model;if(!n.schema.checkChild(i,"$block"))return null;const o=n.createPositionAt(i,0),r=t.path.slice(0,o.path.length),s=n.createPositionFromPath(t.root,r).nodeAfter;if(s&&n.schema.isObject(s))return n.createRangeOn(s);return null}(e,l,a),r||(r=n.schema.getNearestSelectionRange(l,So.isGecko?"forward":"backward"),r||function(e,t){const i=e.model;for(;t;){if(i.schema.isObject(t))return i.createRangeOn(t);t=t.parent}}(e,l.parent))):function(e,t){const i=e.model,n=i.schema,o=i.createPositionAt(t,0);return n.getNearestSelectionRange(o,"forward")}(e,a)}function ru(e){return So.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function su(e,t){let i;function n(...o){n.cancel(),i=setTimeout(()=>e(...o),t)}return n.cancel=()=>{clearTimeout(i)},n}function au(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(Oh);if(Oh(e))return e;const t=e.findAncestor(e=>Oh(e)||e.is("editableElement"));return Oh(t)?t:null}class lu extends Qe{static get pluginName(){return"PastePlainText"}static get requires(){return[_h]}init(){const e=this.editor,t=e.model,i=e.editing.view,n=i.document,o=t.document.selection;let r=!1;i.addObserver(wh),this.listenTo(n,"keydown",(e,t)=>{r=t.shiftKey}),e.plugins.get(_h).on("contentInsertion",(e,i)=>{(r||function(e,t){if(e.childCount>1)return!1;const i=e.getChild(0);if(t.isObject(i))return!1;return 0==[...i.getAttributeKeys()].length}(i.content,t.schema))&&t.change(e=>{const n=Array.from(o.getAttributes()).filter(([e])=>t.schema.getAttributeProperties(e).isFormatting);o.isCollapsed||t.deleteContent(o,{doNotAutoparagraph:!0}),n.push(...o.getAttributes());const r=e.createRangeIn(i.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(n,t)})})}}class cu extends Qe{static get pluginName(){return"Clipboard"}static get requires(){return[_h,nu,lu]}}class du extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i){const n=i.isCollapsed,o=i.getFirstRange(),r=o.start.parent,s=o.end.parent,a=r==s;if(n){const n=vh(e.schema,i.getAttributes());hu(e,t,o.end),t.removeSelectionAttribute(i.getAttributeKeys()),t.setSelectionAttribute(n)}else{const n=!(o.start.isAtStart&&o.end.isAtEnd);e.deleteContent(i,{leaveUnmerged:n}),a?hu(e,t,i.focus):n&&t.setSelection(s,0)}}(e,i,t.selection),this.fire("afterExecute",{writer:i})})}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const i=t.anchor;if(!i||!e.checkChild(i,"softBreak"))return!1;const n=t.getFirstRange(),o=n.start.parent,r=n.end.parent;if((uu(o,e)||uu(r,e))&&o!==r)return!1;return!0}(e.schema,t.selection)}}function hu(e,t,i){const n=t.createElement("softBreak");e.insertContent(n,i),t.setSelection(n,"after")}function uu(e,t){return!e.is("rootElement")&&(t.isLimit(e)||uu(e.parent,t))}class gu extends Qe{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,i=e.conversion,n=e.editing.view,o=n.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),i.for("upcast").elementToElement({model:"softBreak",view:"br"}),i.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),n.addObserver(Ah),e.commands.add("shiftEnter",new du(e)),this.listenTo(o,"enter",(t,i)=>{i.preventDefault(),i.isSoft&&(e.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"})}}class mu extends Ze{execute(){const e=this.editor.model,t=e.document.selection;let i=e.schema.getLimitElement(t);if(t.containsEntireContent(i)||!fu(e.schema,i))do{if(i=i.parent,!i)return}while(!fu(e.schema,i));e.change(e=>{e.setSelection(i,"in")})}}function fu(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const pu=zo("Ctrl+A");class bu extends Qe{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new mu(e)),this.listenTo(t,"keydown",(t,i)=>{Oo(i)===pu&&(e.execute("selectAll"),i.preventDefault())})}}class wu extends Qe{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",t=>{const i=e.commands.get("selectAll"),n=new ed(t),o=t.t;return n.set({label:o("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),n.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(n,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),n})}}class ku extends Qe{static get requires(){return[bu,wu]}static get pluginName(){return"SelectAll"}}class _u extends Ze{constructor(e,t){super(e),this._buffer=new Th(e.model,t),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,i=t.document,n=e.text||"",o=n.length,r=e.range?t.createSelection(e.range):i.selection,s=e.resultRange;t.enqueueChange(this._buffer.batch,e=>{this._buffer.lock(),this._batches.add(this._buffer.batch),t.deleteContent(r),n&&t.insertContent(e.createText(n,i.selection.getAttributes()),r),s?e.setSelection(s):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(o)})}}function vu(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const i=[];let n,o=0;return e.forEach(e=>{"equal"==e?(r(),o++):"insert"==e?(s("insert")?n.values.push(t[o]):(r(),n={type:"insert",index:o,values:[t[o]]}),o++):s("delete")?n.howMany++:(r(),n={type:"delete",index:o,howMany:1})}),r(),i;function r(){n&&(i.push(n),n=null)}function s(e){return n&&n.type==e}}(gr(e.oldChildren,e.newChildren,yu),e.newChildren);if(t.length>1)return;const i=t[0];return i.values[0]&&i.values[0].is("$text")?i:void 0}function yu(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}class xu{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if(function(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!vu(t))return!0;return!1}(e))this._handleContainerChildrenMutations(e,t);else for(const i of e)this._handleTextMutation(i,t),this._handleTextNodeInsertion(i)}_handleContainerChildrenMutations(e,t){const i=function(e){const t=e.map(e=>e.node).reduce((e,t)=>e.getCommonAncestor(t,{includeSelf:!0}));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find(e=>e.is("containerElement")||e.is("rootElement"))}(e);if(!i)return;const n=this.editor.editing.view.domConverter.mapViewToDom(i),o=new Er(this.editor.editing.view.document),r=this.editor.data.toModel(o.domToView(n)).getChild(0),s=this.editor.editing.mapper.toModelElement(i);if(!s)return;const a=Array.from(r.getChildren()),l=Array.from(s.getChildren()),c=a[a.length-1],d=l[l.length-1],h=c&&c.is("element","softBreak"),u=d&&!d.is("element","softBreak");h&&u&&a.pop();const g=this.editor.model.schema;if(!Au(a,g)||!Au(l,g))return;const m=a.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," "),f=l.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," ");if(f===m)return;const p=gr(f,m),{firstChangeAt:b,insertions:w,deletions:k}=Cu(p);let _=null;t&&(_=this.editing.mapper.toModelRange(t.getFirstRange()));const v=m.substr(b,w),y=this.editor.model.createRange(this.editor.model.createPositionAt(s,b),this.editor.model.createPositionAt(s,b+k));this.editor.execute("input",{text:v,range:y,resultRange:_})}_handleTextMutation(e,t){if("text"!=e.type)return;const i=e.newText.replace(/\u00A0/g," "),n=e.oldText.replace(/\u00A0/g," ");if(n===i)return;const o=gr(n,i),{firstChangeAt:r,insertions:s,deletions:a}=Cu(o);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const c=this.editing.view.createPositionAt(e.node,r),d=this.editing.mapper.toModelPosition(c),h=this.editor.model.createRange(d,d.getShiftedBy(a)),u=i.substr(r,s);this.editor.execute("input",{text:u,range:h,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=vu(e),i=this.editing.view.createPositionAt(e.node,t.index),n=this.editing.mapper.toModelPosition(i),o=t.values[0].data;this.editor.execute("input",{text:o.replace(/\u00A0/g," "),range:this.editor.model.createRange(n)})}}function Au(e,t){return e.every(e=>t.isInline(e))}function Cu(e){let t=null,i=null;for(let n=0;n{i.deleteContent(i.document.selection)}),e.unlock()}So.isAndroid?n.document.on("beforeinput",(e,t)=>r(t),{priority:"lowest"}):n.document.on("keydown",(e,t)=>r(t),{priority:"lowest"}),n.document.on("compositionstart",(function(){const e=i.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;s()}),{priority:"lowest"}),n.document.on("compositionend",()=>{t=i.createSelection(i.document.selection)},{priority:"lowest"})}(e),function(e){e.editing.view.document.on("mutations",(t,i,n)=>{new xu(e).handle(i,n)})}(e)}isInput(e){return this.editor.commands.get("input")._batches.has(e)}}class Eu extends Qe{static get requires(){return[Tu,Sh]}static get pluginName(){return"Typing"}}function Iu(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>n.is("$text")||n.is("$textProxy")?e+n.data:(i=t.createPositionAfter(n),""),""),range:t.createRange(i,e.end)}}class Su{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))}),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",(t,{directChange:i})=>{i&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))}),this.listenTo(e,"change:data",(e,t)=>{"transparent"!=t.type&&this._evaluateTextBeforeSelection("data",{batch:t})})}_evaluateTextBeforeSelection(e,t={}){const i=this.model,n=i.document.selection,o=i.createRange(i.createPositionAt(n.focus.parent,0),n.focus),{text:r,range:s}=Iu(o,i),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const i=Object.assign(t,{text:r,range:s});"object"==typeof a&&Object.assign(i,a),this.fire("matched:"+e,i)}}}Ke(Su,Ue);class Pu extends Qe{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,i=e.editing.view,n=e.locale,o=t.document.selection;this.listenTo(i.document,"arrowKey",(e,t)=>{if(!o.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const i=t.keyCode==No.arrowright,r=t.keyCode==No.arrowleft;if(!i&&!r)return;const s=n.contentLanguageDirection;let a=!1;a="ltr"===s&&i||"rtl"===s&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()},{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(o,"change:range",(e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&Ou(o.getFirstPosition(),this.attributes)||this._restoreGravity())})}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,i=this.editor.model.document.selection,n=i.getFirstPosition();return!this._isGravityOverridden&&((!n.isAtStart||!Mu(i,t))&&(Ou(n,t)?(Ru(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,i=this.editor.model,n=i.document.selection,o=n.getFirstPosition();return this._isGravityOverridden?(Ru(e),this._restoreGravity(),Nu(i,t,o),!0):o.isAtStart?!!Mu(n,t)&&(Ru(e),Nu(i,t,o),!0):function(e,t){return Ou(e.getShiftedBy(-1),t)}(o,t)?o.isAtEnd&&!Mu(n,t)&&Ou(o,t)?(Ru(e),Nu(i,t,o),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change(e=>e.overrideSelectionGravity())}_restoreGravity(){this.editor.model.change(e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}}function Mu(e,t){for(const i of t)if(e.hasAttribute(i))return!0;return!1}function Nu(e,t,i){const n=i.nodeBefore;e.change(e=>{n?e.setSelectionAttribute(n.getAttributes()):e.removeSelectionAttribute(t)})}function Ru(e){e.preventDefault()}function Ou(e,t){const{nodeBefore:i,nodeAfter:n}=e;for(const e of t){const t=i?i.getAttribute(e):void 0;if((n?n.getAttribute(e):void 0)!==t)return!0}return!1}var zu=/[\\^$.*+?()[\]{}|]/g,Du=RegExp(zu.source);var Lu=function(e){return(e=Pn(e))&&Du.test(e)?e.replace(zu,"\\$&"):e};const Vu={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:"1/2",to:"½"},oneThird:{from:"1/3",to:"⅓"},twoThirds:{from:"2/3",to:"⅔"},oneForth:{from:"1/4",to:"¼"},threeQuarters:{from:"3/4",to:"¾"},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:Wu('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:Wu("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:Wu("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:Wu('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:Wu('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:Wu("'"),to:[null,"‚",null,"’"]}},ju={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},Bu=["symbols","mathematical","typography","quotes"];function Fu(e){return"string"==typeof e?new RegExp(`(${Lu(e)})$`):e}function Hu(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function Uu(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function Wu(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function qu(e,t,i,n){return n.createRange($u(e,t,i,!0,n),$u(e,t,i,!1,n))}function $u(e,t,i,n,o){let r=e.textNode||(n?e.nodeBefore:e.nodeAfter),s=null;for(;r&&r.getAttribute(t)==i;)s=r,r=n?r.previousSibling:r.nextSibling;return s?o.createPositionAt(s,n?"before":"after"):e}class Yu extends Ze{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",(e,t)=>{t[1]={...t[1]};const i=t[1];i.batchType||(i.batchType="transparent")},{priority:"high"}),this.listenTo(e.data,"set",(e,t)=>{"transparent"===t[1].batchType&&this.clearStack()})}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,i={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:i}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,i){const n=this.editor.model,o=n.document,r=[],s=e.map(e=>e.getTransformedByOperations(i)),a=s.flat();for(const e of s){const t=e.filter(e=>e.root!=o.graveyard).filter(e=>!Ku(e,a));t.length&&(Gu(t),r.push(t[0]))}r.length&&n.change(e=>{e.setSelection(r,{backward:t})})}_undo(e,t){const i=this.editor.model,n=i.document;this._createdBatches.add(t);const o=e.operations.slice().filter(e=>e.isDocumentOperation);o.reverse();for(const e of o){const o=e.baseVersion+1,r=Array.from(n.history.getOperations(o)),s=oh([e.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const o of s)t.addOperation(o),i.applyOperation(o),n.history.setOperationAsUndone(e,o)}}}function Gu(e){e.sort((e,t)=>e.start.isBefore(t.start)?-1:1);for(let t=1;tt!==e&&t.containsRange(e,!0))}class Qu extends Yu{execute(e=null){const t=e?this._stack.findIndex(t=>t.batch==e):this._stack.length-1,i=this._stack.splice(t,1)[0],n=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(n,()=>{this._undo(i.batch,n);const e=this.editor.model.document.history.getOperations(i.batch.baseVersion);this._restoreSelection(i.selection.ranges,i.selection.isBackward,e),this.fire("revert",i.batch,n)}),this.refresh()}}class Ju extends Yu{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(t,()=>{const i=e.batch.operations[e.batch.operations.length-1].baseVersion+1,n=this.editor.model.document.history.getOperations(i);this._restoreSelection(e.selection.ranges,e.selection.isBackward,n),this._undo(e.batch,t)}),this.refresh()}}class Zu extends Qe{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new Qu(e),this._redoCommand=new Ju(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(e,t)=>{const i=t[0];if(!i.isDocumentOperation)return;const n=i.batch,o=this._redoCommand._createdBatches.has(n),r=this._undoCommand._createdBatches.has(n);this._batchRegistry.has(n)||"transparent"==n.type&&!o&&!r||(o?this._undoCommand.addBatch(n):r||(this._undoCommand.addBatch(n),this._redoCommand.clearStack()),this._batchRegistry.add(n))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(e,t,i)=>{this._redoCommand.addBatch(i)}),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var Xu='',eg='';class tg extends Qe{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?Xu:eg,o="ltr"==t.uiLanguageDirection?eg:Xu;this._addButton("undo",i("Undo"),"CTRL+Z",n),this._addButton("redo",i("Redo"),"CTRL+Y",o)}_addButton(e,t,i,n){const o=this.editor;o.ui.componentFactory.add(e,r=>{const s=o.commands.get(e),a=new ed(r);return a.set({label:t,icon:n,keystroke:i,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",()=>{o.execute(e),o.editing.view.focus()}),a})}}class ig extends Qe{static get requires(){return[Zu,tg]}static get pluginName(){return"Undo"}}class ng{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise((i,n)=>{t.onload=()=>{const e=t.result;this._data=e,i(e)},t.onerror=()=>{n("error")},t.onabort=()=>{n("aborted")},this._reader.readAsDataURL(e)})}abort(){this._reader.abort()}}Ke(ng,Ue);class og extends Qe{static get pluginName(){return"FileRepository"}static get requires(){return[Cc]}init(){this.loaders=new Zi,this.loaders.on("add",()=>this._updatePendingAction()),this.loaders.on("remove",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0)}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return Object(l.b)("filerepository-no-upload-adapter"),null;const t=new rg(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then(e=>{this._loadersMap.set(e,t)}).catch(()=>{}),t.on("change:uploaded",()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e}),t.on("change:uploadTotal",()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e}),t}destroyLoader(e){const t=e instanceof rg?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach((e,i)=>{e===t&&this._loadersMap.delete(i)})}_updatePendingAction(){const e=this.editor.plugins.get(Cc);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,i=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(i(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",i)}}else e.remove(this._pendingAction),this._pendingAction=null}}Ke(og,Ue);class rg{constructor(e,t){this.id=s(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new ng,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(e=>this._filePromiseWrapper?e:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new l.a("filerepository-read-wrong-status",this);return this.status="reading",this.file.then(e=>this._reader.read(e)).then(e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e}).catch(e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e})}upload(){if("idle"!=this.status)throw new l.a("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(e=>(this.uploadResponse=e,this.status="idle",e)).catch(e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e})}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise((i,n)=>{t.rejecter=n,t.isFulfilled=!1,e.then(e=>{t.isFulfilled=!0,i(e)}).catch(e=>{t.isFulfilled=!0,n(e)})}),t}}Ke(rg,Ue);class sg extends Mc{constructor(e){super(e),this.buttonView=new ed(e),this._fileInputView=new ag(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class ag extends Mc{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}function lg(){let e=function(e){e=e.toLowerCase();const t=document.cookie.split(";");for(const i of t){const t=i.split("=");if(decodeURIComponent(t[0].trim().toLowerCase())===e)return decodeURIComponent(t[1])}return null}("ckCsrfToken");var t,i;return e&&40==e.length||(e=function(e){let t="";const i=new Uint8Array(e);window.crypto.getRandomValues(i);for(let e=0;e.5?n.toUpperCase():n}return t}(40),t="ckCsrfToken",i=e,document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(i)+";path=/"),e}class cg{constructor(e,t,i){this.loader=e,this.url=t,this.t=i}upload(){return this.loader.file.then(e=>new Promise((t,i)=>{this._initRequest(),this._initListeners(t,i,e),this._sendRequest(e)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.url,!0),e.responseType="json"}_initListeners(e,t,i){const n=this.xhr,o=this.loader,r=(0,this.t)("Cannot upload file:")+` ${i.name}.`;n.addEventListener("error",()=>t(r)),n.addEventListener("abort",()=>t()),n.addEventListener("load",()=>{const i=n.response;if(!i||!i.uploaded)return t(i&&i.error&&i.error.message?i.error.message:r);e({default:i.url})}),n.upload&&n.upload.addEventListener("progress",e=>{e.lengthComputable&&(o.uploadTotal=e.total,o.uploaded=e.loaded)})}_sendRequest(e){const t=new FormData;t.append("upload",e),t.append("ckCsrfToken",lg()),this.xhr.send(t)}}function dg(e,t,i,n){let o,r=null;"function"==typeof n?o=n:(r=e.commands.get(n),o=()=>{e.execute(n)}),e.model.document.on("change:data",(s,a)=>{if(r&&!r.isEnabled||!t.isEnabled)return;const l=Ns(e.model.document.selection.getRanges());if(!l.isCollapsed)return;if("transparent"==a.type)return;const c=Array.from(e.model.document.differ.getChanges()),d=c[0];if(1!=c.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const h=d.position.parent;if(h.is("element","codeBlock"))return;if(h.is("element","listItem")&&"function"!=typeof n&&!["numberedList","bulletedList","todoList"].includes(n))return;if(r&&!0===r.value)return;const u=h.getChild(0),g=e.model.createRangeOn(u);if(!g.containsRange(l)&&!l.end.isEqual(g.end))return;const m=i.exec(u.data.substr(0,l.end.offset));m&&e.model.enqueueChange(t=>{const i=t.createPositionAt(h,0),n=t.createPositionAt(h,m[0].length),r=new ba(i,n);if(!1!==o({match:m})){t.remove(r);const i=e.model.document.selection.getFirstRange(),n=t.createRangeIn(h);!h.isEmpty||n.isEqual(i)||n.containsRange(i,!0)||t.remove(h)}r.detach()})})}function hg(e,t,i,n){let o,r;i instanceof RegExp?o=i:r=i,r=r||(e=>{let t;const i=[],n=[];for(;null!==(t=o.exec(e))&&!(t&&t.length<4);){let{index:e,1:o,2:r,3:s}=t;const a=o+r+s;e+=t[0].length-a.length;const l=[e,e+o.length],c=[e+o.length+r.length,e+o.length+r.length+s.length];i.push(l),i.push(c),n.push([e+o.length,e+o.length+r.length])}return{remove:i,format:n}}),e.model.document.on("change:data",(i,o)=>{if("transparent"==o.type||!t.isEnabled)return;const s=e.model,a=s.document.selection;if(!a.isCollapsed)return;const l=Array.from(s.document.differ.getChanges()),c=l[0];if(1!=l.length||"insert"!==c.type||"$text"!=c.name||1!=c.length)return;const d=a.focus,h=d.parent,{text:u,range:g}=function(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>!n.is("$text")&&!n.is("$textProxy")||n.getAttribute("code")?(i=t.createPositionAfter(n),""):e+n.data,""),range:t.createRange(i,e.end)}}(s.createRange(s.createPositionAt(h,0),d),s),m=r(u),f=ug(g.start,m.format,s),p=ug(g.start,m.remove,s);f.length&&p.length&&s.enqueueChange(e=>{if(!1!==n(e,f))for(const t of p.reverse())e.remove(t)})})}function ug(e,t,i){return t.filter(e=>void 0!==e[0]&&void 0!==e[1]).map(t=>i.createRange(e.getShiftedBy(t[0]),e.getShiftedBy(t[1])))}function gg(e,t){return(i,n)=>{if(!e.commands.get(t).isEnabled)return!1;const o=e.model.schema.getValidRanges(n,t);for(const e of o)i.setAttribute(t,!0,e);i.removeSelectionAttribute(t)}}class mg extends Ze{constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,i=t.document.selection,n=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(i.isCollapsed)n?e.setSelectionAttribute(this.attributeKey,!0):e.removeSelectionAttribute(this.attributeKey);else{const o=t.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const t of o)n?e.setAttribute(this.attributeKey,n,t):e.removeAttribute(this.attributeKey,t)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,i=e.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const e of i.getRanges())for(const i of e.getItems())if(t.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}class fg extends Qe{static get pluginName(){return"BoldEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"bold"}),e.model.schema.setAttributeProperties("bold",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"bold",view:"strong",upcastAlso:["b",e=>{const t=e.getStyle("font-weight");return t?"bold"==t||Number(t)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),e.commands.add("bold",new mg(e,"bold")),e.keystrokes.set("CTRL+B","bold")}}class pg extends Qe{static get pluginName(){return"BoldUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("bold",i=>{const n=e.commands.get("bold"),o=new ed(i);return o.set({label:t("Bold"),icon:'',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("bold"),e.editing.view.focus()}),o})}}class bg extends Qe{static get pluginName(){return"ItalicEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"italic"}),e.model.schema.setAttributeProperties("italic",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"italic",view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add("italic",new mg(e,"italic")),e.keystrokes.set("CTRL+I","italic")}}class wg extends Qe{static get pluginName(){return"ItalicUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("italic",i=>{const n=e.commands.get("italic"),o=new ed(i);return o.set({label:t("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("italic"),e.editing.view.focus()}),o})}}class kg extends Ze{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.schema,n=t.document.selection,o=Array.from(n.getSelectedBlocks()),r=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(r){const t=o.filter(e=>_g(e)||yg(i,e));this._applyQuote(e,t)}else this._removeQuote(e,o.filter(_g))})}_getValue(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!_g(e))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,i=Ns(e.getSelectedBlocks());return!!i&&yg(t,i)}_removeQuote(e,t){vg(e,t).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const i=e.createPositionBefore(t.start.parent);return void e.move(t,i)}t.end.isAtEnd||e.split(t.end);const i=e.createPositionAfter(t.end.parent);e.move(t,i)})}_applyQuote(e,t){const i=[];vg(e,t).reverse().forEach(t=>{let n=_g(t.start);n||(n=e.createElement("blockQuote"),e.wrap(t,n)),i.push(n)}),i.reverse().reduce((t,i)=>t.nextSibling==i?(e.merge(e.createPositionAfter(t)),t):i)}}function _g(e){return"blockQuote"==e.parent.name?e.parent:null}function vg(e,t){let i,n=0;const o=[];for(;n{const n=e.model.document.differ.getChanges();for(const e of n)if("insert"==e.type){const n=e.position.nodeAfter;if(!n)continue;if(n.is("element","blockQuote")&&n.isEmpty)return i.remove(n),!0;if(n.is("element","blockQuote")&&!t.checkChild(e.position,n))return i.unwrap(n),!0;if(n.is("element")){const e=i.createRangeIn(n);for(const n of e.getItems())if(n.is("element","blockQuote")&&!t.checkChild(i.createPositionBefore(n),n))return i.unwrap(n),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return i.remove(t),!0}return!1});const i=this.editor.editing.view.document,n=e.model.document.selection,o=e.commands.get("blockQuote");this.listenTo(i,"enter",(t,i)=>{if(!n.isCollapsed||!o.value)return;n.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"}),this.listenTo(i,"delete",(t,i)=>{if("backward"!=i.direction||!n.isCollapsed||!o.value)return;const r=n.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"})}}i(67);class Ag extends Qe{static get pluginName(){return"BlockQuoteUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("blockQuote",i=>{const n=e.commands.get("blockQuote"),o=new ed(i);return o.set({label:t("Block quote"),icon:Tc.quote,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),o})}}class Cg extends Qe{static get pluginName(){return"CKFinderUI"}init(){const e=this.editor,t=e.ui.componentFactory,i=e.t;t.add("ckfinder",t=>{const n=e.commands.get("ckfinder"),o=new ed(t);return o.set({label:i("Insert image or file"),icon:'',tooltip:!0}),o.bind("isEnabled").to(n),o.on("execute",()=>{e.execute("ckfinder"),e.editing.view.focus()}),o})}}class Tg extends Ze{constructor(e){super(e),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",()=>this.refresh(),{priority:"low"})}refresh(){const e=this.editor.commands.get("insertImage"),t=this.editor.commands.get("link");this.isEnabled=e.isEnabled||t.isEnabled}execute(){const e=this.editor,t=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=t&&"modal"!=t)throw new l.a("ckfinder-unknown-openermethod",e);const i=this.editor.config.get("ckfinder.options")||{};i.chooseFiles=!0;const n=i.onInit;i.language||(i.language=e.locale.uiLanguage),i.onInit=t=>{n&&n(t),t.on("files:choose",i=>{const n=i.data.files.toArray(),o=n.filter(e=>!e.isImage()),r=n.filter(e=>e.isImage());for(const t of o)e.execute("link",t.getUrl());const s=[];for(const e of r){const i=e.getUrl();s.push(i||t.request("file:getProxyUrl",{file:e}))}s.length&&Eg(e,s)}),t.on("file:choose:resizedImage",t=>{const i=t.data.resizedUrl;if(i)Eg(e,[i]);else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not obtain resized image URL."),{title:i("Selecting resized image failed"),namespace:"ckfinder"})}})},window.CKFinder[t](i)}}function Eg(e,t){if(e.commands.get("insertImage").isEnabled)e.execute("insertImage",{source:t});else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not insert image at the current position."),{title:i("Inserting image failed"),namespace:"ckfinder"})}}class Ig extends Qe{static get pluginName(){return"CKFinderEditing"}static get requires(){return[Rd,"LinkEditing"]}init(){const e=this.editor;if(!e.plugins.has("ImageBlockEditing")&&!e.plugins.has("ImageInlineEditing"))throw new l.a("ckfinder-missing-image-plugin",e);e.commands.add("ckfinder",new Tg(e))}}class Sg extends Qe{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",og]}init(){const e=this.editor,t=e.plugins.get("CloudServices"),i=t.token,n=t.uploadUrl;i&&(this._uploadGateway=e.plugins.get("CloudServicesCore").createUploadGateway(i,n),e.plugins.get(og).createUploadAdapter=e=>new Pg(this._uploadGateway,e))}}class Pg{constructor(e,t){this.uploadGateway=e,this.loader=t}upload(){return this.loader.file.then(e=>(this.fileUploader=this.uploadGateway.upload(e),this.fileUploader.on("progress",(e,t)=>{this.loader.uploadTotal=t.total,this.loader.uploaded=t.uploaded}),this.fileUploader.send()))}abort(){this.fileUploader.abort()}}class Mg extends Ze{refresh(){const e=this.editor.model,t=Ns(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&Ng(t,e.schema)}execute(e={}){const t=this.editor.model,i=t.document;t.change(n=>{const o=(e.selection||i.selection).getSelectedBlocks();for(const e of o)!e.is("element","paragraph")&&Ng(e,t.schema)&&n.rename(e,"paragraph")})}}function Ng(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class Rg extends Ze{execute(e){const t=this.editor.model;let i=e.position;t.change(e=>{const n=e.createElement("paragraph");if(!t.schema.checkChild(i.parent,n)){const o=t.schema.findAllowedParent(i,n);if(!o)return;i=e.split(i,o).position}t.insertContent(n,i),e.setSelection(n,"in")})}}class Og extends Qe{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new Mg(e)),e.commands.add("insertParagraph",new Rg(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>Og.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Og.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class zg extends Ze{constructor(e,t){super(e),this.modelElements=t}refresh(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some(t=>Dg(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,i=t.document,n=e.value;t.change(e=>{const o=Array.from(i.selection.getSelectedBlocks()).filter(e=>Dg(e,n,t.schema));for(const t of o)t.is("element",n)||e.rename(t,n)})}}function Dg(e,t,i){return i.checkChild(e.parent,t)&&!i.isObject(e)}class Lg extends Qe{static get pluginName(){return"HeadingEditing"}constructor(e){super(e),e.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Og]}init(){const e=this.editor,t=e.config.get("heading.options"),i=[];for(const n of t)"paragraph"!==n.model&&(e.model.schema.register(n.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(n),i.push(n.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new zg(e,i))}afterInit(){const e=this.editor,t=e.commands.get("enter"),i=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",(t,n)=>{const o=e.model.document.selection.getFirstPosition().parent;i.some(e=>o.is("element",e.model))&&!o.is("element","paragraph")&&0===o.childCount&&n.writer.rename(o,"paragraph")})}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:a.get("low")+1})}}i(13);class Vg extends Qe{static get pluginName(){return"HeadingUI"}init(){const e=this.editor,t=e.t,i=function(e){const t=e.t,i={Paragraph:t("Paragraph"),"Heading 1":t("Heading 1"),"Heading 2":t("Heading 2"),"Heading 3":t("Heading 3"),"Heading 4":t("Heading 4"),"Heading 5":t("Heading 5"),"Heading 6":t("Heading 6")};return e.config.get("heading.options").map(e=>{const t=i[e.title];return t&&t!=e.title&&(e.title=t),e})}(e),n=t("Choose heading"),o=t("Heading");e.ui.componentFactory.add("heading",t=>{const r={},s=new Zi,a=e.commands.get("heading"),l=e.commands.get("paragraph"),c=[a];for(const e of i){const t={type:"button",model:new Od({label:e.title,class:e.class,withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(l,"value"),t.model.set("commandName","paragraph"),c.push(l)):(t.model.bind("isOn").to(a,"value",t=>t===e.model),t.model.set({commandName:"heading",commandValue:e.model})),s.add(t),r[e.model]=e.title}const d=xd(t);return Cd(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:o}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(c,"isEnabled",(...e)=>e.some(e=>e)),d.buttonView.bind("label").to(a,"value",l,"value",(e,t)=>{const i=e||t&&"paragraph";return r[i]?r[i]:n}),this.listenTo(d,"execute",t=>{e.execute(t.source.commandName,t.source.commandValue?{value:t.source.commandValue}:void 0),e.editing.view.focus()}),d})}}class jg extends Qe{static get requires(){return[Hd]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",t=>{(function(e){const t=e.getSelectedElement();return!(!t||!Oh(t))})(e.editing.view.document.selection)&&t.stop()},{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:i,getRelatedElement:n,balloonClassName:o="ck-toolbar-container"}){if(!i.length)return void Object(l.b)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,s=r.t,a=new pd(r.locale);if(a.ariaLabel=t||s("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.a("widget-toolbar-duplicated",this,{toolbarId:e});a.fillFromConfig(i,r.ui.componentFactory),this._toolbarDefinitions.set(e,{view:a,getRelatedElement:n,balloonClassName:o})}_updateToolbarsVisibility(){let e=0,t=null,i=null;for(const n of this._toolbarDefinitions.values()){const o=n.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&o)if(this.editor.ui.focusTracker.isFocused){const r=o.getAncestors().length;r>e&&(e=r,t=o,i=n)}else this._isToolbarVisible(n)&&this._hideToolbar(n);else this._isToolbarInBalloon(n)&&this._hideToolbar(n)}i&&this._showToolbar(i,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?Bg(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:Fg(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);Bg(this.editor,t)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function Bg(e,t){const i=e.plugins.get("ContextualBalloon"),n=Fg(e,t);i.updatePosition(n)}function Fg(e,t){const i=e.editing.view,n=Ld.defaultPositions;return{target:i.domConverter.mapViewToDom(t),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,Hh]}}class Hg{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,i){const n=new Cs(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const i of t)if(e.classList.contains("ck-widget__resizer__handle-"+i))return i}(e),this._referenceCoordinates=function(e,t){const i=new Cs(e),n=t.split("-"),o={x:"right"==n[1]?i.right:i.left,y:"bottom"==n[0]?i.bottom:i.top};return o.x+=e.ownerDocument.defaultView.scrollX,o.y+=e.ownerDocument.defaultView.scrollY,o}(t,function(e){const t=e.split("-"),i={top:"bottom",bottom:"top",left:"right",right:"left"};return`${i[t[0]]}-${i[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=n.width,this.originalHeight=n.height,this.aspectRatio=n.width/n.height;const o=i.style.width;o&&o.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(o):this.originalWidthPercents=function(e,t){const i=e.parentElement,n=parseFloat(i.ownerDocument.defaultView.getComputedStyle(i).width);return t.width/n*100}(i,n)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}Ke(Hg,Ue);class Ug extends Mc{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",e=>e?"ck-orientation-"+e:"")],style:{display:e.if("_isVisible","none",e=>!e)}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",(e,t)=>null!==e&&null!==t),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",(t,i,n)=>"px"===e.unit?`${t}×${i}`:n+"%"),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",(e,t,i)=>t<50||i<50?"above-center":e)}_dismiss(){this.unbind(),this._isVisible=!1}}class Wg{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())},{priority:"high"}),this.on("change:isEnabled",()=>{this.isEnabled&&this.redraw()})}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change(i=>{const n=i.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const i=this.toDomElement(t);return e._appendHandles(i),e._appendSizeUI(i),e.on("change:isEnabled",(e,t,n)=>{i.style.display=n?"":"none"}),i.style.display=e.isEnabled?"":"none",i}));i.insert(i.createPositionAt(t,"end"),n),i.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=n})}begin(e){this.state=new Hg(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change(e=>{const i=this._options.unit||"%",n=("%"===i?t.widthPercents:t.width)+i;e.setStyle("width",n,this._options.viewElement)});const i=this._getHandleHost(),n=new Cs(i);t.handleHostWidth=Math.round(n.width),t.handleHostHeight=Math.round(n.height);const o=new Cs(i);t.width=Math.round(o.width),t.height=Math.round(o.height),this.redraw(n),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change(()=>{this._cleanup(),this._options.onCommit(t)})}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((i=t)&&i.ownerDocument&&i.ownerDocument.contains(i)))return;var i;const n=t.parentElement,o=this._getHandleHost(),r=this._viewResizerWrapper,s=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(n.isSameNode(o)){const t=e||new Cs(o);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[o.offsetWidth+"px",o.offsetHeight+"px",o.offsetLeft+"px",o.offsetTop+"px"];"same"!==ln(s,a)&&this._options.editor.editing.view.change(e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)})}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change(e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)})}_proposeNewSize(e){const t=this.state,i={x:(n=e).pageX,y:n.pageY};var n;const o=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(i.x+t.originalWidth),y:i.y-t.originalHeight-t._referenceCoordinates.y};o&&t.activeHandlePosition.endsWith("-right")&&(r.x=i.x-(t._referenceCoordinates.x+t.originalWidth)),o&&(r.x*=2);const s={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};s.dominant=s.width/t.aspectRatio>s.height?"width":"height",s.max=s[s.dominant];const a={width:s.width,height:s.height};return"width"==s.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const n of t)e.appendChild(new Nc({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(i=n,"ck-widget__resizer__handle-"+i)}}).render());var i}_appendSizeUI(e){this._sizeView=new Ug,this._sizeView.render(),e.appendChild(this._sizeView.element)}}Ke(Wg,Ue);i(70);Ke(class extends Qe{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=vr.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(uh),this._observer=Object.create(Mr),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const i=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=iu(i,200),this.on("change:visibleResizer",i),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())},{priority:"lowest"}),this._observer.listenTo(vr.window,"resize",this._redrawFocusedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",()=>{const e=n.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null})}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new Wg(e),i=this.editor.plugins;if(t.attach(),i.has("WidgetToolbarRepository")){const e=i.get("WidgetToolbarRepository");t.on("begin",()=>{e.forceDisabled("resize")},{priority:"lowest"}),t.on("cancel",()=>{e.clearForceDisabled("resize")},{priority:"highest"}),t.on("commit",()=>{e.clearForceDisabled("resize")},{priority:"highest"})}this._resizers.set(e.viewElement,t);const n=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(n)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const i=t.domTarget;Wg.isResizeHandle(i)&&(this._activeResizer=this._getResizerByHandle(i),this._activeResizer&&(this._activeResizer.begin(i),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}},Ue);class qg extends Ze{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change(t=>{t.setAttribute("alt",e.newValue,o)})}}function $g(e,t){const i=e.createEmptyElement("img"),n="imageBlock"===t?e.createContainerElement("figure",{class:"image"}):e.createContainerElement("span",{class:"image-inline"},{isAllowedInsideAttributeElement:!0});return e.insert(e.createPositionAt(n,0),i),n}function Yg(e,t){if(e.plugins.has("ImageInlineEditing")!==e.plugins.has("ImageBlockEditing"))return{name:"img",attributes:{src:!0}};const i=e.plugins.get("ImageUtils");return e=>{if(!i.isInlineImageView(e)||!e.hasAttribute("src"))return null;return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:{name:!0,attributes:["src"]}}}function Gg(e,t){const i=Ns(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class Kg extends Qe{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,r=o.document.selection;i=Qg(n,t||r,i),e={...Object.fromEntries(r.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change(n=>{const s=n.createElement(i,e);return t||"imageInline"==i||(t=Fh(r,o)),o.insertContent(s,t),s.parent?(n.setSelection(s,"on"),s):null})}getClosestSelectedImageWidget(e){const t=e.getSelectedElement();if(t&&this.isImageWidget(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&this.isImageWidget(i))return i;i=i.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==Qg(e,t)){const i=function(e,t){const i=Fh(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return zh(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&Oh(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function Qg(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?Gg(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class Jg extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new qg(this.editor))}}i(72),i(7);class Zg extends Mc{constructor(e){super(e);const t=this.locale.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(t("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(t("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),Ic(this)}render(){super.render(),this.keystrokes.listenTo(this.element),Sc({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)})}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new Md(this.locale,Nd);return t.label=e("Text alternative"),t}}function Xg(e){const t=e.editing.view,i=Ld.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.viewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}class em extends Qe{static get requires(){return[Hd]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",i=>{const n=e.commands.get("imageTextAlternative"),o=new ed(i);return o.set({label:t("Change image text alternative"),icon:Tc.lowVision,tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",()=>{this._showForm()}),o})}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new Zg(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this._form.keystrokes.set("Esc",(e,t)=>{this._hideForm(!0),t()}),this.listenTo(e.ui,"update",()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=Xg(e);t.updatePosition(i)}}(e):this._hideForm(!0)}),Ec({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:Xg(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class tm extends Qe{static get requires(){return[Jg,em]}static get pluginName(){return"ImageTextAlternative"}}function im(e,t){return e=>{e.on("attribute:srcset:"+t,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function nm(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class om extends Or{observe(e){this.listenTo(e,"load",(e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)},{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class rm extends Ze{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&Object(l.b)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&Object(l.b)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=en(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})})}}class sm extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(om),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new rm(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class am extends Ze{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change(e=>{const r=Array.from(t.markers).filter(e=>e.getRange().containsItem(n)),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const a=e.createRangeOn(s);for(const t of r){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(a,!0):a;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}}):null}}class lm extends Qe{static get requires(){return[sm,Kg,_h]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new am(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageBlock",view:(e,{writer:t})=>$g(t,"imageBlock")}),i.for("editingDowncast").elementToElement({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget($g(i,"imageBlock"),i,t("image widget"))}),i.for("downcast").add(nm(n,"imageBlock","src")).add(nm(n,"imageBlock","alt")).add(im(n,"imageBlock")),i.for("upcast").elementToElement({view:Yg(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",{src:e.getAttribute("src")})}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!o.hasAttribute("src")||!n.consumable.test(o,{name:!0}))return;const r=Ns(n.convertItem(o,i.modelCursor).modelRange.getItems());r&&(n.convertChildren(i.viewItem,r),n.updateConversionResult(r,i))}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isInlineImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageBlock"===Gg(t.schema,l)){const e=new gh(i.document),t=s.map(t=>e.createElement("figure",{class:"image"},t));r.content=e.createDocumentFragment(t)}})}}i(11);class cm extends Qe{static get requires(){return[lm,eu,tm]}static get pluginName(){return"ImageBlock"}}class dm extends Qe{static get requires(){return[sm,Kg,_h]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{isObject:!0,isInline:!0,allowWhere:"$text",allowAttributes:["alt","src","srcset"]}),t.addChildCheck((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new am(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToElement({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget($g(i,"imageInline"),i,t("image widget"))}),i.for("downcast").add(nm(n,"imageInline","src")).add(nm(n,"imageInline","alt")).add(im(n,"imageInline")),i.for("upcast").elementToElement({view:Yg(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",{src:e.getAttribute("src")})})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isBlockImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageInline"===Gg(t.schema,l)){const e=new gh(i.document),t=s.map(t=>1===t.childCount?(Array.from(t.getAttributes()).forEach(i=>e.setAttribute(...i,n.findViewImgElement(t))),t.getChild(0)):t);r.content=e.createDocumentFragment(t)}})}}class hm extends Qe{static get requires(){return[dm,eu,tm]}static get pluginName(){return"ImageInline"}}function um(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}function gm(e,t){const i=t.getFirstPosition().findAncestor("caption");return i&&e.isBlockImage(i.parent)?i:null}class mm extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils");if(!e.plugins.has(lm))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=gm(t,i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!um(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)})}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const r=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=r||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageUtils");let r,s=i.getSelectedElement();s?r=um(s):(r=gm(o,i),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class fm extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new mm(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.conversion.for("upcast").elementToElement({view:e=>function(e,t){return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}(i,e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!i.isBlockImage(e.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Kd({view:t,element:r,text:n("Enter image caption"),keepOnFocus:!0});const s=Bh(r,o);return Vh(s,o,(e,t,i)=>i.addClass(en(t.classes),e),(e,t,i)=>i.removeClass(en(t.classes),e)),s}}),e.editing.mapper.on("modelToViewPosition",pm(t)),e.data.mapper.on("modelToViewPosition",pm(t))}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.commands.get("imageTypeInline"),n=e.commands.get("imageTypeBlock"),o=e=>{if(!e.return)return;const{oldElement:i,newElement:n}=e.return;if(!i)return;if(t.isBlockImage(i)){const e=um(i);if(e)return void this._saveCaption(n,e)}const o=this._getSavedCaption(i);o&&this._saveCaption(n,o)};i&&this.listenTo(i,"execute",o,{priority:"low"}),n&&this.listenTo(n,"execute",o,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Js.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}function pm(e){return(t,i)=>{const n=i.modelPosition,o=n.parent;if(!o.is("element","imageBlock"))return;const r=i.mapper.toViewElement(o);i.viewPosition=e.createPositionAt(r,n.offset+1)}}class bm extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageCaptionUI"}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",o=>{const r=e.commands.get("toggleImageCaption"),s=new ed(o);return s.set({icon:Tc.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",e=>n(e?"Toggle caption off":"Toggle caption on")),this.listenTo(s,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const n=gm(i,e.model.document.selection);if(n){const i=e.editing.mapper.toViewElement(n);t.scrollToTheSelection(),t.change(e=>{e.addClass("image__caption_highlighted",i)})}}),s})}}i(76);class wm extends Ze{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]}))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change(t=>{const o=e.value;let r=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,r)&&(this.editor.execute(n.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",r):t.setAttribute("imageStyle",o,r)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:km,objectInline:_m,objectLeft:vm,objectRight:ym,objectCenter:xm,objectBlockLeft:Am,objectBlockRight:Cm}=Tc,Tm={inline:{name:"inline",title:"In line",icon:_m,modelElements:["imageInline"],isDefault:!0},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:vm,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"},alignBlockLeft:{name:"alignBlockLeft",title:"Left aligned image",icon:Am,modelElements:["imageBlock"],className:"image-style-block-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:xm,modelElements:["imageBlock"],className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:ym,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"},alignBlockRight:{name:"alignBlockRight",title:"Right aligned image",icon:Cm,modelElements:["imageBlock"],className:"image-style-block-align-right"},block:{name:"block",title:"Centered image",icon:xm,modelElements:["imageBlock"],isDefault:!0},side:{name:"side",title:"Side image",icon:ym,modelElements:["imageBlock"],className:"image-style-side"}},Em={full:km,left:Am,right:Cm,center:xm,inlineLeft:vm,inlineRight:ym,inline:_m},Im=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Sm(e){Object(l.b)("image-style-configuration-definition-invalid",e)}var Pm={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map(e=>function(e){e="string"==typeof e?Tm[e]?{...Tm[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Tm[e.name],e);"string"==typeof e.icon&&(e.icon=Em[e.icon]||e.icon);return e}(e)).filter(t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Sm({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some(e=>o.includes(e)))return Object(l.b)("image-style-missing-dependency",{style:e,missingPlugins:n.map(e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}(t,e))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...Im]:[]},warnInvalidStyle:Sm,DEFAULT_OPTIONS:Tm,DEFAULT_ICONS:Em,DEFAULT_DROPDOWN_DEFINITIONS:Im};function Mm(e,t){for(const i of t)if(i.name===e)return i}class Nm extends Qe{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Kg]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Pm,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new wm(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(r=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Mm(t.attributeNewValue,r),o=Mm(t.attributeOldValue,r),s=i.mapper.toViewElement(t.item),a=i.writer;o&&a.removeClass(o.className,s),n&&a.addClass(n.className,s)});var r;const s=function(e){const t={imageInline:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,r=Ns(i.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle"))for(const e of t[r.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,r)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(Kg),n=new Map(this.normalizedStyles.map(e=>[e.name,e]));t.registerPostFixer(e=>{let o=!1;for(const r of t.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let t="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const a=n.get(s);a&&a.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o})}}i(78);class Rm extends Qe{static get requires(){return[Nm]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=Om(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=Om([...t.filter(w),...Pm.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,n=>{let o;const{defaultItem:r,items:s,title:a}=e,l=s.filter(e=>t.find(({name:t})=>zm(t)===e)).map(e=>{const t=i.create(e);return e===r&&(o=t),t});s.length!==l.length&&Pm.warnInvalidStyle({dropdown:e});const c=xd(n,sd),d=c.buttonView;return Ad(c,l),d.set({label:Dm(a,o.label),class:null,tooltip:!0}),d.bind("icon").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return t<0?o.icon:l[t].icon}),d.bind("label").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return Dm(a,t<0?o.label:l[t].label)}),d.bind("isOn").toMany(l,"isOn",(...e)=>e.some(Z)),d.bind("class").toMany(l,"isOn",(...e)=>e.some(Z)?"ck-splitbutton_flatten":null),d.on("execute",()=>{l.some(({isOn:e})=>e)?c.isOpen=!c.isOpen:o.fire("execute")}),c.bind("isEnabled").toMany(l,"isEnabled",(...e)=>e.some(Z)),c})}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(zm(t),i=>{const n=this.editor.commands.get("imageStyle"),o=new ed(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",e=>e===t),o.on("execute",this._executeCommand.bind(this,t)),o})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function Om(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function zm(e){return"imageStyle:"+e}function Dm(e,t){return(e?e+": ":"")+t}function Lm(e){const t=e.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${t.join("|")})$`)}function Vm(e){return new Promise((t,i)=>{const n=e.getAttribute("src");fetch(n).then(e=>e.blob()).then(e=>{const i=jm(e,n),o=i.replace("image/",""),r=new File([e],"image."+o,{type:i});t(r)}).catch(e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise((t,i)=>{const n=vr.document.createElement("img");n.addEventListener("load",()=>{const e=vr.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob(e=>e?t(e):i())}),n.addEventListener("error",()=>i()),n.src=e})}(e).then(t=>{const i=jm(t,e),n=i.replace("image/","");return new File([t],"image."+n,{type:i})})}(n).then(t).catch(i):i(e))})}function jm(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Bm extends Qe{static get pluginName(){return"ImageUploadUI"}init(){const e=this.editor,t=e.t,i=i=>{const n=new sg(i),o=e.commands.get("uploadImage"),r=e.config.get("image.upload.types"),s=Lm(r);return n.set({acceptedType:r.map(e=>"image/"+e).join(","),allowMultipleFiles:!0}),n.buttonView.set({label:t("Insert image"),icon:Tc.image,tooltip:!0}),n.buttonView.bind("isEnabled").to(o),n.on("done",(t,i)=>{const n=Array.from(i).filter(e=>s.test(e.type));n.length&&e.execute("uploadImage",{file:n})}),n};e.ui.componentFactory.add("uploadImage",i),e.ui.componentFactory.add("imageUpload",i)}}i(80),i(82),i(84);class Fm extends Qe{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/svg+xml;utf8,"+encodeURIComponent('')}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",(...e)=>this.uploadStatusChange(...e)),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",(...e)=>this.uploadStatusChange(...e))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,r=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),a=n.plugins.get(og),l=r?t.attributeNewValue:null,c=this.placeholder,d=n.editing.mapper.toViewElement(o),h=i.writer;if("reading"==l)return Hm(d,h),void Um(s,c,d,h);if("uploading"==l){const e=a.loaders.get(r);return Hm(d,h),void(e?(Wm(d,h),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",(e,t,i)=>{n.change(e=>{e.setStyle("width",i+"%",o)})})}(d,h,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,d,h,e)):Um(s,c,d,h))}"complete"==l&&a.loaders.get(r)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout(()=>{i.change(e=>e.remove(e.createRangeOn(n)))},3e3)}(d,h,n.editing.view),function(e,t){$m(e,t,"progressBar")}(d,h),Wm(d,h),function(e,t){t.removeClass("ck-appear",e)}(d,h)}}function Hm(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function Um(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),qm(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function Wm(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),$m(e,t,"placeholder")}function qm(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function $m(e,t,i){const n=qm(e,i);n&&t.remove(t.createRangeOn(n))}class Ym extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=en(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if(t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);this._uploadImage(e,o,t)}else this._uploadImage(e,o)})}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(og).createLoader(e),r=n.plugins.get("ImageUtils");o&&r.insertImage({...t,uploadId:o.id},i)}}class Gm extends Qe{static get requires(){return[og,Rd,_h,Kg]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(og),o=e.plugins.get("ImageUtils"),r=Lm(e.config.get("image.upload.types")),s=new Ym(e);e.commands.add("uploadImage",s),e.commands.add("imageUpload",s),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",(t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter(e=>!!e&&r.test(e.type));o.length&&(t.stop(),e.model.change(t=>{i.targetRanges&&t.setSelection(i.targetRanges.map(t=>e.editing.mapper.toModelRange(t))),e.model.enqueueChange("default",()=>{e.execute("uploadImage",{file:o})})}))}),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(t,i)=>{const r=Array.from(e.editing.view.createRangeIn(i.content)).filter(e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(o,e.item)&&!e.item.getAttribute("uploadProcessed")).map(e=>({promise:Vm(e.item),imageElement:e.item}));if(!r.length)return;const s=new gh(e.editing.view.document);for(const e of r){s.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(s.setAttribute("src","",e.imageElement),s.setAttribute("uploadId",t.id,e.imageElement))}}),e.editing.view.document.on("dragover",(e,t)=>{t.preventDefault()}),t.on("change",()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,r="$graveyard"==t.position.root.rootName;for(const t of Km(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(r?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}}),this.on("uploadComplete",(e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change(e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(og),r=t.plugins.get(Rd),s=t.plugins.get("ImageUtils"),a=this._uploadImageElements;return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","reading",a.get(e.id))}),e.read().then(()=>{const n=e.upload(),o=a.get(e.id);if(So.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n})}return i.enqueueChange("transparent",e=>{e.setAttribute("uploadStatus","uploading",o)}),n}).then(t=>{i.enqueueChange("transparent",i=>{const n=a.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})}),l()}).catch(t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&r.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange("transparent",t=>{t.remove(a.get(e.id))}),l()});function l(){i.enqueueChange("transparent",t=>{const i=a.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),a.delete(e.id)}),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter(e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0}).map(t=>`${e[t]} ${t}w`).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function Km(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter(e=>i.isImage(e.item)).map(e=>e.item)}class Qm extends Qe{static get pluginName(){return"IndentEditing"}init(){const e=this.editor;e.commands.add("indent",new et(e)),e.commands.add("outdent",new et(e))}}var Jm='',Zm='';class Xm extends Qe{static get pluginName(){return"IndentUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?Jm:Zm,o="ltr"==t.uiLanguageDirection?Zm:Jm;this._defineButton("indent",i("Increase indent"),n),this._defineButton("outdent",i("Decrease indent"),o)}_defineButton(e,t,i){const n=this.editor;n.ui.componentFactory.add(e,o=>{const r=n.commands.get(e),s=new ed(o);return s.set({label:t,icon:i,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",()=>{n.execute(e),n.editing.view.focus()}),s})}}class ef{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(e=>this._definitions.add(e)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const r=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,r);for(const t in e.styles)n.setStyle(t,e.styles[t],r);n.setCustomProperty("link",!0,r),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(i.mapper.toViewRange(t.range),r):n.unwrap(i.mapper.toViewRange(t.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),r=Array.from(o.getChildren()).find(e=>"a"===e.name);for(const e of this._definitions){const n=gn(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,r);e.classes&&i.addClass(e.classes,r);for(const t in e.styles)i.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,r);e.classes&&i.removeClass(e.classes,r);for(const t in e.styles)i.removeStyle(t,r)}}})}}}var tf=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:zn(e,t,i)},nf=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var of=function(e){return nf.test(e)};var rf=function(e){return e.split("")},sf="[\\ud800-\\udfff]",af="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",lf="\\ud83c[\\udffb-\\udfff]",cf="[^\\ud800-\\udfff]",df="(?:\\ud83c[\\udde6-\\uddff]){2}",hf="[\\ud800-\\udbff][\\udc00-\\udfff]",uf="(?:"+af+"|"+lf+")"+"?",gf="[\\ufe0e\\ufe0f]?"+uf+("(?:\\u200d(?:"+[cf,df,hf].join("|")+")[\\ufe0e\\ufe0f]?"+uf+")*"),mf="(?:"+[cf+af+"?",af,df,hf,sf].join("|")+")",ff=RegExp(lf+"(?="+lf+")|"+mf+gf,"g");var pf=function(e){return e.match(ff)||[]};var bf=function(e){return of(e)?pf(e):rf(e)};var wf=function(e){return function(t){t=Pn(t);var i=of(t)?bf(t):void 0,n=i?i[0]:t.charAt(0),o=i?tf(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase");const kf=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,_f=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,vf=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,yf=/^((\w+:(\/{2,})?)|(\W))/i;function xf(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function Af(e){return function(e){return e.replace(kf,"").match(_f)}(e=String(e))?e:"#"}function Cf(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function Tf(e,t){const i=(n=e,vf.test(n)?"mailto:":t);var n;const o=!!i&&!yf.test(e);return e&&o?i+e:e}class Ef extends Ze{constructor(e){super(e),this.manualDecorators=new Zi,this.automaticDecorators=new ef}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||Ns(t.getSelectedBlocks());Cf(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,o=[],r=[];for(const e in t)t[e]?o.push(e):r.push(e);i.change(t=>{if(n.isCollapsed){const s=n.getFirstPosition();if(n.hasAttribute("linkHref")){const a=qu(s,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,a),o.forEach(e=>{t.setAttribute(e,!0,a)}),r.forEach(e=>{t.removeAttribute(e,a)}),t.setSelection(t.createPositionAfter(a.end.nodeBefore))}else if(""!==e){const r=gn(n.getAttributes());r.set("linkHref",e),o.forEach(e=>{r.set(e,!0)});const{end:a}=i.insertContent(t.createText(e,r),s);t.setSelection(a)}["linkHref",...o,...r].forEach(e=>{t.removeSelectionAttribute(e)})}else{const s=i.schema.getValidRanges(n.getRanges(),"linkHref"),a=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&a.push(t.createRangeOn(e));const l=a.slice();for(const e of s)this._isRangeToUpdate(e,a)&&l.push(e);for(const i of l)t.setAttribute("linkHref",e,i),o.forEach(e=>{t.setAttribute(e,!0,i)}),r.forEach(e=>{t.removeAttribute(e,i)})}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return Cf(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class If extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();Cf(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change(e=>{const o=i.isCollapsed?[qu(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of o)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)})}}class Sf{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:r}){this.id=e,this.set("value"),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}Ke(Sf,Ue);i(86);const Pf=/^(https?:)?\/\//;class Mf extends Qe{static get pluginName(){return"LinkEditing"}static get requires(){return[Pu,Tu,_h]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:xf}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>xf(Af(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new Ef(e)),e.commands.add("unlink",new If(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach(e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e)),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:"link"+wf(i)});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter(e=>"automatic"===e.mode)),this._enableManualDecorators(t.filter(e=>"manual"===e.mode));e.plugins.get(Pu).registerAttribute("linkHref"),function(e,t,i,n){const o=e.editing.view,r=new Set;o.document.registerPostFixer(o=>{const s=e.model.document.selection;let a=!1;if(s.hasAttribute(t)){const l=qu(s.getFirstPosition(),t,s.getAttribute(t),e.model),c=e.editing.mapper.toViewRange(l);for(const e of c.getItems())e.is("element",i)&&!e.hasClass(n)&&(o.addClass(n,e),r.add(e),a=!0)}return a}),e.conversion.for("editingDowncast").add(e=>{function t(){o.change(e=>{for(const t of r.values())e.removeClass(n,t),r.delete(t)})}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})})}(e,"linkHref","a","ck-link_selected"),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:"automatic",callback:e=>Pf.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach(e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new Sf(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i})=>{if(t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change(t=>{Nf(t,Of(e.schema))}))},{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,t=e.model;e.editing.view.addObserver(uh);let i=!1;this.listenTo(e.editing.view.document,"mousedown",()=>{i=!0}),this.listenTo(e.editing.view.document,"selectionChange",()=>{if(!i)return;i=!1;const e=t.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const n=e.getFirstPosition(),o=qu(n,"linkHref",e.getAttribute("linkHref"),t);(n.isTouching(o.start)||n.isTouching(o.end))&&t.change(e=>{Nf(e,Of(t.schema))})})}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",()=>{n=!0},{priority:"high"}),this.listenTo(e.model,"deleteContent",()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:Rf(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),o=i.nodeAfter;if(!o)return!1;if(!o.is("$text"))return!1;if(!o.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(o===r)return!0;return qu(i,"linkHref",o.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))},{priority:"high"}),this.listenTo(e.model,"insertContent",(t,[o])=>{n=!1,Rf(e)&&i&&(e.model.change(e=>{for(const[t,n]of i)e.setAttribute(t,n,o)}),i=null)},{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let o=!1,r=!1;this.listenTo(n.document,"delete",(e,t)=>{r=t.domEvent.keyCode===No.backspace},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{o=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=qu(e,"linkHref",n,t);o=r.containsPosition(e)||r.end.isEqual(e)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{r&&(r=!1,o||e.model.enqueueChange(e=>{Nf(e,Of(t.schema))}))},{priority:"low"})}}function Nf(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function Rf(e){return e.plugins.get("Input").isInput(e.model.change(e=>e.batch))}function Of(e){return e.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}i(88);class zf extends Mc{constructor(e,t){super(e);const i=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(t),this.children=this._createFormChildren(t.manualDecorators),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const n=["ck","ck-link-form","ck-responsive-form"];t.manualDecorators.length&&n.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:n,tabindex:"-1"},children:this.children}),Ic(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((e,t)=>(e[t.name]=t.isOn,e),{})}render(){super.render(),Sc({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new Md(this.locale,Nd);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new td(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",(e,t)=>void 0===t&&void 0===e?i.defaultValue:e),n.on("execute",()=>{i.set("value",!n.isOn)}),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new Mc;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map(e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}})),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}i(90);class Df extends Mc{constructor(e){super(e);const t=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(t("Unlink"),'',"unlink"),this.editButtonView=this._createButton(t("Edit link"),Tc.pencil,"edit"),this.set("href"),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new ed(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new ed(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",e=>e&&Af(e)),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",e=>e||i("This link has no URL")),e.bind("isEnabled").to(this,"href",e=>!!e),e.template.tag="a",e.template.eventListeners={},e}}class Lf extends Qe{static get requires(){return[Hd]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(hh),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(Hd),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:"link-ui",view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:"link-ui",view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new Df(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",()=>{this._addFormView()}),this.listenTo(t,"unlink",()=>{e.execute("unlink"),this._hideUI()}),t.keystrokes.set("Esc",(e,t)=>{this._hideUI(),t()}),t.keystrokes.set("Ctrl+K",(e,t)=>{this._addFormView(),t()}),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new zf(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",e=>!e),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",()=>{const{value:t}=n.urlInputView.fieldView.element,o=Tf(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(e,t)=>{this._closeFormView(),t()}),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set("Ctrl+K",(e,i)=>{i(),t.isEnabled&&this._showUI(!0)}),e.ui.componentFactory.add("link",e=>{const n=new ed(e);return n.isEnabled=!0,n.label=i("Link"),n.icon='',n.keystroke="Ctrl+K",n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",e=>!!e),this.listenTo(n,"execute",()=>this._showUI(!0)),n})}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set("Tab",(e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Ec({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=r();const o=()=>{const e=this._getSelectedLinkElement(),t=r();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find(e=>e.is("element"))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has("link-ui")){const t=Array.from(this.editor.editing.mapper.markerNameToElements("link-ui")),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&Oh(i))return Vf(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Vf(i.start),o=Vf(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has("link-ui"))t.updateMarker("link-ui",{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition(({item:t})=>!e.schema.isContent(t),{boundaries:i});t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has("link-ui")&&e.change(e=>{e.removeMarker("link-ui")})}}function Vf(e){return e.getAncestors().find(e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t})}const jf=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[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]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Bf extends Qe{static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new Su(e.model,e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=Ff(e.substr(0,e.length-1));return t?{url:t}:void 0}),i=e.plugins.get("Input");t.on("matched:data",(t,n)=>{const{batch:o,range:r,url:s}=n;if(!i.isInput(o))return;const a=r.end.getShiftedBy(-1),l=a.getShiftedBy(-s.length),c=e.model.createRange(l,a);this._applyAutoLink(s,c)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=Iu(e,t),o=Ff(i);if(o){const e=t.createRange(n.end.getShiftedBy(-o.length),n.end);this._applyAutoLink(o,e)}}_applyAutoLink(e,t){const i=this.editor.model;this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange(i=>{const n=this.editor.config.get("link.defaultProtocol"),o=Tf(e,n);i.setAttribute("linkHref",o,t)})}}function Ff(e){const t=jf.exec(e);return t?t[2]:null}class Hf extends Ze{constructor(e,t){super(e),this.type=t}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document,n=Array.from(i.selection.getSelectedBlocks()).filter(e=>Wf(e,t.schema)),o=void 0!==e.forceValue?!e.forceValue:this.value;t.change(e=>{if(o){let t=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;t&&"listItem"==t.name&&0!==t.getAttribute("listIndent");){const e=t.getAttribute("listIndent");e=i;)r>o.getAttribute("listIndent")&&(r=o.getAttribute("listIndent")),o.getAttribute("listIndent")==r&&e[t?"unshift":"push"](o),o=o[t?"previousSibling":"nextSibling"]}}function Wf(e,t){return t.checkChild(e.parent,"listItem")&&!t.isObject(e)}class qf extends Ze{constructor(e,t){super(e),this._indentBy="forward"==t?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=e.document;let i=Array.from(t.selection.getSelectedBlocks());e.change(e=>{const t=i[i.length-1];let n=t.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>t.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const t of i){const i=t.getAttribute("listIndent")+this._indentBy;i<0?e.rename(t,"paragraph"):e.setAttribute("listIndent",i,t)}this.fire("_executeCleanup",i)})}_checkEnabled(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());if(!e||!e.is("element","listItem"))return!1;if(this._indentBy>0){const t=e.getAttribute("listIndent"),i=e.getAttribute("listType");let n=e.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=t;){if(n.getAttribute("listIndent")==t)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}function $f(e,t){const i=t.mapper,n=t.writer,o="numbered"==e.getAttribute("listType")?"ol":"ul",r=function(e){const t=e.createContainerElement("li");return t.getFillerOffset=Zf,t}(n),s=n.createContainerElement(o,null);return n.insert(n.createPositionAt(s,0),r),i.bindElements(e,r),r}function Yf(e,t,i,n){const o=t.parent,r=i.mapper,s=i.writer;let a=r.toViewPosition(n.createPositionBefore(e));const l=Qf(e.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:e.getAttribute("listIndent")}),c=e.previousSibling;if(l&&l.getAttribute("listIndent")==e.getAttribute("listIndent")){const e=r.toViewElement(l);a=s.breakContainer(s.createPositionAfter(e))}else if(c&&"listItem"==c.name){a=r.toViewPosition(n.createPositionAt(c,"end"));const e=r.findMappedViewAncestor(a),t=function(e){for(const t of e.getChildren())if("ul"==t.name||"ol"==t.name)return t;return null}(e);a=t?s.createPositionBefore(t):s.createPositionAt(e,"end")}else a=r.toViewPosition(n.createPositionBefore(e));if(a=Kf(a),s.insert(a,o),c&&"listItem"==c.name){const e=r.toViewElement(c),i=s.createRange(s.createPositionAt(e,0),a).getWalker({ignoreElementEnd:!0});for(const e of i)if(e.item.is("element","li")){const n=s.breakContainer(s.createPositionBefore(e.item)),o=e.item.parent,r=s.createPositionAt(t,"end");Gf(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(o),r),i.position=n}}else{const i=o.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const t of i.getChildren()){const i=r.toModelElement(t);if(!(i&&i.getAttribute("listIndent")>e.getAttribute("listIndent")))break;n=t}n&&(s.breakContainer(s.createPositionAfter(n)),s.move(s.createRangeOn(n.parent),s.createPositionAt(t,"end")))}}Gf(s,o,o.nextSibling),Gf(s,o.previousSibling,o)}function Gf(e,t,i){return!t||!i||"ul"!=t.name&&"ol"!=t.name||t.name!=i.name||t.getAttribute("class")!==i.getAttribute("class")?null:e.mergeContainers(e.createPositionAfter(t))}function Kf(e){return e.getLastMatchingPosition(e=>e.item.is("uiElement"))}function Qf(e,t){const i=!!t.sameIndent,n=!!t.smallerIndent,o=t.listIndent;let r=e;for(;r&&"listItem"==r.name;){const e=r.getAttribute("listIndent");if(i&&o==e||n&&o>e)return r;r="forward"===t.direction?r.nextSibling:r.previousSibling}return null}function Jf(e,t,i,n){e.ui.componentFactory.add(t,o=>{const r=e.commands.get(t),s=new ed(o);return s.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",()=>{e.execute(t),e.editing.view.focus()}),s})}function Zf(){const e=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||e?0:no.call(this)}function Xf(e){return(t,i,n)=>{const o=n.consumable;if(!o.test(i.item,"insert")||!o.test(i.item,"attribute:listType")||!o.test(i.item,"attribute:listIndent"))return;o.consume(i.item,"insert"),o.consume(i.item,"attribute:listType"),o.consume(i.item,"attribute:listIndent");const r=i.item;Yf(r,$f(r,n),n,e)}}function ep(e,t,i){if(!i.consumable.consume(t.item,"attribute:listType"))return;const n=i.mapper.toViewElement(t.item),o=i.writer;o.breakContainer(o.createPositionBefore(n)),o.breakContainer(o.createPositionAfter(n));const r=n.parent,s="numbered"==t.attributeNewValue?"ol":"ul";o.rename(s,r)}function tp(e,t,i){const n=i.mapper.toViewElement(t.item).parent,o=i.writer;Gf(o,n,n.nextSibling),Gf(o,n.previousSibling,n);for(const e of t.item.getChildren())i.consumable.consume(e,"insert")}function ip(e,t,i){if("listItem"!=t.item.name){let e=i.mapper.toViewPosition(t.range.start);const n=i.writer,o=[];for(;("ul"==e.parent.name||"ol"==e.parent.name)&&(e=n.breakContainer(e),"li"==e.parent.name);){const t=e,i=n.createPositionAt(e.parent,"end");if(!t.isEqual(i)){const e=n.remove(n.createRange(t,i));o.push(e)}e=n.createPositionAfter(e.parent)}if(o.length>0){for(let t=0;t0){const t=Gf(n,i,i.nextSibling);t&&t.parent==i&&e.offset--}}Gf(n,e.nodeBefore,e.nodeAfter)}}}function np(e,t,i){const n=i.mapper.toViewPosition(t.position),o=n.nodeBefore,r=n.nodeAfter;Gf(i.writer,o,r)}function op(e,t,i){if(i.consumable.consume(t.viewItem,{name:!0})){const e=i.writer,n=e.createElement("listItem"),o=function(e){let t=0,i=e.parent;for(;i;){if(i.is("element","li"))t++;else{const e=i.previousSibling;e&&e.is("element","li")&&t++}i=i.parent}return t}(t.viewItem);e.setAttribute("listIndent",o,n);const r=t.viewItem.parent&&"ol"==t.viewItem.parent.name?"numbered":"bulleted";if(e.setAttribute("listType",r,n),!i.safeInsert(n,t.modelCursor))return;const s=function(e,t,i){const{writer:n,schema:o}=i;let r=n.createPositionAfter(e);for(const s of t)if("ul"==s.name||"ol"==s.name)r=i.convertItem(s,r).modelCursor;else{const t=i.convertItem(s,n.createPositionAt(e,"end")),a=t.modelRange.start.nodeAfter;a&&a.is("element")&&!o.checkChild(e,a.name)&&(e=t.modelCursor.parent.is("element","listItem")?t.modelCursor.parent:cp(t.modelCursor),r=n.createPositionAfter(e))}return r}(n,t.viewItem.getChildren(),i);t.modelRange=e.createRange(t.modelCursor,s),i.updateConversionResult(n,t)}}function rp(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){const e=Array.from(t.viewItem.getChildren());for(const t of e){!(t.is("element","li")||hp(t))&&t._remove()}}}function sp(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){if(0===t.viewItem.childCount)return;const e=[...t.viewItem.getChildren()];let i=!1,n=!0;for(const t of e)i&&!hp(t)&&t._remove(),t.is("$text")?(n&&(t._data=t.data.trimStart()),t.nextSibling&&!hp(t.nextSibling)||(t._data=t.data.trimEnd())):hp(t)&&(i=!0),n=!1}}function ap(e){return(t,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const t=i.mapper.toViewElement(n),o=t.getAncestors().find(hp),r=e.createPositionAt(t,0).getWalker();for(const e of r){if("elementStart"==e.type&&e.item.is("element","li")){i.viewPosition=e.previousPosition;break}if("elementEnd"==e.type&&e.item==o){i.viewPosition=e.nextPosition;break}}}}}function lp(e,[t,i]){let n,o=t.is("documentFragment")?t.getChild(0):t;if(n=i?this.createSelection(i):this.document.selection,o&&o.is("element","listItem")){const e=n.getFirstPosition();let t=null;if(e.parent.is("element","listItem")?t=e.parent:e.nodeBefore&&e.nodeBefore.is("element","listItem")&&(t=e.nodeBefore),t){const e=t.getAttribute("listIndent");if(e>0)for(;o&&o.is("element","listItem");)o._setAttribute("listIndent",o.getAttribute("listIndent")+e),o=o.nextSibling}}}function cp(e){const t=new Zs({startPosition:e});let i;do{i=t.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function dp(e,t,i,n,o,r){const s=Qf(t.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:e,foo:"b"}),a=o.mapper,l=o.writer,c=s?s.getAttribute("listIndent"):null;let d;if(s)if(c==e){const e=a.toViewElement(s).parent;d=l.createPositionAfter(e)}else{const e=r.createPositionAt(s,"end");d=a.toViewPosition(e)}else d=i;d=Kf(d);for(const e of[...n.getChildren()])hp(e)&&(d=l.move(l.createRangeOn(e),d).end,Gf(l,e,e.nextSibling),Gf(l,e.previousSibling,e))}function hp(e){return e.is("element","ol")||e.is("element","ul")}class up extends Qe{static get pluginName(){return"ListEditing"}static get requires(){return[Ch,Sh]}init(){const e=this.editor;e.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const t=e.data,i=e.editing;var n;e.model.document.registerPostFixer(t=>function(e,t){const i=e.document.differ.getChanges(),n=new Map;let o=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)r(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(t.removeAttribute("listIndent",i),o=!0),i.hasAttribute("listType")&&(t.removeAttribute("listType",i),o=!0),i.hasAttribute("listStyle")&&(t.removeAttribute("listStyle",i),o=!0);for(const t of Array.from(e.createRangeIn(i)).filter(e=>e.item.is("element","listItem")))r(t.previousPosition)}r(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?r(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&r(n.range.start);for(const e of n.values())s(e),a(e);return o;function r(e){const t=e.nodeBefore;if(t&&t.is("element","listItem")){let e=t;if(n.has(e))return;for(let t=e.previousSibling;t&&t.is("element","listItem");t=e.previousSibling)if(e=t,n.has(e))return;n.set(t,e)}else{const t=e.nodeAfter;t&&t.is("element","listItem")&&n.set(t,t)}}function s(e){let i=0,n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(r>i){let s;null===n?(n=r-i,s=i):(n>r&&(n=r),s=r-n),t.setAttribute("listIndent",s,e),o=!0}else n=null,i=e.getAttribute("listIndent")+1;e=e.nextSibling}}function a(e){let i=[],n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const n=i[r];e.getAttribute("listType")!=n&&(t.setAttribute("listType",n,e),o=!0)}else i[r]=e.getAttribute("listType");n=e,e=e.nextSibling}}}(e.model,t)),i.mapper.registerViewToModelLength("li",gp),t.mapper.registerViewToModelLength("li",gp),i.mapper.on("modelToViewPosition",ap(i.view)),i.mapper.on("viewToModelPosition",(n=e.model,(e,t)=>{const i=t.viewPosition,o=i.parent,r=t.mapper;if("ul"==o.name||"ol"==o.name){if(i.isAtEnd){const e=r.toModelElement(i.nodeBefore),o=r.getModelLength(i.nodeBefore);t.modelPosition=n.createPositionBefore(e).getShiftedBy(o)}else{const e=r.toModelElement(i.nodeAfter);t.modelPosition=n.createPositionBefore(e)}e.stop()}else if("li"==o.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const s=r.toModelElement(o);let a=1,l=i.nodeBefore;for(;l&&hp(l);)a+=r.getModelLength(l),l=l.previousSibling;t.modelPosition=n.createPositionBefore(s).getShiftedBy(a),e.stop()}})),t.mapper.on("modelToViewPosition",ap(i.view)),e.conversion.for("editingDowncast").add(t=>{t.on("insert",ip,{priority:"high"}),t.on("insert:listItem",Xf(e.model)),t.on("attribute:listType:listItem",ep,{priority:"high"}),t.on("attribute:listType:listItem",tp,{priority:"low"}),t.on("attribute:listIndent:listItem",function(e){return(t,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const o=n.mapper.toViewElement(i.item),r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s);r.remove(l),a&&a.nextSibling&&Gf(r,a,a.nextSibling),dp(i.attributeOldValue+1,i.range.start,l.start,o,n,e),Yf(i.item,o,n,e);for(const e of i.item.getChildren())n.consumable.consume(e,"insert")}}(e.model)),t.on("remove:listItem",function(e){return(t,i,n)=>{const o=n.mapper.toViewPosition(i.position).getLastMatchingPosition(e=>!e.item.is("element","li")).nodeAfter,r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s),c=r.remove(l);a&&a.nextSibling&&Gf(r,a,a.nextSibling);dp(n.mapper.toModelElement(o).getAttribute("listIndent")+1,i.position,l.start,o,n,e);for(const e of r.createRangeIn(c).getItems())n.mapper.unbindViewElement(e);t.stop()}}(e.model)),t.on("remove",np,{priority:"low"})}),e.conversion.for("dataDowncast").add(t=>{t.on("insert",ip,{priority:"high"}),t.on("insert:listItem",Xf(e.model))}),e.conversion.for("upcast").add(e=>{e.on("element:ul",rp,{priority:"high"}),e.on("element:ol",rp,{priority:"high"}),e.on("element:li",sp,{priority:"high"}),e.on("element:li",op)}),e.model.on("insertContent",lp,{priority:"high"}),e.commands.add("numberedList",new Hf(e,"numbered")),e.commands.add("bulletedList",new Hf(e,"bulleted")),e.commands.add("indentList",new qf(e,"forward")),e.commands.add("outdentList",new qf(e,"backward"));const o=i.view.document;this.listenTo(o,"enter",(e,t)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"}),this.listenTo(o,"delete",(e,t)=>{if("backward"!==t.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const o=n.parent;if("listItem"!==o.name)return;o.previousSibling&&"listItem"===o.previousSibling.name||(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"});const r=e=>(t,i)=>{this.editor.commands.get(e).isEnabled&&(this.editor.execute(e),i())};e.keystrokes.set("Tab",r("indentList")),e.keystrokes.set("Shift+Tab",r("outdentList"))}afterInit(){const e=this.editor.commands,t=e.get("indent"),i=e.get("outdent");t&&t.registerChildCommand(e.get("indentList")),i&&i.registerChildCommand(e.get("outdentList"))}}function gp(e){let t=1;for(const i of e.getChildren())if("ul"==i.name||"ol"==i.name)for(const e of i.getChildren())t+=gp(e);return t}class mp extends Qe{static get pluginName(){return"ListUI"}init(){const e=this.editor.t;Jf(this.editor,"numberedList",e("Numbered List"),''),Jf(this.editor,"bulletedList",e("Bulleted List"),'')}}function fp(e,t){return e=>{e.on("attribute:url:media",i)};function i(i,n,o){if(!o.consumable.consume(n.item,i.name))return;const r=n.attributeNewValue,s=o.writer,a=o.mapper.toViewElement(n.item),l=[...a.getChildren()].find(e=>e.getCustomProperty("media-content"));s.remove(l);const c=e.getMediaViewElement(s,r,t);s.insert(s.createPositionAt(a,0),c)}}function pp(e,t,i,n){const o=e.createContainerElement("figure",{class:"media"});return e.insert(e.createPositionAt(o,0),t.getMediaViewElement(e,i,n)),o}function bp(e){const t=e.getSelectedElement();return t&&t.is("element","media")?t:null}function wp(e,t,i){e.change(n=>{const o=n.createElement("media",{url:t});e.insertContent(o,i),n.setSelection(o,"on")})}class kp extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=bp(t);this.value=i?i.getAttribute("url"):null,this.isEnabled=function(e){const t=e.getSelectedElement();return!!t&&"media"===t.name}(t)||function(e,t){let i=Fh(e,t).start.parent;i.isEmpty&&!t.schema.isLimit(i)&&(i=i.parent);return t.schema.checkChild(i,"media")}(t,e)}execute(e){const t=this.editor.model,i=t.document.selection,n=bp(i);n?t.change(t=>{t.setAttribute("url",e,n)}):wp(t,e,Fh(i,t))}}class _p{constructor(e,t){const i=t.providers,n=t.extraProviders||[],o=new Set(t.removeProviders),r=i.concat(n).filter(e=>{const t=e.name;return t?!o.has(t):(Object(l.b)("media-embed-no-provider-name",{provider:e}),!1)});this.locale=e,this.providerDefinitions=r}hasMedia(e){return!!this._getMedia(e)}getMediaViewElement(e,t,i){return this._getMedia(t).getViewElement(e,i)}_getMedia(e){if(!e)return new vp(this.locale);e=e.trim();for(const t of this.providerDefinitions){const i=t.html,n=en(t.url);for(const t of n){const n=this._getUrlMatches(e,t);if(n)return new vp(this.locale,e,n,i)}}return null}_getUrlMatches(e,t){let i=e.match(t);if(i)return i;let n=e.replace(/^https?:\/\//,"");return i=n.match(t),i||(n=n.replace(/^www\./,""),i=n.match(t),i||null)}}class vp{constructor(e,t,i,n){this.url=this._getValidUrl(t),this._t=e.t,this._match=i,this._previewRenderer=n}getViewElement(e,t){const i={};let n;if(t.renderForEditingView||t.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(i["data-oembed-url"]=this.url),t.renderForEditingView&&(i.class="ck-media__wrapper");const o=this._getPreviewHtml(t);n=e.createRawElement("div",i,(function(e){e.innerHTML=o}))}else this.url&&(i.url=this.url),n=e.createEmptyElement(t.elementName,i);return e.setCustomProperty("media-content",!0,n),n}_getPreviewHtml(e){return this._previewRenderer?this._previewRenderer(this._match):this.url&&e.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const e=new Xc,t=new Zc;e.text=this._t("Open media in new tab"),t.content='',t.viewBox="0 0 64 42";return new Nc({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]},e]}]}).render().outerHTML}_getValidUrl(e){return e?e.match(/^https?/)?e:"https://"+e:null}}i(92);class yp extends Qe{static get pluginName(){return"MediaEmbedEditing"}constructor(e){super(e),e.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:e=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:e=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)/,/^youtube\.com\/embed\/([\w-]+)/,/^youtu\.be\/([\w-]+)/],html:e=>`
`},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:e=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new _p(e.locale,e.config.get("mediaEmbed"))}init(){const e=this.editor,t=e.model.schema,i=e.t,n=e.conversion,o=e.config.get("mediaEmbed.previewsInData"),r=e.config.get("mediaEmbed.elementName"),s=this.registry;e.commands.add("mediaEmbed",new kp(e)),t.register("media",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["url"]}),n.for("dataDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const i=e.getAttribute("url");return pp(t,s,i,{elementName:r,renderMediaPreview:i&&o})}}),n.for("dataDowncast").add(fp(s,{elementName:r,renderMediaPreview:o})),n.for("editingDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const n=e.getAttribute("url");return function(e,t,i){return t.setCustomProperty("media",!0,e),zh(e,t,{label:i})}(pp(t,s,n,{elementName:r,renderForEditingView:!0}),t,i("media widget"))}}),n.for("editingDowncast").add(fp(s,{elementName:r,renderForEditingView:!0})),n.for("upcast").elementToElement({view:e=>["oembed",r].includes(e.name)&&e.getAttribute("url")?{name:!0}:null,model:(e,{writer:t})=>{const i=e.getAttribute("url");if(s.hasMedia(i))return t.createElement("media",{url:i})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(e,{writer:t})=>{const i=e.getAttribute("data-oembed-url");if(s.hasMedia(i))return t.createElement("media",{url:i})}})}}const xp=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class Ap extends Qe{static get requires(){return[cu,ig]}static get pluginName(){return"AutoMediaEmbed"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",()=>{const e=t.selection.getFirstRange(),i=ec.fromPosition(e.start);i.stickiness="toPrevious";const n=ec.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",()=>{this._embedMediaBetweenPositions(i,n),i.detach(),n.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(vr.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedMediaBetweenPositions(e,t){const i=this.editor,n=i.plugins.get(yp).registry,o=new ba(e,t),r=o.getWalker({ignoreElementEnd:!0});let s="";for(const e of r)e.item.is("$textProxy")&&(s+=e.item.data);if(s=s.trim(),!s.match(xp))return void o.detach();if(!n.hasMedia(s))return void o.detach();i.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=ec.fromPosition(e),this._timeoutId=vr.window.setTimeout(()=>{i.model.change(e=>{let t;this._timeoutId=null,e.remove(o),o.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert),wp(i.model,s,t),this._positionToInsert.detach(),this._positionToInsert=null})},100)):o.detach()}}i(94);class Cp extends Mc{constructor(e,t){super(t);const i=t.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",e=>!!e),this.cancelButtonView=this._createButton(i("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._focusables=new Pc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=e,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),Ic(this)}render(){super.render(),Sc({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element);const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e),this.listenTo(this.urlInputView.element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"})}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(e){this.urlInputView.fieldView.element.value=e.trim()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const e=this.locale.t,t=new Md(this.locale,Nd),i=t.fieldView;return this._urlInputViewInfoDefault=e("Paste the media URL in the input."),this._urlInputViewInfoTip=e("Tip: Paste the URL into the content to embed faster."),t.label=e("Media URL"),t.infoText=this._urlInputViewInfoDefault,i.on("input",()=>{t.infoText=i.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=i.element.value.trim()}),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}}class Tp extends Qe{static get requires(){return[yp]}static get pluginName(){return"MediaEmbedUI"}init(){const e=this.editor,t=e.commands.get("mediaEmbed"),i=e.plugins.get(yp).registry;e.ui.componentFactory.add("mediaEmbed",n=>{const o=xd(n),r=new Cp(function(e,t){return[t=>{if(!t.url.length)return e("The URL must not be empty.")},i=>{if(!t.hasMedia(i.url))return e("This media URL is not supported.")}]}(e.t,i),e.locale);return this._setUpDropdown(o,r,t,e),this._setUpForm(o,r,t),o})}_setUpDropdown(e,t,i){const n=this.editor,o=n.t,r=e.buttonView;function s(){n.editing.view.focus(),e.isOpen=!1}e.bind("isEnabled").to(i),e.panelView.children.add(t),r.set({label:o("Insert media"),icon:'',tooltip:!0}),r.on("open",()=>{t.disableCssTransitions(),t.url=i.value||"",t.urlInputView.fieldView.select(),t.focus(),t.enableCssTransitions()},{priority:"low"}),e.on("submit",()=>{t.isValid()&&(n.execute("mediaEmbed",t.url),s())}),e.on("change:isOpen",()=>t.resetFormStatus()),e.on("cancel",()=>s())}_setUpForm(e,t,i){t.delegate("submit","cancel").to(e),t.urlInputView.bind("value").to(i,"value"),t.urlInputView.bind("isReadOnly").to(i,"isEnabled",e=>!e)}}i(96);function Ep(e,t){if(!e.childCount)return;const i=new gh(e.document),n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),o=[];for(const e of i)if("elementStart"===e.type&&n.match(e.item)){const t=Pp(e.item);o.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return o}(e,i);if(!n.length)return;let o=null,r=1;n.forEach((e,s)=>{const a=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const i=t.element.previousSibling;if(!i)return!0;return n=i,!(n.is("element","ol")||n.is("element","ul"));var n}(n[s-1],e),l=a?null:n[s-1],c=(h=e,(d=l)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(o=null,r=1),!o||0!==c){const n=function(e,t){const i=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),n=/mso-level-number-format:([^;]{0,100});/gi,o=i.exec(t);let r="decimal",s="ol";if(o&&o[1]){const t=n.exec(o[1]);if(t&&t[1]&&(r=t[1].trim(),s="bullet"!==r&&"image"!==r?"ol":"ul"),"bullet"===r){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const i=t._data;if("o"===i)return"circle";if("·"===i)return"disc";if("§"===i)return"square";return null}(e.element);t&&(r=t)}}return{type:s,style:Ip(r)}}(e,t);if(o){if(e.indent>r){const e=o.getChild(o.childCount-1),t=e.getChild(e.childCount-1);o=Sp(n,t,i),r+=1}else if(e.indente.indexOf(t)>-1)?r.push(i):i.getAttribute("src")||r.push(i)}for(const e of r)i.remove(e)}(function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i){const t=e.item,i=t.previousSibling&&t.previousSibling.name||null;n.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==i&&o.push(e.item.getAttribute("id"))}return o}(e,i),e,i),function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i)n.match(e.item)&&o.push(e.item);for(const e of o)t.remove(e)}(e,i);const n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:"img"}),o=[];for(const e of i)n.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&o.push(e.item);return o}(e,i);n.length&&function(e,t,i){if(e.length===t.length)for(let o=0;oString.fromCharCode(parseInt(e,16))).join(""))}`;i.setAttribute("src",r,e[o])}var n}(n,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,i=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),n=e.match(i),o=[];if(n)for(const e of n){let i=!1;e.includes("\\pngblip")?i="image/png":e.includes("\\jpegblip")&&(i="image/jpeg"),i&&o.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:i})}return o}(t),i)}const Op=//i,zp=/xmlns:o="urn:schemas-microsoft-com/i;class Dp{constructor(e){this.document=e}isActive(e){return Op.test(e)||zp.test(e)}execute(e){const{body:t,stylesString:i}=e._parsedData;Ep(t,i),Rp(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function Lp(e){return e.replace(/(\s+)<\/span>/g,(e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length))}function Vp(e,t){const i=new DOMParser,n=function(e){return Lp(Lp(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(e){const t=e.indexOf("");if(t<0)return e;const i=e.indexOf("",t+"".length);return e.substring(0,t+"".length)+(i>=0?e.substring(i):"")}(e=e.replace(//g,"")}(n.getData("text/html")):n.getData("text/plain")&&(((s=(s=n.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),r=s),r=this.editor.data.htmlProcessor.toView(r));const a=new o(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:n,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),i.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(e,i)=>{if(i.content.isEmpty)return;const n=this.editor.data.toModel(i.content,"$clipboardHolder");0!=n.childCount&&(e.stop(),t.change(()=>{this.fire("contentInsertion",{content:n,method:i.method,dataTransfer:i.dataTransfer,targetRanges:i.targetRanges})}))},{priority:"low"}),this.listenTo(this,"contentInsertion",(e,i)=>{i.resultRange=t.insertContent(i.content)},{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,i=e.editing.view.document;function n(n,o){const r=o.dataTransfer;o.preventDefault();const s=e.data.toView(e.model.getSelectedContent(t.selection));i.fire("clipboardOutput",{dataTransfer:r,content:s,method:n.name})}this.listenTo(i,"copy",n,{priority:"low"}),this.listenTo(i,"cut",(t,i)=>{e.isReadOnly?i.preventDefault():n(t,i)},{priority:"low"}),this.listenTo(i,"clipboardOutput",(i,n)=>{n.content.isEmpty||(n.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(n.content)),n.dataTransfer.setData("text/plain",function e(t){let i="";if(t.is("$text")||t.is("$textProxy"))i=t.data;else if(t.is("element","img")&&t.hasAttribute("alt"))i=t.getAttribute("alt");else if(t.is("element","br"))i="\n";else{let n=null;for(const o of t.getChildren()){const t=e(o);n&&(n.is("containerElement")||o.is("containerElement"))&&(kh.includes(n.name)||kh.includes(o.name)?i+="\n":i+="\n\n"),i+=t,n=o}}return i}(n.content))),"cut"==n.method&&e.model.deleteContent(t.selection)},{priority:"low"})}}function*vh(e,t){for(const i of t)i&&e.getAttributeProperties(i[0]).copyOnEnter&&(yield i)}class yh extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i,n){const o=i.isCollapsed,r=i.getFirstRange(),s=r.start.parent,a=r.end.parent;if(n.isLimit(s)||n.isLimit(a))return void(o||s!=a||e.deleteContent(i));if(o){const e=vh(t.model.schema,i.getAttributes());xh(t,r.start),t.setSelectionAttribute(e)}else{const n=!(r.start.isAtStart&&r.end.isAtEnd),o=s==a;e.deleteContent(i,{leaveUnmerged:n}),n&&(o?xh(t,i.focus):t.setSelection(a,0))}}(this.editor.model,i,t.selection,e.schema),this.fire("afterExecute",{writer:i})})}}function xh(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}class Ah extends Or{constructor(e){super(e);const t=this.document;t.on("keydown",(e,i)=>{if(this.isEnabled&&i.keyCode==No.enter){const n=new fo(t,"enter",t.selection.getFirstRange());t.fire(n,new es(t,i.domEvent,{isSoft:i.shiftKey})),n.stop.called&&e.stop()}})}observe(){}}class Ch extends Qe{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Ah),e.commands.add("enter",new yh(e)),this.listenTo(i,"enter",(i,n)=>{n.preventDefault(),n.isSoft||(e.execute("enter"),t.scrollToTheSelection())},{priority:"low"})}}class Th{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{"transparent"!=t.type&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}class Eh extends Ze{constructor(e,t){super(e),this.direction=t,this._buffer=new Th(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,i=t.document;t.enqueueChange(this._buffer.batch,n=>{this._buffer.lock();const o=n.createSelection(e.selection||i.selection),r=e.sequence||1,s=o.isCollapsed;if(o.isCollapsed&&t.modifySelection(o,{direction:this.direction,unit:e.unit}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(n);if(this._shouldReplaceFirstBlockWithParagraph(o,r))return void this.editor.execute("paragraph",{selection:o});if(o.isCollapsed)return;let a=0;o.getFirstRange().getMinimalFlatRanges().forEach(e=>{a+=uo(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(o,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),n.setSelection(o),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i);if(!(i.isCollapsed&&i.containsEntireContent(n)))return!1;if(!t.schema.checkChild(n,"paragraph"))return!1;const o=n.getChild(0);return!o||"paragraph"!==o.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i),o=e.createElement("paragraph");e.remove(e.createRangeIn(n)),e.insert(o,n),e.setSelection(o,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const i=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const n=e.getFirstPosition(),o=i.schema.getLimitElement(n),r=o.getChild(0);return n.parent==r&&(!!e.containsEntireContent(r)&&(!!i.schema.checkChild(o,"paragraph")&&"paragraph"!=r.name))}}class Ih extends Or{constructor(e){super(e);const t=e.document;let i=0;function n(e,i,n){const o=new fo(t,"delete",t.selection.getFirstRange());t.fire(o,new es(t,i,n)),o.stop.called&&e.stop()}t.on("keyup",(e,t)=>{t.keyCode!=No.delete&&t.keyCode!=No.backspace||(i=0)}),t.on("keydown",(e,t)=>{const o={};if(t.keyCode==No.delete)o.direction="forward",o.unit="character";else{if(t.keyCode!=No.backspace)return;o.direction="backward",o.unit="codePoint"}const r=So.isMac?t.altKey:t.ctrlKey;o.unit=r?"word":o.unit,o.sequence=++i,n(e,t.domEvent,o)}),So.isAndroid&&t.on("beforeinput",(t,i)=>{if("deleteContentBackward"!=i.domEvent.inputType)return;const o={unit:"codepoint",direction:"backward",sequence:1},r=i.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(o.selectionToRemove=e.domConverter.domSelectionToView(r)),n(t,i.domEvent,o)})}observe(){}}class Sh extends Qe{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Ih);const n=new Eh(e,"forward");if(e.commands.add("deleteForward",n),e.commands.add("forwardDelete",n),e.commands.add("delete",new Eh(e,"backward")),this.listenTo(i,"delete",(i,n)=>{const o={unit:n.unit,sequence:n.sequence};if(n.selectionToRemove){const t=e.model.createSelection(),i=[];for(const t of n.selectionToRemove.getRanges())i.push(e.editing.mapper.toModelRange(t));t.setTo(i),o.selection=t}e.execute("forward"==n.direction?"deleteForward":"delete",o),n.preventDefault(),t.scrollToTheSelection()},{priority:"low"}),So.isAndroid){let e=null;this.listenTo(i,"delete",(t,i)=>{const n=i.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}},{priority:"lowest"}),this.listenTo(i,"keyup",(t,i)=>{if(e){const t=i.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}})}}}class Ph{constructor(){this._stack=[]}add(e,t){const i=this._stack,n=i[0];this._insertDescriptor(e);const o=i[0];n===o||Mh(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}remove(e,t){const i=this._stack,n=i[0];this._removeDescriptor(e);const o=i[0];n===o||Mh(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}_insertDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e.id);if(Mh(e,t[i]))return;i>-1&&t.splice(i,1);let n=0;for(;t[n]&&Nh(t[n],e);)n++;t.splice(n,0,e)}_removeDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e);i>-1&&t.splice(i,1)}}function Mh(e,t){return e&&t&&e.priority==t.priority&&Rh(e.classes)==Rh(t.classes)}function Nh(e,t){return e.priority>t.priority||!(e.priorityRh(t.classes)}function Rh(e){return Array.isArray(e)?e.sort().join(","):e}Ke(Ph,h);function Oh(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function zh(e,t,i={}){if(!e.is("containerElement"))throw new c.a("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=Uh,i.label&&function(e,t,i){i.setCustomProperty("widgetLabel",t,e)}(e,i.label,t),i.hasSelectionHandle&&function(e,t){const i=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),i=new Zl;return i.set("content",''),i.render(),t.appendChild(i.element),t}));t.insert(t.createPositionAt(e,0),i),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),Vh(e,t,Dh,Lh),e}function Dh(e,t,i){if(t.classes&&i.addClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.setAttribute(n,t.attributes[n],e)}function Lh(e,t,i){if(t.classes&&i.removeClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.removeAttribute(n,e)}function Vh(e,t,i,n){const o=new Ph;o.on("change:top",(t,o)=>{o.oldDescriptor&&n(e,o.oldDescriptor,o.writer),o.newDescriptor&&i(e,o.newDescriptor,o.writer)}),t.setCustomProperty("addHighlight",(e,t,i)=>o.add(t,i),e),t.setCustomProperty("removeHighlight",(e,t,i)=>o.remove(t,i),e)}function jh(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function Bh(e,t){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",(i,n,o)=>{t.setAttribute("contenteditable",o?"false":"true",e)}),e.on("change:isFocused",(i,n,o)=>{o?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)}),e}function Fh(e,t){const i=e.getSelectedElement();if(i){const n=qh(e);if(n)return t.createRange(t.createPositionAt(i,n));if(t.schema.isObject(i)&&!t.schema.isInline(i))return t.createRangeOn(i)}const n=e.getSelectedBlocks().next().value;if(n){if(n.isEmpty)return t.createRange(t.createPositionAt(n,0));const i=t.createPositionAfter(n);return e.focus.isTouching(i)?t.createRange(i):t.createRange(t.createPositionBefore(n))}return t.createRange(e.focus)}function Hh(e,t){const i=new Ts(vr.window),n=i.getIntersection(e),o=t.height+Vd.arrowVerticalOffset;if(e.top-o>i.top||e.bottom+o',"image/svg+xml").firstChild;class Qh extends Qe{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[Ch,Sh]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(i,n,o)=>{t.change(e=>{for(const i of t.document.roots)o?e.removeClass("ck-widget__type-around_disabled",i):e.addClass("ck-widget__type-around_disabled",i)}),o||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const i=this.editor,n=i.editing.view;i.execute("insertParagraph",{position:i.model.createPositionAt(e,t)}),n.focus(),n.scrollToTheSelection()}_listenToIfEnabled(e,t,i,n){this.listenTo(e,t,(...e)=>{this.isEnabled&&i(...e)},n)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=qh(e);if(!t)return!1;const i=e.getSelectedElement();return this._insertParagraph(i,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,i=e.locale.t,n={before:i("Insert paragraph before block"),after:i("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(e,i,o)=>{const r=o.mapper.toViewElement(i.item);Wh(r,i.item,t)&&function(e,t,i){const n=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const i=this.toDomElement(e);return function(e,t){for(const i of Gh){const n=new Nl({tag:"div",attributes:{class:["ck","ck-widget__type-around__button","ck-widget__type-around__button_"+i],title:t[i]},children:[e.ownerDocument.importNode(Kh,!0)]});e.appendChild(n.render())}}(i,t),function(e){const t=new Nl({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(i),i}));e.insert(e.createPositionAt(i,"end"),n)}(o.writer,n,r)},{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,i=t.document.selection,n=t.schema,o=e.editing.view;function r(e){return"ck-widget_type-around_show-fake-caret_"+e}this._listenToIfEnabled(o.document,"arrowKey",(e,t)=>{this._handleArrowKeyPress(e,t)},{context:[Oh,"$text"],priority:"high"}),this._listenToIfEnabled(i,"change:range",(t,i)=>{i.directChange&&e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(t.document,"change:data",()=>{const t=i.getSelectedElement();if(t){if(Wh(e.editing.mapper.toViewElement(t),t,n))return}e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",(e,t,i)=>{const o=i.writer;if(this._currentFakeCaretModelElement){const e=i.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(o.removeClass(Gh.map(r),e),this._currentFakeCaretModelElement=null)}const s=t.selection.getSelectedElement();if(!s)return;const a=i.mapper.toViewElement(s);if(!Wh(a,s,n))return;const c=qh(t.selection);c&&(o.addClass(r(c),a),this._currentFakeCaretModelElement=s)}),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",(t,i,n)=>{n||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})})}_handleArrowKeyPress(e,t){const i=this.editor,n=i.model,o=n.document.selection,r=n.schema,s=i.editing.view,a=Vo(t.keyCode,i.locale.contentLanguageDirection),c=s.document.selection.getSelectedElement();let l;Wh(c,i.editing.mapper.toModelElement(c),r)?l=this._handleArrowKeyPressOnSelectedWidget(a):o.isCollapsed&&(l=this._handleArrowKeyPressWhenSelectionNextToAWidget(a)),l&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,i=qh(t.document.selection);return t.change(t=>{if(!i)return t.setSelectionAttribute("widget-type-around",e?"after":"before"),!0;if(!(i===(e?"after":"before")))return t.removeSelectionAttribute("widget-type-around"),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,i=t.model,n=i.schema,o=t.plugins.get("Widget"),r=o._getObjectElementNextToSelection(e);return!!Wh(t.editing.mapper.toViewElement(r),r,n)&&(i.change(t=>{o._setSelectionOverElement(r),t.setSelectionAttribute("widget-type-around",e?"before":"after")}),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(i,n)=>{const o=n.domTarget.closest(".ck-widget__type-around__button");if(!o)return;const r=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(o),s=function(e,t){const i=e.closest(".ck-widget");return t.mapDomToView(i)}(o,t.domConverter),a=e.editing.mapper.toModelElement(s);this._insertParagraph(a,r),n.preventDefault(),i.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,i=e.editing.view;this._listenToIfEnabled(i.document,"enter",(i,n)=>{if("atTarget"!=i.eventPhase)return;const o=t.getSelectedElement(),r=e.editing.mapper.toViewElement(o),s=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:Wh(r,o,s)&&(this._insertParagraph(o,n.isSoft?"before":"after"),a=!0),a&&(n.preventDefault(),i.stop())},{context:Oh})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[No.enter,No.delete,No.backspace];this._listenToIfEnabled(e.document,"keydown",(e,i)=>{t.includes(i.keyCode)||Yh(i)||this._insertParagraphAccordingToFakeCaretPosition()},{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,i=e.model,n=i.schema;this._listenToIfEnabled(t.document,"delete",(t,o)=>{if("atTarget"!=t.eventPhase)return;const r=qh(i.document.selection);if(!r)return;const s=o.direction,a=i.document.selection.getSelectedElement(),c="forward"==s;if("before"===r===c)e.execute("delete",{selection:i.createSelection(a,"on")});else{const t=n.getNearestSelectionRange(i.createPositionAt(a,r),s);if(t)if(t.isCollapsed){const o=i.createSelection(t.start);if(i.modifySelection(o,{direction:s}),o.focus.isEqual(t.start)){const e=function(e,t){let i=t;for(const n of t.getAncestors({parentFirst:!0})){if(n.childCount>1||e.isLimit(n))break;i=n}return i}(n,t.start.parent);i.deleteContent(i.createSelection(e,"on"),{doNotAutoparagraph:!0})}else i.change(i=>{i.setSelection(t),e.execute(c?"deleteForward":"delete")})}else i.change(i=>{i.setSelection(t),e.execute(c?"deleteForward":"delete")})}o.preventDefault(),t.stop()},{context:Oh})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,i=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(e,[n,o])=>{if(o&&!o.is("documentSelection"))return;const r=qh(i);return r?(e.stop(),t.change(e=>{const o=i.getSelectedElement(),s=t.createPositionAt(o,r),a=e.createSelection(s),c=t.insertContent(n,a);return e.setSelection(a),c})):void 0},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(e,[i])=>{if(i&&!i.is("documentSelection"))return;qh(t)&&e.stop()},{priority:"high"})}}i(65);function Jh(e){const t=e.model;return(i,n)=>{const o=n.keyCode==No.arrowup,r=n.keyCode==No.arrowdown,s=n.shiftKey,a=t.document.selection;if(!o&&!r)return;const c=r;if(s&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,c))return;const l=function(e,t,i){const n=e.model;if(i){const e=t.isCollapsed?t.focus:t.getLastPosition(),i=Zh(n,e,"forward");if(!i)return null;const o=n.createRange(e,i),r=Xh(n.schema,o,"backward");return r&&e.isBefore(r)?n.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),i=Zh(n,e,"backward");if(!i)return null;const o=n.createRange(i,e),r=Xh(n.schema,o,"forward");return r&&e.isAfter(r)?n.createRange(r,e):null}}(e,a,c);l&&!l.isCollapsed&&function(e,t,i){const n=e.model,o=e.view.domConverter;if(i){const e=n.createSelection(t.start);n.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=n.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),s=o.viewRangeToDom(r),a=Ts.getDomRangeRects(s);let c;for(const e of a)if(void 0!==c){if(Math.round(e.top)>=c)return!1;c=Math.max(c,Math.round(e.bottom))}else c=Math.round(e.bottom);return!0}(e,l,c)&&(t.change(e=>{const i=c?l.end:l.start;if(s){const n=t.createSelection(a.anchor);n.setFocus(i),e.setSelection(n)}else e.setSelection(i)}),i.stop(),n.preventDefault(),n.stopPropagation())}}function Zh(e,t,i){const n=e.schema,o=e.createRangeIn(t.root),r="forward"==i?"elementStart":"elementEnd";for(const{previousPosition:e,item:s,type:a}of o.getWalker({startPosition:t,direction:i})){if(n.isLimit(s)&&!n.isInline(s))return e;if(a==r&&n.isBlock(s))return null}return null}function Xh(e,t,i){const n="backward"==i?t.end:t.start;if(e.checkChild(n,"$text"))return n;for(const{nextPosition:n}of t.getWalker({direction:i}))if(e.checkChild(n,"$text"))return n}class eu extends Qe{static get pluginName(){return"Widget"}static get requires(){return[Qh,Sh]}init(){const e=this.editor,t=e.editing.view,i=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(t,i,n)=>{const o=n.writer,r=i.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=e.editing.mapper.toViewElement(s);Oh(a)&&n.consumable.consume(r,"selection")&&o.setSelection(o.createRangeOn(a),{fake:!0,label:jh(a)})}),this.editor.editing.downcastDispatcher.on("selection",(e,t,i)=>{this._clearPreviouslySelectedWidgets(i.writer);const n=i.writer,o=n.document.selection;let r=null;for(const e of o.getRanges())for(const t of e){const e=t.item;Oh(e)&&!tu(e,r)&&(n.addClass("ck-widget_selected",e),this._previouslySelected.add(e),r=e)}},{priority:"low"}),t.addObserver(uh),this.listenTo(i,"mousedown",(...e)=>this._onMousedown(...e)),this.listenTo(i,"arrowKey",(...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)},{context:[Oh,"$text"]}),this.listenTo(i,"arrowKey",(...e)=>{this._preventDefaultOnArrowKeyPress(...e)},{context:"$root"}),this.listenTo(i,"arrowKey",Jh(this.editor.editing),{context:"$text"}),this.listenTo(i,"delete",(e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())},{context:"$root"})}_onMousedown(e,t){const i=this.editor,n=i.editing.view,o=n.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(Oh(e))return!1;e=e.parent}return!1}(r)){if((So.isSafari||So.isGecko)&&t.domEvent.detail>=3){const e=i.editing.mapper,n=r.is("attributeElement")?r.findAncestor(e=>!e.is("attributeElement")):r,o=e.toModelElement(n);t.preventDefault(),this.editor.model.change(e=>{e.setSelection(o,"in")})}return}if(!Oh(r)&&(r=r.findAncestor(Oh),!r))return;So.isAndroid&&t.preventDefault(),o.isFocused||n.focus();const s=i.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(e,t){const i=t.keyCode,n=this.editor.model,o=n.schema,r=n.document.selection,s=r.getSelectedElement(),a=Vo(i,this.editor.locale.contentLanguageDirection);if(s&&o.isObject(s)){const i=a?r.getLastPosition():r.getFirstPosition(),s=o.getNearestSelectionRange(i,a?"forward":"backward");return void(s&&(n.change(e=>{e.setSelection(s)}),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const c=this._getObjectElementNextToSelection(a);c&&o.isObject(c)&&(this._setSelectionOverElement(c),t.preventDefault(),e.stop())}_preventDefaultOnArrowKeyPress(e,t){const i=this.editor.model,n=i.schema,o=i.document.selection.getSelectedElement();o&&n.isObject(o)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const i=this._getObjectElementNextToSelection(e);return i?(this.editor.model.change(e=>{let n=t.anchor.parent;for(;n.isEmpty;){const t=n;n=t.parent,e.remove(t)}this._setSelectionOverElement(i)}),!0):void 0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,i=t.schema,n=t.document.selection,o=t.createSelection(n);t.modifySelection(o,{direction:e?"forward":"backward"});const r=e?o.focus.nodeBefore:o.focus.nodeAfter;return r&&i.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass("ck-widget_selected",t);this._previouslySelected.clear()}}function tu(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}var iu=function(e,t,i){var n=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return w(i)&&(n="leading"in i?!!i.leading:n,o="trailing"in i?!!i.trailing:o),fs(e,t,{leading:n,maxWait:t,trailing:o})};i(67);class nu extends Qe{static get pluginName(){return"DragDrop"}static get requires(){return[_h,eu]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=iu(e=>this._updateDropMarker(e),40),this._removeDropMarkerDelayed=su(()=>this._removeDropMarker(),40),this._clearDraggableAttributesDelayed=su(()=>this._clearDraggableAttributes(),40),t.addObserver(wh),t.addObserver(uh),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(e,t,i)=>{i?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(e,t,i)=>{i||this._finalizeDragging(!1)}),So.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,i=t.document,n=e.editing.view,o=n.document;this.listenTo(o,"dragstart",(n,r)=>{const a=i.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const c=r.target?au(r.target):null;if(c){const i=e.editing.mapper.toModelElement(c);this._draggedRange=ba.fromRange(t.createRangeOn(i)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&Oh(e)||(this._draggedRange=ba.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=s(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const l=t.createSelection(this._draggedRange.toRange()),d=e.data.toView(t.getSelectedContent(l));o.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:d,method:n.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")},{priority:"low"}),this.listenTo(o,"dragend",(e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)},{priority:"low"}),this.listenTo(o,"dragenter",()=>{this.isEnabled&&n.focus()}),this.listenTo(o,"dragleave",()=>{this._removeDropMarkerDelayed()}),this.listenTo(o,"dragging",(t,i)=>{if(!this.isEnabled)return void(i.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const n=ou(e,i.targetRanges,i.target);this._draggedRange||(i.dataTransfer.dropEffect="copy"),So.isGecko||("copy"==i.dataTransfer.effectAllowed?i.dataTransfer.dropEffect="copy":["all","copyMove"].includes(i.dataTransfer.effectAllowed)&&(i.dataTransfer.dropEffect="move")),n&&this._updateDropMarkerThrottled(n)},{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",(t,i)=>{if("drop"!=i.method)return;const n=ou(e,i.targetRanges,i.target);if(this._removeDropMarker(),!n)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=i.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==ru(i.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(n,!0))return this._finalizeDragging(!1),void t.stop();i.targetRanges=[e.editing.mapper.toViewRange(n)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(_h);e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i=t.targetRanges.map(e=>this.editor.editing.mapper.toModelRange(e));this.editor.model.change(e=>e.setSelection(i))},{priority:"high"}),e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i="move"==ru(t.dataTransfer),n=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(n&&i)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,i=t.document;this.listenTo(i,"mousedown",(n,o)=>{if(So.isAndroid||!o)return;this._clearDraggableAttributesDelayed.cancel();let r=au(o.target);if(So.isBlink&&!e.isReadOnly&&!r&&!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&Oh(e)||(r=i.selection.editableElement)}r&&(t.change(e=>{e.setAttribute("draggable","true",r)}),this._draggableElement=e.editing.mapper.toModelElement(r))}),this.listenTo(i,"mouseup",()=>{So.isAndroid||this._clearDraggableAttributesDelayed()})}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change(t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null})}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:i})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return i.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.innerHTML="⁠⁠",t}))}})}_updateDropMarker(e){const t=this.editor,i=t.model.markers;t.model.change(t=>{i.has("drop-target")?i.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})})}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change(e=>{e.removeMarker("drop-target")})}_finalizeDragging(e){const t=this.editor,i=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&i.deleteContent(i.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function ou(e,t,i){const n=e.model,o=e.editing.mapper;let r=null;const s=t?t[0].start:null;if(i.is("uiElement")&&(i=i.parent),r=function(e,t){const i=e.model,n=e.editing.mapper;if(Oh(t))return i.createRangeOn(n.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor(e=>Oh(e)||e.is("editableElement"));if(Oh(e))return i.createRangeOn(n.toModelElement(e))}return null}(e,i),r)return r;const a=function(e,t){const i=e.editing.mapper,n=e.editing.view,o=i.toModelElement(t);if(o)return o;const r=n.createPositionBefore(t),s=i.findMappedViewAncestor(r);return i.toModelElement(s)}(e,i),c=s?o.toModelPosition(s):null;return c?(r=function(e,t,i){const n=e.model;if(!n.schema.checkChild(i,"$block"))return null;const o=n.createPositionAt(i,0),r=t.path.slice(0,o.path.length),s=n.createPositionFromPath(t.root,r).nodeAfter;if(s&&n.schema.isObject(s))return n.createRangeOn(s);return null}(e,c,a),r||(r=n.schema.getNearestSelectionRange(c,So.isGecko?"forward":"backward"),r||function(e,t){const i=e.model;for(;t;){if(i.schema.isObject(t))return i.createRangeOn(t);t=t.parent}}(e,c.parent))):function(e,t){const i=e.model,n=i.schema,o=i.createPositionAt(t,0);return n.getNearestSelectionRange(o,"forward")}(e,a)}function ru(e){return So.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function su(e,t){let i;function n(...o){n.cancel(),i=setTimeout(()=>e(...o),t)}return n.cancel=()=>{clearTimeout(i)},n}function au(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(Oh);if(Oh(e))return e;const t=e.findAncestor(e=>Oh(e)||e.is("editableElement"));return Oh(t)?t:null}class cu extends Qe{static get pluginName(){return"PastePlainText"}static get requires(){return[_h]}init(){const e=this.editor,t=e.model,i=e.editing.view,n=i.document,o=t.document.selection;let r=!1;i.addObserver(wh),this.listenTo(n,"keydown",(e,t)=>{r=t.shiftKey}),e.plugins.get(_h).on("contentInsertion",(e,i)=>{(r||function(e,t){if(e.childCount>1)return!1;const i=e.getChild(0);if(t.isObject(i))return!1;return 0==[...i.getAttributeKeys()].length}(i.content,t.schema))&&t.change(e=>{const n=Array.from(o.getAttributes()).filter(([e])=>t.schema.getAttributeProperties(e).isFormatting);o.isCollapsed||t.deleteContent(o,{doNotAutoparagraph:!0}),n.push(...o.getAttributes());const r=e.createRangeIn(i.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(n,t)})})}}class lu extends Qe{static get pluginName(){return"Clipboard"}static get requires(){return[_h,nu,cu]}}class du extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i){const n=i.isCollapsed,o=i.getFirstRange(),r=o.start.parent,s=o.end.parent,a=r==s;if(n){const n=vh(e.schema,i.getAttributes());hu(e,t,o.end),t.removeSelectionAttribute(i.getAttributeKeys()),t.setSelectionAttribute(n)}else{const n=!(o.start.isAtStart&&o.end.isAtEnd);e.deleteContent(i,{leaveUnmerged:n}),a?hu(e,t,i.focus):n&&t.setSelection(s,0)}}(e,i,t.selection),this.fire("afterExecute",{writer:i})})}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const i=t.anchor;if(!i||!e.checkChild(i,"softBreak"))return!1;const n=t.getFirstRange(),o=n.start.parent,r=n.end.parent;if((uu(o,e)||uu(r,e))&&o!==r)return!1;return!0}(e.schema,t.selection)}}function hu(e,t,i){const n=t.createElement("softBreak");e.insertContent(n,i),t.setSelection(n,"after")}function uu(e,t){return!e.is("rootElement")&&(t.isLimit(e)||uu(e.parent,t))}class gu extends Qe{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,i=e.conversion,n=e.editing.view,o=n.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),i.for("upcast").elementToElement({model:"softBreak",view:"br"}),i.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),n.addObserver(Ah),e.commands.add("shiftEnter",new du(e)),this.listenTo(o,"enter",(t,i)=>{i.preventDefault(),i.isSoft&&(e.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"})}}class mu extends Ze{execute(){const e=this.editor.model,t=e.document.selection;let i=e.schema.getLimitElement(t);if(t.containsEntireContent(i)||!fu(e.schema,i))do{if(i=i.parent,!i)return}while(!fu(e.schema,i));e.change(e=>{e.setSelection(i,"in")})}}function fu(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const pu=zo("Ctrl+A");class bu extends Qe{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new mu(e)),this.listenTo(t,"keydown",(t,i)=>{Oo(i)===pu&&(e.execute("selectAll"),i.preventDefault())})}}class wu extends Qe{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",t=>{const i=e.commands.get("selectAll"),n=new ed(t),o=t.t;return n.set({label:o("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),n.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(n,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),n})}}class ku extends Qe{static get requires(){return[bu,wu]}static get pluginName(){return"SelectAll"}}class _u extends Ze{constructor(e,t){super(e),this._buffer=new Th(e.model,t),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,i=t.document,n=e.text||"",o=n.length,r=e.range?t.createSelection(e.range):i.selection,s=e.resultRange;t.enqueueChange(this._buffer.batch,e=>{this._buffer.lock(),this._batches.add(this._buffer.batch),t.deleteContent(r),n&&t.insertContent(e.createText(n,i.selection.getAttributes()),r),s?e.setSelection(s):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(o)})}}function vu(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const i=[];let n,o=0;return e.forEach(e=>{"equal"==e?(r(),o++):"insert"==e?(s("insert")?n.values.push(t[o]):(r(),n={type:"insert",index:o,values:[t[o]]}),o++):s("delete")?n.howMany++:(r(),n={type:"delete",index:o,howMany:1})}),r(),i;function r(){n&&(i.push(n),n=null)}function s(e){return n&&n.type==e}}(gr(e.oldChildren,e.newChildren,yu),e.newChildren);if(t.length>1)return;const i=t[0];return i.values[0]&&i.values[0].is("$text")?i:void 0}function yu(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}class xu{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if(function(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!vu(t))return!0;return!1}(e))this._handleContainerChildrenMutations(e,t);else for(const i of e)this._handleTextMutation(i,t),this._handleTextNodeInsertion(i)}_handleContainerChildrenMutations(e,t){const i=function(e){const t=e.map(e=>e.node).reduce((e,t)=>e.getCommonAncestor(t,{includeSelf:!0}));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find(e=>e.is("containerElement")||e.is("rootElement"))}(e);if(!i)return;const n=this.editor.editing.view.domConverter.mapViewToDom(i),o=new Er(this.editor.editing.view.document),r=this.editor.data.toModel(o.domToView(n)).getChild(0),s=this.editor.editing.mapper.toModelElement(i);if(!s)return;const a=Array.from(r.getChildren()),c=Array.from(s.getChildren()),l=a[a.length-1],d=c[c.length-1],h=l&&l.is("element","softBreak"),u=d&&!d.is("element","softBreak");h&&u&&a.pop();const g=this.editor.model.schema;if(!Au(a,g)||!Au(c,g))return;const m=a.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," "),f=c.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," ");if(f===m)return;const p=gr(f,m),{firstChangeAt:b,insertions:w,deletions:k}=Cu(p);let _=null;t&&(_=this.editing.mapper.toModelRange(t.getFirstRange()));const v=m.substr(b,w),y=this.editor.model.createRange(this.editor.model.createPositionAt(s,b),this.editor.model.createPositionAt(s,b+k));this.editor.execute("input",{text:v,range:y,resultRange:_})}_handleTextMutation(e,t){if("text"!=e.type)return;const i=e.newText.replace(/\u00A0/g," "),n=e.oldText.replace(/\u00A0/g," ");if(n===i)return;const o=gr(n,i),{firstChangeAt:r,insertions:s,deletions:a}=Cu(o);let c=null;t&&(c=this.editing.mapper.toModelRange(t.getFirstRange()));const l=this.editing.view.createPositionAt(e.node,r),d=this.editing.mapper.toModelPosition(l),h=this.editor.model.createRange(d,d.getShiftedBy(a)),u=i.substr(r,s);this.editor.execute("input",{text:u,range:h,resultRange:c})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=vu(e),i=this.editing.view.createPositionAt(e.node,t.index),n=this.editing.mapper.toModelPosition(i),o=t.values[0].data;this.editor.execute("input",{text:o.replace(/\u00A0/g," "),range:this.editor.model.createRange(n)})}}function Au(e,t){return e.every(e=>t.isInline(e))}function Cu(e){let t=null,i=null;for(let n=0;n{i.deleteContent(i.document.selection)}),e.unlock()}So.isAndroid?n.document.on("beforeinput",(e,t)=>r(t),{priority:"lowest"}):n.document.on("keydown",(e,t)=>r(t),{priority:"lowest"}),n.document.on("compositionstart",(function(){const e=i.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;s()}),{priority:"lowest"}),n.document.on("compositionend",()=>{t=i.createSelection(i.document.selection)},{priority:"lowest"})}(e),function(e){e.editing.view.document.on("mutations",(t,i,n)=>{new xu(e).handle(i,n)})}(e)}isInput(e){return this.editor.commands.get("input")._batches.has(e)}}class Eu extends Qe{static get requires(){return[Tu,Sh]}static get pluginName(){return"Typing"}}function Iu(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>n.is("$text")||n.is("$textProxy")?e+n.data:(i=t.createPositionAfter(n),""),""),range:t.createRange(i,e.end)}}class Su{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))}),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",(t,{directChange:i})=>{i&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))}),this.listenTo(e,"change:data",(e,t)=>{"transparent"!=t.type&&this._evaluateTextBeforeSelection("data",{batch:t})})}_evaluateTextBeforeSelection(e,t={}){const i=this.model,n=i.document.selection,o=i.createRange(i.createPositionAt(n.focus.parent,0),n.focus),{text:r,range:s}=Iu(o,i),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const i=Object.assign(t,{text:r,range:s});"object"==typeof a&&Object.assign(i,a),this.fire("matched:"+e,i)}}}Ke(Su,Ue);class Pu extends Qe{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,i=e.editing.view,n=e.locale,o=t.document.selection;this.listenTo(i.document,"arrowKey",(e,t)=>{if(!o.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const i=t.keyCode==No.arrowright,r=t.keyCode==No.arrowleft;if(!i&&!r)return;const s=n.contentLanguageDirection;let a=!1;a="ltr"===s&&i||"rtl"===s&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()},{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(o,"change:range",(e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&Ou(o.getFirstPosition(),this.attributes)||this._restoreGravity())})}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,i=this.editor.model.document.selection,n=i.getFirstPosition();return!this._isGravityOverridden&&((!n.isAtStart||!Mu(i,t))&&(Ou(n,t)?(Ru(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,i=this.editor.model,n=i.document.selection,o=n.getFirstPosition();return this._isGravityOverridden?(Ru(e),this._restoreGravity(),Nu(i,t,o),!0):o.isAtStart?!!Mu(n,t)&&(Ru(e),Nu(i,t,o),!0):function(e,t){return Ou(e.getShiftedBy(-1),t)}(o,t)?o.isAtEnd&&!Mu(n,t)&&Ou(o,t)?(Ru(e),Nu(i,t,o),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change(e=>e.overrideSelectionGravity())}_restoreGravity(){this.editor.model.change(e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}}function Mu(e,t){for(const i of t)if(e.hasAttribute(i))return!0;return!1}function Nu(e,t,i){const n=i.nodeBefore;e.change(e=>{n?e.setSelectionAttribute(n.getAttributes()):e.removeSelectionAttribute(t)})}function Ru(e){e.preventDefault()}function Ou(e,t){const{nodeBefore:i,nodeAfter:n}=e;for(const e of t){const t=i?i.getAttribute(e):void 0;if((n?n.getAttribute(e):void 0)!==t)return!0}return!1}var zu=/[\\^$.*+?()[\]{}|]/g,Du=RegExp(zu.source);var Lu=function(e){return(e=Pn(e))&&Du.test(e)?e.replace(zu,"\\$&"):e};const Vu={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:"1/2",to:"½"},oneThird:{from:"1/3",to:"⅓"},twoThirds:{from:"2/3",to:"⅔"},oneForth:{from:"1/4",to:"¼"},threeQuarters:{from:"3/4",to:"¾"},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:Wu('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:Wu("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:Wu("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:Wu('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:Wu('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:Wu("'"),to:[null,"‚",null,"’"]}},ju={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},Bu=["symbols","mathematical","typography","quotes"];function Fu(e){return"string"==typeof e?new RegExp(`(${Lu(e)})$`):e}function Hu(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function Uu(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function Wu(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function qu(e,t,i,n){return n.createRange($u(e,t,i,!0,n),$u(e,t,i,!1,n))}function $u(e,t,i,n,o){let r=e.textNode||(n?e.nodeBefore:e.nodeAfter),s=null;for(;r&&r.getAttribute(t)==i;)s=r,r=n?r.previousSibling:r.nextSibling;return s?o.createPositionAt(s,n?"before":"after"):e}class Yu extends Ze{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",(e,t)=>{t[1]={...t[1]};const i=t[1];i.batchType||(i.batchType="transparent")},{priority:"high"}),this.listenTo(e.data,"set",(e,t)=>{"transparent"===t[1].batchType&&this.clearStack()})}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,i={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:i}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,i){const n=this.editor.model,o=n.document,r=[],s=e.map(e=>e.getTransformedByOperations(i)),a=s.flat();for(const e of s){const t=e.filter(e=>e.root!=o.graveyard).filter(e=>!Ku(e,a));t.length&&(Gu(t),r.push(t[0]))}r.length&&n.change(e=>{e.setSelection(r,{backward:t})})}_undo(e,t){const i=this.editor.model,n=i.document;this._createdBatches.add(t);const o=e.operations.slice().filter(e=>e.isDocumentOperation);o.reverse();for(const e of o){const o=e.baseVersion+1,r=Array.from(n.history.getOperations(o)),s=oh([e.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const o of s)t.addOperation(o),i.applyOperation(o),n.history.setOperationAsUndone(e,o)}}}function Gu(e){e.sort((e,t)=>e.start.isBefore(t.start)?-1:1);for(let t=1;tt!==e&&t.containsRange(e,!0))}class Qu extends Yu{execute(e=null){const t=e?this._stack.findIndex(t=>t.batch==e):this._stack.length-1,i=this._stack.splice(t,1)[0],n=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(n,()=>{this._undo(i.batch,n);const e=this.editor.model.document.history.getOperations(i.batch.baseVersion);this._restoreSelection(i.selection.ranges,i.selection.isBackward,e),this.fire("revert",i.batch,n)}),this.refresh()}}class Ju extends Yu{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(t,()=>{const i=e.batch.operations[e.batch.operations.length-1].baseVersion+1,n=this.editor.model.document.history.getOperations(i);this._restoreSelection(e.selection.ranges,e.selection.isBackward,n),this._undo(e.batch,t)}),this.refresh()}}class Zu extends Qe{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new Qu(e),this._redoCommand=new Ju(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(e,t)=>{const i=t[0];if(!i.isDocumentOperation)return;const n=i.batch,o=this._redoCommand._createdBatches.has(n),r=this._undoCommand._createdBatches.has(n);this._batchRegistry.has(n)||"transparent"==n.type&&!o&&!r||(o?this._undoCommand.addBatch(n):r||(this._undoCommand.addBatch(n),this._redoCommand.clearStack()),this._batchRegistry.add(n))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(e,t,i)=>{this._redoCommand.addBatch(i)}),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var Xu='',eg='';class tg extends Qe{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?Xu:eg,o="ltr"==t.uiLanguageDirection?eg:Xu;this._addButton("undo",i("Undo"),"CTRL+Z",n),this._addButton("redo",i("Redo"),"CTRL+Y",o)}_addButton(e,t,i,n){const o=this.editor;o.ui.componentFactory.add(e,r=>{const s=o.commands.get(e),a=new ed(r);return a.set({label:t,icon:n,keystroke:i,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",()=>{o.execute(e),o.editing.view.focus()}),a})}}class ig extends Qe{static get requires(){return[Zu,tg]}static get pluginName(){return"Undo"}}class ng{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise((i,n)=>{t.onload=()=>{const e=t.result;this._data=e,i(e)},t.onerror=()=>{n("error")},t.onabort=()=>{n("aborted")},this._reader.readAsDataURL(e)})}abort(){this._reader.abort()}}Ke(ng,Ue);class og extends Qe{static get pluginName(){return"FileRepository"}static get requires(){return[Cl]}init(){this.loaders=new Zi,this.loaders.on("add",()=>this._updatePendingAction()),this.loaders.on("remove",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0)}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return Object(c.b)("filerepository-no-upload-adapter"),null;const t=new rg(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then(e=>{this._loadersMap.set(e,t)}).catch(()=>{}),t.on("change:uploaded",()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e}),t.on("change:uploadTotal",()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e}),t}destroyLoader(e){const t=e instanceof rg?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach((e,i)=>{e===t&&this._loadersMap.delete(i)})}_updatePendingAction(){const e=this.editor.plugins.get(Cl);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,i=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(i(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",i)}}else e.remove(this._pendingAction),this._pendingAction=null}}Ke(og,Ue);class rg{constructor(e,t){this.id=s(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new ng,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(e=>this._filePromiseWrapper?e:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new c.a("filerepository-read-wrong-status",this);return this.status="reading",this.file.then(e=>this._reader.read(e)).then(e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e}).catch(e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e})}upload(){if("idle"!=this.status)throw new c.a("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(e=>(this.uploadResponse=e,this.status="idle",e)).catch(e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e})}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise((i,n)=>{t.rejecter=n,t.isFulfilled=!1,e.then(e=>{t.isFulfilled=!0,i(e)}).catch(e=>{t.isFulfilled=!0,n(e)})}),t}}Ke(rg,Ue);class sg extends Ml{constructor(e){super(e),this.buttonView=new ed(e),this._fileInputView=new ag(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class ag extends Ml{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}function cg(){let e=function(e){e=e.toLowerCase();const t=document.cookie.split(";");for(const i of t){const t=i.split("=");if(decodeURIComponent(t[0].trim().toLowerCase())===e)return decodeURIComponent(t[1])}return null}("ckCsrfToken");var t,i;return e&&40==e.length||(e=function(e){let t="";const i=new Uint8Array(e);window.crypto.getRandomValues(i);for(let e=0;e.5?n.toUpperCase():n}return t}(40),t="ckCsrfToken",i=e,document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(i)+";path=/"),e}class lg{constructor(e,t,i){this.loader=e,this.url=t,this.t=i}upload(){return this.loader.file.then(e=>new Promise((t,i)=>{this._initRequest(),this._initListeners(t,i,e),this._sendRequest(e)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.url,!0),e.responseType="json"}_initListeners(e,t,i){const n=this.xhr,o=this.loader,r=(0,this.t)("Cannot upload file:")+` ${i.name}.`;n.addEventListener("error",()=>t(r)),n.addEventListener("abort",()=>t()),n.addEventListener("load",()=>{const i=n.response;if(!i||!i.uploaded)return t(i&&i.error&&i.error.message?i.error.message:r);e({default:i.url})}),n.upload&&n.upload.addEventListener("progress",e=>{e.lengthComputable&&(o.uploadTotal=e.total,o.uploaded=e.loaded)})}_sendRequest(e){const t=new FormData;t.append("upload",e),t.append("ckCsrfToken",cg()),this.xhr.send(t)}}function dg(e,t,i,n){let o,r=null;"function"==typeof n?o=n:(r=e.commands.get(n),o=()=>{e.execute(n)}),e.model.document.on("change:data",(s,a)=>{if(r&&!r.isEnabled||!t.isEnabled)return;const c=Ns(e.model.document.selection.getRanges());if(!c.isCollapsed)return;if("transparent"==a.type)return;const l=Array.from(e.model.document.differ.getChanges()),d=l[0];if(1!=l.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const h=d.position.parent;if(h.is("element","codeBlock"))return;if(h.is("element","listItem")&&"function"!=typeof n&&!["numberedList","bulletedList","todoList"].includes(n))return;if(r&&!0===r.value)return;const u=h.getChild(0),g=e.model.createRangeOn(u);if(!g.containsRange(c)&&!c.end.isEqual(g.end))return;const m=i.exec(u.data.substr(0,c.end.offset));m&&e.model.enqueueChange(t=>{const i=t.createPositionAt(h,0),n=t.createPositionAt(h,m[0].length),r=new ba(i,n);if(!1!==o({match:m})){t.remove(r);const i=e.model.document.selection.getFirstRange(),n=t.createRangeIn(h);!h.isEmpty||n.isEqual(i)||n.containsRange(i,!0)||t.remove(h)}r.detach()})})}function hg(e,t,i,n){let o,r;i instanceof RegExp?o=i:r=i,r=r||(e=>{let t;const i=[],n=[];for(;null!==(t=o.exec(e))&&!(t&&t.length<4);){let{index:e,1:o,2:r,3:s}=t;const a=o+r+s;e+=t[0].length-a.length;const c=[e,e+o.length],l=[e+o.length+r.length,e+o.length+r.length+s.length];i.push(c),i.push(l),n.push([e+o.length,e+o.length+r.length])}return{remove:i,format:n}}),e.model.document.on("change:data",(i,o)=>{if("transparent"==o.type||!t.isEnabled)return;const s=e.model,a=s.document.selection;if(!a.isCollapsed)return;const c=Array.from(s.document.differ.getChanges()),l=c[0];if(1!=c.length||"insert"!==l.type||"$text"!=l.name||1!=l.length)return;const d=a.focus,h=d.parent,{text:u,range:g}=function(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>!n.is("$text")&&!n.is("$textProxy")||n.getAttribute("code")?(i=t.createPositionAfter(n),""):e+n.data,""),range:t.createRange(i,e.end)}}(s.createRange(s.createPositionAt(h,0),d),s),m=r(u),f=ug(g.start,m.format,s),p=ug(g.start,m.remove,s);f.length&&p.length&&s.enqueueChange(e=>{if(!1!==n(e,f))for(const t of p.reverse())e.remove(t)})})}function ug(e,t,i){return t.filter(e=>void 0!==e[0]&&void 0!==e[1]).map(t=>i.createRange(e.getShiftedBy(t[0]),e.getShiftedBy(t[1])))}function gg(e,t){return(i,n)=>{if(!e.commands.get(t).isEnabled)return!1;const o=e.model.schema.getValidRanges(n,t);for(const e of o)i.setAttribute(t,!0,e);i.removeSelectionAttribute(t)}}class mg extends Ze{constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,i=t.document.selection,n=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(i.isCollapsed)n?e.setSelectionAttribute(this.attributeKey,!0):e.removeSelectionAttribute(this.attributeKey);else{const o=t.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const t of o)n?e.setAttribute(this.attributeKey,n,t):e.removeAttribute(this.attributeKey,t)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,i=e.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const e of i.getRanges())for(const i of e.getItems())if(t.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}class fg extends Qe{static get pluginName(){return"BoldEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"bold"}),e.model.schema.setAttributeProperties("bold",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"bold",view:"strong",upcastAlso:["b",e=>{const t=e.getStyle("font-weight");return t?"bold"==t||Number(t)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),e.commands.add("bold",new mg(e,"bold")),e.keystrokes.set("CTRL+B","bold")}}class pg extends Qe{static get pluginName(){return"BoldUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("bold",i=>{const n=e.commands.get("bold"),o=new ed(i);return o.set({label:t("Bold"),icon:'',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("bold"),e.editing.view.focus()}),o})}}class bg extends Qe{static get pluginName(){return"ItalicEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"italic"}),e.model.schema.setAttributeProperties("italic",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"italic",view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add("italic",new mg(e,"italic")),e.keystrokes.set("CTRL+I","italic")}}class wg extends Qe{static get pluginName(){return"ItalicUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("italic",i=>{const n=e.commands.get("italic"),o=new ed(i);return o.set({label:t("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("italic"),e.editing.view.focus()}),o})}}class kg extends Ze{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.schema,n=t.document.selection,o=Array.from(n.getSelectedBlocks()),r=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(r){const t=o.filter(e=>_g(e)||yg(i,e));this._applyQuote(e,t)}else this._removeQuote(e,o.filter(_g))})}_getValue(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!_g(e))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,i=Ns(e.getSelectedBlocks());return!!i&&yg(t,i)}_removeQuote(e,t){vg(e,t).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const i=e.createPositionBefore(t.start.parent);return void e.move(t,i)}t.end.isAtEnd||e.split(t.end);const i=e.createPositionAfter(t.end.parent);e.move(t,i)})}_applyQuote(e,t){const i=[];vg(e,t).reverse().forEach(t=>{let n=_g(t.start);n||(n=e.createElement("blockQuote"),e.wrap(t,n)),i.push(n)}),i.reverse().reduce((t,i)=>t.nextSibling==i?(e.merge(e.createPositionAfter(t)),t):i)}}function _g(e){return"blockQuote"==e.parent.name?e.parent:null}function vg(e,t){let i,n=0;const o=[];for(;n{const n=e.model.document.differ.getChanges();for(const e of n)if("insert"==e.type){const n=e.position.nodeAfter;if(!n)continue;if(n.is("element","blockQuote")&&n.isEmpty)return i.remove(n),!0;if(n.is("element","blockQuote")&&!t.checkChild(e.position,n))return i.unwrap(n),!0;if(n.is("element")){const e=i.createRangeIn(n);for(const n of e.getItems())if(n.is("element","blockQuote")&&!t.checkChild(i.createPositionBefore(n),n))return i.unwrap(n),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return i.remove(t),!0}return!1});const i=this.editor.editing.view.document,n=e.model.document.selection,o=e.commands.get("blockQuote");this.listenTo(i,"enter",(t,i)=>{if(!n.isCollapsed||!o.value)return;n.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"}),this.listenTo(i,"delete",(t,i)=>{if("backward"!=i.direction||!n.isCollapsed||!o.value)return;const r=n.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"})}}i(69);class Ag extends Qe{static get pluginName(){return"BlockQuoteUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("blockQuote",i=>{const n=e.commands.get("blockQuote"),o=new ed(i);return o.set({label:t("Block quote"),icon:Tl.quote,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),o})}}class Cg extends Qe{static get pluginName(){return"CKFinderUI"}init(){const e=this.editor,t=e.ui.componentFactory,i=e.t;t.add("ckfinder",t=>{const n=e.commands.get("ckfinder"),o=new ed(t);return o.set({label:i("Insert image or file"),icon:'',tooltip:!0}),o.bind("isEnabled").to(n),o.on("execute",()=>{e.execute("ckfinder"),e.editing.view.focus()}),o})}}class Tg extends Ze{constructor(e){super(e),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",()=>this.refresh(),{priority:"low"})}refresh(){const e=this.editor.commands.get("insertImage"),t=this.editor.commands.get("link");this.isEnabled=e.isEnabled||t.isEnabled}execute(){const e=this.editor,t=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=t&&"modal"!=t)throw new c.a("ckfinder-unknown-openermethod",e);const i=this.editor.config.get("ckfinder.options")||{};i.chooseFiles=!0;const n=i.onInit;i.language||(i.language=e.locale.uiLanguage),i.onInit=t=>{n&&n(t),t.on("files:choose",i=>{const n=i.data.files.toArray(),o=n.filter(e=>!e.isImage()),r=n.filter(e=>e.isImage());for(const t of o)e.execute("link",t.getUrl());const s=[];for(const e of r){const i=e.getUrl();s.push(i||t.request("file:getProxyUrl",{file:e}))}s.length&&Eg(e,s)}),t.on("file:choose:resizedImage",t=>{const i=t.data.resizedUrl;if(i)Eg(e,[i]);else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not obtain resized image URL."),{title:i("Selecting resized image failed"),namespace:"ckfinder"})}})},window.CKFinder[t](i)}}function Eg(e,t){if(e.commands.get("insertImage").isEnabled)e.execute("insertImage",{source:t});else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not insert image at the current position."),{title:i("Inserting image failed"),namespace:"ckfinder"})}}class Ig extends Qe{static get pluginName(){return"CKFinderEditing"}static get requires(){return[Od,"LinkEditing"]}init(){const e=this.editor;if(!e.plugins.has("ImageBlockEditing")&&!e.plugins.has("ImageInlineEditing"))throw new c.a("ckfinder-missing-image-plugin",e);e.commands.add("ckfinder",new Tg(e))}}class Sg extends Qe{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",og]}init(){const e=this.editor,t=e.plugins.get("CloudServices"),i=t.token,n=t.uploadUrl;i&&(this._uploadGateway=e.plugins.get("CloudServicesCore").createUploadGateway(i,n),e.plugins.get(og).createUploadAdapter=e=>new Pg(this._uploadGateway,e))}}class Pg{constructor(e,t){this.uploadGateway=e,this.loader=t}upload(){return this.loader.file.then(e=>(this.fileUploader=this.uploadGateway.upload(e),this.fileUploader.on("progress",(e,t)=>{this.loader.uploadTotal=t.total,this.loader.uploaded=t.uploaded}),this.fileUploader.send()))}abort(){this.fileUploader.abort()}}class Mg extends Ze{refresh(){const e=this.editor.model,t=Ns(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&Ng(t,e.schema)}execute(e={}){const t=this.editor.model,i=t.document;t.change(n=>{const o=(e.selection||i.selection).getSelectedBlocks();for(const e of o)!e.is("element","paragraph")&&Ng(e,t.schema)&&n.rename(e,"paragraph")})}}function Ng(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class Rg extends Ze{execute(e){const t=this.editor.model;let i=e.position;t.change(e=>{const n=e.createElement("paragraph");if(!t.schema.checkChild(i.parent,n)){const o=t.schema.findAllowedParent(i,n);if(!o)return;i=e.split(i,o).position}t.insertContent(n,i),e.setSelection(n,"in")})}}class Og extends Qe{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new Mg(e)),e.commands.add("insertParagraph",new Rg(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>Og.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Og.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class zg extends Ze{constructor(e,t){super(e),this.modelElements=t}refresh(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some(t=>Dg(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,i=t.document,n=e.value;t.change(e=>{const o=Array.from(i.selection.getSelectedBlocks()).filter(e=>Dg(e,n,t.schema));for(const t of o)t.is("element",n)||e.rename(t,n)})}}function Dg(e,t,i){return i.checkChild(e.parent,t)&&!i.isObject(e)}class Lg extends Qe{static get pluginName(){return"HeadingEditing"}constructor(e){super(e),e.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Og]}init(){const e=this.editor,t=e.config.get("heading.options"),i=[];for(const n of t)"paragraph"!==n.model&&(e.model.schema.register(n.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(n),i.push(n.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new zg(e,i))}afterInit(){const e=this.editor,t=e.commands.get("enter"),i=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",(t,n)=>{const o=e.model.document.selection.getFirstPosition().parent;i.some(e=>o.is("element",e.model))&&!o.is("element","paragraph")&&0===o.childCount&&n.writer.rename(o,"paragraph")})}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:a.get("low")+1})}}i(13);class Vg extends Qe{static get pluginName(){return"HeadingUI"}init(){const e=this.editor,t=e.t,i=function(e){const t=e.t,i={Paragraph:t("Paragraph"),"Heading 1":t("Heading 1"),"Heading 2":t("Heading 2"),"Heading 3":t("Heading 3"),"Heading 4":t("Heading 4"),"Heading 5":t("Heading 5"),"Heading 6":t("Heading 6")};return e.config.get("heading.options").map(e=>{const t=i[e.title];return t&&t!=e.title&&(e.title=t),e})}(e),n=t("Choose heading"),o=t("Heading");e.ui.componentFactory.add("heading",t=>{const r={},s=new Zi,a=e.commands.get("heading"),c=e.commands.get("paragraph"),l=[a];for(const e of i){const t={type:"button",model:new zd({label:e.title,class:e.class,withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(c,"value"),t.model.set("commandName","paragraph"),l.push(c)):(t.model.bind("isOn").to(a,"value",t=>t===e.model),t.model.set({commandName:"heading",commandValue:e.model})),s.add(t),r[e.model]=e.title}const d=xd(t);return Cd(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:o}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(l,"isEnabled",(...e)=>e.some(e=>e)),d.buttonView.bind("label").to(a,"value",c,"value",(e,t)=>{const i=e||t&&"paragraph";return r[i]?r[i]:n}),this.listenTo(d,"execute",t=>{e.execute(t.source.commandName,t.source.commandValue?{value:t.source.commandValue}:void 0),e.editing.view.focus()}),d})}}class jg extends Qe{static get requires(){return[Ud]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",t=>{(function(e){const t=e.getSelectedElement();return!(!t||!Oh(t))})(e.editing.view.document.selection)&&t.stop()},{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:i,getRelatedElement:n,balloonClassName:o="ck-toolbar-container"}){if(!i.length)return void Object(c.b)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,s=r.t,a=new pd(r.locale);if(a.ariaLabel=t||s("Widget toolbar"),this._toolbarDefinitions.has(e))throw new c.a("widget-toolbar-duplicated",this,{toolbarId:e});a.fillFromConfig(i,r.ui.componentFactory),this._toolbarDefinitions.set(e,{view:a,getRelatedElement:n,balloonClassName:o})}_updateToolbarsVisibility(){let e=0,t=null,i=null;for(const n of this._toolbarDefinitions.values()){const o=n.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&o)if(this.editor.ui.focusTracker.isFocused){const r=o.getAncestors().length;r>e&&(e=r,t=o,i=n)}else this._isToolbarVisible(n)&&this._hideToolbar(n);else this._isToolbarInBalloon(n)&&this._hideToolbar(n)}i&&this._showToolbar(i,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?Bg(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:Fg(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);Bg(this.editor,t)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function Bg(e,t){const i=e.plugins.get("ContextualBalloon"),n=Fg(e,t);i.updatePosition(n)}function Fg(e,t){const i=e.editing.view,n=Vd.defaultPositions;return{target:i.domConverter.mapViewToDom(t),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,Hh]}}class Hg{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,i){const n=new Ts(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const i of t)if(e.classList.contains("ck-widget__resizer__handle-"+i))return i}(e),this._referenceCoordinates=function(e,t){const i=new Ts(e),n=t.split("-"),o={x:"right"==n[1]?i.right:i.left,y:"bottom"==n[0]?i.bottom:i.top};return o.x+=e.ownerDocument.defaultView.scrollX,o.y+=e.ownerDocument.defaultView.scrollY,o}(t,function(e){const t=e.split("-"),i={top:"bottom",bottom:"top",left:"right",right:"left"};return`${i[t[0]]}-${i[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=n.width,this.originalHeight=n.height,this.aspectRatio=n.width/n.height;const o=i.style.width;o&&o.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(o):this.originalWidthPercents=function(e,t){const i=e.parentElement,n=parseFloat(i.ownerDocument.defaultView.getComputedStyle(i).width);return t.width/n*100}(i,n)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}Ke(Hg,Ue);class Ug extends Ml{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",e=>e?"ck-orientation-"+e:"")],style:{display:e.if("_isVisible","none",e=>!e)}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",(e,t)=>null!==e&&null!==t),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",(t,i,n)=>"px"===e.unit?`${t}×${i}`:n+"%"),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",(e,t,i)=>t<50||i<50?"above-center":e)}_dismiss(){this.unbind(),this._isVisible=!1}}class Wg{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())},{priority:"high"}),this.on("change:isEnabled",()=>{this.isEnabled&&this.redraw()})}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change(i=>{const n=i.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const i=this.toDomElement(t);return e._appendHandles(i),e._appendSizeUI(i),e.on("change:isEnabled",(e,t,n)=>{i.style.display=n?"":"none"}),i.style.display=e.isEnabled?"":"none",i}));i.insert(i.createPositionAt(t,"end"),n),i.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=n})}begin(e){this.state=new Hg(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change(e=>{const i=this._options.unit||"%",n=("%"===i?t.widthPercents:t.width)+i;e.setStyle("width",n,this._options.viewElement)});const i=this._getHandleHost(),n=new Ts(i);t.handleHostWidth=Math.round(n.width),t.handleHostHeight=Math.round(n.height);const o=new Ts(i);t.width=Math.round(o.width),t.height=Math.round(o.height),this.redraw(n),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change(()=>{this._cleanup(),this._options.onCommit(t)})}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((i=t)&&i.ownerDocument&&i.ownerDocument.contains(i)))return;var i;const n=t.parentElement,o=this._getHandleHost(),r=this._viewResizerWrapper,s=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(n.isSameNode(o)){const t=e||new Ts(o);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[o.offsetWidth+"px",o.offsetHeight+"px",o.offsetLeft+"px",o.offsetTop+"px"];"same"!==cn(s,a)&&this._options.editor.editing.view.change(e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)})}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change(e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)})}_proposeNewSize(e){const t=this.state,i={x:(n=e).pageX,y:n.pageY};var n;const o=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(i.x+t.originalWidth),y:i.y-t.originalHeight-t._referenceCoordinates.y};o&&t.activeHandlePosition.endsWith("-right")&&(r.x=i.x-(t._referenceCoordinates.x+t.originalWidth)),o&&(r.x*=2);const s={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};s.dominant=s.width/t.aspectRatio>s.height?"width":"height",s.max=s[s.dominant];const a={width:s.width,height:s.height};return"width"==s.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const n of t)e.appendChild(new Nl({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(i=n,"ck-widget__resizer__handle-"+i)}}).render());var i}_appendSizeUI(e){this._sizeView=new Ug,this._sizeView.render(),e.appendChild(this._sizeView.element)}}Ke(Wg,Ue);i(72);Ke(class extends Qe{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=vr.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(uh),this._observer=Object.create(Mr),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const i=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=iu(i,200),this.on("change:visibleResizer",i),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())},{priority:"lowest"}),this._observer.listenTo(vr.window,"resize",this._redrawFocusedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",()=>{const e=n.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null})}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new Wg(e),i=this.editor.plugins;if(t.attach(),i.has("WidgetToolbarRepository")){const e=i.get("WidgetToolbarRepository");t.on("begin",()=>{e.forceDisabled("resize")},{priority:"lowest"}),t.on("cancel",()=>{e.clearForceDisabled("resize")},{priority:"highest"}),t.on("commit",()=>{e.clearForceDisabled("resize")},{priority:"highest"})}this._resizers.set(e.viewElement,t);const n=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(n)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const i=t.domTarget;Wg.isResizeHandle(i)&&(this._activeResizer=this._getResizerByHandle(i),this._activeResizer&&(this._activeResizer.begin(i),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}},Ue);class qg extends Ze{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change(t=>{t.setAttribute("alt",e.newValue,o)})}}function $g(e,t){const i=e.createEmptyElement("img"),n="imageBlock"===t?e.createContainerElement("figure",{class:"image"}):e.createContainerElement("span",{class:"image-inline"},{isAllowedInsideAttributeElement:!0});return e.insert(e.createPositionAt(n,0),i),n}function Yg(e,t){if(e.plugins.has("ImageInlineEditing")!==e.plugins.has("ImageBlockEditing"))return{name:"img",attributes:{src:!0}};const i=e.plugins.get("ImageUtils");return e=>{if(!i.isInlineImageView(e)||!e.hasAttribute("src"))return null;return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:{name:!0,attributes:["src"]}}}function Gg(e,t){const i=Ns(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class Kg extends Qe{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,r=o.document.selection;i=Qg(n,t||r,i),e={...Object.fromEntries(r.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change(n=>{const s=n.createElement(i,e);return t||"imageInline"==i||(t=Fh(r,o)),o.insertContent(s,t),s.parent?(n.setSelection(s,"on"),s):null})}getClosestSelectedImageWidget(e){const t=e.getSelectedElement();if(t&&this.isImageWidget(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&this.isImageWidget(i))return i;i=i.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==Qg(e,t)){const i=function(e,t){const i=Fh(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return zh(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&Oh(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function Qg(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?Gg(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class Jg extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new qg(this.editor))}}i(74),i(7);class Zg extends Ml{constructor(e){super(e);const t=this.locale.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(t("Save"),Tl.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(t("Cancel"),Tl.cancel,"ck-button-cancel","cancel"),this._focusables=new Pl,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),Il(this)}render(){super.render(),this.keystrokes.listenTo(this.element),Sl({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)})}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new Nd(this.locale,Rd);return t.label=e("Text alternative"),t}}function Xg(e){const t=e.editing.view,i=Vd.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.viewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}class em extends Qe{static get requires(){return[Ud]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",i=>{const n=e.commands.get("imageTextAlternative"),o=new ed(i);return o.set({label:t("Change image text alternative"),icon:Tl.lowVision,tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",()=>{this._showForm()}),o})}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new Zg(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this._form.keystrokes.set("Esc",(e,t)=>{this._hideForm(!0),t()}),this.listenTo(e.ui,"update",()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=Xg(e);t.updatePosition(i)}}(e):this._hideForm(!0)}),El({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:Xg(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class tm extends Qe{static get requires(){return[Jg,em]}static get pluginName(){return"ImageTextAlternative"}}function im(e,t){return e=>{e.on("attribute:srcset:"+t,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function nm(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class om extends Or{observe(e){this.listenTo(e,"load",(e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)},{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class rm extends Ze{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&Object(c.b)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&Object(c.b)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=en(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})})}}class sm extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(om),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new rm(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class am extends Ze{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change(e=>{const r=Array.from(t.markers).filter(e=>e.getRange().containsItem(n)),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const a=e.createRangeOn(s);for(const t of r){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(a,!0):a;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}}):null}}class cm extends Qe{static get requires(){return[sm,Kg,_h]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new am(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageBlock",view:(e,{writer:t})=>$g(t,"imageBlock")}),i.for("editingDowncast").elementToElement({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget($g(i,"imageBlock"),i,t("image widget"))}),i.for("downcast").add(nm(n,"imageBlock","src")).add(nm(n,"imageBlock","alt")).add(im(n,"imageBlock")),i.for("upcast").elementToElement({view:Yg(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",{src:e.getAttribute("src")})}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!o.hasAttribute("src")||!n.consumable.test(o,{name:!0}))return;const r=Ns(n.convertItem(o,i.modelCursor).modelRange.getItems());r&&(n.convertChildren(i.viewItem,r),n.updateConversionResult(r,i))}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isInlineImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(a);if("imageBlock"===Gg(t.schema,c)){const e=new gh(i.document),t=s.map(t=>e.createElement("figure",{class:"image"},t));r.content=e.createDocumentFragment(t)}})}}i(11);class lm extends Qe{static get requires(){return[cm,eu,tm]}static get pluginName(){return"ImageBlock"}}class dm extends Qe{static get requires(){return[sm,Kg,_h]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{isObject:!0,isInline:!0,allowWhere:"$text",allowAttributes:["alt","src","srcset"]}),t.addChildCheck((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new am(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToElement({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget($g(i,"imageInline"),i,t("image widget"))}),i.for("downcast").add(nm(n,"imageInline","src")).add(nm(n,"imageInline","alt")).add(im(n,"imageInline")),i.for("upcast").elementToElement({view:Yg(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",{src:e.getAttribute("src")})})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isBlockImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(a);if("imageInline"===Gg(t.schema,c)){const e=new gh(i.document),t=s.map(t=>1===t.childCount?(Array.from(t.getAttributes()).forEach(i=>e.setAttribute(...i,n.findViewImgElement(t))),t.getChild(0)):t);r.content=e.createDocumentFragment(t)}})}}class hm extends Qe{static get requires(){return[dm,eu,tm]}static get pluginName(){return"ImageInline"}}function um(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}function gm(e,t){const i=t.getFirstPosition().findAncestor("caption");return i&&e.isBlockImage(i.parent)?i:null}class mm extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils");if(!e.plugins.has(cm))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=gm(t,i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!um(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)})}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const r=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=r||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageUtils");let r,s=i.getSelectedElement();s?r=um(s):(r=gm(o,i),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class fm extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new mm(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.conversion.for("upcast").elementToElement({view:e=>function(e,t){return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}(i,e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!i.isBlockImage(e.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Kd({view:t,element:r,text:n("Enter image caption"),keepOnFocus:!0});const s=Bh(r,o);return Vh(s,o,(e,t,i)=>i.addClass(en(t.classes),e),(e,t,i)=>i.removeClass(en(t.classes),e)),s}}),e.editing.mapper.on("modelToViewPosition",pm(t)),e.data.mapper.on("modelToViewPosition",pm(t))}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.commands.get("imageTypeInline"),n=e.commands.get("imageTypeBlock"),o=e=>{if(!e.return)return;const{oldElement:i,newElement:n}=e.return;if(!i)return;if(t.isBlockImage(i)){const e=um(i);if(e)return void this._saveCaption(n,e)}const o=this._getSavedCaption(i);o&&this._saveCaption(n,o)};i&&this.listenTo(i,"execute",o,{priority:"low"}),n&&this.listenTo(n,"execute",o,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Js.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}function pm(e){return(t,i)=>{const n=i.modelPosition,o=n.parent;if(!o.is("element","imageBlock"))return;const r=i.mapper.toViewElement(o);i.viewPosition=e.createPositionAt(r,n.offset+1)}}class bm extends Qe{static get requires(){return[Kg]}static get pluginName(){return"ImageCaptionUI"}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",o=>{const r=e.commands.get("toggleImageCaption"),s=new ed(o);return s.set({icon:Tl.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",e=>n(e?"Toggle caption off":"Toggle caption on")),this.listenTo(s,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const n=gm(i,e.model.document.selection);if(n){const i=e.editing.mapper.toViewElement(n);t.scrollToTheSelection(),t.change(e=>{e.addClass("image__caption_highlighted",i)})}}),s})}}i(78);class wm extends Ze{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]}))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change(t=>{const o=e.value;let r=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,r)&&(this.editor.execute(n.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",r):t.setAttribute("imageStyle",o,r)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:km,objectInline:_m,objectLeft:vm,objectRight:ym,objectCenter:xm,objectBlockLeft:Am,objectBlockRight:Cm}=Tl,Tm={inline:{name:"inline",title:"In line",icon:_m,modelElements:["imageInline"],isDefault:!0},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:vm,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"},alignBlockLeft:{name:"alignBlockLeft",title:"Left aligned image",icon:Am,modelElements:["imageBlock"],className:"image-style-block-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:xm,modelElements:["imageBlock"],className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:ym,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"},alignBlockRight:{name:"alignBlockRight",title:"Right aligned image",icon:Cm,modelElements:["imageBlock"],className:"image-style-block-align-right"},block:{name:"block",title:"Centered image",icon:xm,modelElements:["imageBlock"],isDefault:!0},side:{name:"side",title:"Side image",icon:ym,modelElements:["imageBlock"],className:"image-style-side"}},Em={full:km,left:Am,right:Cm,center:xm,inlineLeft:vm,inlineRight:ym,inline:_m},Im=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Sm(e){Object(c.b)("image-style-configuration-definition-invalid",e)}var Pm={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map(e=>function(e){e="string"==typeof e?Tm[e]?{...Tm[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Tm[e.name],e);"string"==typeof e.icon&&(e.icon=Em[e.icon]||e.icon);return e}(e)).filter(t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Sm({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some(e=>o.includes(e)))return Object(c.b)("image-style-missing-dependency",{style:e,missingPlugins:n.map(e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}(t,e))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...Im]:[]},warnInvalidStyle:Sm,DEFAULT_OPTIONS:Tm,DEFAULT_ICONS:Em,DEFAULT_DROPDOWN_DEFINITIONS:Im};function Mm(e,t){for(const i of t)if(i.name===e)return i}class Nm extends Qe{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Kg]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Pm,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new wm(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(r=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Mm(t.attributeNewValue,r),o=Mm(t.attributeOldValue,r),s=i.mapper.toViewElement(t.item),a=i.writer;o&&a.removeClass(o.className,s),n&&a.addClass(n.className,s)});var r;const s=function(e){const t={imageInline:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,r=Ns(i.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle"))for(const e of t[r.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,r)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(Kg),n=new Map(this.normalizedStyles.map(e=>[e.name,e]));t.registerPostFixer(e=>{let o=!1;for(const r of t.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let t="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const a=n.get(s);a&&a.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o})}}i(80);class Rm extends Qe{static get requires(){return[Nm]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=Om(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=Om([...t.filter(w),...Pm.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,n=>{let o;const{defaultItem:r,items:s,title:a}=e,c=s.filter(e=>t.find(({name:t})=>zm(t)===e)).map(e=>{const t=i.create(e);return e===r&&(o=t),t});s.length!==c.length&&Pm.warnInvalidStyle({dropdown:e});const l=xd(n,sd),d=l.buttonView;return Ad(l,c),d.set({label:Dm(a,o.label),class:null,tooltip:!0}),d.bind("icon").toMany(c,"isOn",(...e)=>{const t=e.findIndex(Z);return t<0?o.icon:c[t].icon}),d.bind("label").toMany(c,"isOn",(...e)=>{const t=e.findIndex(Z);return Dm(a,t<0?o.label:c[t].label)}),d.bind("isOn").toMany(c,"isOn",(...e)=>e.some(Z)),d.bind("class").toMany(c,"isOn",(...e)=>e.some(Z)?"ck-splitbutton_flatten":null),d.on("execute",()=>{c.some(({isOn:e})=>e)?l.isOpen=!l.isOpen:o.fire("execute")}),l.bind("isEnabled").toMany(c,"isEnabled",(...e)=>e.some(Z)),l})}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(zm(t),i=>{const n=this.editor.commands.get("imageStyle"),o=new ed(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",e=>e===t),o.on("execute",this._executeCommand.bind(this,t)),o})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function Om(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function zm(e){return"imageStyle:"+e}function Dm(e,t){return(e?e+": ":"")+t}function Lm(e){const t=e.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${t.join("|")})$`)}function Vm(e){return new Promise((t,i)=>{const n=e.getAttribute("src");fetch(n).then(e=>e.blob()).then(e=>{const i=jm(e,n),o=i.replace("image/",""),r=new File([e],"image."+o,{type:i});t(r)}).catch(e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise((t,i)=>{const n=vr.document.createElement("img");n.addEventListener("load",()=>{const e=vr.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob(e=>e?t(e):i())}),n.addEventListener("error",()=>i()),n.src=e})}(e).then(t=>{const i=jm(t,e),n=i.replace("image/","");return new File([t],"image."+n,{type:i})})}(n).then(t).catch(i):i(e))})}function jm(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Bm extends Qe{static get pluginName(){return"ImageUploadUI"}init(){const e=this.editor,t=e.t,i=i=>{const n=new sg(i),o=e.commands.get("uploadImage"),r=e.config.get("image.upload.types"),s=Lm(r);return n.set({acceptedType:r.map(e=>"image/"+e).join(","),allowMultipleFiles:!0}),n.buttonView.set({label:t("Insert image"),icon:Tl.image,tooltip:!0}),n.buttonView.bind("isEnabled").to(o),n.on("done",(t,i)=>{const n=Array.from(i).filter(e=>s.test(e.type));n.length&&e.execute("uploadImage",{file:n})}),n};e.ui.componentFactory.add("uploadImage",i),e.ui.componentFactory.add("imageUpload",i)}}i(82),i(84),i(86);class Fm extends Qe{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/svg+xml;utf8,"+encodeURIComponent('')}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",(...e)=>this.uploadStatusChange(...e)),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",(...e)=>this.uploadStatusChange(...e))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,r=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),a=n.plugins.get(og),c=r?t.attributeNewValue:null,l=this.placeholder,d=n.editing.mapper.toViewElement(o),h=i.writer;if("reading"==c)return Hm(d,h),void Um(s,l,d,h);if("uploading"==c){const e=a.loaders.get(r);return Hm(d,h),void(e?(Wm(d,h),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",(e,t,i)=>{n.change(e=>{e.setStyle("width",i+"%",o)})})}(d,h,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,d,h,e)):Um(s,l,d,h))}"complete"==c&&a.loaders.get(r)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout(()=>{i.change(e=>e.remove(e.createRangeOn(n)))},3e3)}(d,h,n.editing.view),function(e,t){$m(e,t,"progressBar")}(d,h),Wm(d,h),function(e,t){t.removeClass("ck-appear",e)}(d,h)}}function Hm(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function Um(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),qm(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function Wm(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),$m(e,t,"placeholder")}function qm(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function $m(e,t,i){const n=qm(e,i);n&&t.remove(t.createRangeOn(n))}class Ym extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=en(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if(t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);this._uploadImage(e,o,t)}else this._uploadImage(e,o)})}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(og).createLoader(e),r=n.plugins.get("ImageUtils");o&&r.insertImage({...t,uploadId:o.id},i)}}class Gm extends Qe{static get requires(){return[og,Od,_h,Kg]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(og),o=e.plugins.get("ImageUtils"),r=Lm(e.config.get("image.upload.types")),s=new Ym(e);e.commands.add("uploadImage",s),e.commands.add("imageUpload",s),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",(t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter(e=>!!e&&r.test(e.type));o.length&&(t.stop(),e.model.change(t=>{i.targetRanges&&t.setSelection(i.targetRanges.map(t=>e.editing.mapper.toModelRange(t))),e.model.enqueueChange("default",()=>{e.execute("uploadImage",{file:o})})}))}),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(t,i)=>{const r=Array.from(e.editing.view.createRangeIn(i.content)).filter(e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(o,e.item)&&!e.item.getAttribute("uploadProcessed")).map(e=>({promise:Vm(e.item),imageElement:e.item}));if(!r.length)return;const s=new gh(e.editing.view.document);for(const e of r){s.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(s.setAttribute("src","",e.imageElement),s.setAttribute("uploadId",t.id,e.imageElement))}}),e.editing.view.document.on("dragover",(e,t)=>{t.preventDefault()}),t.on("change",()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,r="$graveyard"==t.position.root.rootName;for(const t of Km(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(r?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}}),this.on("uploadComplete",(e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change(e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(og),r=t.plugins.get(Od),s=t.plugins.get("ImageUtils"),a=this._uploadImageElements;return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","reading",a.get(e.id))}),e.read().then(()=>{const n=e.upload(),o=a.get(e.id);if(So.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n})}return i.enqueueChange("transparent",e=>{e.setAttribute("uploadStatus","uploading",o)}),n}).then(t=>{i.enqueueChange("transparent",i=>{const n=a.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})}),c()}).catch(t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&r.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange("transparent",t=>{t.remove(a.get(e.id))}),c()});function c(){i.enqueueChange("transparent",t=>{const i=a.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),a.delete(e.id)}),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter(e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0}).map(t=>`${e[t]} ${t}w`).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function Km(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter(e=>i.isImage(e.item)).map(e=>e.item)}class Qm extends Qe{static get pluginName(){return"IndentEditing"}init(){const e=this.editor;e.commands.add("indent",new et(e)),e.commands.add("outdent",new et(e))}}var Jm='',Zm='';class Xm extends Qe{static get pluginName(){return"IndentUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?Jm:Zm,o="ltr"==t.uiLanguageDirection?Zm:Jm;this._defineButton("indent",i("Increase indent"),n),this._defineButton("outdent",i("Decrease indent"),o)}_defineButton(e,t,i){const n=this.editor;n.ui.componentFactory.add(e,o=>{const r=n.commands.get(e),s=new ed(o);return s.set({label:t,icon:i,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",()=>{n.execute(e),n.editing.view.focus()}),s})}}class ef{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(e=>this._definitions.add(e)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const r=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,r);for(const t in e.styles)n.setStyle(t,e.styles[t],r);n.setCustomProperty("link",!0,r),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(i.mapper.toViewRange(t.range),r):n.unwrap(i.mapper.toViewRange(t.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),r=Array.from(o.getChildren()).find(e=>"a"===e.name);for(const e of this._definitions){const n=gn(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,r);e.classes&&i.addClass(e.classes,r);for(const t in e.styles)i.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,r);e.classes&&i.removeClass(e.classes,r);for(const t in e.styles)i.removeStyle(t,r)}}})}}}var tf=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:zn(e,t,i)},nf=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var of=function(e){return nf.test(e)};var rf=function(e){return e.split("")},sf="[\\ud800-\\udfff]",af="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",cf="\\ud83c[\\udffb-\\udfff]",lf="[^\\ud800-\\udfff]",df="(?:\\ud83c[\\udde6-\\uddff]){2}",hf="[\\ud800-\\udbff][\\udc00-\\udfff]",uf="(?:"+af+"|"+cf+")"+"?",gf="[\\ufe0e\\ufe0f]?"+uf+("(?:\\u200d(?:"+[lf,df,hf].join("|")+")[\\ufe0e\\ufe0f]?"+uf+")*"),mf="(?:"+[lf+af+"?",af,df,hf,sf].join("|")+")",ff=RegExp(cf+"(?="+cf+")|"+mf+gf,"g");var pf=function(e){return e.match(ff)||[]};var bf=function(e){return of(e)?pf(e):rf(e)};var wf=function(e){return function(t){t=Pn(t);var i=of(t)?bf(t):void 0,n=i?i[0]:t.charAt(0),o=i?tf(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase");const kf=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,_f=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,vf=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,yf=/^((\w+:(\/{2,})?)|(\W))/i;function xf(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function Af(e){return function(e){return e.replace(kf,"").match(_f)}(e=String(e))?e:"#"}function Cf(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function Tf(e,t){const i=(n=e,vf.test(n)?"mailto:":t);var n;const o=!!i&&!yf.test(e);return e&&o?i+e:e}class Ef extends Ze{constructor(e){super(e),this.manualDecorators=new Zi,this.automaticDecorators=new ef}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||Ns(t.getSelectedBlocks());Cf(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,o=[],r=[];for(const e in t)t[e]?o.push(e):r.push(e);i.change(t=>{if(n.isCollapsed){const s=n.getFirstPosition();if(n.hasAttribute("linkHref")){const a=qu(s,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,a),o.forEach(e=>{t.setAttribute(e,!0,a)}),r.forEach(e=>{t.removeAttribute(e,a)}),t.setSelection(t.createPositionAfter(a.end.nodeBefore))}else if(""!==e){const r=gn(n.getAttributes());r.set("linkHref",e),o.forEach(e=>{r.set(e,!0)});const{end:a}=i.insertContent(t.createText(e,r),s);t.setSelection(a)}["linkHref",...o,...r].forEach(e=>{t.removeSelectionAttribute(e)})}else{const s=i.schema.getValidRanges(n.getRanges(),"linkHref"),a=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&a.push(t.createRangeOn(e));const c=a.slice();for(const e of s)this._isRangeToUpdate(e,a)&&c.push(e);for(const i of c)t.setAttribute("linkHref",e,i),o.forEach(e=>{t.setAttribute(e,!0,i)}),r.forEach(e=>{t.removeAttribute(e,i)})}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return Cf(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class If extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();Cf(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change(e=>{const o=i.isCollapsed?[qu(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of o)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)})}}class Sf{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:r}){this.id=e,this.set("value"),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}Ke(Sf,Ue);i(88);const Pf=/^(https?:)?\/\//;class Mf extends Qe{static get pluginName(){return"LinkEditing"}static get requires(){return[Pu,Tu,_h]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:xf}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>xf(Af(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new Ef(e)),e.commands.add("unlink",new If(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach(e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e)),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:"link"+wf(i)});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter(e=>"automatic"===e.mode)),this._enableManualDecorators(t.filter(e=>"manual"===e.mode));e.plugins.get(Pu).registerAttribute("linkHref"),function(e,t,i,n){const o=e.editing.view,r=new Set;o.document.registerPostFixer(o=>{const s=e.model.document.selection;let a=!1;if(s.hasAttribute(t)){const c=qu(s.getFirstPosition(),t,s.getAttribute(t),e.model),l=e.editing.mapper.toViewRange(c);for(const e of l.getItems())e.is("element",i)&&!e.hasClass(n)&&(o.addClass(n,e),r.add(e),a=!0)}return a}),e.conversion.for("editingDowncast").add(e=>{function t(){o.change(e=>{for(const t of r.values())e.removeClass(n,t),r.delete(t)})}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})})}(e,"linkHref","a","ck-link_selected"),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:"automatic",callback:e=>Pf.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach(e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new Sf(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i})=>{if(t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change(t=>{Nf(t,Of(e.schema))}))},{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,t=e.model;e.editing.view.addObserver(uh);let i=!1;this.listenTo(e.editing.view.document,"mousedown",()=>{i=!0}),this.listenTo(e.editing.view.document,"selectionChange",()=>{if(!i)return;i=!1;const e=t.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const n=e.getFirstPosition(),o=qu(n,"linkHref",e.getAttribute("linkHref"),t);(n.isTouching(o.start)||n.isTouching(o.end))&&t.change(e=>{Nf(e,Of(t.schema))})})}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",()=>{n=!0},{priority:"high"}),this.listenTo(e.model,"deleteContent",()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:Rf(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),o=i.nodeAfter;if(!o)return!1;if(!o.is("$text"))return!1;if(!o.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(o===r)return!0;return qu(i,"linkHref",o.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))},{priority:"high"}),this.listenTo(e.model,"insertContent",(t,[o])=>{n=!1,Rf(e)&&i&&(e.model.change(e=>{for(const[t,n]of i)e.setAttribute(t,n,o)}),i=null)},{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let o=!1,r=!1;this.listenTo(n.document,"delete",(e,t)=>{r=t.domEvent.keyCode===No.backspace},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{o=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=qu(e,"linkHref",n,t);o=r.containsPosition(e)||r.end.isEqual(e)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{r&&(r=!1,o||e.model.enqueueChange(e=>{Nf(e,Of(t.schema))}))},{priority:"low"})}}function Nf(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function Rf(e){return e.plugins.get("Input").isInput(e.model.change(e=>e.batch))}function Of(e){return e.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}i(90);class zf extends Ml{constructor(e,t){super(e);const i=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tl.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),Tl.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(t),this.children=this._createFormChildren(t.manualDecorators),this._focusables=new Pl,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const n=["ck","ck-link-form","ck-responsive-form"];t.manualDecorators.length&&n.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:n,tabindex:"-1"},children:this.children}),Il(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((e,t)=>(e[t.name]=t.isOn,e),{})}render(){super.render(),Sl({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new Nd(this.locale,Rd);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new td(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",(e,t)=>void 0===t&&void 0===e?i.defaultValue:e),n.on("execute",()=>{i.set("value",!n.isOn)}),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new Ml;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map(e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}})),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}i(92);class Df extends Ml{constructor(e){super(e);const t=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(t("Unlink"),'',"unlink"),this.editButtonView=this._createButton(t("Edit link"),Tl.pencil,"edit"),this.set("href"),this._focusables=new Pl,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new ed(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new ed(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",e=>e&&Af(e)),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",e=>e||i("This link has no URL")),e.bind("isEnabled").to(this,"href",e=>!!e),e.template.tag="a",e.template.eventListeners={},e}}class Lf extends Qe{static get requires(){return[Ud]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(hh),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(Ud),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:"link-ui",view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:"link-ui",view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new Df(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",()=>{this._addFormView()}),this.listenTo(t,"unlink",()=>{e.execute("unlink"),this._hideUI()}),t.keystrokes.set("Esc",(e,t)=>{this._hideUI(),t()}),t.keystrokes.set("Ctrl+K",(e,t)=>{this._addFormView(),t()}),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new zf(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",e=>!e),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",()=>{const{value:t}=n.urlInputView.fieldView.element,o=Tf(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(e,t)=>{this._closeFormView(),t()}),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set("Ctrl+K",(e,i)=>{i(),t.isEnabled&&this._showUI(!0)}),e.ui.componentFactory.add("link",e=>{const n=new ed(e);return n.isEnabled=!0,n.label=i("Link"),n.icon='',n.keystroke="Ctrl+K",n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",e=>!!e),this.listenTo(n,"execute",()=>this._showUI(!0)),n})}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set("Tab",(e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),El({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=r();const o=()=>{const e=this._getSelectedLinkElement(),t=r();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find(e=>e.is("element"))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has("link-ui")){const t=Array.from(this.editor.editing.mapper.markerNameToElements("link-ui")),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&Oh(i))return Vf(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Vf(i.start),o=Vf(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has("link-ui"))t.updateMarker("link-ui",{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition(({item:t})=>!e.schema.isContent(t),{boundaries:i});t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has("link-ui")&&e.change(e=>{e.removeMarker("link-ui")})}}function Vf(e){return e.getAncestors().find(e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t})}const jf=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[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]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Bf extends Qe{static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new Su(e.model,e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=Ff(e.substr(0,e.length-1));return t?{url:t}:void 0}),i=e.plugins.get("Input");t.on("matched:data",(t,n)=>{const{batch:o,range:r,url:s}=n;if(!i.isInput(o))return;const a=r.end.getShiftedBy(-1),c=a.getShiftedBy(-s.length),l=e.model.createRange(c,a);this._applyAutoLink(s,l)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=Iu(e,t),o=Ff(i);if(o){const e=t.createRange(n.end.getShiftedBy(-o.length),n.end);this._applyAutoLink(o,e)}}_applyAutoLink(e,t){const i=this.editor.model;this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange(i=>{const n=this.editor.config.get("link.defaultProtocol"),o=Tf(e,n);i.setAttribute("linkHref",o,t)})}}function Ff(e){const t=jf.exec(e);return t?t[2]:null}class Hf extends Ze{constructor(e,t){super(e),this.type=t}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document,n=Array.from(i.selection.getSelectedBlocks()).filter(e=>Wf(e,t.schema)),o=void 0!==e.forceValue?!e.forceValue:this.value;t.change(e=>{if(o){let t=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;t&&"listItem"==t.name&&0!==t.getAttribute("listIndent");){const e=t.getAttribute("listIndent");e=i;)r>o.getAttribute("listIndent")&&(r=o.getAttribute("listIndent")),o.getAttribute("listIndent")==r&&e[t?"unshift":"push"](o),o=o[t?"previousSibling":"nextSibling"]}}function Wf(e,t){return t.checkChild(e.parent,"listItem")&&!t.isObject(e)}class qf extends Ze{constructor(e,t){super(e),this._indentBy="forward"==t?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=e.document;let i=Array.from(t.selection.getSelectedBlocks());e.change(e=>{const t=i[i.length-1];let n=t.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>t.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const t of i){const i=t.getAttribute("listIndent")+this._indentBy;i<0?e.rename(t,"paragraph"):e.setAttribute("listIndent",i,t)}this.fire("_executeCleanup",i)})}_checkEnabled(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());if(!e||!e.is("element","listItem"))return!1;if(this._indentBy>0){const t=e.getAttribute("listIndent"),i=e.getAttribute("listType");let n=e.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=t;){if(n.getAttribute("listIndent")==t)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}function $f(e,t){const i=t.mapper,n=t.writer,o="numbered"==e.getAttribute("listType")?"ol":"ul",r=function(e){const t=e.createContainerElement("li");return t.getFillerOffset=Zf,t}(n),s=n.createContainerElement(o,null);return n.insert(n.createPositionAt(s,0),r),i.bindElements(e,r),r}function Yf(e,t,i,n){const o=t.parent,r=i.mapper,s=i.writer;let a=r.toViewPosition(n.createPositionBefore(e));const c=Qf(e.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:e.getAttribute("listIndent")}),l=e.previousSibling;if(c&&c.getAttribute("listIndent")==e.getAttribute("listIndent")){const e=r.toViewElement(c);a=s.breakContainer(s.createPositionAfter(e))}else if(l&&"listItem"==l.name){a=r.toViewPosition(n.createPositionAt(l,"end"));const e=r.findMappedViewAncestor(a),t=function(e){for(const t of e.getChildren())if("ul"==t.name||"ol"==t.name)return t;return null}(e);a=t?s.createPositionBefore(t):s.createPositionAt(e,"end")}else a=r.toViewPosition(n.createPositionBefore(e));if(a=Kf(a),s.insert(a,o),l&&"listItem"==l.name){const e=r.toViewElement(l),i=s.createRange(s.createPositionAt(e,0),a).getWalker({ignoreElementEnd:!0});for(const e of i)if(e.item.is("element","li")){const n=s.breakContainer(s.createPositionBefore(e.item)),o=e.item.parent,r=s.createPositionAt(t,"end");Gf(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(o),r),i.position=n}}else{const i=o.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const t of i.getChildren()){const i=r.toModelElement(t);if(!(i&&i.getAttribute("listIndent")>e.getAttribute("listIndent")))break;n=t}n&&(s.breakContainer(s.createPositionAfter(n)),s.move(s.createRangeOn(n.parent),s.createPositionAt(t,"end")))}}Gf(s,o,o.nextSibling),Gf(s,o.previousSibling,o)}function Gf(e,t,i){return!t||!i||"ul"!=t.name&&"ol"!=t.name||t.name!=i.name||t.getAttribute("class")!==i.getAttribute("class")?null:e.mergeContainers(e.createPositionAfter(t))}function Kf(e){return e.getLastMatchingPosition(e=>e.item.is("uiElement"))}function Qf(e,t){const i=!!t.sameIndent,n=!!t.smallerIndent,o=t.listIndent;let r=e;for(;r&&"listItem"==r.name;){const e=r.getAttribute("listIndent");if(i&&o==e||n&&o>e)return r;r="forward"===t.direction?r.nextSibling:r.previousSibling}return null}function Jf(e,t,i,n){e.ui.componentFactory.add(t,o=>{const r=e.commands.get(t),s=new ed(o);return s.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",()=>{e.execute(t),e.editing.view.focus()}),s})}function Zf(){const e=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||e?0:no.call(this)}function Xf(e){return(t,i,n)=>{const o=n.consumable;if(!o.test(i.item,"insert")||!o.test(i.item,"attribute:listType")||!o.test(i.item,"attribute:listIndent"))return;o.consume(i.item,"insert"),o.consume(i.item,"attribute:listType"),o.consume(i.item,"attribute:listIndent");const r=i.item;Yf(r,$f(r,n),n,e)}}function ep(e,t,i){if(!i.consumable.consume(t.item,"attribute:listType"))return;const n=i.mapper.toViewElement(t.item),o=i.writer;o.breakContainer(o.createPositionBefore(n)),o.breakContainer(o.createPositionAfter(n));const r=n.parent,s="numbered"==t.attributeNewValue?"ol":"ul";o.rename(s,r)}function tp(e,t,i){const n=i.mapper.toViewElement(t.item).parent,o=i.writer;Gf(o,n,n.nextSibling),Gf(o,n.previousSibling,n);for(const e of t.item.getChildren())i.consumable.consume(e,"insert")}function ip(e,t,i){if("listItem"!=t.item.name){let e=i.mapper.toViewPosition(t.range.start);const n=i.writer,o=[];for(;("ul"==e.parent.name||"ol"==e.parent.name)&&(e=n.breakContainer(e),"li"==e.parent.name);){const t=e,i=n.createPositionAt(e.parent,"end");if(!t.isEqual(i)){const e=n.remove(n.createRange(t,i));o.push(e)}e=n.createPositionAfter(e.parent)}if(o.length>0){for(let t=0;t0){const t=Gf(n,i,i.nextSibling);t&&t.parent==i&&e.offset--}}Gf(n,e.nodeBefore,e.nodeAfter)}}}function np(e,t,i){const n=i.mapper.toViewPosition(t.position),o=n.nodeBefore,r=n.nodeAfter;Gf(i.writer,o,r)}function op(e,t,i){if(i.consumable.consume(t.viewItem,{name:!0})){const e=i.writer,n=e.createElement("listItem"),o=function(e){let t=0,i=e.parent;for(;i;){if(i.is("element","li"))t++;else{const e=i.previousSibling;e&&e.is("element","li")&&t++}i=i.parent}return t}(t.viewItem);e.setAttribute("listIndent",o,n);const r=t.viewItem.parent&&"ol"==t.viewItem.parent.name?"numbered":"bulleted";if(e.setAttribute("listType",r,n),!i.safeInsert(n,t.modelCursor))return;const s=function(e,t,i){const{writer:n,schema:o}=i;let r=n.createPositionAfter(e);for(const s of t)if("ul"==s.name||"ol"==s.name)r=i.convertItem(s,r).modelCursor;else{const t=i.convertItem(s,n.createPositionAt(e,"end")),a=t.modelRange.start.nodeAfter;a&&a.is("element")&&!o.checkChild(e,a.name)&&(e=t.modelCursor.parent.is("element","listItem")?t.modelCursor.parent:lp(t.modelCursor),r=n.createPositionAfter(e))}return r}(n,t.viewItem.getChildren(),i);t.modelRange=e.createRange(t.modelCursor,s),i.updateConversionResult(n,t)}}function rp(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){const e=Array.from(t.viewItem.getChildren());for(const t of e){!(t.is("element","li")||hp(t))&&t._remove()}}}function sp(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){if(0===t.viewItem.childCount)return;const e=[...t.viewItem.getChildren()];let i=!1,n=!0;for(const t of e)i&&!hp(t)&&t._remove(),t.is("$text")?(n&&(t._data=t.data.trimStart()),t.nextSibling&&!hp(t.nextSibling)||(t._data=t.data.trimEnd())):hp(t)&&(i=!0),n=!1}}function ap(e){return(t,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const t=i.mapper.toViewElement(n),o=t.getAncestors().find(hp),r=e.createPositionAt(t,0).getWalker();for(const e of r){if("elementStart"==e.type&&e.item.is("element","li")){i.viewPosition=e.previousPosition;break}if("elementEnd"==e.type&&e.item==o){i.viewPosition=e.nextPosition;break}}}}}function cp(e,[t,i]){let n,o=t.is("documentFragment")?t.getChild(0):t;if(n=i?this.createSelection(i):this.document.selection,o&&o.is("element","listItem")){const e=n.getFirstPosition();let t=null;if(e.parent.is("element","listItem")?t=e.parent:e.nodeBefore&&e.nodeBefore.is("element","listItem")&&(t=e.nodeBefore),t){const e=t.getAttribute("listIndent");if(e>0)for(;o&&o.is("element","listItem");)o._setAttribute("listIndent",o.getAttribute("listIndent")+e),o=o.nextSibling}}}function lp(e){const t=new Zs({startPosition:e});let i;do{i=t.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function dp(e,t,i,n,o,r){const s=Qf(t.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:e,foo:"b"}),a=o.mapper,c=o.writer,l=s?s.getAttribute("listIndent"):null;let d;if(s)if(l==e){const e=a.toViewElement(s).parent;d=c.createPositionAfter(e)}else{const e=r.createPositionAt(s,"end");d=a.toViewPosition(e)}else d=i;d=Kf(d);for(const e of[...n.getChildren()])hp(e)&&(d=c.move(c.createRangeOn(e),d).end,Gf(c,e,e.nextSibling),Gf(c,e.previousSibling,e))}function hp(e){return e.is("element","ol")||e.is("element","ul")}class up extends Qe{static get pluginName(){return"ListEditing"}static get requires(){return[Ch,Sh]}init(){const e=this.editor;e.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const t=e.data,i=e.editing;var n;e.model.document.registerPostFixer(t=>function(e,t){const i=e.document.differ.getChanges(),n=new Map;let o=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)r(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(t.removeAttribute("listIndent",i),o=!0),i.hasAttribute("listType")&&(t.removeAttribute("listType",i),o=!0),i.hasAttribute("listStyle")&&(t.removeAttribute("listStyle",i),o=!0);for(const t of Array.from(e.createRangeIn(i)).filter(e=>e.item.is("element","listItem")))r(t.previousPosition)}r(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?r(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&r(n.range.start);for(const e of n.values())s(e),a(e);return o;function r(e){const t=e.nodeBefore;if(t&&t.is("element","listItem")){let e=t;if(n.has(e))return;for(let t=e.previousSibling;t&&t.is("element","listItem");t=e.previousSibling)if(e=t,n.has(e))return;n.set(t,e)}else{const t=e.nodeAfter;t&&t.is("element","listItem")&&n.set(t,t)}}function s(e){let i=0,n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(r>i){let s;null===n?(n=r-i,s=i):(n>r&&(n=r),s=r-n),t.setAttribute("listIndent",s,e),o=!0}else n=null,i=e.getAttribute("listIndent")+1;e=e.nextSibling}}function a(e){let i=[],n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const n=i[r];e.getAttribute("listType")!=n&&(t.setAttribute("listType",n,e),o=!0)}else i[r]=e.getAttribute("listType");n=e,e=e.nextSibling}}}(e.model,t)),i.mapper.registerViewToModelLength("li",gp),t.mapper.registerViewToModelLength("li",gp),i.mapper.on("modelToViewPosition",ap(i.view)),i.mapper.on("viewToModelPosition",(n=e.model,(e,t)=>{const i=t.viewPosition,o=i.parent,r=t.mapper;if("ul"==o.name||"ol"==o.name){if(i.isAtEnd){const e=r.toModelElement(i.nodeBefore),o=r.getModelLength(i.nodeBefore);t.modelPosition=n.createPositionBefore(e).getShiftedBy(o)}else{const e=r.toModelElement(i.nodeAfter);t.modelPosition=n.createPositionBefore(e)}e.stop()}else if("li"==o.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const s=r.toModelElement(o);let a=1,c=i.nodeBefore;for(;c&&hp(c);)a+=r.getModelLength(c),c=c.previousSibling;t.modelPosition=n.createPositionBefore(s).getShiftedBy(a),e.stop()}})),t.mapper.on("modelToViewPosition",ap(i.view)),e.conversion.for("editingDowncast").add(t=>{t.on("insert",ip,{priority:"high"}),t.on("insert:listItem",Xf(e.model)),t.on("attribute:listType:listItem",ep,{priority:"high"}),t.on("attribute:listType:listItem",tp,{priority:"low"}),t.on("attribute:listIndent:listItem",function(e){return(t,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const o=n.mapper.toViewElement(i.item),r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,c=r.createRangeOn(s);r.remove(c),a&&a.nextSibling&&Gf(r,a,a.nextSibling),dp(i.attributeOldValue+1,i.range.start,c.start,o,n,e),Yf(i.item,o,n,e);for(const e of i.item.getChildren())n.consumable.consume(e,"insert")}}(e.model)),t.on("remove:listItem",function(e){return(t,i,n)=>{const o=n.mapper.toViewPosition(i.position).getLastMatchingPosition(e=>!e.item.is("element","li")).nodeAfter,r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,c=r.createRangeOn(s),l=r.remove(c);a&&a.nextSibling&&Gf(r,a,a.nextSibling);dp(n.mapper.toModelElement(o).getAttribute("listIndent")+1,i.position,c.start,o,n,e);for(const e of r.createRangeIn(l).getItems())n.mapper.unbindViewElement(e);t.stop()}}(e.model)),t.on("remove",np,{priority:"low"})}),e.conversion.for("dataDowncast").add(t=>{t.on("insert",ip,{priority:"high"}),t.on("insert:listItem",Xf(e.model))}),e.conversion.for("upcast").add(e=>{e.on("element:ul",rp,{priority:"high"}),e.on("element:ol",rp,{priority:"high"}),e.on("element:li",sp,{priority:"high"}),e.on("element:li",op)}),e.model.on("insertContent",cp,{priority:"high"}),e.commands.add("numberedList",new Hf(e,"numbered")),e.commands.add("bulletedList",new Hf(e,"bulleted")),e.commands.add("indentList",new qf(e,"forward")),e.commands.add("outdentList",new qf(e,"backward"));const o=i.view.document;this.listenTo(o,"enter",(e,t)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"}),this.listenTo(o,"delete",(e,t)=>{if("backward"!==t.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const o=n.parent;if("listItem"!==o.name)return;o.previousSibling&&"listItem"===o.previousSibling.name||(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"});const r=e=>(t,i)=>{this.editor.commands.get(e).isEnabled&&(this.editor.execute(e),i())};e.keystrokes.set("Tab",r("indentList")),e.keystrokes.set("Shift+Tab",r("outdentList"))}afterInit(){const e=this.editor.commands,t=e.get("indent"),i=e.get("outdent");t&&t.registerChildCommand(e.get("indentList")),i&&i.registerChildCommand(e.get("outdentList"))}}function gp(e){let t=1;for(const i of e.getChildren())if("ul"==i.name||"ol"==i.name)for(const e of i.getChildren())t+=gp(e);return t}class mp extends Qe{static get pluginName(){return"ListUI"}init(){const e=this.editor.t;Jf(this.editor,"numberedList",e("Numbered List"),''),Jf(this.editor,"bulletedList",e("Bulleted List"),'')}}function fp(e,t){return e=>{e.on("attribute:url:media",i)};function i(i,n,o){if(!o.consumable.consume(n.item,i.name))return;const r=n.attributeNewValue,s=o.writer,a=o.mapper.toViewElement(n.item),c=[...a.getChildren()].find(e=>e.getCustomProperty("media-content"));s.remove(c);const l=e.getMediaViewElement(s,r,t);s.insert(s.createPositionAt(a,0),l)}}function pp(e,t,i,n){const o=e.createContainerElement("figure",{class:"media"});return e.insert(e.createPositionAt(o,0),t.getMediaViewElement(e,i,n)),o}function bp(e){const t=e.getSelectedElement();return t&&t.is("element","media")?t:null}function wp(e,t,i){e.change(n=>{const o=n.createElement("media",{url:t});e.insertContent(o,i),n.setSelection(o,"on")})}class kp extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=bp(t);this.value=i?i.getAttribute("url"):null,this.isEnabled=function(e){const t=e.getSelectedElement();return!!t&&"media"===t.name}(t)||function(e,t){let i=Fh(e,t).start.parent;i.isEmpty&&!t.schema.isLimit(i)&&(i=i.parent);return t.schema.checkChild(i,"media")}(t,e)}execute(e){const t=this.editor.model,i=t.document.selection,n=bp(i);n?t.change(t=>{t.setAttribute("url",e,n)}):wp(t,e,Fh(i,t))}}class _p{constructor(e,t){const i=t.providers,n=t.extraProviders||[],o=new Set(t.removeProviders),r=i.concat(n).filter(e=>{const t=e.name;return t?!o.has(t):(Object(c.b)("media-embed-no-provider-name",{provider:e}),!1)});this.locale=e,this.providerDefinitions=r}hasMedia(e){return!!this._getMedia(e)}getMediaViewElement(e,t,i){return this._getMedia(t).getViewElement(e,i)}_getMedia(e){if(!e)return new vp(this.locale);e=e.trim();for(const t of this.providerDefinitions){const i=t.html,n=en(t.url);for(const t of n){const n=this._getUrlMatches(e,t);if(n)return new vp(this.locale,e,n,i)}}return null}_getUrlMatches(e,t){let i=e.match(t);if(i)return i;let n=e.replace(/^https?:\/\//,"");return i=n.match(t),i||(n=n.replace(/^www\./,""),i=n.match(t),i||null)}}class vp{constructor(e,t,i,n){this.url=this._getValidUrl(t),this._t=e.t,this._match=i,this._previewRenderer=n}getViewElement(e,t){const i={};let n;if(t.renderForEditingView||t.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(i["data-oembed-url"]=this.url),t.renderForEditingView&&(i.class="ck-media__wrapper");const o=this._getPreviewHtml(t);n=e.createRawElement("div",i,(function(e){e.innerHTML=o}))}else this.url&&(i.url=this.url),n=e.createEmptyElement(t.elementName,i);return e.setCustomProperty("media-content",!0,n),n}_getPreviewHtml(e){return this._previewRenderer?this._previewRenderer(this._match):this.url&&e.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const e=new Xl,t=new Zl;e.text=this._t("Open media in new tab"),t.content='',t.viewBox="0 0 64 42";return new Nl({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]},e]}]}).render().outerHTML}_getValidUrl(e){return e?e.match(/^https?/)?e:"https://"+e:null}}i(94);class yp extends Qe{static get pluginName(){return"MediaEmbedEditing"}constructor(e){super(e),e.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:e=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:e=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)/,/^youtube\.com\/embed\/([\w-]+)/,/^youtu\.be\/([\w-]+)/],html:e=>`
`},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:e=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new _p(e.locale,e.config.get("mediaEmbed"))}init(){const e=this.editor,t=e.model.schema,i=e.t,n=e.conversion,o=e.config.get("mediaEmbed.previewsInData"),r=e.config.get("mediaEmbed.elementName"),s=this.registry;e.commands.add("mediaEmbed",new kp(e)),t.register("media",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["url"]}),n.for("dataDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const i=e.getAttribute("url");return pp(t,s,i,{elementName:r,renderMediaPreview:i&&o})}}),n.for("dataDowncast").add(fp(s,{elementName:r,renderMediaPreview:o})),n.for("editingDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const n=e.getAttribute("url");return function(e,t,i){return t.setCustomProperty("media",!0,e),zh(e,t,{label:i})}(pp(t,s,n,{elementName:r,renderForEditingView:!0}),t,i("media widget"))}}),n.for("editingDowncast").add(fp(s,{elementName:r,renderForEditingView:!0})),n.for("upcast").elementToElement({view:e=>["oembed",r].includes(e.name)&&e.getAttribute("url")?{name:!0}:null,model:(e,{writer:t})=>{const i=e.getAttribute("url");if(s.hasMedia(i))return t.createElement("media",{url:i})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(e,{writer:t})=>{const i=e.getAttribute("data-oembed-url");if(s.hasMedia(i))return t.createElement("media",{url:i})}})}}const xp=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class Ap extends Qe{static get requires(){return[lu,ig]}static get pluginName(){return"AutoMediaEmbed"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",()=>{const e=t.selection.getFirstRange(),i=el.fromPosition(e.start);i.stickiness="toPrevious";const n=el.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",()=>{this._embedMediaBetweenPositions(i,n),i.detach(),n.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(vr.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedMediaBetweenPositions(e,t){const i=this.editor,n=i.plugins.get(yp).registry,o=new ba(e,t),r=o.getWalker({ignoreElementEnd:!0});let s="";for(const e of r)e.item.is("$textProxy")&&(s+=e.item.data);if(s=s.trim(),!s.match(xp))return void o.detach();if(!n.hasMedia(s))return void o.detach();i.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=el.fromPosition(e),this._timeoutId=vr.window.setTimeout(()=>{i.model.change(e=>{let t;this._timeoutId=null,e.remove(o),o.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert),wp(i.model,s,t),this._positionToInsert.detach(),this._positionToInsert=null})},100)):o.detach()}}i(96);class Cp extends Ml{constructor(e,t){super(t);const i=t.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tl.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",e=>!!e),this.cancelButtonView=this._createButton(i("Cancel"),Tl.cancel,"ck-button-cancel","cancel"),this._focusables=new Pl,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=e,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),Il(this)}render(){super.render(),Sl({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element);const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e),this.listenTo(this.urlInputView.element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"})}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(e){this.urlInputView.fieldView.element.value=e.trim()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const e=this.locale.t,t=new Nd(this.locale,Rd),i=t.fieldView;return this._urlInputViewInfoDefault=e("Paste the media URL in the input."),this._urlInputViewInfoTip=e("Tip: Paste the URL into the content to embed faster."),t.label=e("Media URL"),t.infoText=this._urlInputViewInfoDefault,i.on("input",()=>{t.infoText=i.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=i.element.value.trim()}),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}}class Tp extends Qe{static get requires(){return[yp]}static get pluginName(){return"MediaEmbedUI"}init(){const e=this.editor,t=e.commands.get("mediaEmbed"),i=e.plugins.get(yp).registry;e.ui.componentFactory.add("mediaEmbed",n=>{const o=xd(n),r=new Cp(function(e,t){return[t=>{if(!t.url.length)return e("The URL must not be empty.")},i=>{if(!t.hasMedia(i.url))return e("This media URL is not supported.")}]}(e.t,i),e.locale);return this._setUpDropdown(o,r,t,e),this._setUpForm(o,r,t),o})}_setUpDropdown(e,t,i){const n=this.editor,o=n.t,r=e.buttonView;function s(){n.editing.view.focus(),e.isOpen=!1}e.bind("isEnabled").to(i),e.panelView.children.add(t),r.set({label:o("Insert media"),icon:'',tooltip:!0}),r.on("open",()=>{t.disableCssTransitions(),t.url=i.value||"",t.urlInputView.fieldView.select(),t.focus(),t.enableCssTransitions()},{priority:"low"}),e.on("submit",()=>{t.isValid()&&(n.execute("mediaEmbed",t.url),s())}),e.on("change:isOpen",()=>t.resetFormStatus()),e.on("cancel",()=>s())}_setUpForm(e,t,i){t.delegate("submit","cancel").to(e),t.urlInputView.bind("value").to(i,"value"),t.urlInputView.bind("isReadOnly").to(i,"isEnabled",e=>!e)}}i(98);function Ep(e,t){if(!e.childCount)return;const i=new gh(e.document),n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),o=[];for(const e of i)if("elementStart"===e.type&&n.match(e.item)){const t=Pp(e.item);o.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return o}(e,i);if(!n.length)return;let o=null,r=1;n.forEach((e,s)=>{const a=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const i=t.element.previousSibling;if(!i)return!0;return n=i,!(n.is("element","ol")||n.is("element","ul"));var n}(n[s-1],e),c=a?null:n[s-1],l=(h=e,(d=c)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(o=null,r=1),!o||0!==l){const n=function(e,t){const i=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),n=/mso-level-number-format:([^;]{0,100});/gi,o=i.exec(t);let r="decimal",s="ol";if(o&&o[1]){const t=n.exec(o[1]);if(t&&t[1]&&(r=t[1].trim(),s="bullet"!==r&&"image"!==r?"ol":"ul"),"bullet"===r){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const i=t._data;if("o"===i)return"circle";if("·"===i)return"disc";if("§"===i)return"square";return null}(e.element);t&&(r=t)}}return{type:s,style:Ip(r)}}(e,t);if(o){if(e.indent>r){const e=o.getChild(o.childCount-1),t=e.getChild(e.childCount-1);o=Sp(n,t,i),r+=1}else if(e.indente.indexOf(t)>-1)?r.push(i):i.getAttribute("src")||r.push(i)}for(const e of r)i.remove(e)}(function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i){const t=e.item,i=t.previousSibling&&t.previousSibling.name||null;n.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==i&&o.push(e.item.getAttribute("id"))}return o}(e,i),e,i),function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i)n.match(e.item)&&o.push(e.item);for(const e of o)t.remove(e)}(e,i);const n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:"img"}),o=[];for(const e of i)n.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&o.push(e.item);return o}(e,i);n.length&&function(e,t,i){if(e.length===t.length)for(let o=0;oString.fromCharCode(parseInt(e,16))).join(""))}`;i.setAttribute("src",r,e[o])}var n}(n,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,i=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),n=e.match(i),o=[];if(n)for(const e of n){let i=!1;e.includes("\\pngblip")?i="image/png":e.includes("\\jpegblip")&&(i="image/jpeg"),i&&o.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:i})}return o}(t),i)}const Op=//i,zp=/xmlns:o="urn:schemas-microsoft-com/i;class Dp{constructor(e){this.document=e}isActive(e){return Op.test(e)||zp.test(e)}execute(e){const{body:t,stylesString:i}=e._parsedData;Ep(t,i),Rp(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function Lp(e){return e.replace(/(\s+)<\/span>/g,(e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length))}function Vp(e,t){const i=new DOMParser,n=function(e){return Lp(Lp(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(e){const t=e.indexOf("");if(t<0)return e;const i=e.indexOf("",t+"".length);return e.substring(0,t+"".length)+(i>=0?e.substring(i):"")}(e=e.replace(//g,"")}(n.getData("text/html")):n.getData("text/plain")&&(((s=(s=n.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),r=s),r=this.editor.data.htmlProcessor.toView(r));const a=new o(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:n,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),i.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(e,i)=>{if(i.content.isEmpty)return;const n=this.editor.data.toModel(i.content,"$clipboardHolder");0!=n.childCount&&(e.stop(),t.change(()=>{this.fire("contentInsertion",{content:n,method:i.method,dataTransfer:i.dataTransfer,targetRanges:i.targetRanges})}))},{priority:"low"}),this.listenTo(this,"contentInsertion",(e,i)=>{i.resultRange=t.insertContent(i.content)},{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,i=e.editing.view.document;function n(n,o){const r=o.dataTransfer;o.preventDefault();const s=e.data.toView(e.model.getSelectedContent(t.selection));i.fire("clipboardOutput",{dataTransfer:r,content:s,method:n.name})}this.listenTo(i,"copy",n,{priority:"low"}),this.listenTo(i,"cut",(t,i)=>{e.isReadOnly?i.preventDefault():n(t,i)},{priority:"low"}),this.listenTo(i,"clipboardOutput",(i,n)=>{n.content.isEmpty||(n.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(n.content)),n.dataTransfer.setData("text/plain",function e(t){let i="";if(t.is("$text")||t.is("$textProxy"))i=t.data;else if(t.is("element","img")&&t.hasAttribute("alt"))i=t.getAttribute("alt");else if(t.is("element","br"))i="\n";else{let n=null;for(const o of t.getChildren()){const t=e(o);n&&(n.is("containerElement")||o.is("containerElement"))&&(Uu.includes(n.name)||Uu.includes(o.name)?i+="\n":i+="\n\n"),i+=t,n=o}}return i}(n.content))),"cut"==n.method&&e.model.deleteContent(t.selection)},{priority:"low"})}}function*qu(e,t){for(const i of t)i&&e.getAttributeProperties(i[0]).copyOnEnter&&(yield i)}class $u extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i,n){const o=i.isCollapsed,r=i.getFirstRange(),s=r.start.parent,a=r.end.parent;if(n.isLimit(s)||n.isLimit(a))return void(o||s!=a||e.deleteContent(i));if(o){const e=qu(t.model.schema,i.getAttributes());Yu(t,r.start),t.setSelectionAttribute(e)}else{const n=!(r.start.isAtStart&&r.end.isAtEnd),o=s==a;e.deleteContent(i,{leaveUnmerged:n}),n&&(o?Yu(t,i.focus):t.setSelection(a,0))}}(this.editor.model,i,t.selection,e.schema),this.fire("afterExecute",{writer:i})})}}function Yu(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}class Gu extends zr{constructor(e){super(e);const t=this.document;t.on("keydown",(e,i)=>{if(this.isEnabled&&i.keyCode==No.enter){const n=new fo(t,"enter",t.selection.getFirstRange());t.fire(n,new es(t,i.domEvent,{isSoft:i.shiftKey})),n.stop.called&&e.stop()}})}observe(){}}class Ku extends Qe{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Gu),e.commands.add("enter",new $u(e)),this.listenTo(i,"enter",(i,n)=>{n.preventDefault(),n.isSoft||(e.execute("enter"),t.scrollToTheSelection())},{priority:"low"})}}class Qu{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{"transparent"!=t.type&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}class Ju extends Ze{constructor(e,t){super(e),this.direction=t,this._buffer=new Qu(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,i=t.document;t.enqueueChange(this._buffer.batch,n=>{this._buffer.lock();const o=n.createSelection(e.selection||i.selection),r=e.sequence||1,s=o.isCollapsed;if(o.isCollapsed&&t.modifySelection(o,{direction:this.direction,unit:e.unit}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(n);if(this._shouldReplaceFirstBlockWithParagraph(o,r))return void this.editor.execute("paragraph",{selection:o});if(o.isCollapsed)return;let a=0;o.getFirstRange().getMinimalFlatRanges().forEach(e=>{a+=ho(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(o,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),n.setSelection(o),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i);if(!(i.isCollapsed&&i.containsEntireContent(n)))return!1;if(!t.schema.checkChild(n,"paragraph"))return!1;const o=n.getChild(0);return!o||"paragraph"!==o.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i),o=e.createElement("paragraph");e.remove(e.createRangeIn(n)),e.insert(o,n),e.setSelection(o,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const i=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const n=e.getFirstPosition(),o=i.schema.getLimitElement(n),r=o.getChild(0);return n.parent==r&&(!!e.containsEntireContent(r)&&(!!i.schema.checkChild(o,"paragraph")&&"paragraph"!=r.name))}}class Zu extends zr{constructor(e){super(e);const t=e.document;let i=0;function n(e,i,n){const o=new fo(t,"delete",t.selection.getFirstRange());t.fire(o,new es(t,i,n)),o.stop.called&&e.stop()}t.on("keyup",(e,t)=>{t.keyCode!=No.delete&&t.keyCode!=No.backspace||(i=0)}),t.on("keydown",(e,t)=>{const o={};if(t.keyCode==No.delete)o.direction="forward",o.unit="character";else{if(t.keyCode!=No.backspace)return;o.direction="backward",o.unit="codePoint"}const r=So.isMac?t.altKey:t.ctrlKey;o.unit=r?"word":o.unit,o.sequence=++i,n(e,t.domEvent,o)}),So.isAndroid&&t.on("beforeinput",(t,i)=>{if("deleteContentBackward"!=i.domEvent.inputType)return;const o={unit:"codepoint",direction:"backward",sequence:1},r=i.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(o.selectionToRemove=e.domConverter.domSelectionToView(r)),n(t,i.domEvent,o)})}observe(){}}class Xu extends Qe{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Zu);const n=new Ju(e,"forward");if(e.commands.add("deleteForward",n),e.commands.add("forwardDelete",n),e.commands.add("delete",new Ju(e,"backward")),this.listenTo(i,"delete",(i,n)=>{const o={unit:n.unit,sequence:n.sequence};if(n.selectionToRemove){const t=e.model.createSelection(),i=[];for(const t of n.selectionToRemove.getRanges())i.push(e.editing.mapper.toModelRange(t));t.setTo(i),o.selection=t}e.execute("forward"==n.direction?"deleteForward":"delete",o),n.preventDefault(),t.scrollToTheSelection()},{priority:"low"}),So.isAndroid){let e=null;this.listenTo(i,"delete",(t,i)=>{const n=i.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}},{priority:"lowest"}),this.listenTo(i,"keyup",(t,i)=>{if(e){const t=i.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}})}}}class eh{constructor(){this._stack=[]}add(e,t){const i=this._stack,n=i[0];this._insertDescriptor(e);const o=i[0];n===o||th(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}remove(e,t){const i=this._stack,n=i[0];this._removeDescriptor(e);const o=i[0];n===o||th(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}_insertDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e.id);if(th(e,t[i]))return;i>-1&&t.splice(i,1);let n=0;for(;t[n]&&ih(t[n],e);)n++;t.splice(n,0,e)}_removeDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e);i>-1&&t.splice(i,1)}}function th(e,t){return e&&t&&e.priority==t.priority&&nh(e.classes)==nh(t.classes)}function ih(e,t){return e.priority>t.priority||!(e.prioritynh(t.classes)}function nh(e){return Array.isArray(e)?e.sort().join(","):e}Ke(eh,u);function oh(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function rh(e,t,i={}){if(!e.is("containerElement"))throw new l.a("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=gh,i.label&&function(e,t,i){i.setCustomProperty("widgetLabel",t,e)}(e,i.label,t),i.hasSelectionHandle&&function(e,t){const i=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),i=new Jc;return i.set("content",''),i.render(),t.appendChild(i.element),t}));t.insert(t.createPositionAt(e,0),i),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),lh(e,t,sh,ah),e}function sh(e,t,i){if(t.classes&&i.addClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.setAttribute(n,t.attributes[n],e)}function ah(e,t,i){if(t.classes&&i.removeClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.removeAttribute(n,e)}function lh(e,t,i,n){const o=new eh;o.on("change:top",(t,o)=>{o.oldDescriptor&&n(e,o.oldDescriptor,o.writer),o.newDescriptor&&i(e,o.newDescriptor,o.writer)}),t.setCustomProperty("addHighlight",(e,t,i)=>o.add(t,i),e),t.setCustomProperty("removeHighlight",(e,t,i)=>o.remove(t,i),e)}function ch(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function dh(e,t){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",(i,n,o)=>{t.setAttribute("contenteditable",o?"false":"true",e)}),e.on("change:isFocused",(i,n,o)=>{o?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)}),e}function uh(e,t){const i=e.getSelectedElement();if(i){const n=fh(e);if(n)return t.createRange(t.createPositionAt(i,n));if(t.schema.isObject(i)&&!t.schema.isInline(i))return t.createRangeOn(i)}const n=e.getSelectedBlocks().next().value;if(n){if(n.isEmpty)return t.createRange(t.createPositionAt(n,0));const i=t.createPositionAfter(n);return e.focus.isTouching(i)?t.createRange(i):t.createRange(t.createPositionBefore(n))}return t.createRange(e.focus)}function hh(e,t){const i=new Cs(vr.window),n=i.getIntersection(e),o=t.height+Bd.arrowVerticalOffset;if(e.top-o>i.top||e.bottom+o',"image/svg+xml").firstChild;class _h extends Qe{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[Ku,Xu]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(i,n,o)=>{t.change(e=>{for(const i of t.document.roots)o?e.removeClass("ck-widget__type-around_disabled",i):e.addClass("ck-widget__type-around_disabled",i)}),o||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const i=this.editor,n=i.editing.view;i.execute("insertParagraph",{position:i.model.createPositionAt(e,t)}),n.focus(),n.scrollToTheSelection()}_listenToIfEnabled(e,t,i,n){this.listenTo(e,t,(...e)=>{this.isEnabled&&i(...e)},n)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=fh(e);if(!t)return!1;const i=e.getSelectedElement();return this._insertParagraph(i,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,i=e.locale.t,n={before:i("Insert paragraph before block"),after:i("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(e,i,o)=>{const r=o.mapper.toViewElement(i.item);mh(r,i.item,t)&&function(e,t,i){const n=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const i=this.toDomElement(e);return function(e,t){for(const i of wh){const n=new Mc({tag:"div",attributes:{class:["ck","ck-widget__type-around__button","ck-widget__type-around__button_"+i],title:t[i]},children:[e.ownerDocument.importNode(kh,!0)]});e.appendChild(n.render())}}(i,t),function(e){const t=new Mc({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(i),i}));e.insert(e.createPositionAt(i,"end"),n)}(o.writer,n,r)},{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,i=t.document.selection,n=t.schema,o=e.editing.view;function r(e){return"ck-widget_type-around_show-fake-caret_"+e}this._listenToIfEnabled(o.document,"arrowKey",(e,t)=>{this._handleArrowKeyPress(e,t)},{context:[oh,"$text"],priority:"high"}),this._listenToIfEnabled(i,"change:range",(t,i)=>{i.directChange&&e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(t.document,"change:data",()=>{const t=i.getSelectedElement();if(t){if(mh(e.editing.mapper.toViewElement(t),t,n))return}e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",(e,t,i)=>{const o=i.writer;if(this._currentFakeCaretModelElement){const e=i.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(o.removeClass(wh.map(r),e),this._currentFakeCaretModelElement=null)}const s=t.selection.getSelectedElement();if(!s)return;const a=i.mapper.toViewElement(s);if(!mh(a,s,n))return;const l=fh(t.selection);l&&(o.addClass(r(l),a),this._currentFakeCaretModelElement=s)}),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",(t,i,n)=>{n||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})})}_handleArrowKeyPress(e,t){const i=this.editor,n=i.model,o=n.document.selection,r=n.schema,s=i.editing.view,a=Vo(t.keyCode,i.locale.contentLanguageDirection),l=s.document.selection.getSelectedElement();let c;mh(l,i.editing.mapper.toModelElement(l),r)?c=this._handleArrowKeyPressOnSelectedWidget(a):o.isCollapsed&&(c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a)),c&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,i=fh(t.document.selection);return t.change(t=>{if(!i)return t.setSelectionAttribute("widget-type-around",e?"after":"before"),!0;if(!(i===(e?"after":"before")))return t.removeSelectionAttribute("widget-type-around"),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,i=t.model,n=i.schema,o=t.plugins.get("Widget"),r=o._getObjectElementNextToSelection(e);return!!mh(t.editing.mapper.toViewElement(r),r,n)&&(i.change(t=>{o._setSelectionOverElement(r),t.setSelectionAttribute("widget-type-around",e?"before":"after")}),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(i,n)=>{const o=n.domTarget.closest(".ck-widget__type-around__button");if(!o)return;const r=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(o),s=function(e,t){const i=e.closest(".ck-widget");return t.mapDomToView(i)}(o,t.domConverter),a=e.editing.mapper.toModelElement(s);this._insertParagraph(a,r),n.preventDefault(),i.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,i=e.editing.view;this._listenToIfEnabled(i.document,"enter",(i,n)=>{if("atTarget"!=i.eventPhase)return;const o=t.getSelectedElement(),r=e.editing.mapper.toViewElement(o),s=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:mh(r,o,s)&&(this._insertParagraph(o,n.isSoft?"before":"after"),a=!0),a&&(n.preventDefault(),i.stop())},{context:oh})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[No.enter,No.delete,No.backspace];this._listenToIfEnabled(e.document,"keydown",(e,i)=>{t.includes(i.keyCode)||bh(i)||this._insertParagraphAccordingToFakeCaretPosition()},{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,i=e.model,n=i.schema;this._listenToIfEnabled(t.document,"delete",(t,o)=>{if("atTarget"!=t.eventPhase)return;const r=fh(i.document.selection);if(!r)return;const s=o.direction,a=i.document.selection.getSelectedElement(),l="forward"==s;if("before"===r===l)e.execute("delete",{selection:i.createSelection(a,"on")});else{const t=n.getNearestSelectionRange(i.createPositionAt(a,r),s);if(t)if(t.isCollapsed){const o=i.createSelection(t.start);if(i.modifySelection(o,{direction:s}),o.focus.isEqual(t.start)){const e=function(e,t){let i=t;for(const n of t.getAncestors({parentFirst:!0})){if(n.childCount>1||e.isLimit(n))break;i=n}return i}(n,t.start.parent);i.deleteContent(i.createSelection(e,"on"),{doNotAutoparagraph:!0})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}o.preventDefault(),t.stop()},{context:oh})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,i=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(e,[n,o])=>{if(o&&!o.is("documentSelection"))return;const r=fh(i);return r?(e.stop(),t.change(e=>{const o=i.getSelectedElement(),s=t.createPositionAt(o,r),a=e.createSelection(s),l=t.insertContent(n,a);return e.setSelection(a),l})):void 0},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(e,[i])=>{if(i&&!i.is("documentSelection"))return;fh(t)&&e.stop()},{priority:"high"})}}i(63);function vh(e){const t=e.model;return(i,n)=>{const o=n.keyCode==No.arrowup,r=n.keyCode==No.arrowdown,s=n.shiftKey,a=t.document.selection;if(!o&&!r)return;const l=r;if(s&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,l))return;const c=function(e,t,i){const n=e.model;if(i){const e=t.isCollapsed?t.focus:t.getLastPosition(),i=yh(n,e,"forward");if(!i)return null;const o=n.createRange(e,i),r=xh(n.schema,o,"backward");return r&&e.isBefore(r)?n.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),i=yh(n,e,"backward");if(!i)return null;const o=n.createRange(i,e),r=xh(n.schema,o,"forward");return r&&e.isAfter(r)?n.createRange(r,e):null}}(e,a,l);c&&!c.isCollapsed&&function(e,t,i){const n=e.model,o=e.view.domConverter;if(i){const e=n.createSelection(t.start);n.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=n.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),s=o.viewRangeToDom(r),a=Cs.getDomRangeRects(s);let l;for(const e of a)if(void 0!==l){if(Math.round(e.top)>=l)return!1;l=Math.max(l,Math.round(e.bottom))}else l=Math.round(e.bottom);return!0}(e,c,l)&&(t.change(e=>{const i=l?c.end:c.start;if(s){const n=t.createSelection(a.anchor);n.setFocus(i),e.setSelection(n)}else e.setSelection(i)}),i.stop(),n.preventDefault(),n.stopPropagation())}}function yh(e,t,i){const n=e.schema,o=e.createRangeIn(t.root),r="forward"==i?"elementStart":"elementEnd";for(const{previousPosition:e,item:s,type:a}of o.getWalker({startPosition:t,direction:i})){if(n.isLimit(s)&&!n.isInline(s))return e;if(a==r&&n.isBlock(s))return null}return null}function xh(e,t,i){const n="backward"==i?t.end:t.start;if(e.checkChild(n,"$text"))return n;for(const{nextPosition:n}of t.getWalker({direction:i}))if(e.checkChild(n,"$text"))return n}class Ah extends Qe{static get pluginName(){return"Widget"}static get requires(){return[_h,Xu]}init(){const e=this.editor,t=e.editing.view,i=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(t,i,n)=>{const o=n.writer,r=i.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=e.editing.mapper.toViewElement(s);oh(a)&&n.consumable.consume(r,"selection")&&o.setSelection(o.createRangeOn(a),{fake:!0,label:ch(a)})}),this.editor.editing.downcastDispatcher.on("selection",(e,t,i)=>{this._clearPreviouslySelectedWidgets(i.writer);const n=i.writer,o=n.document.selection;let r=null;for(const e of o.getRanges())for(const t of e){const e=t.item;oh(e)&&!Ch(e,r)&&(n.addClass("ck-widget_selected",e),this._previouslySelected.add(e),r=e)}},{priority:"low"}),t.addObserver(uu),this.listenTo(i,"mousedown",(...e)=>this._onMousedown(...e)),this.listenTo(i,"arrowKey",(...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)},{context:[oh,"$text"]}),this.listenTo(i,"arrowKey",(...e)=>{this._preventDefaultOnArrowKeyPress(...e)},{context:"$root"}),this.listenTo(i,"arrowKey",vh(this.editor.editing),{context:"$text"}),this.listenTo(i,"delete",(e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())},{context:"$root"})}_onMousedown(e,t){const i=this.editor,n=i.editing.view,o=n.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(oh(e))return!1;e=e.parent}return!1}(r)){if((So.isSafari||So.isGecko)&&t.domEvent.detail>=3){const e=i.editing.mapper,n=r.is("attributeElement")?r.findAncestor(e=>!e.is("attributeElement")):r,o=e.toModelElement(n);t.preventDefault(),this.editor.model.change(e=>{e.setSelection(o,"in")})}return}if(!oh(r)&&(r=r.findAncestor(oh),!r))return;So.isAndroid&&t.preventDefault(),o.isFocused||n.focus();const s=i.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(e,t){const i=t.keyCode,n=this.editor.model,o=n.schema,r=n.document.selection,s=r.getSelectedElement(),a=Vo(i,this.editor.locale.contentLanguageDirection);if(s&&o.isObject(s)){const i=a?r.getLastPosition():r.getFirstPosition(),s=o.getNearestSelectionRange(i,a?"forward":"backward");return void(s&&(n.change(e=>{e.setSelection(s)}),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const l=this._getObjectElementNextToSelection(a);l&&o.isObject(l)&&(this._setSelectionOverElement(l),t.preventDefault(),e.stop())}_preventDefaultOnArrowKeyPress(e,t){const i=this.editor.model,n=i.schema,o=i.document.selection.getSelectedElement();o&&n.isObject(o)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const i=this._getObjectElementNextToSelection(e);return i?(this.editor.model.change(e=>{let n=t.anchor.parent;for(;n.isEmpty;){const t=n;n=t.parent,e.remove(t)}this._setSelectionOverElement(i)}),!0):void 0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,i=t.schema,n=t.document.selection,o=t.createSelection(n);t.modifySelection(o,{direction:e?"forward":"backward"});const r=e?o.focus.nodeBefore:o.focus.nodeAfter;return r&&i.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass("ck-widget_selected",t);this._previouslySelected.clear()}}function Ch(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}var Th=function(e,t,i){var n=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return w(i)&&(n="leading"in i?!!i.leading:n,o="trailing"in i?!!i.trailing:o),fs(e,t,{leading:n,maxWait:t,trailing:o})};i(65);class Eh extends Qe{static get pluginName(){return"DragDrop"}static get requires(){return[Wu,Ah]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=Th(e=>this._updateDropMarker(e),40),this._removeDropMarkerDelayed=Ph(()=>this._removeDropMarker(),40),this._clearDraggableAttributesDelayed=Ph(()=>this._clearDraggableAttributes(),40),t.addObserver(Hu),t.addObserver(uu),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(e,t,i)=>{i?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(e,t,i)=>{i||this._finalizeDragging(!1)}),So.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,i=t.document,n=e.editing.view,o=n.document;this.listenTo(o,"dragstart",(n,r)=>{const a=i.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const l=r.target?Mh(r.target):null;if(l){const i=e.editing.mapper.toModelElement(l);this._draggedRange=ba.fromRange(t.createRangeOn(i)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&oh(e)||(this._draggedRange=ba.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=s(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),d=e.data.toView(t.getSelectedContent(c));o.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:d,method:n.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")},{priority:"low"}),this.listenTo(o,"dragend",(e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)},{priority:"low"}),this.listenTo(o,"dragenter",()=>{this.isEnabled&&n.focus()}),this.listenTo(o,"dragleave",()=>{this._removeDropMarkerDelayed()}),this.listenTo(o,"dragging",(t,i)=>{if(!this.isEnabled)return void(i.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const n=Ih(e,i.targetRanges,i.target);this._draggedRange||(i.dataTransfer.dropEffect="copy"),So.isGecko||("copy"==i.dataTransfer.effectAllowed?i.dataTransfer.dropEffect="copy":["all","copyMove"].includes(i.dataTransfer.effectAllowed)&&(i.dataTransfer.dropEffect="move")),n&&this._updateDropMarkerThrottled(n)},{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",(t,i)=>{if("drop"!=i.method)return;const n=Ih(e,i.targetRanges,i.target);if(this._removeDropMarker(),!n)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=i.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==Sh(i.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(n,!0))return this._finalizeDragging(!1),void t.stop();i.targetRanges=[e.editing.mapper.toViewRange(n)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(Wu);e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i=t.targetRanges.map(e=>this.editor.editing.mapper.toModelRange(e));this.editor.model.change(e=>e.setSelection(i))},{priority:"high"}),e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i="move"==Sh(t.dataTransfer),n=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(n&&i)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,i=t.document;this.listenTo(i,"mousedown",(n,o)=>{if(So.isAndroid||!o)return;this._clearDraggableAttributesDelayed.cancel();let r=Mh(o.target);if(So.isBlink&&!e.isReadOnly&&!r&&!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&oh(e)||(r=i.selection.editableElement)}r&&(t.change(e=>{e.setAttribute("draggable","true",r)}),this._draggableElement=e.editing.mapper.toModelElement(r))}),this.listenTo(i,"mouseup",()=>{So.isAndroid||this._clearDraggableAttributesDelayed()})}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change(t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null})}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:i})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return i.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.innerHTML="⁠⁠",t}))}})}_updateDropMarker(e){const t=this.editor,i=t.model.markers;t.model.change(t=>{i.has("drop-target")?i.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})})}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change(e=>{e.removeMarker("drop-target")})}_finalizeDragging(e){const t=this.editor,i=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&i.deleteContent(i.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Ih(e,t,i){const n=e.model,o=e.editing.mapper;let r=null;const s=t?t[0].start:null;if(i.is("uiElement")&&(i=i.parent),r=function(e,t){const i=e.model,n=e.editing.mapper;if(oh(t))return i.createRangeOn(n.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor(e=>oh(e)||e.is("editableElement"));if(oh(e))return i.createRangeOn(n.toModelElement(e))}return null}(e,i),r)return r;const a=function(e,t){const i=e.editing.mapper,n=e.editing.view,o=i.toModelElement(t);if(o)return o;const r=n.createPositionBefore(t),s=i.findMappedViewAncestor(r);return i.toModelElement(s)}(e,i),l=s?o.toModelPosition(s):null;return l?(r=function(e,t,i){const n=e.model;if(!n.schema.checkChild(i,"$block"))return null;const o=n.createPositionAt(i,0),r=t.path.slice(0,o.path.length),s=n.createPositionFromPath(t.root,r).nodeAfter;if(s&&n.schema.isObject(s))return n.createRangeOn(s);return null}(e,l,a),r||(r=n.schema.getNearestSelectionRange(l,So.isGecko?"forward":"backward"),r||function(e,t){const i=e.model;for(;t;){if(i.schema.isObject(t))return i.createRangeOn(t);t=t.parent}}(e,l.parent))):function(e,t){const i=e.model,n=i.schema,o=i.createPositionAt(t,0);return n.getNearestSelectionRange(o,"forward")}(e,a)}function Sh(e){return So.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function Ph(e,t){let i;function n(...o){n.cancel(),i=setTimeout(()=>e(...o),t)}return n.cancel=()=>{clearTimeout(i)},n}function Mh(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(oh);if(oh(e))return e;const t=e.findAncestor(e=>oh(e)||e.is("editableElement"));return oh(t)?t:null}class Nh extends Qe{static get pluginName(){return"PastePlainText"}static get requires(){return[Wu]}init(){const e=this.editor,t=e.model,i=e.editing.view,n=i.document,o=t.document.selection;let r=!1;i.addObserver(Hu),this.listenTo(n,"keydown",(e,t)=>{r=t.shiftKey}),e.plugins.get(Wu).on("contentInsertion",(e,i)=>{(r||function(e,t){if(e.childCount>1)return!1;const i=e.getChild(0);if(t.isObject(i))return!1;return 0==[...i.getAttributeKeys()].length}(i.content,t.schema))&&t.change(e=>{const n=Array.from(o.getAttributes()).filter(([e])=>t.schema.getAttributeProperties(e).isFormatting);o.isCollapsed||t.deleteContent(o,{doNotAutoparagraph:!0}),n.push(...o.getAttributes());const r=e.createRangeIn(i.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(n,t)})})}}class Rh extends Qe{static get pluginName(){return"Clipboard"}static get requires(){return[Wu,Eh,Nh]}}class zh extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i){const n=i.isCollapsed,o=i.getFirstRange(),r=o.start.parent,s=o.end.parent,a=r==s;if(n){const n=qu(e.schema,i.getAttributes());Oh(e,t,o.end),t.removeSelectionAttribute(i.getAttributeKeys()),t.setSelectionAttribute(n)}else{const n=!(o.start.isAtStart&&o.end.isAtEnd);e.deleteContent(i,{leaveUnmerged:n}),a?Oh(e,t,i.focus):n&&t.setSelection(s,0)}}(e,i,t.selection),this.fire("afterExecute",{writer:i})})}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const i=t.anchor;if(!i||!e.checkChild(i,"softBreak"))return!1;const n=t.getFirstRange(),o=n.start.parent,r=n.end.parent;if((Dh(o,e)||Dh(r,e))&&o!==r)return!1;return!0}(e.schema,t.selection)}}function Oh(e,t,i){const n=t.createElement("softBreak");e.insertContent(n,i),t.setSelection(n,"after")}function Dh(e,t){return!e.is("rootElement")&&(t.isLimit(e)||Dh(e.parent,t))}class Lh extends Qe{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,i=e.conversion,n=e.editing.view,o=n.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),i.for("upcast").elementToElement({model:"softBreak",view:"br"}),i.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),n.addObserver(Gu),e.commands.add("shiftEnter",new zh(e)),this.listenTo(o,"enter",(t,i)=>{i.preventDefault(),i.isSoft&&(e.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"})}}class Vh extends Ze{execute(){const e=this.editor.model,t=e.document.selection;let i=e.schema.getLimitElement(t);if(t.containsEntireContent(i)||!Bh(e.schema,i))do{if(i=i.parent,!i)return}while(!Bh(e.schema,i));e.change(e=>{e.setSelection(i,"in")})}}function Bh(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const jh=Oo("Ctrl+A");class Fh extends Qe{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new Vh(e)),this.listenTo(t,"keydown",(t,i)=>{zo(i)===jh&&(e.execute("selectAll"),i.preventDefault())})}}class Hh extends Qe{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",t=>{const i=e.commands.get("selectAll"),n=new Xc(t),o=t.t;return n.set({label:o("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),n.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(n,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),n})}}class Uh extends Qe{static get requires(){return[Fh,Hh]}static get pluginName(){return"SelectAll"}}class Wh extends Ze{constructor(e,t){super(e),this._buffer=new Qu(e.model,t),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,i=t.document,n=e.text||"",o=n.length,r=e.range?t.createSelection(e.range):i.selection,s=e.resultRange;t.enqueueChange(this._buffer.batch,e=>{this._buffer.lock(),this._batches.add(this._buffer.batch),t.deleteContent(r),n&&t.insertContent(e.createText(n,i.selection.getAttributes()),r),s?e.setSelection(s):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(o)})}}function qh(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const i=[];let n,o=0;return e.forEach(e=>{"equal"==e?(r(),o++):"insert"==e?(s("insert")?n.values.push(t[o]):(r(),n={type:"insert",index:o,values:[t[o]]}),o++):s("delete")?n.howMany++:(r(),n={type:"delete",index:o,howMany:1})}),r(),i;function r(){n&&(i.push(n),n=null)}function s(e){return n&&n.type==e}}(gr(e.oldChildren,e.newChildren,$h),e.newChildren);if(t.length>1)return;const i=t[0];return i.values[0]&&i.values[0].is("$text")?i:void 0}function $h(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}class Yh{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if(function(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!qh(t))return!0;return!1}(e))this._handleContainerChildrenMutations(e,t);else for(const i of e)this._handleTextMutation(i,t),this._handleTextNodeInsertion(i)}_handleContainerChildrenMutations(e,t){const i=function(e){const t=e.map(e=>e.node).reduce((e,t)=>e.getCommonAncestor(t,{includeSelf:!0}));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find(e=>e.is("containerElement")||e.is("rootElement"))}(e);if(!i)return;const n=this.editor.editing.view.domConverter.mapViewToDom(i),o=new Er(this.editor.editing.view.document),r=this.editor.data.toModel(o.domToView(n)).getChild(0),s=this.editor.editing.mapper.toModelElement(i);if(!s)return;const a=Array.from(r.getChildren()),l=Array.from(s.getChildren()),c=a[a.length-1],d=l[l.length-1],u=c&&c.is("element","softBreak"),h=d&&!d.is("element","softBreak");u&&h&&a.pop();const g=this.editor.model.schema;if(!Gh(a,g)||!Gh(l,g))return;const m=a.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," "),f=l.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," ");if(f===m)return;const p=gr(f,m),{firstChangeAt:b,insertions:w,deletions:k}=Kh(p);let _=null;t&&(_=this.editing.mapper.toModelRange(t.getFirstRange()));const v=m.substr(b,w),y=this.editor.model.createRange(this.editor.model.createPositionAt(s,b),this.editor.model.createPositionAt(s,b+k));this.editor.execute("input",{text:v,range:y,resultRange:_})}_handleTextMutation(e,t){if("text"!=e.type)return;const i=e.newText.replace(/\u00A0/g," "),n=e.oldText.replace(/\u00A0/g," ");if(n===i)return;const o=gr(n,i),{firstChangeAt:r,insertions:s,deletions:a}=Kh(o);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const c=this.editing.view.createPositionAt(e.node,r),d=this.editing.mapper.toModelPosition(c),u=this.editor.model.createRange(d,d.getShiftedBy(a)),h=i.substr(r,s);this.editor.execute("input",{text:h,range:u,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=qh(e),i=this.editing.view.createPositionAt(e.node,t.index),n=this.editing.mapper.toModelPosition(i),o=t.values[0].data;this.editor.execute("input",{text:o.replace(/\u00A0/g," "),range:this.editor.model.createRange(n)})}}function Gh(e,t){return e.every(e=>t.isInline(e))}function Kh(e){let t=null,i=null;for(let n=0;n{i.deleteContent(i.document.selection)}),e.unlock()}So.isAndroid?n.document.on("beforeinput",(e,t)=>r(t),{priority:"lowest"}):n.document.on("keydown",(e,t)=>r(t),{priority:"lowest"}),n.document.on("compositionstart",(function(){const e=i.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;s()}),{priority:"lowest"}),n.document.on("compositionend",()=>{t=i.createSelection(i.document.selection)},{priority:"lowest"})}(e),function(e){e.editing.view.document.on("mutations",(t,i,n)=>{new Yh(e).handle(i,n)})}(e)}isInput(e){return this.editor.commands.get("input")._batches.has(e)}}class Jh extends Qe{static get requires(){return[Qh,Xu]}static get pluginName(){return"Typing"}}function Zh(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>n.is("$text")||n.is("$textProxy")?e+n.data:(i=t.createPositionAfter(n),""),""),range:t.createRange(i,e.end)}}class Xh{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))}),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",(t,{directChange:i})=>{i&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))}),this.listenTo(e,"change:data",(e,t)=>{"transparent"!=t.type&&this._evaluateTextBeforeSelection("data",{batch:t})})}_evaluateTextBeforeSelection(e,t={}){const i=this.model,n=i.document.selection,o=i.createRange(i.createPositionAt(n.focus.parent,0),n.focus),{text:r,range:s}=Zh(o,i),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const i=Object.assign(t,{text:r,range:s});"object"==typeof a&&Object.assign(i,a),this.fire("matched:"+e,i)}}}Ke(Xh,Ue);class eg extends Qe{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,i=e.editing.view,n=e.locale,o=t.document.selection;this.listenTo(i.document,"arrowKey",(e,t)=>{if(!o.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const i=t.keyCode==No.arrowright,r=t.keyCode==No.arrowleft;if(!i&&!r)return;const s=n.contentLanguageDirection;let a=!1;a="ltr"===s&&i||"rtl"===s&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()},{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(o,"change:range",(e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&og(o.getFirstPosition(),this.attributes)||this._restoreGravity())})}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,i=this.editor.model.document.selection,n=i.getFirstPosition();return!this._isGravityOverridden&&((!n.isAtStart||!tg(i,t))&&(og(n,t)?(ng(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,i=this.editor.model,n=i.document.selection,o=n.getFirstPosition();return this._isGravityOverridden?(ng(e),this._restoreGravity(),ig(i,t,o),!0):o.isAtStart?!!tg(n,t)&&(ng(e),ig(i,t,o),!0):function(e,t){return og(e.getShiftedBy(-1),t)}(o,t)?o.isAtEnd&&!tg(n,t)&&og(o,t)?(ng(e),ig(i,t,o),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change(e=>e.overrideSelectionGravity())}_restoreGravity(){this.editor.model.change(e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}}function tg(e,t){for(const i of t)if(e.hasAttribute(i))return!0;return!1}function ig(e,t,i){const n=i.nodeBefore;e.change(e=>{n?e.setSelectionAttribute(n.getAttributes()):e.removeSelectionAttribute(t)})}function ng(e){e.preventDefault()}function og(e,t){const{nodeBefore:i,nodeAfter:n}=e;for(const e of t){const t=i?i.getAttribute(e):void 0;if((n?n.getAttribute(e):void 0)!==t)return!0}return!1}var rg=/[\\^$.*+?()[\]{}|]/g,sg=RegExp(rg.source);var ag=function(e){return(e=Pn(e))&&sg.test(e)?e.replace(rg,"\\$&"):e};const lg={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:"1/2",to:"½"},oneThird:{from:"1/3",to:"⅓"},twoThirds:{from:"2/3",to:"⅔"},oneForth:{from:"1/4",to:"¼"},threeQuarters:{from:"3/4",to:"¾"},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:mg('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:mg("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:mg("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:mg('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:mg('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:mg("'"),to:[null,"‚",null,"’"]}},cg={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},dg=["symbols","mathematical","typography","quotes"];function ug(e){return"string"==typeof e?new RegExp(`(${ag(e)})$`):e}function hg(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function gg(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function mg(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function fg(e,t,i,n){return n.createRange(pg(e,t,i,!0,n),pg(e,t,i,!1,n))}function pg(e,t,i,n,o){let r=e.textNode||(n?e.nodeBefore:e.nodeAfter),s=null;for(;r&&r.getAttribute(t)==i;)s=r,r=n?r.previousSibling:r.nextSibling;return s?o.createPositionAt(s,n?"before":"after"):e}class bg extends Ze{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",(e,t)=>{t[1]={...t[1]};const i=t[1];i.batchType||(i.batchType="transparent")},{priority:"high"}),this.listenTo(e.data,"set",(e,t)=>{"transparent"===t[1].batchType&&this.clearStack()})}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,i={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:i}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,i){const n=this.editor.model,o=n.document,r=[],s=e.map(e=>e.getTransformedByOperations(i)),a=s.flat();for(const e of s){const t=e.filter(e=>e.root!=o.graveyard).filter(e=>!kg(e,a));t.length&&(wg(t),r.push(t[0]))}r.length&&n.change(e=>{e.setSelection(r,{backward:t})})}_undo(e,t){const i=this.editor.model,n=i.document;this._createdBatches.add(t);const o=e.operations.slice().filter(e=>e.isDocumentOperation);o.reverse();for(const e of o){const o=e.baseVersion+1,r=Array.from(n.history.getOperations(o)),s=nu([e.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const o of s)t.addOperation(o),i.applyOperation(o),n.history.setOperationAsUndone(e,o)}}}function wg(e){e.sort((e,t)=>e.start.isBefore(t.start)?-1:1);for(let t=1;tt!==e&&t.containsRange(e,!0))}class _g extends bg{execute(e=null){const t=e?this._stack.findIndex(t=>t.batch==e):this._stack.length-1,i=this._stack.splice(t,1)[0],n=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(n,()=>{this._undo(i.batch,n);const e=this.editor.model.document.history.getOperations(i.batch.baseVersion);this._restoreSelection(i.selection.ranges,i.selection.isBackward,e),this.fire("revert",i.batch,n)}),this.refresh()}}class vg extends bg{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(t,()=>{const i=e.batch.operations[e.batch.operations.length-1].baseVersion+1,n=this.editor.model.document.history.getOperations(i);this._restoreSelection(e.selection.ranges,e.selection.isBackward,n),this._undo(e.batch,t)}),this.refresh()}}class yg extends Qe{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new _g(e),this._redoCommand=new vg(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(e,t)=>{const i=t[0];if(!i.isDocumentOperation)return;const n=i.batch,o=this._redoCommand._createdBatches.has(n),r=this._undoCommand._createdBatches.has(n);this._batchRegistry.has(n)||"transparent"==n.type&&!o&&!r||(o?this._undoCommand.addBatch(n):r||(this._undoCommand.addBatch(n),this._redoCommand.clearStack()),this._batchRegistry.add(n))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(e,t,i)=>{this._redoCommand.addBatch(i)}),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var xg='',Ag='';class Cg extends Qe{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?xg:Ag,o="ltr"==t.uiLanguageDirection?Ag:xg;this._addButton("undo",i("Undo"),"CTRL+Z",n),this._addButton("redo",i("Redo"),"CTRL+Y",o)}_addButton(e,t,i,n){const o=this.editor;o.ui.componentFactory.add(e,r=>{const s=o.commands.get(e),a=new Xc(r);return a.set({label:t,icon:n,keystroke:i,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",()=>{o.execute(e),o.editing.view.focus()}),a})}}class Tg extends Qe{static get requires(){return[yg,Cg]}static get pluginName(){return"Undo"}}const Eg=["left","right","center","justify"];function Ig(e){return Eg.includes(e)}function Sg(e,t){return"rtl"==t.contentLanguageDirection?"right"===e:"left"===e}function Pg(e){const t=e.map(e=>{let t;return t="string"==typeof e?{name:e}:e,t}).filter(e=>{const t=!!Eg.includes(e.name);return t||Object(l.b)("alignment-config-name-not-recognized",{option:e}),t}),i=t.filter(e=>!!e.className).length;if(i&&i{const o=n.slice(i+1);if(o.some(e=>e.name==t.name))throw new l.a("alignment-config-name-already-defined",{option:t,configuredOptions:e});if(t.className){if(o.some(e=>e.className==t.className))throw new l.a("alignment-config-classname-already-defined",{option:t,configuredOptions:e})}}),t}class Mg extends Ze{refresh(){const e=this.editor.locale,t=Ns(this.editor.model.document.selection.getSelectedBlocks());this.isEnabled=!!t&&this._canBeAligned(t),this.isEnabled&&t.hasAttribute("alignment")?this.value=t.getAttribute("alignment"):this.value="rtl"===e.contentLanguageDirection?"right":"left"}execute(e={}){const t=this.editor,i=t.locale,n=t.model,o=n.document,r=e.value;n.change(e=>{const t=Array.from(o.selection.getSelectedBlocks()).filter(e=>this._canBeAligned(e)),n=t[0].getAttribute("alignment");Sg(r,i)||n===r||!r?function(e,t){for(const i of e)t.removeAttribute("alignment",i)}(t,e):function(e,t,i){for(const n of e)t.setAttribute("alignment",i,n)}(t,e,r)})}_canBeAligned(e){return this.editor.model.schema.checkAttribute(e,"alignment")}}class Ng extends Qe{static get pluginName(){return"AlignmentEditing"}constructor(e){super(e),e.config.define("alignment",{options:[...Eg.map(e=>({name:e}))]})}init(){const e=this.editor,t=e.locale,i=e.model.schema,n=Pg(e.config.get("alignment.options")).filter(e=>Ig(e.name)&&!Sg(e.name,t)),o=n.some(e=>!!e.className);i.extend("$block",{allowAttributes:"alignment"}),e.model.schema.setAttributeProperties("alignment",{isFormatting:!0}),o?e.conversion.attributeToAttribute(function(e){const t={model:{key:"alignment",values:e.map(e=>e.name)},view:{}};for(const i of e)t.view[i.name]={key:"class",value:i.className};return t}(n)):e.conversion.for("downcast").attributeToAttribute(function(e){const t={model:{key:"alignment",values:e.map(e=>e.name)},view:{}};for(const{name:i}of e)t.view[i]={key:"style",value:{"text-align":i}};return t}(n));const r=function(e){const t=[];for(const{name:i}of e)t.push({view:{key:"style",value:{"text-align":i}},model:{key:"alignment",value:i}});return t}(n);for(const t of r)e.conversion.for("upcast").attributeToAttribute(t);const s=function(e){const t=[];for(const{name:i}of e)t.push({view:{key:"align",value:i},model:{key:"alignment",value:i}});return t}(n);for(const t of s)e.conversion.for("upcast").attributeToAttribute(t);e.commands.add("alignment",new Mg(e))}}const Rg=new Map([["left",Cc.alignLeft],["right",Cc.alignRight],["center",Cc.alignCenter],["justify",Cc.alignJustify]]);class zg extends Qe{get localizedOptionTitles(){const e=this.editor.t;return{left:e("Align left"),right:e("Align right"),center:e("Align center"),justify:e("Justify")}}static get pluginName(){return"AlignmentUI"}init(){const e=this.editor,t=e.ui.componentFactory,i=e.t,n=Pg(e.config.get("alignment.options"));n.map(e=>e.name).filter(Ig).forEach(e=>this._addButton(e)),t.add("alignment",e=>{const o=Cd(e),r=n.map(e=>t.create("alignment:"+e.name));Td(o,r),o.buttonView.set({label:i("Text alignment"),tooltip:!0}),o.toolbarView.isVertical=!0,o.toolbarView.ariaLabel=i("Text alignment toolbar"),o.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});const s="rtl"===e.contentLanguageDirection?Rg.get("right"):Rg.get("left");return o.buttonView.bind("icon").toMany(r,"isOn",(...e)=>{const t=e.findIndex(e=>e);return t<0?s:r[t].icon}),o.bind("isEnabled").toMany(r,"isEnabled",(...e)=>e.some(e=>e)),o})}_addButton(e){const t=this.editor;t.ui.componentFactory.add("alignment:"+e,i=>{const n=t.commands.get("alignment"),o=new Xc(i);return o.set({label:this.localizedOptionTitles[e],icon:Rg.get(e),tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n),o.bind("isOn").to(n,"value",t=>t===e),this.listenTo(o,"execute",()=>{t.execute("alignment",{value:e}),t.editing.view.focus()}),o})}}class Og extends Ze{constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=t.selection.getAttribute(this.attributeKey),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,i=t.document.selection,n=e.value;t.change(e=>{if(i.isCollapsed)n?e.setSelectionAttribute(this.attributeKey,n):e.removeSelectionAttribute(this.attributeKey);else{const o=t.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const t of o)n?e.setAttribute(this.attributeKey,n,t):e.removeAttribute(this.attributeKey,t)}})}}class Dg extends Zi{constructor(e){super(e),this.set("isEmpty",!0),this.on("change",()=>{this.set("isEmpty",0===this.length)})}add(e,t){this.find(t=>t.color===e.color)||super.add(e,t)}hasColor(e){return!!this.find(t=>t.color===e)}}Ke(Dg,Ue);i(67);class Lg extends Pc{constructor(e,{colors:t,columns:i,removeButtonLabel:n,documentColorsLabel:o,documentColorsCount:r}){super(e),this.items=this.createCollection(),this.colorDefinitions=t,this.focusTracker=new Rs,this.keystrokes=new zs,this.set("selectedColor"),this.removeButtonLabel=n,this.columns=i,this.documentColors=new Dg,this.documentColorsCount=r,this._focusCycler=new nd({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this._documentColorsLabel=o,this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-table"]},children:this.items}),this.items.add(this._removeColorButton())}updateDocumentColors(e,t){const i=e.document,n=this.documentColorsCount;this.documentColors.clear();for(const o of i.getRootNames()){const r=i.getRoot(o),s=e.createRangeIn(r);for(const e of s.getItems())if(e.is("$textProxy")&&e.hasAttribute(t)&&(this._addColorToDocumentColors(e.getAttribute(t)),this.documentColors.length>=n))return}}updateSelectedColors(){const e=this.documentColorsGrid,t=this.staticColorsGrid,i=this.selectedColor;t.selectedColor=i,e&&(e.selectedColor=i)}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element)}appendGrids(){if(!this.staticColorsGrid&&(this.staticColorsGrid=this._createStaticColorsGrid(),this.items.add(this.staticColorsGrid),this.documentColorsCount)){const e=Mc.bind(this.documentColors,this.documentColors),t=new Sd(this.locale);t.text=this._documentColorsLabel,t.extendTemplate({attributes:{class:["ck","ck-color-grid__label",e.if("isEmpty","ck-hidden")]}}),this.items.add(t),this.documentColorsGrid=this._createDocumentColorsGrid(),this.items.add(this.documentColorsGrid)}}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}_removeColorButton(){const e=new Xc;return e.set({withText:!0,icon:Cc.eraser,tooltip:!0,label:this.removeButtonLabel}),e.class="ck-color-table__remove-color",e.on("execute",()=>{this.fire("execute",{value:null})}),e}_createStaticColorsGrid(){const e=new rd(this.locale,{colorDefinitions:this.colorDefinitions,columns:this.columns});return e.delegate("execute").to(this),e}_createDocumentColorsGrid(){const e=Mc.bind(this.documentColors,this.documentColors),t=new rd(this.locale,{columns:this.columns});return t.delegate("execute").to(this),t.extendTemplate({attributes:{class:e.if("isEmpty","ck-hidden")}}),t.items.bindTo(this.documentColors).using(e=>{const t=new id;return t.set({color:e.color,hasBorder:e.options&&e.options.hasBorder}),e.label&&t.set({label:e.label,tooltip:!0}),t.on("execute",()=>{this.fire("execute",{value:e.color})}),t}),this.documentColors.on("change:isEmpty",(e,i,n)=>{n&&(t.selectedColor=null)}),t}_addColorToDocumentColors(e){const t=this.colorDefinitions.find(t=>t.color===e);t?this.documentColors.add(Object.assign({},t)):this.documentColors.add({color:e,label:e,options:{hasBorder:!1}})}}function Vg(e,t){const i={model:{key:e,values:[]},view:{},upcastAlso:{}};for(const e of t)i.model.values.push(e.model),i.view[e.model]=e.view,e.upcastAlso&&(i.upcastAlso[e.model]=e.upcastAlso);return i}function Bg(e){return t=>t.getStyle(e).replace(/\s/g,"")}function jg(e){return(t,{writer:i})=>i.createAttributeElement("span",{style:`${e}:${t}`},{priority:7})}class Fg extends Og{constructor(e){super(e,"fontSize")}}function Hg(e){return e.map(e=>function(e){if(t=e,"object"==typeof t&&t.title&&t.model&&t.view)return Wg(e);var t;const i=function(e){return Ug[e]||Ug[e.model]}(e);if(i)return Wg(i);if("default"===e)return{model:void 0,title:"Default"};if(function(e){let t;if("object"==typeof e){if(!e.model)throw new l.a("font-size-invalid-definition",null,e);t=parseFloat(e.model)}else t=parseFloat(e);return isNaN(t)}(e))return;return function(e){"number"!=typeof e&&"string"!=typeof e||(e={title:String(e),model:parseFloat(e)+"px"});return e.view={name:"span",styles:{"font-size":e.model}},Wg(e)}(e)}(e)).filter(e=>!!e)}const Ug={get tiny(){return{title:"Tiny",model:"tiny",view:{name:"span",classes:"text-tiny",priority:7}}},get small(){return{title:"Small",model:"small",view:{name:"span",classes:"text-small",priority:7}}},get big(){return{title:"Big",model:"big",view:{name:"span",classes:"text-big",priority:7}}},get huge(){return{title:"Huge",model:"huge",view:{name:"span",classes:"text-huge",priority:7}}}};function Wg(e){return e.view.priority||(e.view.priority=7),e}const qg=["x-small","x-small","small","medium","large","x-large","xx-large","xxx-large"];class $g extends Qe{static get pluginName(){return"FontSizeEditing"}constructor(e){super(e),e.config.define("fontSize",{options:["tiny","small","default","big","huge"],supportAllValues:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"fontSize"}),e.model.schema.setAttributeProperties("fontSize",{isFormatting:!0,copyOnEnter:!0});const t=e.config.get("fontSize.supportAllValues"),i=Vg("fontSize",Hg(this.editor.config.get("fontSize.options")).filter(e=>e.model));t?(this._prepareAnyValueConverters(i),this._prepareCompatibilityConverter()):e.conversion.attributeToElement(i),e.commands.add("fontSize",new Fg(e))}_prepareAnyValueConverters(e){const t=this.editor,i=e.model.values.filter(e=>{return!vu(String(e))&&(t=String(e),!yu.test(t));var t});if(i.length)throw new l.a("font-size-invalid-use-of-named-presets",null,{presets:i});t.conversion.for("downcast").attributeToElement({model:"fontSize",view:(e,{writer:t})=>{if(e)return t.createAttributeElement("span",{style:"font-size:"+e},{priority:7})}}),t.conversion.for("upcast").elementToAttribute({model:{key:"fontSize",value:e=>e.getStyle("font-size")},view:{name:"span",styles:{"font-size":/.*/}}})}_prepareCompatibilityConverter(){this.editor.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{size:/^[+-]?\d{1,3}$/}},model:{key:"fontSize",value:e=>{const t=e.getAttribute("size"),i="-"===t[0]||"+"===t[0];let n=parseInt(t,10);i&&(n=3+n);const o=qg.length-1,r=Math.min(Math.max(n,0),o);return qg[r]}}})}}i(69);class Yg extends Qe{static get pluginName(){return"FontSizeUI"}init(){const e=this.editor,t=e.t,i=this._getLocalizedOptions(),n=e.commands.get("fontSize");e.ui.componentFactory.add("fontSize",o=>{const r=Cd(o);return Ed(r,function(e,t){const i=new Zi;for(const n of e){const e={type:"button",model:new Dd({commandName:"fontSize",commandParam:n.model,label:n.title,class:"ck-fontsize-option",withText:!0})};n.view&&n.view.styles&&e.model.set("labelStyle","font-size:"+n.view.styles["font-size"]),n.view&&n.view.classes&&e.model.set("class",`${e.model.class} ${n.view.classes}`),e.model.bind("isOn").to(t,"value",e=>e===n.model),i.add(e)}return i}(i,n)),r.buttonView.set({label:t("Font Size"),icon:'',tooltip:!0}),r.extendTemplate({attributes:{class:["ck-font-size-dropdown"]}}),r.bind("isEnabled").to(n),this.listenTo(r,"execute",t=>{e.execute(t.source.commandName,{value:t.source.commandParam}),e.editing.view.focus()}),r})}_getLocalizedOptions(){const e=this.editor,t=e.t,i={Default:t("Default"),Tiny:t("Tiny"),Small:t("Small"),Big:t("Big"),Huge:t("Huge")};return Hg(e.config.get("fontSize").options).map(e=>{const t=i[e.title];return t&&t!=e.title&&(e=Object.assign({},e,{title:t})),e})}}class Gg extends Og{constructor(e){super(e,"fontFamily")}}function Kg(e){return e.map(Qg).filter(e=>!!e)}function Qg(e){return"object"==typeof e?e:"default"===e?{title:"Default",model:void 0}:"string"==typeof e?function(e){const t=e.replace(/"|'/g,"").split(","),i=t[0],n=t.map(Jg).join(", ");return{title:i,model:n,view:{name:"span",styles:{"font-family":n},priority:7}}}(e):void 0}function Jg(e){return(e=e.trim()).indexOf(" ")>0&&(e=`'${e}'`),e}class Zg extends Qe{static get pluginName(){return"FontFamilyEditing"}constructor(e){super(e),e.config.define("fontFamily",{options:["default","Arial, Helvetica, sans-serif","Courier New, Courier, monospace","Georgia, serif","Lucida Sans Unicode, Lucida Grande, sans-serif","Tahoma, Geneva, sans-serif","Times New Roman, Times, serif","Trebuchet MS, Helvetica, sans-serif","Verdana, Geneva, sans-serif"],supportAllValues:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"fontFamily"}),e.model.schema.setAttributeProperties("fontFamily",{isFormatting:!0,copyOnEnter:!0});const t=Vg("fontFamily",Kg(e.config.get("fontFamily.options")).filter(e=>e.model));e.config.get("fontFamily.supportAllValues")?(this._prepareAnyValueConverters(),this._prepareCompatibilityConverter()):e.conversion.attributeToElement(t),e.commands.add("fontFamily",new Gg(e))}_prepareAnyValueConverters(){const e=this.editor;e.conversion.for("downcast").attributeToElement({model:"fontFamily",view:(e,{writer:t})=>t.createAttributeElement("span",{style:"font-family:"+e},{priority:7})}),e.conversion.for("upcast").elementToAttribute({model:{key:"fontFamily",value:e=>e.getStyle("font-family")},view:{name:"span",styles:{"font-family":/.*/}}})}_prepareCompatibilityConverter(){this.editor.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{face:/.*/}},model:{key:"fontFamily",value:e=>e.getAttribute("face")}})}}class Xg extends Qe{static get pluginName(){return"FontFamilyUI"}init(){const e=this.editor,t=e.t,i=this._getLocalizedOptions(),n=e.commands.get("fontFamily");e.ui.componentFactory.add("fontFamily",o=>{const r=Cd(o);return Ed(r,function(e,t){const i=new Zi;for(const n of e){const e={type:"button",model:new Dd({commandName:"fontFamily",commandParam:n.model,label:n.title,withText:!0})};e.model.bind("isOn").to(t,"value",e=>e===n.model||!(!e||!n.model)&&e.split(",")[0].replace(/'/g,"").toLowerCase()===n.model.toLowerCase()),n.view&&n.view.styles&&e.model.set("labelStyle","font-family: "+n.view.styles["font-family"]),i.add(e)}return i}(i,n)),r.buttonView.set({label:t("Font Family"),icon:'',tooltip:!0}),r.extendTemplate({attributes:{class:"ck-font-family-dropdown"}}),r.bind("isEnabled").to(n),this.listenTo(r,"execute",t=>{e.execute(t.source.commandName,{value:t.source.commandParam}),e.editing.view.focus()}),r})}_getLocalizedOptions(){const e=this.editor,t=e.t;return Kg(e.config.get("fontFamily").options).map(e=>("Default"===e.title&&(e.title=t("Default")),e))}}class em extends Og{constructor(e){super(e,"fontColor")}}class tm extends Qe{static get pluginName(){return"FontColorEditing"}constructor(e){super(e),e.config.define("fontColor",{colors:[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}],columns:5}),e.conversion.for("upcast").elementToAttribute({view:{name:"span",styles:{color:/[\s\S]+/}},model:{key:"fontColor",value:Bg("color")}}),e.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{color:/^#?\w+$/}},model:{key:"fontColor",value:e=>e.getAttribute("color")}}),e.conversion.for("downcast").attributeToElement({model:"fontColor",view:jg("color")}),e.commands.add("fontColor",new em(e)),e.model.schema.extend("$text",{allowAttributes:"fontColor"}),e.model.schema.setAttributeProperties("fontColor",{isFormatting:!0,copyOnEnter:!0})}}class im extends Qe{constructor(e,{commandName:t,icon:i,componentName:n,dropdownLabel:o}){super(e),this.commandName=t,this.componentName=n,this.icon=i,this.dropdownLabel=o,this.columns=e.config.get(this.componentName+".columns"),this.colorTableView=void 0}init(){const e=this.editor,t=e.locale,i=t.t,n=e.commands.get(this.commandName);const o=function(e,t){const i=e.t,n={Black:i("Black"),"Dim grey":i("Dim grey"),Grey:i("Grey"),"Light grey":i("Light grey"),White:i("White"),Red:i("Red"),Orange:i("Orange"),Yellow:i("Yellow"),"Light green":i("Light green"),Green:i("Green"),Aquamarine:i("Aquamarine"),Turquoise:i("Turquoise"),"Light blue":i("Light blue"),Blue:i("Blue"),Purple:i("Purple")};return t.map(e=>{const t=n[e.label];return t&&t!=e.label&&(e.label=t),e})}(t,e.config.get(this.componentName).colors.map(td).filter(e=>!!e)),r=e.config.get(this.componentName+".documentColors");e.ui.componentFactory.add(this.componentName,t=>{const s=Cd(t);return this.colorTableView=function({dropdownView:e,colors:t,columns:i,removeButtonLabel:n,documentColorsLabel:o,documentColorsCount:r}){const s=e.locale,a=new Lg(s,{colors:t,columns:i,removeButtonLabel:n,documentColorsLabel:o,documentColorsCount:r});return e.colorTableView=a,e.panelView.children.add(a),a.delegate("execute").to(e,"execute"),a}({dropdownView:s,colors:o.map(e=>({label:e.label,color:e.model,options:{hasBorder:e.hasBorder}})),columns:this.columns,removeButtonLabel:i("Remove color"),documentColorsLabel:0!==r?i("Document colors"):void 0,documentColorsCount:void 0===r?this.columns:r}),this.colorTableView.bind("selectedColor").to(n,"value"),s.buttonView.set({label:this.dropdownLabel,icon:this.icon,tooltip:!0}),s.extendTemplate({attributes:{class:"ck-color-ui-dropdown"}}),s.bind("isEnabled").to(n),s.on("execute",(t,i)=>{e.execute(this.commandName,i),e.editing.view.focus()}),s.on("change:isOpen",(t,i,n)=>{s.colorTableView.appendGrids(),n&&(0!==r&&this.colorTableView.updateDocumentColors(e.model,this.componentName),this.colorTableView.updateSelectedColors())}),s})}}class nm extends im{constructor(e){super(e,{commandName:"fontColor",componentName:"fontColor",icon:'',dropdownLabel:(0,e.locale.t)("Font Color")})}static get pluginName(){return"FontColorUI"}}class om extends Og{constructor(e){super(e,"fontBackgroundColor")}}class rm extends Qe{static get pluginName(){return"FontBackgroundColorEditing"}constructor(e){super(e),e.config.define("fontBackgroundColor",{colors:[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}],columns:5}),e.data.addStyleProcessorRules(Ou),e.conversion.for("upcast").elementToAttribute({view:{name:"span",styles:{"background-color":/[\s\S]+/}},model:{key:"fontBackgroundColor",value:Bg("background-color")}}),e.conversion.for("downcast").attributeToElement({model:"fontBackgroundColor",view:jg("background-color")}),e.commands.add("fontBackgroundColor",new om(e)),e.model.schema.extend("$text",{allowAttributes:"fontBackgroundColor"}),e.model.schema.setAttributeProperties("fontBackgroundColor",{isFormatting:!0,copyOnEnter:!0})}}class sm extends im{constructor(e){super(e,{commandName:"fontBackgroundColor",componentName:"fontBackgroundColor",icon:'',dropdownLabel:(0,e.locale.t)("Font Background Color")})}static get pluginName(){return"FontBackgroundColorUI"}}class am{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise((i,n)=>{t.onload=()=>{const e=t.result;this._data=e,i(e)},t.onerror=()=>{n("error")},t.onabort=()=>{n("aborted")},this._reader.readAsDataURL(e)})}abort(){this._reader.abort()}}Ke(am,Ue);class lm extends Qe{static get pluginName(){return"FileRepository"}static get requires(){return[Ac]}init(){this.loaders=new Zi,this.loaders.on("add",()=>this._updatePendingAction()),this.loaders.on("remove",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0)}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return Object(l.b)("filerepository-no-upload-adapter"),null;const t=new cm(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then(e=>{this._loadersMap.set(e,t)}).catch(()=>{}),t.on("change:uploaded",()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e}),t.on("change:uploadTotal",()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e}),t}destroyLoader(e){const t=e instanceof cm?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach((e,i)=>{e===t&&this._loadersMap.delete(i)})}_updatePendingAction(){const e=this.editor.plugins.get(Ac);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,i=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(i(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",i)}}else e.remove(this._pendingAction),this._pendingAction=null}}Ke(lm,Ue);class cm{constructor(e,t){this.id=s(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new am,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(e=>this._filePromiseWrapper?e:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new l.a("filerepository-read-wrong-status",this);return this.status="reading",this.file.then(e=>this._reader.read(e)).then(e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e}).catch(e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e})}upload(){if("idle"!=this.status)throw new l.a("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(e=>(this.uploadResponse=e,this.status="idle",e)).catch(e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e})}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise((i,n)=>{t.rejecter=n,t.isFulfilled=!1,e.then(e=>{t.isFulfilled=!0,i(e)}).catch(e=>{t.isFulfilled=!0,n(e)})}),t}}Ke(cm,Ue);class dm extends Pc{constructor(e){super(e),this.buttonView=new Xc(e),this._fileInputView=new um(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class um extends Pc{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}function hm(){let e=function(e){e=e.toLowerCase();const t=document.cookie.split(";");for(const i of t){const t=i.split("=");if(decodeURIComponent(t[0].trim().toLowerCase())===e)return decodeURIComponent(t[1])}return null}("ckCsrfToken");var t,i;return e&&40==e.length||(e=function(e){let t="";const i=new Uint8Array(e);window.crypto.getRandomValues(i);for(let e=0;e.5?n.toUpperCase():n}return t}(40),t="ckCsrfToken",i=e,document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(i)+";path=/"),e}class gm{constructor(e,t,i){this.loader=e,this.url=t,this.t=i}upload(){return this.loader.file.then(e=>new Promise((t,i)=>{this._initRequest(),this._initListeners(t,i,e),this._sendRequest(e)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.url,!0),e.responseType="json"}_initListeners(e,t,i){const n=this.xhr,o=this.loader,r=(0,this.t)("Cannot upload file:")+` ${i.name}.`;n.addEventListener("error",()=>t(r)),n.addEventListener("abort",()=>t()),n.addEventListener("load",()=>{const i=n.response;if(!i||!i.uploaded)return t(i&&i.error&&i.error.message?i.error.message:r);e({default:i.url})}),n.upload&&n.upload.addEventListener("progress",e=>{e.lengthComputable&&(o.uploadTotal=e.total,o.uploaded=e.loaded)})}_sendRequest(e){const t=new FormData;t.append("upload",e),t.append("ckCsrfToken",hm()),this.xhr.send(t)}}function mm(e,t,i,n){let o,r=null;"function"==typeof n?o=n:(r=e.commands.get(n),o=()=>{e.execute(n)}),e.model.document.on("change:data",(s,a)=>{if(r&&!r.isEnabled||!t.isEnabled)return;const l=Ns(e.model.document.selection.getRanges());if(!l.isCollapsed)return;if("transparent"==a.type)return;const c=Array.from(e.model.document.differ.getChanges()),d=c[0];if(1!=c.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const u=d.position.parent;if(u.is("element","codeBlock"))return;if(u.is("element","listItem")&&"function"!=typeof n&&!["numberedList","bulletedList","todoList"].includes(n))return;if(r&&!0===r.value)return;const h=u.getChild(0),g=e.model.createRangeOn(h);if(!g.containsRange(l)&&!l.end.isEqual(g.end))return;const m=i.exec(h.data.substr(0,l.end.offset));m&&e.model.enqueueChange(t=>{const i=t.createPositionAt(u,0),n=t.createPositionAt(u,m[0].length),r=new ba(i,n);if(!1!==o({match:m})){t.remove(r);const i=e.model.document.selection.getFirstRange(),n=t.createRangeIn(u);!u.isEmpty||n.isEqual(i)||n.containsRange(i,!0)||t.remove(u)}r.detach()})})}function fm(e,t,i,n){let o,r;i instanceof RegExp?o=i:r=i,r=r||(e=>{let t;const i=[],n=[];for(;null!==(t=o.exec(e))&&!(t&&t.length<4);){let{index:e,1:o,2:r,3:s}=t;const a=o+r+s;e+=t[0].length-a.length;const l=[e,e+o.length],c=[e+o.length+r.length,e+o.length+r.length+s.length];i.push(l),i.push(c),n.push([e+o.length,e+o.length+r.length])}return{remove:i,format:n}}),e.model.document.on("change:data",(i,o)=>{if("transparent"==o.type||!t.isEnabled)return;const s=e.model,a=s.document.selection;if(!a.isCollapsed)return;const l=Array.from(s.document.differ.getChanges()),c=l[0];if(1!=l.length||"insert"!==c.type||"$text"!=c.name||1!=c.length)return;const d=a.focus,u=d.parent,{text:h,range:g}=function(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>!n.is("$text")&&!n.is("$textProxy")||n.getAttribute("code")?(i=t.createPositionAfter(n),""):e+n.data,""),range:t.createRange(i,e.end)}}(s.createRange(s.createPositionAt(u,0),d),s),m=r(h),f=pm(g.start,m.format,s),p=pm(g.start,m.remove,s);f.length&&p.length&&s.enqueueChange(e=>{if(!1!==n(e,f))for(const t of p.reverse())e.remove(t)})})}function pm(e,t,i){return t.filter(e=>void 0!==e[0]&&void 0!==e[1]).map(t=>i.createRange(e.getShiftedBy(t[0]),e.getShiftedBy(t[1])))}function bm(e,t){return(i,n)=>{if(!e.commands.get(t).isEnabled)return!1;const o=e.model.schema.getValidRanges(n,t);for(const e of o)i.setAttribute(t,!0,e);i.removeSelectionAttribute(t)}}class wm extends Ze{constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,i=t.document.selection,n=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(i.isCollapsed)n?e.setSelectionAttribute(this.attributeKey,!0):e.removeSelectionAttribute(this.attributeKey);else{const o=t.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const t of o)n?e.setAttribute(this.attributeKey,n,t):e.removeAttribute(this.attributeKey,t)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,i=e.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const e of i.getRanges())for(const i of e.getItems())if(t.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}class km extends Qe{static get pluginName(){return"BoldEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"bold"}),e.model.schema.setAttributeProperties("bold",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"bold",view:"strong",upcastAlso:["b",e=>{const t=e.getStyle("font-weight");return t?"bold"==t||Number(t)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),e.commands.add("bold",new wm(e,"bold")),e.keystrokes.set("CTRL+B","bold")}}class _m extends Qe{static get pluginName(){return"BoldUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("bold",i=>{const n=e.commands.get("bold"),o=new Xc(i);return o.set({label:t("Bold"),icon:'',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("bold"),e.editing.view.focus()}),o})}}class vm extends Qe{static get pluginName(){return"ItalicEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"italic"}),e.model.schema.setAttributeProperties("italic",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"italic",view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add("italic",new wm(e,"italic")),e.keystrokes.set("CTRL+I","italic")}}class ym extends Qe{static get pluginName(){return"ItalicUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("italic",i=>{const n=e.commands.get("italic"),o=new Xc(i);return o.set({label:t("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("italic"),e.editing.view.focus()}),o})}}class xm extends Qe{static get pluginName(){return"StrikethroughEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"strikethrough"}),e.model.schema.setAttributeProperties("strikethrough",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"strikethrough",view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),e.commands.add("strikethrough",new wm(e,"strikethrough")),e.keystrokes.set("CTRL+SHIFT+X","strikethrough")}}class Am extends Qe{static get pluginName(){return"StrikethroughUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("strikethrough",i=>{const n=e.commands.get("strikethrough"),o=new Xc(i);return o.set({label:t("Strikethrough"),icon:'',keystroke:"CTRL+SHIFT+X",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("strikethrough"),e.editing.view.focus()}),o})}}class Cm extends Qe{static get pluginName(){return"UnderlineEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"underline"}),e.model.schema.setAttributeProperties("underline",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"underline",view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),e.commands.add("underline",new wm(e,"underline")),e.keystrokes.set("CTRL+U","underline")}}class Tm extends Qe{static get pluginName(){return"UnderlineUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("underline",i=>{const n=e.commands.get("underline"),o=new Xc(i);return o.set({label:t("Underline"),icon:'',keystroke:"CTRL+U",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("underline"),e.editing.view.focus()}),o})}}class Em extends Ze{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.schema,n=t.document.selection,o=Array.from(n.getSelectedBlocks()),r=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(r){const t=o.filter(e=>Im(e)||Pm(i,e));this._applyQuote(e,t)}else this._removeQuote(e,o.filter(Im))})}_getValue(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!Im(e))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,i=Ns(e.getSelectedBlocks());return!!i&&Pm(t,i)}_removeQuote(e,t){Sm(e,t).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const i=e.createPositionBefore(t.start.parent);return void e.move(t,i)}t.end.isAtEnd||e.split(t.end);const i=e.createPositionAfter(t.end.parent);e.move(t,i)})}_applyQuote(e,t){const i=[];Sm(e,t).reverse().forEach(t=>{let n=Im(t.start);n||(n=e.createElement("blockQuote"),e.wrap(t,n)),i.push(n)}),i.reverse().reduce((t,i)=>t.nextSibling==i?(e.merge(e.createPositionAfter(t)),t):i)}}function Im(e){return"blockQuote"==e.parent.name?e.parent:null}function Sm(e,t){let i,n=0;const o=[];for(;n{const n=e.model.document.differ.getChanges();for(const e of n)if("insert"==e.type){const n=e.position.nodeAfter;if(!n)continue;if(n.is("element","blockQuote")&&n.isEmpty)return i.remove(n),!0;if(n.is("element","blockQuote")&&!t.checkChild(e.position,n))return i.unwrap(n),!0;if(n.is("element")){const e=i.createRangeIn(n);for(const n of e.getItems())if(n.is("element","blockQuote")&&!t.checkChild(i.createPositionBefore(n),n))return i.unwrap(n),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return i.remove(t),!0}return!1});const i=this.editor.editing.view.document,n=e.model.document.selection,o=e.commands.get("blockQuote");this.listenTo(i,"enter",(t,i)=>{if(!n.isCollapsed||!o.value)return;n.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"}),this.listenTo(i,"delete",(t,i)=>{if("backward"!=i.direction||!n.isCollapsed||!o.value)return;const r=n.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"})}}i(71);class Nm extends Qe{static get pluginName(){return"BlockQuoteUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("blockQuote",i=>{const n=e.commands.get("blockQuote"),o=new Xc(i);return o.set({label:t("Block quote"),icon:Cc.quote,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),o})}}class Rm extends Qe{static get pluginName(){return"CKFinderUI"}init(){const e=this.editor,t=e.ui.componentFactory,i=e.t;t.add("ckfinder",t=>{const n=e.commands.get("ckfinder"),o=new Xc(t);return o.set({label:i("Insert image or file"),icon:'',tooltip:!0}),o.bind("isEnabled").to(n),o.on("execute",()=>{e.execute("ckfinder"),e.editing.view.focus()}),o})}}class zm extends Ze{constructor(e){super(e),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",()=>this.refresh(),{priority:"low"})}refresh(){const e=this.editor.commands.get("insertImage"),t=this.editor.commands.get("link");this.isEnabled=e.isEnabled||t.isEnabled}execute(){const e=this.editor,t=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=t&&"modal"!=t)throw new l.a("ckfinder-unknown-openermethod",e);const i=this.editor.config.get("ckfinder.options")||{};i.chooseFiles=!0;const n=i.onInit;i.language||(i.language=e.locale.uiLanguage),i.onInit=t=>{n&&n(t),t.on("files:choose",i=>{const n=i.data.files.toArray(),o=n.filter(e=>!e.isImage()),r=n.filter(e=>e.isImage());for(const t of o)e.execute("link",t.getUrl());const s=[];for(const e of r){const i=e.getUrl();s.push(i||t.request("file:getProxyUrl",{file:e}))}s.length&&Om(e,s)}),t.on("file:choose:resizedImage",t=>{const i=t.data.resizedUrl;if(i)Om(e,[i]);else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not obtain resized image URL."),{title:i("Selecting resized image failed"),namespace:"ckfinder"})}})},window.CKFinder[t](i)}}function Om(e,t){if(e.commands.get("insertImage").isEnabled)e.execute("insertImage",{source:t});else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not insert image at the current position."),{title:i("Inserting image failed"),namespace:"ckfinder"})}}class Dm extends Qe{static get pluginName(){return"CKFinderEditing"}static get requires(){return[Od,"LinkEditing"]}init(){const e=this.editor;if(!e.plugins.has("ImageBlockEditing")&&!e.plugins.has("ImageInlineEditing"))throw new l.a("ckfinder-missing-image-plugin",e);e.commands.add("ckfinder",new zm(e))}}class Lm extends Qe{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",lm]}init(){const e=this.editor,t=e.plugins.get("CloudServices"),i=t.token,n=t.uploadUrl;i&&(this._uploadGateway=e.plugins.get("CloudServicesCore").createUploadGateway(i,n),e.plugins.get(lm).createUploadAdapter=e=>new Vm(this._uploadGateway,e))}}class Vm{constructor(e,t){this.uploadGateway=e,this.loader=t}upload(){return this.loader.file.then(e=>(this.fileUploader=this.uploadGateway.upload(e),this.fileUploader.on("progress",(e,t)=>{this.loader.uploadTotal=t.total,this.loader.uploaded=t.uploaded}),this.fileUploader.send()))}abort(){this.fileUploader.abort()}}class Bm extends Ze{refresh(){const e=this.editor.model,t=Ns(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&jm(t,e.schema)}execute(e={}){const t=this.editor.model,i=t.document;t.change(n=>{const o=(e.selection||i.selection).getSelectedBlocks();for(const e of o)!e.is("element","paragraph")&&jm(e,t.schema)&&n.rename(e,"paragraph")})}}function jm(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class Fm extends Ze{execute(e){const t=this.editor.model;let i=e.position;t.change(e=>{const n=e.createElement("paragraph");if(!t.schema.checkChild(i.parent,n)){const o=t.schema.findAllowedParent(i,n);if(!o)return;i=e.split(i,o).position}t.insertContent(n,i),e.setSelection(n,"in")})}}class Hm extends Qe{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new Bm(e)),e.commands.add("insertParagraph",new Fm(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>Hm.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Hm.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class Um extends Ze{constructor(e,t){super(e),this.modelElements=t}refresh(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some(t=>Wm(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,i=t.document,n=e.value;t.change(e=>{const o=Array.from(i.selection.getSelectedBlocks()).filter(e=>Wm(e,n,t.schema));for(const t of o)t.is("element",n)||e.rename(t,n)})}}function Wm(e,t,i){return i.checkChild(e.parent,t)&&!i.isObject(e)}class qm extends Qe{static get pluginName(){return"HeadingEditing"}constructor(e){super(e),e.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Hm]}init(){const e=this.editor,t=e.config.get("heading.options"),i=[];for(const n of t)"paragraph"!==n.model&&(e.model.schema.register(n.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(n),i.push(n.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new Um(e,i))}afterInit(){const e=this.editor,t=e.commands.get("enter"),i=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",(t,n)=>{const o=e.model.document.selection.getFirstPosition().parent;i.some(e=>o.is("element",e.model))&&!o.is("element","paragraph")&&0===o.childCount&&n.writer.rename(o,"paragraph")})}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:a.get("low")+1})}}i(13);class $m extends Qe{static get pluginName(){return"HeadingUI"}init(){const e=this.editor,t=e.t,i=function(e){const t=e.t,i={Paragraph:t("Paragraph"),"Heading 1":t("Heading 1"),"Heading 2":t("Heading 2"),"Heading 3":t("Heading 3"),"Heading 4":t("Heading 4"),"Heading 5":t("Heading 5"),"Heading 6":t("Heading 6")};return e.config.get("heading.options").map(e=>{const t=i[e.title];return t&&t!=e.title&&(e.title=t),e})}(e),n=t("Choose heading"),o=t("Heading");e.ui.componentFactory.add("heading",t=>{const r={},s=new Zi,a=e.commands.get("heading"),l=e.commands.get("paragraph"),c=[a];for(const e of i){const t={type:"button",model:new Dd({label:e.title,class:e.class,withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(l,"value"),t.model.set("commandName","paragraph"),c.push(l)):(t.model.bind("isOn").to(a,"value",t=>t===e.model),t.model.set({commandName:"heading",commandValue:e.model})),s.add(t),r[e.model]=e.title}const d=Cd(t);return Ed(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:o}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(c,"isEnabled",(...e)=>e.some(e=>e)),d.buttonView.bind("label").to(a,"value",l,"value",(e,t)=>{const i=e||t&&"paragraph";return r[i]?r[i]:n}),this.listenTo(d,"execute",t=>{e.execute(t.source.commandName,t.source.commandValue?{value:t.source.commandValue}:void 0),e.editing.view.focus()}),d})}}class Ym extends Qe{static get requires(){return[Wd]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",t=>{(function(e){const t=e.getSelectedElement();return!(!t||!oh(t))})(e.editing.view.document.selection)&&t.stop()},{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:i,getRelatedElement:n,balloonClassName:o="ck-toolbar-container"}){if(!i.length)return void Object(l.b)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,s=r.t,a=new wd(r.locale);if(a.ariaLabel=t||s("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.a("widget-toolbar-duplicated",this,{toolbarId:e});a.fillFromConfig(i,r.ui.componentFactory),this._toolbarDefinitions.set(e,{view:a,getRelatedElement:n,balloonClassName:o})}_updateToolbarsVisibility(){let e=0,t=null,i=null;for(const n of this._toolbarDefinitions.values()){const o=n.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&o)if(this.editor.ui.focusTracker.isFocused){const r=o.getAncestors().length;r>e&&(e=r,t=o,i=n)}else this._isToolbarVisible(n)&&this._hideToolbar(n);else this._isToolbarInBalloon(n)&&this._hideToolbar(n)}i&&this._showToolbar(i,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?Gm(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:Km(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);Gm(this.editor,t)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function Gm(e,t){const i=e.plugins.get("ContextualBalloon"),n=Km(e,t);i.updatePosition(n)}function Km(e,t){const i=e.editing.view,n=Bd.defaultPositions;return{target:i.domConverter.mapViewToDom(t),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,hh]}}class Qm{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,i){const n=new Cs(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const i of t)if(e.classList.contains("ck-widget__resizer__handle-"+i))return i}(e),this._referenceCoordinates=function(e,t){const i=new Cs(e),n=t.split("-"),o={x:"right"==n[1]?i.right:i.left,y:"bottom"==n[0]?i.bottom:i.top};return o.x+=e.ownerDocument.defaultView.scrollX,o.y+=e.ownerDocument.defaultView.scrollY,o}(t,function(e){const t=e.split("-"),i={top:"bottom",bottom:"top",left:"right",right:"left"};return`${i[t[0]]}-${i[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=n.width,this.originalHeight=n.height,this.aspectRatio=n.width/n.height;const o=i.style.width;o&&o.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(o):this.originalWidthPercents=function(e,t){const i=e.parentElement,n=parseFloat(i.ownerDocument.defaultView.getComputedStyle(i).width);return t.width/n*100}(i,n)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}Ke(Qm,Ue);class Jm extends Pc{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",e=>e?"ck-orientation-"+e:"")],style:{display:e.if("_isVisible","none",e=>!e)}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",(e,t)=>null!==e&&null!==t),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",(t,i,n)=>"px"===e.unit?`${t}×${i}`:n+"%"),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",(e,t,i)=>t<50||i<50?"above-center":e)}_dismiss(){this.unbind(),this._isVisible=!1}}class Zm{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())},{priority:"high"}),this.on("change:isEnabled",()=>{this.isEnabled&&this.redraw()})}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change(i=>{const n=i.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const i=this.toDomElement(t);return e._appendHandles(i),e._appendSizeUI(i),e.on("change:isEnabled",(e,t,n)=>{i.style.display=n?"":"none"}),i.style.display=e.isEnabled?"":"none",i}));i.insert(i.createPositionAt(t,"end"),n),i.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=n})}begin(e){this.state=new Qm(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change(e=>{const i=this._options.unit||"%",n=("%"===i?t.widthPercents:t.width)+i;e.setStyle("width",n,this._options.viewElement)});const i=this._getHandleHost(),n=new Cs(i);t.handleHostWidth=Math.round(n.width),t.handleHostHeight=Math.round(n.height);const o=new Cs(i);t.width=Math.round(o.width),t.height=Math.round(o.height),this.redraw(n),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change(()=>{this._cleanup(),this._options.onCommit(t)})}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((i=t)&&i.ownerDocument&&i.ownerDocument.contains(i)))return;var i;const n=t.parentElement,o=this._getHandleHost(),r=this._viewResizerWrapper,s=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(n.isSameNode(o)){const t=e||new Cs(o);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[o.offsetWidth+"px",o.offsetHeight+"px",o.offsetLeft+"px",o.offsetTop+"px"];"same"!==ln(s,a)&&this._options.editor.editing.view.change(e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)})}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change(e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)})}_proposeNewSize(e){const t=this.state,i={x:(n=e).pageX,y:n.pageY};var n;const o=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(i.x+t.originalWidth),y:i.y-t.originalHeight-t._referenceCoordinates.y};o&&t.activeHandlePosition.endsWith("-right")&&(r.x=i.x-(t._referenceCoordinates.x+t.originalWidth)),o&&(r.x*=2);const s={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};s.dominant=s.width/t.aspectRatio>s.height?"width":"height",s.max=s[s.dominant];const a={width:s.width,height:s.height};return"width"==s.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const n of t)e.appendChild(new Mc({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(i=n,"ck-widget__resizer__handle-"+i)}}).render());var i}_appendSizeUI(e){this._sizeView=new Jm,this._sizeView.render(),e.appendChild(this._sizeView.element)}}Ke(Zm,Ue);i(74);class Xm extends Qe{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=vr.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(uu),this._observer=Object.create(Mr),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const i=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=Th(i,200),this.on("change:visibleResizer",i),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())},{priority:"lowest"}),this._observer.listenTo(vr.window,"resize",this._redrawFocusedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",()=>{const e=n.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null})}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new Zm(e),i=this.editor.plugins;if(t.attach(),i.has("WidgetToolbarRepository")){const e=i.get("WidgetToolbarRepository");t.on("begin",()=>{e.forceDisabled("resize")},{priority:"lowest"}),t.on("cancel",()=>{e.clearForceDisabled("resize")},{priority:"highest"}),t.on("commit",()=>{e.clearForceDisabled("resize")},{priority:"highest"})}this._resizers.set(e.viewElement,t);const n=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(n)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const i=t.domTarget;Zm.isResizeHandle(i)&&(this._activeResizer=this._getResizerByHandle(i),this._activeResizer&&(this._activeResizer.begin(i),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}Ke(Xm,Ue);class ef extends Ze{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change(t=>{t.setAttribute("alt",e.newValue,o)})}}function tf(e,t){const i=e.createEmptyElement("img"),n="imageBlock"===t?e.createContainerElement("figure",{class:"image"}):e.createContainerElement("span",{class:"image-inline"},{isAllowedInsideAttributeElement:!0});return e.insert(e.createPositionAt(n,0),i),n}function nf(e,t){if(e.plugins.has("ImageInlineEditing")!==e.plugins.has("ImageBlockEditing"))return{name:"img",attributes:{src:!0}};const i=e.plugins.get("ImageUtils");return e=>{if(!i.isInlineImageView(e)||!e.hasAttribute("src"))return null;return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:{name:!0,attributes:["src"]}}}function of(e,t){const i=Ns(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class rf extends Qe{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,r=o.document.selection;i=sf(n,t||r,i),e={...Object.fromEntries(r.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change(n=>{const s=n.createElement(i,e);return t||"imageInline"==i||(t=uh(r,o)),o.insertContent(s,t),s.parent?(n.setSelection(s,"on"),s):null})}getClosestSelectedImageWidget(e){const t=e.getSelectedElement();if(t&&this.isImageWidget(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&this.isImageWidget(i))return i;i=i.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==sf(e,t)){const i=function(e,t){const i=uh(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return rh(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&oh(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function sf(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?of(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class af extends Qe{static get requires(){return[rf]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new ef(this.editor))}}i(76),i(7);class lf extends Pc{constructor(e){super(e);const t=this.locale.t;this.focusTracker=new Rs,this.keystrokes=new zs,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(t("Save"),Cc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(t("Cancel"),Cc.cancel,"ck-button-cancel","cancel"),this._focusables=new Sc,this._focusCycler=new nd({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),Ec(this)}render(){super.render(),this.keystrokes.listenTo(this.element),Ic({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)})}_createButton(e,t,i,n){const o=new Xc(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new Rd(this.locale,zd);return t.label=e("Text alternative"),t}}function cf(e){const t=e.editing.view,i=Bd.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.viewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}class df extends Qe{static get requires(){return[Wd]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",i=>{const n=e.commands.get("imageTextAlternative"),o=new Xc(i);return o.set({label:t("Change image text alternative"),icon:Cc.lowVision,tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",()=>{this._showForm()}),o})}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new lf(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this._form.keystrokes.set("Esc",(e,t)=>{this._hideForm(!0),t()}),this.listenTo(e.ui,"update",()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=cf(e);t.updatePosition(i)}}(e):this._hideForm(!0)}),Tc({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:cf(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class uf extends Qe{static get requires(){return[af,df]}static get pluginName(){return"ImageTextAlternative"}}function hf(e,t){return e=>{e.on("attribute:srcset:"+t,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function gf(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class mf extends zr{observe(e){this.listenTo(e,"load",(e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)},{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class ff extends Ze{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&Object(l.b)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&Object(l.b)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=en(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})})}}class pf extends Qe{static get requires(){return[rf]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(mf),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new ff(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class bf extends Ze{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change(e=>{const r=Array.from(t.markers).filter(e=>e.getRange().containsItem(n)),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const a=e.createRangeOn(s);for(const t of r){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(a,!0):a;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}}):null}}class wf extends Qe{static get requires(){return[pf,rf,Wu]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new bf(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageBlock",view:(e,{writer:t})=>tf(t,"imageBlock")}),i.for("editingDowncast").elementToElement({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(tf(i,"imageBlock"),i,t("image widget"))}),i.for("downcast").add(gf(n,"imageBlock","src")).add(gf(n,"imageBlock","alt")).add(hf(n,"imageBlock")),i.for("upcast").elementToElement({view:nf(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",{src:e.getAttribute("src")})}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!o.hasAttribute("src")||!n.consumable.test(o,{name:!0}))return;const r=Ns(n.convertItem(o,i.modelCursor).modelRange.getItems());r&&(n.convertChildren(i.viewItem,r),n.updateConversionResult(r,i))}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isInlineImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageBlock"===of(t.schema,l)){const e=new hu(i.document),t=s.map(t=>e.createElement("figure",{class:"image"},t));r.content=e.createDocumentFragment(t)}})}}i(11);class kf extends Qe{static get requires(){return[wf,Ah,uf]}static get pluginName(){return"ImageBlock"}}class _f extends Qe{static get requires(){return[pf,rf,Wu]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{isObject:!0,isInline:!0,allowWhere:"$text",allowAttributes:["alt","src","srcset"]}),t.addChildCheck((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new bf(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToElement({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(tf(i,"imageInline"),i,t("image widget"))}),i.for("downcast").add(gf(n,"imageInline","src")).add(gf(n,"imageInline","alt")).add(hf(n,"imageInline")),i.for("upcast").elementToElement({view:nf(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",{src:e.getAttribute("src")})})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isBlockImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageInline"===of(t.schema,l)){const e=new hu(i.document),t=s.map(t=>1===t.childCount?(Array.from(t.getAttributes()).forEach(i=>e.setAttribute(...i,n.findViewImgElement(t))),t.getChild(0)):t);r.content=e.createDocumentFragment(t)}})}}class vf extends Qe{static get requires(){return[_f,Ah,uf]}static get pluginName(){return"ImageInline"}}function yf(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}function xf(e,t){const i=t.getFirstPosition().findAncestor("caption");return i&&e.isBlockImage(i.parent)?i:null}class Af extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils");if(!e.plugins.has(wf))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=xf(t,i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!yf(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)})}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const r=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=r||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageUtils");let r,s=i.getSelectedElement();s?r=yf(s):(r=xf(o,i),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class Cf extends Qe{static get requires(){return[rf]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new Af(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.conversion.for("upcast").elementToElement({view:e=>function(e,t){return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}(i,e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!i.isBlockImage(e.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Gd({view:t,element:r,text:n("Enter image caption"),keepOnFocus:!0});const s=dh(r,o);return lh(s,o,(e,t,i)=>i.addClass(en(t.classes),e),(e,t,i)=>i.removeClass(en(t.classes),e)),s}}),e.editing.mapper.on("modelToViewPosition",Tf(t)),e.data.mapper.on("modelToViewPosition",Tf(t))}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.commands.get("imageTypeInline"),n=e.commands.get("imageTypeBlock"),o=e=>{if(!e.return)return;const{oldElement:i,newElement:n}=e.return;if(!i)return;if(t.isBlockImage(i)){const e=yf(i);if(e)return void this._saveCaption(n,e)}const o=this._getSavedCaption(i);o&&this._saveCaption(n,o)};i&&this.listenTo(i,"execute",o,{priority:"low"}),n&&this.listenTo(n,"execute",o,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Js.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}function Tf(e){return(t,i)=>{const n=i.modelPosition,o=n.parent;if(!o.is("element","imageBlock"))return;const r=i.mapper.toViewElement(o);i.viewPosition=e.createPositionAt(r,n.offset+1)}}class Ef extends Qe{static get requires(){return[rf]}static get pluginName(){return"ImageCaptionUI"}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",o=>{const r=e.commands.get("toggleImageCaption"),s=new Xc(o);return s.set({icon:Cc.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",e=>n(e?"Toggle caption off":"Toggle caption on")),this.listenTo(s,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const n=xf(i,e.model.document.selection);if(n){const i=e.editing.mapper.toViewElement(n);t.scrollToTheSelection(),t.change(e=>{e.addClass("image__caption_highlighted",i)})}}),s})}}i(80);class If extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!t,t&&t.hasAttribute("width")?this.value={width:t.getAttribute("width"),height:null}:this.value=null}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},n&&i.change(t=>{t.setAttribute("width",e.width,n)})}}class Sf extends Qe{static get requires(){return[rf]}static get pluginName(){return"ImageResizeEditing"}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new If(e);this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:"width"}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:"width"})}_registerConverters(e){const t=this.editor;t.conversion.for("downcast").add(t=>t.on("attribute:width:"+e,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=i.writer,o=i.mapper.toViewElement(t.item);null!==t.attributeNewValue?(n.setStyle("width",t.attributeNewValue,o),n.addClass("image_resized",o)):(n.removeStyle("width",o),n.removeClass("image_resized",o))})),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"width",value:e=>e.getStyle("width")}})}}const Pf={small:Cc.objectSizeSmall,medium:Cc.objectSizeMedium,large:Cc.objectSizeLarge,original:Cc.objectSizeFull};class Mf extends Qe{static get requires(){return[Sf]}static get pluginName(){return"ImageResizeButtons"}constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:o}=e,r=n?n+this._resizeUnit:null;t.ui.componentFactory.add(i,i=>{const n=new Xc(i),s=t.commands.get("resizeImage"),a=this._getOptionLabelValue(e,!0);if(!Pf[o])throw new l.a("imageresizebuttons-missing-icon",t,e);return n.set({label:a,icon:Pf[o],tooltip:a,isToggleable:!0}),n.bind("isEnabled").to(this),n.bind("isOn").to(s,"value",Nf(r)),this.listenTo(n,"execute",()=>{t.execute("resizeImage",{width:r})}),n})}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find(e=>!e.value),o=o=>{const r=t.commands.get("resizeImage"),s=Cd(o,ad),a=s.buttonView;return a.set({tooltip:i("Resize image"),commandValue:n.value,icon:Pf.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button"}),a.bind("label").to(r,"value",e=>e&&e.width?e.width:this._getOptionLabelValue(n)),s.bind("isOn").to(r),s.bind("isEnabled").to(this),Ed(s,this._getResizeDropdownListItemDefinitions(e,r)),s.listView.ariaLabel=i("Image resize list"),this.listenTo(s,"execute",e=>{t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus()}),s};t.ui.componentFactory.add("resizeImage",o),t.ui.componentFactory.add("imageResize",o)}_getOptionLabelValue(e,t){const i=this.editor.t;return e.label?e.label:t?e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const i=new Zi;return e.map(e=>{const n=e.value?e.value+this._resizeUnit:null,o={type:"button",model:new Dd({commandName:"resizeImage",commandValue:n,label:this._getOptionLabelValue(e),withText:!0,icon:null})};o.model.bind("isOn").to(t,"value",Nf(n)),i.add(o)}),i}}function Nf(e){return t=>null===e&&t===e||t&&t.width===e}const Rf=/(image|image-inline)/;class zf extends Qe{static get requires(){return[Xm]}static get pluginName(){return"ImageResizeHandles"}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view;t.addObserver(mf),this.listenTo(t.document,"imageLoaded",(i,n)=>{if(!n.target.matches("figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img"))return;const o=e.editing.view.domConverter,r=o.domToView(n.target).findAncestor({classes:Rf});let s=this.editor.plugins.get(Xm).getResizerByViewElement(r);if(s)return void s.redraw();const a=e.editing.mapper,l=a.toModelElement(r);s=e.plugins.get(Xm).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:l,viewElement:r,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>o.viewToDom(a.toViewElement(l.parent)),isCentered(){const e=l.getAttribute("imageStyle");return!e||"block"==e||"alignCenter"==e},onCommit(i){t.change(e=>{e.removeClass("image_resized",r)}),e.execute("resizeImage",{width:i})}}),s.on("updateSize",()=>{r.hasClass("image_resized")||t.change(e=>{e.addClass("image_resized",r)})}),s.bind("isEnabled").to(this)})}}i(82);class Of extends Ze{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]}))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change(t=>{const o=e.value;let r=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,r)&&(this.editor.execute(n.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",r):t.setAttribute("imageStyle",o,r)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:Df,objectInline:Lf,objectLeft:Vf,objectRight:Bf,objectCenter:jf,objectBlockLeft:Ff,objectBlockRight:Hf}=Cc,Uf={inline:{name:"inline",title:"In line",icon:Lf,modelElements:["imageInline"],isDefault:!0},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:Vf,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"},alignBlockLeft:{name:"alignBlockLeft",title:"Left aligned image",icon:Ff,modelElements:["imageBlock"],className:"image-style-block-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:jf,modelElements:["imageBlock"],className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:Bf,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"},alignBlockRight:{name:"alignBlockRight",title:"Right aligned image",icon:Hf,modelElements:["imageBlock"],className:"image-style-block-align-right"},block:{name:"block",title:"Centered image",icon:jf,modelElements:["imageBlock"],isDefault:!0},side:{name:"side",title:"Side image",icon:Bf,modelElements:["imageBlock"],className:"image-style-side"}},Wf={full:Df,left:Ff,right:Hf,center:jf,inlineLeft:Vf,inlineRight:Bf,inline:Lf},qf=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function $f(e){Object(l.b)("image-style-configuration-definition-invalid",e)}var Yf={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map(e=>function(e){e="string"==typeof e?Uf[e]?{...Uf[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Uf[e.name],e);"string"==typeof e.icon&&(e.icon=Wf[e.icon]||e.icon);return e}(e)).filter(t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return $f({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some(e=>o.includes(e)))return Object(l.b)("image-style-missing-dependency",{style:e,missingPlugins:n.map(e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}(t,e))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...qf]:[]},warnInvalidStyle:$f,DEFAULT_OPTIONS:Uf,DEFAULT_ICONS:Wf,DEFAULT_DROPDOWN_DEFINITIONS:qf};function Gf(e,t){for(const i of t)if(i.name===e)return i}class Kf extends Qe{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[rf]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Yf,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new Of(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(r=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Gf(t.attributeNewValue,r),o=Gf(t.attributeOldValue,r),s=i.mapper.toViewElement(t.item),a=i.writer;o&&a.removeClass(o.className,s),n&&a.addClass(n.className,s)});var r;const s=function(e){const t={imageInline:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,r=Ns(i.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle"))for(const e of t[r.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,r)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(rf),n=new Map(this.normalizedStyles.map(e=>[e.name,e]));t.registerPostFixer(e=>{let o=!1;for(const r of t.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let t="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const a=n.get(s);a&&a.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o})}}i(84);class Qf extends Qe{static get requires(){return[Kf]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=Jf(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=Jf([...t.filter(w),...Yf.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,n=>{let o;const{defaultItem:r,items:s,title:a}=e,l=s.filter(e=>t.find(({name:t})=>Zf(t)===e)).map(e=>{const t=i.create(e);return e===r&&(o=t),t});s.length!==l.length&&Yf.warnInvalidStyle({dropdown:e});const c=Cd(n,ld),d=c.buttonView;return Td(c,l),d.set({label:Xf(a,o.label),class:null,tooltip:!0}),d.bind("icon").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return t<0?o.icon:l[t].icon}),d.bind("label").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return Xf(a,t<0?o.label:l[t].label)}),d.bind("isOn").toMany(l,"isOn",(...e)=>e.some(Z)),d.bind("class").toMany(l,"isOn",(...e)=>e.some(Z)?"ck-splitbutton_flatten":null),d.on("execute",()=>{l.some(({isOn:e})=>e)?c.isOpen=!c.isOpen:o.fire("execute")}),c.bind("isEnabled").toMany(l,"isEnabled",(...e)=>e.some(Z)),c})}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(Zf(t),i=>{const n=this.editor.commands.get("imageStyle"),o=new Xc(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",e=>e===t),o.on("execute",this._executeCommand.bind(this,t)),o})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function Jf(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function Zf(e){return"imageStyle:"+e}function Xf(e,t){return(e?e+": ":"")+t}function ep(e){const t=e.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${t.join("|")})$`)}function tp(e){return new Promise((t,i)=>{const n=e.getAttribute("src");fetch(n).then(e=>e.blob()).then(e=>{const i=ip(e,n),o=i.replace("image/",""),r=new File([e],"image."+o,{type:i});t(r)}).catch(e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise((t,i)=>{const n=vr.document.createElement("img");n.addEventListener("load",()=>{const e=vr.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob(e=>e?t(e):i())}),n.addEventListener("error",()=>i()),n.src=e})}(e).then(t=>{const i=ip(t,e),n=i.replace("image/","");return new File([t],"image."+n,{type:i})})}(n).then(t).catch(i):i(e))})}function ip(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class np extends Qe{static get pluginName(){return"ImageUploadUI"}init(){const e=this.editor,t=e.t,i=i=>{const n=new dm(i),o=e.commands.get("uploadImage"),r=e.config.get("image.upload.types"),s=ep(r);return n.set({acceptedType:r.map(e=>"image/"+e).join(","),allowMultipleFiles:!0}),n.buttonView.set({label:t("Insert image"),icon:Cc.image,tooltip:!0}),n.buttonView.bind("isEnabled").to(o),n.on("done",(t,i)=>{const n=Array.from(i).filter(e=>s.test(e.type));n.length&&e.execute("uploadImage",{file:n})}),n};e.ui.componentFactory.add("uploadImage",i),e.ui.componentFactory.add("imageUpload",i)}}i(86),i(88),i(90);class op extends Qe{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/svg+xml;utf8,"+encodeURIComponent('')}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",(...e)=>this.uploadStatusChange(...e)),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",(...e)=>this.uploadStatusChange(...e))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,r=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),a=n.plugins.get(lm),l=r?t.attributeNewValue:null,c=this.placeholder,d=n.editing.mapper.toViewElement(o),u=i.writer;if("reading"==l)return rp(d,u),void sp(s,c,d,u);if("uploading"==l){const e=a.loaders.get(r);return rp(d,u),void(e?(ap(d,u),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",(e,t,i)=>{n.change(e=>{e.setStyle("width",i+"%",o)})})}(d,u,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,d,u,e)):sp(s,c,d,u))}"complete"==l&&a.loaders.get(r)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout(()=>{i.change(e=>e.remove(e.createRangeOn(n)))},3e3)}(d,u,n.editing.view),function(e,t){cp(e,t,"progressBar")}(d,u),ap(d,u),function(e,t){t.removeClass("ck-appear",e)}(d,u)}}function rp(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function sp(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),lp(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function ap(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),cp(e,t,"placeholder")}function lp(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function cp(e,t,i){const n=lp(e,i);n&&t.remove(t.createRangeOn(n))}class dp extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=en(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if(t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);this._uploadImage(e,o,t)}else this._uploadImage(e,o)})}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(lm).createLoader(e),r=n.plugins.get("ImageUtils");o&&r.insertImage({...t,uploadId:o.id},i)}}class up extends Qe{static get requires(){return[lm,Od,Wu,rf]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(lm),o=e.plugins.get("ImageUtils"),r=ep(e.config.get("image.upload.types")),s=new dp(e);e.commands.add("uploadImage",s),e.commands.add("imageUpload",s),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",(t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter(e=>!!e&&r.test(e.type));o.length&&(t.stop(),e.model.change(t=>{i.targetRanges&&t.setSelection(i.targetRanges.map(t=>e.editing.mapper.toModelRange(t))),e.model.enqueueChange("default",()=>{e.execute("uploadImage",{file:o})})}))}),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(t,i)=>{const r=Array.from(e.editing.view.createRangeIn(i.content)).filter(e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(o,e.item)&&!e.item.getAttribute("uploadProcessed")).map(e=>({promise:tp(e.item),imageElement:e.item}));if(!r.length)return;const s=new hu(e.editing.view.document);for(const e of r){s.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(s.setAttribute("src","",e.imageElement),s.setAttribute("uploadId",t.id,e.imageElement))}}),e.editing.view.document.on("dragover",(e,t)=>{t.preventDefault()}),t.on("change",()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,r="$graveyard"==t.position.root.rootName;for(const t of hp(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(r?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}}),this.on("uploadComplete",(e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change(e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(lm),r=t.plugins.get(Od),s=t.plugins.get("ImageUtils"),a=this._uploadImageElements;return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","reading",a.get(e.id))}),e.read().then(()=>{const n=e.upload(),o=a.get(e.id);if(So.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n})}return i.enqueueChange("transparent",e=>{e.setAttribute("uploadStatus","uploading",o)}),n}).then(t=>{i.enqueueChange("transparent",i=>{const n=a.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})}),l()}).catch(t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&r.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange("transparent",t=>{t.remove(a.get(e.id))}),l()});function l(){i.enqueueChange("transparent",t=>{const i=a.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),a.delete(e.id)}),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter(e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0}).map(t=>`${e[t]} ${t}w`).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function hp(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter(e=>i.isImage(e.item)).map(e=>e.item)}class gp extends Qe{static get pluginName(){return"IndentEditing"}init(){const e=this.editor;e.commands.add("indent",new et(e)),e.commands.add("outdent",new et(e))}}var mp='',fp='';class pp extends Qe{static get pluginName(){return"IndentUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?mp:fp,o="ltr"==t.uiLanguageDirection?fp:mp;this._defineButton("indent",i("Increase indent"),n),this._defineButton("outdent",i("Decrease indent"),o)}_defineButton(e,t,i){const n=this.editor;n.ui.componentFactory.add(e,o=>{const r=n.commands.get(e),s=new Xc(o);return s.set({label:t,icon:i,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",()=>{n.execute(e),n.editing.view.focus()}),s})}}class bp extends Ze{constructor(e,t){super(e),this._indentBehavior=t}refresh(){const e=this.editor.model,t=Ns(e.document.selection.getSelectedBlocks());t&&e.schema.checkAttribute(t,"blockIndent")?this.isEnabled=this._indentBehavior.checkEnabled(t.getAttribute("blockIndent")):this.isEnabled=!1}execute(){const e=this.editor.model,t=function(e){const t=e.document.selection,i=e.schema;return Array.from(t.getSelectedBlocks()).filter(e=>i.checkAttribute(e,"blockIndent"))}(e);e.change(e=>{for(const i of t){const t=i.getAttribute("blockIndent"),n=this._indentBehavior.getNextIndent(t);n?e.setAttribute("blockIndent",n,i):e.removeAttribute("blockIndent",i)}})}}class wp{constructor(e){this.isForward="forward"===e.direction,this.offset=e.offset,this.unit=e.unit}checkEnabled(e){const t=parseFloat(e||0);return this.isForward||t>0}getNextIndent(e){const t=parseFloat(e||0);if(!(!e||e.endsWith(this.unit)))return this.isForward?this.offset+this.unit:void 0;const i=t+(this.isForward?this.offset:-this.offset);return i>0?i+this.unit:void 0}}class kp{constructor(e){this.isForward="forward"===e.direction,this.classes=e.classes}checkEnabled(e){const t=this.classes.indexOf(e);return this.isForward?t=0}getNextIndent(e){const t=this.classes.indexOf(e),i=this.isForward?1:-1;return this.classes[t+i]}}const _p=["paragraph","heading1","heading2","heading3","heading4","heading5","heading6"];class vp{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(e=>this._definitions.add(e)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const r=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,r);for(const t in e.styles)n.setStyle(t,e.styles[t],r);n.setCustomProperty("link",!0,r),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(i.mapper.toViewRange(t.range),r):n.unwrap(i.mapper.toViewRange(t.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),r=Array.from(o.getChildren()).find(e=>"a"===e.name);for(const e of this._definitions){const n=gn(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,r);e.classes&&i.addClass(e.classes,r);for(const t in e.styles)i.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,r);e.classes&&i.removeClass(e.classes,r);for(const t in e.styles)i.removeStyle(t,r)}}})}}}var yp=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:On(e,t,i)},xp=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var Ap=function(e){return xp.test(e)};var Cp=function(e){return e.split("")},Tp="[\\ud800-\\udfff]",Ep="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Ip="\\ud83c[\\udffb-\\udfff]",Sp="[^\\ud800-\\udfff]",Pp="(?:\\ud83c[\\udde6-\\uddff]){2}",Mp="[\\ud800-\\udbff][\\udc00-\\udfff]",Np="(?:"+Ep+"|"+Ip+")"+"?",Rp="[\\ufe0e\\ufe0f]?"+Np+("(?:\\u200d(?:"+[Sp,Pp,Mp].join("|")+")[\\ufe0e\\ufe0f]?"+Np+")*"),zp="(?:"+[Sp+Ep+"?",Ep,Pp,Mp,Tp].join("|")+")",Op=RegExp(Ip+"(?="+Ip+")|"+zp+Rp,"g");var Dp=function(e){return e.match(Op)||[]};var Lp=function(e){return Ap(e)?Dp(e):Cp(e)};var Vp=function(e){return function(t){t=Pn(t);var i=Ap(t)?Lp(t):void 0,n=i?i[0]:t.charAt(0),o=i?yp(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase");const Bp=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,jp=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,Fp=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Hp=/^((\w+:(\/{2,})?)|(\W))/i;function Up(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function Wp(e){return function(e){return e.replace(Bp,"").match(jp)}(e=String(e))?e:"#"}function qp(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function $p(e,t){const i=(n=e,Fp.test(n)?"mailto:":t);var n;const o=!!i&&!Hp.test(e);return e&&o?i+e:e}class Yp extends Ze{constructor(e){super(e),this.manualDecorators=new Zi,this.automaticDecorators=new vp}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||Ns(t.getSelectedBlocks());qp(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,o=[],r=[];for(const e in t)t[e]?o.push(e):r.push(e);i.change(t=>{if(n.isCollapsed){const s=n.getFirstPosition();if(n.hasAttribute("linkHref")){const a=fg(s,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,a),o.forEach(e=>{t.setAttribute(e,!0,a)}),r.forEach(e=>{t.removeAttribute(e,a)}),t.setSelection(t.createPositionAfter(a.end.nodeBefore))}else if(""!==e){const r=gn(n.getAttributes());r.set("linkHref",e),o.forEach(e=>{r.set(e,!0)});const{end:a}=i.insertContent(t.createText(e,r),s);t.setSelection(a)}["linkHref",...o,...r].forEach(e=>{t.removeSelectionAttribute(e)})}else{const s=i.schema.getValidRanges(n.getRanges(),"linkHref"),a=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&a.push(t.createRangeOn(e));const l=a.slice();for(const e of s)this._isRangeToUpdate(e,a)&&l.push(e);for(const i of l)t.setAttribute("linkHref",e,i),o.forEach(e=>{t.setAttribute(e,!0,i)}),r.forEach(e=>{t.removeAttribute(e,i)})}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return qp(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class Gp extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();qp(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change(e=>{const o=i.isCollapsed?[fg(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of o)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)})}}class Kp{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:r}){this.id=e,this.set("value"),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}Ke(Kp,Ue);i(92);const Qp=/^(https?:)?\/\//;class Jp extends Qe{static get pluginName(){return"LinkEditing"}static get requires(){return[eg,Qh,Wu]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Up}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>Up(Wp(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new Yp(e)),e.commands.add("unlink",new Gp(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach(e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e)),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:"link"+Vp(i)});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter(e=>"automatic"===e.mode)),this._enableManualDecorators(t.filter(e=>"manual"===e.mode));e.plugins.get(eg).registerAttribute("linkHref"),function(e,t,i,n){const o=e.editing.view,r=new Set;o.document.registerPostFixer(o=>{const s=e.model.document.selection;let a=!1;if(s.hasAttribute(t)){const l=fg(s.getFirstPosition(),t,s.getAttribute(t),e.model),c=e.editing.mapper.toViewRange(l);for(const e of c.getItems())e.is("element",i)&&!e.hasClass(n)&&(o.addClass(n,e),r.add(e),a=!0)}return a}),e.conversion.for("editingDowncast").add(e=>{function t(){o.change(e=>{for(const t of r.values())e.removeClass(n,t),r.delete(t)})}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})})}(e,"linkHref","a","ck-link_selected"),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:"automatic",callback:e=>Qp.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach(e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new Kp(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i})=>{if(t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change(t=>{Zp(t,eb(e.schema))}))},{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,t=e.model;e.editing.view.addObserver(uu);let i=!1;this.listenTo(e.editing.view.document,"mousedown",()=>{i=!0}),this.listenTo(e.editing.view.document,"selectionChange",()=>{if(!i)return;i=!1;const e=t.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const n=e.getFirstPosition(),o=fg(n,"linkHref",e.getAttribute("linkHref"),t);(n.isTouching(o.start)||n.isTouching(o.end))&&t.change(e=>{Zp(e,eb(t.schema))})})}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",()=>{n=!0},{priority:"high"}),this.listenTo(e.model,"deleteContent",()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:Xp(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),o=i.nodeAfter;if(!o)return!1;if(!o.is("$text"))return!1;if(!o.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(o===r)return!0;return fg(i,"linkHref",o.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))},{priority:"high"}),this.listenTo(e.model,"insertContent",(t,[o])=>{n=!1,Xp(e)&&i&&(e.model.change(e=>{for(const[t,n]of i)e.setAttribute(t,n,o)}),i=null)},{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let o=!1,r=!1;this.listenTo(n.document,"delete",(e,t)=>{r=t.domEvent.keyCode===No.backspace},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{o=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=fg(e,"linkHref",n,t);o=r.containsPosition(e)||r.end.isEqual(e)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{r&&(r=!1,o||e.model.enqueueChange(e=>{Zp(e,eb(t.schema))}))},{priority:"low"})}}function Zp(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function Xp(e){return e.plugins.get("Input").isInput(e.model.change(e=>e.batch))}function eb(e){return e.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}i(94);class tb extends Pc{constructor(e,t){super(e);const i=e.t;this.focusTracker=new Rs,this.keystrokes=new zs,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Cc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),Cc.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(t),this.children=this._createFormChildren(t.manualDecorators),this._focusables=new Sc,this._focusCycler=new nd({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const n=["ck","ck-link-form","ck-responsive-form"];t.manualDecorators.length&&n.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:n,tabindex:"-1"},children:this.children}),Ec(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((e,t)=>(e[t.name]=t.isOn,e),{})}render(){super.render(),Ic({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new Rd(this.locale,zd);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new Xc(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new ed(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",(e,t)=>void 0===t&&void 0===e?i.defaultValue:e),n.on("execute",()=>{i.set("value",!n.isOn)}),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new Pc;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map(e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}})),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}i(96);class ib extends Pc{constructor(e){super(e);const t=e.t;this.focusTracker=new Rs,this.keystrokes=new zs,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(t("Unlink"),'',"unlink"),this.editButtonView=this._createButton(t("Edit link"),Cc.pencil,"edit"),this.set("href"),this._focusables=new Sc,this._focusCycler=new nd({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new Xc(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new Xc(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",e=>e&&Wp(e)),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",e=>e||i("This link has no URL")),e.bind("isEnabled").to(this,"href",e=>!!e),e.template.tag="a",e.template.eventListeners={},e}}class nb extends Qe{static get requires(){return[Wd]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(du),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(Wd),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:"link-ui",view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:"link-ui",view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new ib(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",()=>{this._addFormView()}),this.listenTo(t,"unlink",()=>{e.execute("unlink"),this._hideUI()}),t.keystrokes.set("Esc",(e,t)=>{this._hideUI(),t()}),t.keystrokes.set("Ctrl+K",(e,t)=>{this._addFormView(),t()}),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new tb(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",e=>!e),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",()=>{const{value:t}=n.urlInputView.fieldView.element,o=$p(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(e,t)=>{this._closeFormView(),t()}),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set("Ctrl+K",(e,i)=>{i(),t.isEnabled&&this._showUI(!0)}),e.ui.componentFactory.add("link",e=>{const n=new Xc(e);return n.isEnabled=!0,n.label=i("Link"),n.icon='',n.keystroke="Ctrl+K",n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",e=>!!e),this.listenTo(n,"execute",()=>this._showUI(!0)),n})}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set("Tab",(e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Tc({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=r();const o=()=>{const e=this._getSelectedLinkElement(),t=r();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find(e=>e.is("element"))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has("link-ui")){const t=Array.from(this.editor.editing.mapper.markerNameToElements("link-ui")),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&oh(i))return ob(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=ob(i.start),o=ob(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has("link-ui"))t.updateMarker("link-ui",{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition(({item:t})=>!e.schema.isContent(t),{boundaries:i});t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has("link-ui")&&e.change(e=>{e.removeMarker("link-ui")})}}function ob(e){return e.getAncestors().find(e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t})}const rb=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[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]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class sb extends Qe{static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new Xh(e.model,e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=ab(e.substr(0,e.length-1));return t?{url:t}:void 0}),i=e.plugins.get("Input");t.on("matched:data",(t,n)=>{const{batch:o,range:r,url:s}=n;if(!i.isInput(o))return;const a=r.end.getShiftedBy(-1),l=a.getShiftedBy(-s.length),c=e.model.createRange(l,a);this._applyAutoLink(s,c)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=Zh(e,t),o=ab(i);if(o){const e=t.createRange(n.end.getShiftedBy(-o.length),n.end);this._applyAutoLink(o,e)}}_applyAutoLink(e,t){const i=this.editor.model;this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange(i=>{const n=this.editor.config.get("link.defaultProtocol"),o=$p(e,n);i.setAttribute("linkHref",o,t)})}}function ab(e){const t=rb.exec(e);return t?t[2]:null}class lb extends Ze{constructor(e,t){super(e),this.type=t}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document,n=Array.from(i.selection.getSelectedBlocks()).filter(e=>db(e,t.schema)),o=void 0!==e.forceValue?!e.forceValue:this.value;t.change(e=>{if(o){let t=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;t&&"listItem"==t.name&&0!==t.getAttribute("listIndent");){const e=t.getAttribute("listIndent");e=i;)r>o.getAttribute("listIndent")&&(r=o.getAttribute("listIndent")),o.getAttribute("listIndent")==r&&e[t?"unshift":"push"](o),o=o[t?"previousSibling":"nextSibling"]}}function db(e,t){return t.checkChild(e.parent,"listItem")&&!t.isObject(e)}class ub extends Ze{constructor(e,t){super(e),this._indentBy="forward"==t?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=e.document;let i=Array.from(t.selection.getSelectedBlocks());e.change(e=>{const t=i[i.length-1];let n=t.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>t.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const t of i){const i=t.getAttribute("listIndent")+this._indentBy;i<0?e.rename(t,"paragraph"):e.setAttribute("listIndent",i,t)}this.fire("_executeCleanup",i)})}_checkEnabled(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());if(!e||!e.is("element","listItem"))return!1;if(this._indentBy>0){const t=e.getAttribute("listIndent"),i=e.getAttribute("listType");let n=e.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=t;){if(n.getAttribute("listIndent")==t)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}function hb(e,t){const i=t.mapper,n=t.writer,o="numbered"==e.getAttribute("listType")?"ol":"ul",r=function(e){const t=e.createContainerElement("li");return t.getFillerOffset=kb,t}(n),s=n.createContainerElement(o,null);return n.insert(n.createPositionAt(s,0),r),i.bindElements(e,r),r}function gb(e,t,i,n){const o=t.parent,r=i.mapper,s=i.writer;let a=r.toViewPosition(n.createPositionBefore(e));const l=pb(e.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:e.getAttribute("listIndent")}),c=e.previousSibling;if(l&&l.getAttribute("listIndent")==e.getAttribute("listIndent")){const e=r.toViewElement(l);a=s.breakContainer(s.createPositionAfter(e))}else if(c&&"listItem"==c.name){a=r.toViewPosition(n.createPositionAt(c,"end"));const e=r.findMappedViewAncestor(a),t=function(e){for(const t of e.getChildren())if("ul"==t.name||"ol"==t.name)return t;return null}(e);a=t?s.createPositionBefore(t):s.createPositionAt(e,"end")}else a=r.toViewPosition(n.createPositionBefore(e));if(a=fb(a),s.insert(a,o),c&&"listItem"==c.name){const e=r.toViewElement(c),i=s.createRange(s.createPositionAt(e,0),a).getWalker({ignoreElementEnd:!0});for(const e of i)if(e.item.is("element","li")){const n=s.breakContainer(s.createPositionBefore(e.item)),o=e.item.parent,r=s.createPositionAt(t,"end");mb(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(o),r),i.position=n}}else{const i=o.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const t of i.getChildren()){const i=r.toModelElement(t);if(!(i&&i.getAttribute("listIndent")>e.getAttribute("listIndent")))break;n=t}n&&(s.breakContainer(s.createPositionAfter(n)),s.move(s.createRangeOn(n.parent),s.createPositionAt(t,"end")))}}mb(s,o,o.nextSibling),mb(s,o.previousSibling,o)}function mb(e,t,i){return!t||!i||"ul"!=t.name&&"ol"!=t.name||t.name!=i.name||t.getAttribute("class")!==i.getAttribute("class")?null:e.mergeContainers(e.createPositionAfter(t))}function fb(e){return e.getLastMatchingPosition(e=>e.item.is("uiElement"))}function pb(e,t){const i=!!t.sameIndent,n=!!t.smallerIndent,o=t.listIndent;let r=e;for(;r&&"listItem"==r.name;){const e=r.getAttribute("listIndent");if(i&&o==e||n&&o>e)return r;r="forward"===t.direction?r.nextSibling:r.previousSibling}return null}function bb(e,t,i,n){e.ui.componentFactory.add(t,o=>{const r=e.commands.get(t),s=new Xc(o);return s.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",()=>{e.execute(t),e.editing.view.focus()}),s})}function wb(e,t){const i=[],n=e.parent,o={ignoreElementEnd:!0,startPosition:e,shallow:!0,direction:t},r=n.getAttribute("listIndent"),s=[...new Zs(o)].filter(e=>e.item.is("element")).map(e=>e.item);for(const e of s){if(!e.is("element","listItem"))break;if(e.getAttribute("listIndent")r)){if(e.getAttribute("listType")!==n.getAttribute("listType"))break;if(e.getAttribute("listStyle")!==n.getAttribute("listStyle"))break;"backward"===t?i.unshift(e):i.push(e)}}return i}function kb(){const e=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||e?0:no.call(this)}function _b(e){return(t,i,n)=>{const o=n.consumable;if(!o.test(i.item,"insert")||!o.test(i.item,"attribute:listType")||!o.test(i.item,"attribute:listIndent"))return;o.consume(i.item,"insert"),o.consume(i.item,"attribute:listType"),o.consume(i.item,"attribute:listIndent");const r=i.item;gb(r,hb(r,n),n,e)}}function vb(e,t,i){if(!i.consumable.consume(t.item,"attribute:listType"))return;const n=i.mapper.toViewElement(t.item),o=i.writer;o.breakContainer(o.createPositionBefore(n)),o.breakContainer(o.createPositionAfter(n));const r=n.parent,s="numbered"==t.attributeNewValue?"ol":"ul";o.rename(s,r)}function yb(e,t,i){const n=i.mapper.toViewElement(t.item).parent,o=i.writer;mb(o,n,n.nextSibling),mb(o,n.previousSibling,n);for(const e of t.item.getChildren())i.consumable.consume(e,"insert")}function xb(e,t,i){if("listItem"!=t.item.name){let e=i.mapper.toViewPosition(t.range.start);const n=i.writer,o=[];for(;("ul"==e.parent.name||"ol"==e.parent.name)&&(e=n.breakContainer(e),"li"==e.parent.name);){const t=e,i=n.createPositionAt(e.parent,"end");if(!t.isEqual(i)){const e=n.remove(n.createRange(t,i));o.push(e)}e=n.createPositionAfter(e.parent)}if(o.length>0){for(let t=0;t0){const t=mb(n,i,i.nextSibling);t&&t.parent==i&&e.offset--}}mb(n,e.nodeBefore,e.nodeAfter)}}}function Ab(e,t,i){const n=i.mapper.toViewPosition(t.position),o=n.nodeBefore,r=n.nodeAfter;mb(i.writer,o,r)}function Cb(e,t,i){if(i.consumable.consume(t.viewItem,{name:!0})){const e=i.writer,n=e.createElement("listItem"),o=function(e){let t=0,i=e.parent;for(;i;){if(i.is("element","li"))t++;else{const e=i.previousSibling;e&&e.is("element","li")&&t++}i=i.parent}return t}(t.viewItem);e.setAttribute("listIndent",o,n);const r=t.viewItem.parent&&"ol"==t.viewItem.parent.name?"numbered":"bulleted";if(e.setAttribute("listType",r,n),!i.safeInsert(n,t.modelCursor))return;const s=function(e,t,i){const{writer:n,schema:o}=i;let r=n.createPositionAfter(e);for(const s of t)if("ul"==s.name||"ol"==s.name)r=i.convertItem(s,r).modelCursor;else{const t=i.convertItem(s,n.createPositionAt(e,"end")),a=t.modelRange.start.nodeAfter;a&&a.is("element")&&!o.checkChild(e,a.name)&&(e=t.modelCursor.parent.is("element","listItem")?t.modelCursor.parent:Pb(t.modelCursor),r=n.createPositionAfter(e))}return r}(n,t.viewItem.getChildren(),i);t.modelRange=e.createRange(t.modelCursor,s),i.updateConversionResult(n,t)}}function Tb(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){const e=Array.from(t.viewItem.getChildren());for(const t of e){!(t.is("element","li")||Nb(t))&&t._remove()}}}function Eb(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){if(0===t.viewItem.childCount)return;const e=[...t.viewItem.getChildren()];let i=!1,n=!0;for(const t of e)i&&!Nb(t)&&t._remove(),t.is("$text")?(n&&(t._data=t.data.trimStart()),t.nextSibling&&!Nb(t.nextSibling)||(t._data=t.data.trimEnd())):Nb(t)&&(i=!0),n=!1}}function Ib(e){return(t,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const t=i.mapper.toViewElement(n),o=t.getAncestors().find(Nb),r=e.createPositionAt(t,0).getWalker();for(const e of r){if("elementStart"==e.type&&e.item.is("element","li")){i.viewPosition=e.previousPosition;break}if("elementEnd"==e.type&&e.item==o){i.viewPosition=e.nextPosition;break}}}}}function Sb(e,[t,i]){let n,o=t.is("documentFragment")?t.getChild(0):t;if(n=i?this.createSelection(i):this.document.selection,o&&o.is("element","listItem")){const e=n.getFirstPosition();let t=null;if(e.parent.is("element","listItem")?t=e.parent:e.nodeBefore&&e.nodeBefore.is("element","listItem")&&(t=e.nodeBefore),t){const e=t.getAttribute("listIndent");if(e>0)for(;o&&o.is("element","listItem");)o._setAttribute("listIndent",o.getAttribute("listIndent")+e),o=o.nextSibling}}}function Pb(e){const t=new Zs({startPosition:e});let i;do{i=t.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function Mb(e,t,i,n,o,r){const s=pb(t.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:e,foo:"b"}),a=o.mapper,l=o.writer,c=s?s.getAttribute("listIndent"):null;let d;if(s)if(c==e){const e=a.toViewElement(s).parent;d=l.createPositionAfter(e)}else{const e=r.createPositionAt(s,"end");d=a.toViewPosition(e)}else d=i;d=fb(d);for(const e of[...n.getChildren()])Nb(e)&&(d=l.move(l.createRangeOn(e),d).end,mb(l,e,e.nextSibling),mb(l,e.previousSibling,e))}function Nb(e){return e.is("element","ol")||e.is("element","ul")}class Rb extends Qe{static get pluginName(){return"ListEditing"}static get requires(){return[Ku,Xu]}init(){const e=this.editor;e.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const t=e.data,i=e.editing;var n;e.model.document.registerPostFixer(t=>function(e,t){const i=e.document.differ.getChanges(),n=new Map;let o=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)r(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(t.removeAttribute("listIndent",i),o=!0),i.hasAttribute("listType")&&(t.removeAttribute("listType",i),o=!0),i.hasAttribute("listStyle")&&(t.removeAttribute("listStyle",i),o=!0);for(const t of Array.from(e.createRangeIn(i)).filter(e=>e.item.is("element","listItem")))r(t.previousPosition)}r(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?r(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&r(n.range.start);for(const e of n.values())s(e),a(e);return o;function r(e){const t=e.nodeBefore;if(t&&t.is("element","listItem")){let e=t;if(n.has(e))return;for(let t=e.previousSibling;t&&t.is("element","listItem");t=e.previousSibling)if(e=t,n.has(e))return;n.set(t,e)}else{const t=e.nodeAfter;t&&t.is("element","listItem")&&n.set(t,t)}}function s(e){let i=0,n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(r>i){let s;null===n?(n=r-i,s=i):(n>r&&(n=r),s=r-n),t.setAttribute("listIndent",s,e),o=!0}else n=null,i=e.getAttribute("listIndent")+1;e=e.nextSibling}}function a(e){let i=[],n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const n=i[r];e.getAttribute("listType")!=n&&(t.setAttribute("listType",n,e),o=!0)}else i[r]=e.getAttribute("listType");n=e,e=e.nextSibling}}}(e.model,t)),i.mapper.registerViewToModelLength("li",zb),t.mapper.registerViewToModelLength("li",zb),i.mapper.on("modelToViewPosition",Ib(i.view)),i.mapper.on("viewToModelPosition",(n=e.model,(e,t)=>{const i=t.viewPosition,o=i.parent,r=t.mapper;if("ul"==o.name||"ol"==o.name){if(i.isAtEnd){const e=r.toModelElement(i.nodeBefore),o=r.getModelLength(i.nodeBefore);t.modelPosition=n.createPositionBefore(e).getShiftedBy(o)}else{const e=r.toModelElement(i.nodeAfter);t.modelPosition=n.createPositionBefore(e)}e.stop()}else if("li"==o.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const s=r.toModelElement(o);let a=1,l=i.nodeBefore;for(;l&&Nb(l);)a+=r.getModelLength(l),l=l.previousSibling;t.modelPosition=n.createPositionBefore(s).getShiftedBy(a),e.stop()}})),t.mapper.on("modelToViewPosition",Ib(i.view)),e.conversion.for("editingDowncast").add(t=>{t.on("insert",xb,{priority:"high"}),t.on("insert:listItem",_b(e.model)),t.on("attribute:listType:listItem",vb,{priority:"high"}),t.on("attribute:listType:listItem",yb,{priority:"low"}),t.on("attribute:listIndent:listItem",function(e){return(t,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const o=n.mapper.toViewElement(i.item),r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s);r.remove(l),a&&a.nextSibling&&mb(r,a,a.nextSibling),Mb(i.attributeOldValue+1,i.range.start,l.start,o,n,e),gb(i.item,o,n,e);for(const e of i.item.getChildren())n.consumable.consume(e,"insert")}}(e.model)),t.on("remove:listItem",function(e){return(t,i,n)=>{const o=n.mapper.toViewPosition(i.position).getLastMatchingPosition(e=>!e.item.is("element","li")).nodeAfter,r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s),c=r.remove(l);a&&a.nextSibling&&mb(r,a,a.nextSibling);Mb(n.mapper.toModelElement(o).getAttribute("listIndent")+1,i.position,l.start,o,n,e);for(const e of r.createRangeIn(c).getItems())n.mapper.unbindViewElement(e);t.stop()}}(e.model)),t.on("remove",Ab,{priority:"low"})}),e.conversion.for("dataDowncast").add(t=>{t.on("insert",xb,{priority:"high"}),t.on("insert:listItem",_b(e.model))}),e.conversion.for("upcast").add(e=>{e.on("element:ul",Tb,{priority:"high"}),e.on("element:ol",Tb,{priority:"high"}),e.on("element:li",Eb,{priority:"high"}),e.on("element:li",Cb)}),e.model.on("insertContent",Sb,{priority:"high"}),e.commands.add("numberedList",new lb(e,"numbered")),e.commands.add("bulletedList",new lb(e,"bulleted")),e.commands.add("indentList",new ub(e,"forward")),e.commands.add("outdentList",new ub(e,"backward"));const o=i.view.document;this.listenTo(o,"enter",(e,t)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"}),this.listenTo(o,"delete",(e,t)=>{if("backward"!==t.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const o=n.parent;if("listItem"!==o.name)return;o.previousSibling&&"listItem"===o.previousSibling.name||(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"});const r=e=>(t,i)=>{this.editor.commands.get(e).isEnabled&&(this.editor.execute(e),i())};e.keystrokes.set("Tab",r("indentList")),e.keystrokes.set("Shift+Tab",r("outdentList"))}afterInit(){const e=this.editor.commands,t=e.get("indent"),i=e.get("outdent");t&&t.registerChildCommand(e.get("indentList")),i&&i.registerChildCommand(e.get("outdentList"))}}function zb(e){let t=1;for(const i of e.getChildren())if("ul"==i.name||"ol"==i.name)for(const e of i.getChildren())t+=zb(e);return t}var Ob='',Db='';class Lb extends Qe{static get pluginName(){return"ListUI"}init(){const e=this.editor.t;bb(this.editor,"numberedList",e("Numbered List"),Ob),bb(this.editor,"bulletedList",e("Bulleted List"),Db)}}class Vb extends Ze{constructor(e,t){super(e),this._defaultType=t}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model;let i=[...t.document.selection.getSelectedBlocks()].filter(e=>e.is("element","listItem")).map(e=>{const i=t.change(t=>t.createPositionAt(e,0));return[...wb(i,"backward"),...wb(i,"forward")]}).flat();i=[...new Set(i)],i.length&&t.change(t=>{for(const n of i)t.setAttribute("listStyle",e.type||this._defaultType,n)})}_getValue(){const e=this.editor.model.document.selection.getFirstPosition().parent;return e&&e.is("element","listItem")?e.getAttribute("listStyle"):null}_checkEnabled(){const e=this.editor,t=e.commands.get("numberedList"),i=e.commands.get("bulletedList");return t.isEnabled||i.isEnabled}}class Bb extends Qe{static get requires(){return[Rb]}static get pluginName(){return"ListStyleEditing"}init(){const e=this.editor,t=e.model;t.schema.extend("listItem",{allowAttributes:["listStyle"]}),e.commands.add("listStyle",new Vb(e,"default")),this.listenTo(e.commands.get("indentList"),"_executeCleanup",function(e){return(t,i)=>{let n;const o=i[0],r=o.getAttribute("listIndent"),s=i.filter(e=>e.getAttribute("listIndent")===r);if(o.previousSibling.getAttribute("listIndent")+1===r)n="default";else{const e=pb(o.previousSibling,{sameIndent:!0,direction:"backward",listIndent:r});n=e.getAttribute("listStyle")}e.model.change(e=>{for(const t of s)e.setAttribute("listStyle",n,t)})}}(e)),this.listenTo(e.commands.get("outdentList"),"_executeCleanup",function(e){return(t,i)=>{if(!(i=i.reverse().filter(e=>e.is("element","listItem"))).length)return;const n=i[0].getAttribute("listIndent"),o=i[0].getAttribute("listType");let r=i[0].previousSibling;if(r.is("element","listItem"))for(;r.getAttribute("listIndent")!==n;)r=r.previousSibling;else r=null;r||(r=i[i.length-1].nextSibling),r&&r.is("element","listItem")&&r.getAttribute("listType")===o&&e.model.change(e=>{const t=i.filter(e=>e.getAttribute("listIndent")===n);for(const i of t)e.setAttribute("listStyle",r.getAttribute("listStyle"),i)})}}(e)),this.listenTo(e.commands.get("bulletedList"),"_executeCleanup",Hb(e)),this.listenTo(e.commands.get("numberedList"),"_executeCleanup",Hb(e)),t.document.registerPostFixer(function(e){return t=>{let i=!1;const n=Ub(e.model.document.differ.getChanges()).filter(e=>"todo"!==e.getAttribute("listType"));if(!n.length)return i;let o=n[n.length-1].nextSibling;if((!o||!o.is("element","listItem"))&&(o=n[n.length-1].previousSibling,o)){const e=n[0].getAttribute("listIndent");for(;o.is("element","listItem")&&o.getAttribute("listIndent")!==e&&(o=o.previousSibling,o););}for(const e of n)if(e.hasAttribute("listStyle")){const n=e.previousSibling;Fb(n,e)&&(t.setAttribute("listStyle",n.getAttribute("listStyle"),e),i=!0)}else jb(o,e)?t.setAttribute("listStyle",o.getAttribute("listStyle"),e):t.setAttribute("listStyle","default",e),i=!0;return i}}(e)),e.conversion.for("upcast").add(e=>{e.on("element:li",(e,t,i)=>{const n=t.viewItem.parent;if(!n)return;const o=n.getStyle("list-style-type")||"default",r=t.modelRange.start.nodeAfter||t.modelRange.end.nodeBefore;i.writer.setAttribute("listStyle",o,r)},{priority:"low"})}),e.conversion.for("downcast").add(e=>{e.on("attribute:listStyle:listItem",(e,t,i)=>{const n=i.writer,o=t.item,r=pb(o.previousSibling,{sameIndent:!0,listIndent:o.getAttribute("listIndent"),direction:"backward"}),s=i.mapper.toViewElement(o);var a,l,c,d,u;a=o,(l=r)&&a.getAttribute("listType")===l.getAttribute("listType")&&a.getAttribute("listIndent")===l.getAttribute("listIndent")&&a.getAttribute("listStyle")===l.getAttribute("listStyle")||n.breakContainer(n.createPositionBefore(s)),c=n,d=t.attributeNewValue,u=s.parent,d&&"default"!==d?c.setStyle("list-style-type",d,u):c.removeStyle("list-style-type",u)},{priority:"low"})}),this._mergeListStyleAttributeWhileMergingLists()}afterInit(){const e=this.editor;e.commands.get("todoList")&&e.model.document.registerPostFixer(function(e){return t=>{const i=Ub(e.model.document.differ.getChanges()).filter(e=>"todo"===e.getAttribute("listType")&&e.hasAttribute("listStyle"));if(!i.length)return!1;for(const e of i)t.removeAttribute("listStyle",e);return!0}}(e))}_mergeListStyleAttributeWhileMergingLists(){const e=this.editor.model;let t;this.listenTo(e,"deleteContent",(e,[i])=>{const n=i.getFirstPosition(),o=i.getLastPosition();if(n.parent===o.parent)return;if(!n.parent.is("element","listItem"))return;const r=o.parent.nextSibling;if(!r||!r.is("element","listItem"))return;const s=pb(n.parent,{sameIndent:!0,listIndent:r.getAttribute("listIndent")});s&&s.getAttribute("listType")===r.getAttribute("listType")&&(t=s)},{priority:"high"}),this.listenTo(e,"deleteContent",()=>{t&&(e.change(e=>{const i=pb(t.nextSibling,{sameIndent:!0,listIndent:t.getAttribute("listIndent"),direction:"forward"}),n=[i,...wb(e.createPositionAt(i,0),"forward")];for(const i of n)e.setAttribute("listStyle",t.getAttribute("listStyle"),i)}),t=null)},{priority:"low"})}}function jb(e,t){if(!e)return!1;const i=e.getAttribute("listStyle");return!!i&&("default"!==i&&e.getAttribute("listType")===t.getAttribute("listType"))}function Fb(e,t){if(!e||!e.is("element","listItem"))return!1;if(t.getAttribute("listType")!==e.getAttribute("listType"))return!1;const i=e.getAttribute("listIndent");if(i<1||i!==t.getAttribute("listIndent"))return!1;const n=e.getAttribute("listStyle");return!(!n||n===t.getAttribute("listStyle"))}function Hb(e){return(t,i)=>{i=i.filter(e=>e.is("element","listItem")),e.model.change(e=>{for(const t of i)e.removeAttribute("listStyle",t)})}}function Ub(e){const t=[];for(const i of e){const e=Wb(i);e&&e.is("element","listItem")&&t.push(e)}return t}function Wb(e){return"attribute"===e.type?e.range.start.nodeAfter:"insert"===e.type?e.position.nodeAfter:null}i(98);class qb extends Qe{static get pluginName(){return"ListStyleUI"}init(){const e=this.editor,t=e.locale.t;e.ui.componentFactory.add("bulletedList",$b({editor:e,parentCommandName:"bulletedList",buttonLabel:t("Bulleted List"),buttonIcon:Db,toolbarAriaLabel:t("Bulleted list styles toolbar"),styleDefinitions:[{label:t("Toggle the disc list style"),tooltip:t("Disc"),type:"disc",icon:''},{label:t("Toggle the circle list style"),tooltip:t("Circle"),type:"circle",icon:''},{label:t("Toggle the square list style"),tooltip:t("Square"),type:"square",icon:''}]})),e.ui.componentFactory.add("numberedList",$b({editor:e,parentCommandName:"numberedList",buttonLabel:t("Numbered List"),buttonIcon:Ob,toolbarAriaLabel:t("Numbered list styles toolbar"),styleDefinitions:[{label:t("Toggle the decimal list style"),tooltip:t("Decimal"),type:"decimal",icon:''},{label:t("Toggle the decimal with leading zero list style"),tooltip:t("Decimal with leading zero"),type:"decimal-leading-zero",icon:''},{label:t("Toggle the lower–roman list style"),tooltip:t("Lower–roman"),type:"lower-roman",icon:''},{label:t("Toggle the upper–roman list style"),tooltip:t("Upper-roman"),type:"upper-roman",icon:''},{label:t("Toggle the lower–latin list style"),tooltip:t("Lower-latin"),type:"lower-latin",icon:''},{label:t("Toggle the upper–latin list style"),tooltip:t("Upper-latin"),type:"upper-latin",icon:''}]}))}}function $b({editor:e,parentCommandName:t,buttonLabel:i,buttonIcon:n,toolbarAriaLabel:o,styleDefinitions:r}){const s=e.commands.get(t),a=e.commands.get("listStyle");return l=>{const c=Cd(l,ld),d=c.buttonView,u=function({editor:e,listStyleCommand:t,parentCommandName:i}){const n=e.locale,o=e.commands.get(i);return({label:r,type:s,icon:a,tooltip:l})=>{const c=new Xc(n);return c.set({label:r,icon:a,tooltip:l}),t.on("change:value",()=>{c.isOn=t.value===s}),c.on("execute",()=>{o.value?t.value!==s?e.execute("listStyle",{type:s}):e.execute("listStyle",{type:t._defaultType}):e.model.change(()=>{e.execute(i),e.execute("listStyle",{type:s})}),e.editing.view.focus()}),c}}({editor:e,parentCommandName:t,listStyleCommand:a});return Td(c,r.map(u)),c.bind("isEnabled").to(s),c.toolbarView.ariaLabel=o,c.class="ck-list-styles-dropdown",d.on("execute",()=>{e.execute(t),e.editing.view.focus()}),d.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),d.bind("isOn").to(s,"value",e=>!!e),c}}function Yb(e,t){return e=>{e.on("attribute:url:media",i)};function i(i,n,o){if(!o.consumable.consume(n.item,i.name))return;const r=n.attributeNewValue,s=o.writer,a=o.mapper.toViewElement(n.item),l=[...a.getChildren()].find(e=>e.getCustomProperty("media-content"));s.remove(l);const c=e.getMediaViewElement(s,r,t);s.insert(s.createPositionAt(a,0),c)}}function Gb(e,t,i,n){const o=e.createContainerElement("figure",{class:"media"});return e.insert(e.createPositionAt(o,0),t.getMediaViewElement(e,i,n)),o}function Kb(e){const t=e.getSelectedElement();return t&&t.is("element","media")?t:null}function Qb(e,t,i){e.change(n=>{const o=n.createElement("media",{url:t});e.insertContent(o,i),n.setSelection(o,"on")})}class Jb extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=Kb(t);this.value=i?i.getAttribute("url"):null,this.isEnabled=function(e){const t=e.getSelectedElement();return!!t&&"media"===t.name}(t)||function(e,t){let i=uh(e,t).start.parent;i.isEmpty&&!t.schema.isLimit(i)&&(i=i.parent);return t.schema.checkChild(i,"media")}(t,e)}execute(e){const t=this.editor.model,i=t.document.selection,n=Kb(i);n?t.change(t=>{t.setAttribute("url",e,n)}):Qb(t,e,uh(i,t))}}class Zb{constructor(e,t){const i=t.providers,n=t.extraProviders||[],o=new Set(t.removeProviders),r=i.concat(n).filter(e=>{const t=e.name;return t?!o.has(t):(Object(l.b)("media-embed-no-provider-name",{provider:e}),!1)});this.locale=e,this.providerDefinitions=r}hasMedia(e){return!!this._getMedia(e)}getMediaViewElement(e,t,i){return this._getMedia(t).getViewElement(e,i)}_getMedia(e){if(!e)return new Xb(this.locale);e=e.trim();for(const t of this.providerDefinitions){const i=t.html,n=en(t.url);for(const t of n){const n=this._getUrlMatches(e,t);if(n)return new Xb(this.locale,e,n,i)}}return null}_getUrlMatches(e,t){let i=e.match(t);if(i)return i;let n=e.replace(/^https?:\/\//,"");return i=n.match(t),i||(n=n.replace(/^www\./,""),i=n.match(t),i||null)}}class Xb{constructor(e,t,i,n){this.url=this._getValidUrl(t),this._t=e.t,this._match=i,this._previewRenderer=n}getViewElement(e,t){const i={};let n;if(t.renderForEditingView||t.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(i["data-oembed-url"]=this.url),t.renderForEditingView&&(i.class="ck-media__wrapper");const o=this._getPreviewHtml(t);n=e.createRawElement("div",i,(function(e){e.innerHTML=o}))}else this.url&&(i.url=this.url),n=e.createEmptyElement(t.elementName,i);return e.setCustomProperty("media-content",!0,n),n}_getPreviewHtml(e){return this._previewRenderer?this._previewRenderer(this._match):this.url&&e.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const e=new Zc,t=new Jc;e.text=this._t("Open media in new tab"),t.content='',t.viewBox="0 0 64 42";return new Mc({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]},e]}]}).render().outerHTML}_getValidUrl(e){return e?e.match(/^https?/)?e:"https://"+e:null}}i(100);class ew extends Qe{static get pluginName(){return"MediaEmbedEditing"}constructor(e){super(e),e.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:e=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:e=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)/,/^youtube\.com\/embed\/([\w-]+)/,/^youtu\.be\/([\w-]+)/],html:e=>`
`},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:e=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new Zb(e.locale,e.config.get("mediaEmbed"))}init(){const e=this.editor,t=e.model.schema,i=e.t,n=e.conversion,o=e.config.get("mediaEmbed.previewsInData"),r=e.config.get("mediaEmbed.elementName"),s=this.registry;e.commands.add("mediaEmbed",new Jb(e)),t.register("media",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["url"]}),n.for("dataDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const i=e.getAttribute("url");return Gb(t,s,i,{elementName:r,renderMediaPreview:i&&o})}}),n.for("dataDowncast").add(Yb(s,{elementName:r,renderMediaPreview:o})),n.for("editingDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const n=e.getAttribute("url");return function(e,t,i){return t.setCustomProperty("media",!0,e),rh(e,t,{label:i})}(Gb(t,s,n,{elementName:r,renderForEditingView:!0}),t,i("media widget"))}}),n.for("editingDowncast").add(Yb(s,{elementName:r,renderForEditingView:!0})),n.for("upcast").elementToElement({view:e=>["oembed",r].includes(e.name)&&e.getAttribute("url")?{name:!0}:null,model:(e,{writer:t})=>{const i=e.getAttribute("url");if(s.hasMedia(i))return t.createElement("media",{url:i})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(e,{writer:t})=>{const i=e.getAttribute("data-oembed-url");if(s.hasMedia(i))return t.createElement("media",{url:i})}})}}const tw=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class iw extends Qe{static get requires(){return[Rh,Tg]}static get pluginName(){return"AutoMediaEmbed"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",()=>{const e=t.selection.getFirstRange(),i=ec.fromPosition(e.start);i.stickiness="toPrevious";const n=ec.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",()=>{this._embedMediaBetweenPositions(i,n),i.detach(),n.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(vr.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedMediaBetweenPositions(e,t){const i=this.editor,n=i.plugins.get(ew).registry,o=new ba(e,t),r=o.getWalker({ignoreElementEnd:!0});let s="";for(const e of r)e.item.is("$textProxy")&&(s+=e.item.data);if(s=s.trim(),!s.match(tw))return void o.detach();if(!n.hasMedia(s))return void o.detach();i.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=ec.fromPosition(e),this._timeoutId=vr.window.setTimeout(()=>{i.model.change(e=>{let t;this._timeoutId=null,e.remove(o),o.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert),Qb(i.model,s,t),this._positionToInsert.detach(),this._positionToInsert=null})},100)):o.detach()}}i(102);class nw extends Pc{constructor(e,t){super(t);const i=t.t;this.focusTracker=new Rs,this.keystrokes=new zs,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Cc.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",e=>!!e),this.cancelButtonView=this._createButton(i("Cancel"),Cc.cancel,"ck-button-cancel","cancel"),this._focusables=new Sc,this._focusCycler=new nd({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=e,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),Ec(this)}render(){super.render(),Ic({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element);const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e),this.listenTo(this.urlInputView.element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"})}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(e){this.urlInputView.fieldView.element.value=e.trim()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const e=this.locale.t,t=new Rd(this.locale,zd),i=t.fieldView;return this._urlInputViewInfoDefault=e("Paste the media URL in the input."),this._urlInputViewInfoTip=e("Tip: Paste the URL into the content to embed faster."),t.label=e("Media URL"),t.infoText=this._urlInputViewInfoDefault,i.on("input",()=>{t.infoText=i.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=i.element.value.trim()}),t}_createButton(e,t,i,n){const o=new Xc(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}}class ow extends Qe{static get requires(){return[ew]}static get pluginName(){return"MediaEmbedUI"}init(){const e=this.editor,t=e.commands.get("mediaEmbed"),i=e.plugins.get(ew).registry;e.ui.componentFactory.add("mediaEmbed",n=>{const o=Cd(n),r=new nw(function(e,t){return[t=>{if(!t.url.length)return e("The URL must not be empty.")},i=>{if(!t.hasMedia(i.url))return e("This media URL is not supported.")}]}(e.t,i),e.locale);return this._setUpDropdown(o,r,t,e),this._setUpForm(o,r,t),o})}_setUpDropdown(e,t,i){const n=this.editor,o=n.t,r=e.buttonView;function s(){n.editing.view.focus(),e.isOpen=!1}e.bind("isEnabled").to(i),e.panelView.children.add(t),r.set({label:o("Insert media"),icon:'',tooltip:!0}),r.on("open",()=>{t.disableCssTransitions(),t.url=i.value||"",t.urlInputView.fieldView.select(),t.focus(),t.enableCssTransitions()},{priority:"low"}),e.on("submit",()=>{t.isValid()&&(n.execute("mediaEmbed",t.url),s())}),e.on("change:isOpen",()=>t.resetFormStatus()),e.on("cancel",()=>s())}_setUpForm(e,t,i){t.delegate("submit","cancel").to(e),t.urlInputView.bind("value").to(i,"value"),t.urlInputView.bind("isReadOnly").to(i,"isEnabled",e=>!e)}}i(104);function rw(e,t){if(!e.childCount)return;const i=new hu(e.document),n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),o=[];for(const e of i)if("elementStart"===e.type&&n.match(e.item)){const t=lw(e.item);o.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return o}(e,i);if(!n.length)return;let o=null,r=1;n.forEach((e,s)=>{const a=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const i=t.element.previousSibling;if(!i)return!0;return n=i,!(n.is("element","ol")||n.is("element","ul"));var n}(n[s-1],e),l=a?null:n[s-1],c=(u=e,(d=l)?u.indent-d.indent:u.indent-1);var d,u;if(a&&(o=null,r=1),!o||0!==c){const n=function(e,t){const i=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),n=/mso-level-number-format:([^;]{0,100});/gi,o=i.exec(t);let r="decimal",s="ol";if(o&&o[1]){const t=n.exec(o[1]);if(t&&t[1]&&(r=t[1].trim(),s="bullet"!==r&&"image"!==r?"ol":"ul"),"bullet"===r){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const i=t._data;if("o"===i)return"circle";if("·"===i)return"disc";if("§"===i)return"square";return null}(e.element);t&&(r=t)}}return{type:s,style:sw(r)}}(e,t);if(o){if(e.indent>r){const e=o.getChild(o.childCount-1),t=e.getChild(e.childCount-1);o=aw(n,t,i),r+=1}else if(e.indente.indexOf(t)>-1)?r.push(i):i.getAttribute("src")||r.push(i)}for(const e of r)i.remove(e)}(function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i){const t=e.item,i=t.previousSibling&&t.previousSibling.name||null;n.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==i&&o.push(e.item.getAttribute("id"))}return o}(e,i),e,i),function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i)n.match(e.item)&&o.push(e.item);for(const e of o)t.remove(e)}(e,i);const n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:"img"}),o=[];for(const e of i)n.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&o.push(e.item);return o}(e,i);n.length&&function(e,t,i){if(e.length===t.length)for(let o=0;oString.fromCharCode(parseInt(e,16))).join(""))}`;i.setAttribute("src",r,e[o])}var n}(n,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,i=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),n=e.match(i),o=[];if(n)for(const e of n){let i=!1;e.includes("\\pngblip")?i="image/png":e.includes("\\jpegblip")&&(i="image/jpeg"),i&&o.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:i})}return o}(t),i)}const hw=//i,gw=/xmlns:o="urn:schemas-microsoft-com/i;class mw{constructor(e){this.document=e}isActive(e){return hw.test(e)||gw.test(e)}execute(e){const{body:t,stylesString:i}=e._parsedData;rw(t,i),uw(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function fw(e){return e.replace(/(\s+)<\/span>/g,(e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length))}function pw(e,t){const i=new DOMParser,n=function(e){return fw(fw(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(e){const t=e.indexOf("");if(t<0)return e;const i=e.indexOf("",t+"".length);return e.substring(0,t+"".length)+(i>=0?e.substring(i):"")}(e=e.replace(//g,"")}(n.getData("text/html")):n.getData("text/plain")&&(((s=(s=n.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),r=s),r=this.editor.data.htmlProcessor.toView(r));const a=new o(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:n,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),i.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(e,i)=>{if(i.content.isEmpty)return;const n=this.editor.data.toModel(i.content,"$clipboardHolder");0!=n.childCount&&(e.stop(),t.change(()=>{this.fire("contentInsertion",{content:n,method:i.method,dataTransfer:i.dataTransfer,targetRanges:i.targetRanges})}))},{priority:"low"}),this.listenTo(this,"contentInsertion",(e,i)=>{i.resultRange=t.insertContent(i.content)},{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,i=e.editing.view.document;function n(n,o){const r=o.dataTransfer;o.preventDefault();const s=e.data.toView(e.model.getSelectedContent(t.selection));i.fire("clipboardOutput",{dataTransfer:r,content:s,method:n.name})}this.listenTo(i,"copy",n,{priority:"low"}),this.listenTo(i,"cut",(t,i)=>{e.isReadOnly?i.preventDefault():n(t,i)},{priority:"low"}),this.listenTo(i,"clipboardOutput",(i,n)=>{n.content.isEmpty||(n.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(n.content)),n.dataTransfer.setData("text/plain",function e(t){let i="";if(t.is("$text")||t.is("$textProxy"))i=t.data;else if(t.is("element","img")&&t.hasAttribute("alt"))i=t.getAttribute("alt");else if(t.is("element","br"))i="\n";else{let n=null;for(const o of t.getChildren()){const t=e(o);n&&(n.is("containerElement")||o.is("containerElement"))&&(bu.includes(n.name)||bu.includes(o.name)?i+="\n":i+="\n\n"),i+=t,n=o}}return i}(n.content))),"cut"==n.method&&e.model.deleteContent(t.selection)},{priority:"low"})}}function*ku(e,t){for(const i of t)i&&e.getAttributeProperties(i[0]).copyOnEnter&&(yield i)}class _u extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i,n){const o=i.isCollapsed,r=i.getFirstRange(),s=r.start.parent,a=r.end.parent;if(n.isLimit(s)||n.isLimit(a))return void(o||s!=a||e.deleteContent(i));if(o){const e=ku(t.model.schema,i.getAttributes());vu(t,r.start),t.setSelectionAttribute(e)}else{const n=!(r.start.isAtStart&&r.end.isAtEnd),o=s==a;e.deleteContent(i,{leaveUnmerged:n}),n&&(o?vu(t,i.focus):t.setSelection(a,0))}}(this.editor.model,i,t.selection,e.schema),this.fire("afterExecute",{writer:i})})}}function vu(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}class yu extends Or{constructor(e){super(e);const t=this.document;t.on("keydown",(e,i)=>{if(this.isEnabled&&i.keyCode==No.enter){const n=new fo(t,"enter",t.selection.getFirstRange());t.fire(n,new es(t,i.domEvent,{isSoft:i.shiftKey})),n.stop.called&&e.stop()}})}observe(){}}class xu extends Qe{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(yu),e.commands.add("enter",new _u(e)),this.listenTo(i,"enter",(i,n)=>{n.preventDefault(),n.isSoft||(e.execute("enter"),t.scrollToTheSelection())},{priority:"low"})}}class Au{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{"transparent"!=t.type&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}class Cu extends Ze{constructor(e,t){super(e),this.direction=t,this._buffer=new Au(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,i=t.document;t.enqueueChange(this._buffer.batch,n=>{this._buffer.lock();const o=n.createSelection(e.selection||i.selection),r=e.sequence||1,s=o.isCollapsed;if(o.isCollapsed&&t.modifySelection(o,{direction:this.direction,unit:e.unit}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(n);if(this._shouldReplaceFirstBlockWithParagraph(o,r))return void this.editor.execute("paragraph",{selection:o});if(o.isCollapsed)return;let a=0;o.getFirstRange().getMinimalFlatRanges().forEach(e=>{a+=ho(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(o,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),n.setSelection(o),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i);if(!(i.isCollapsed&&i.containsEntireContent(n)))return!1;if(!t.schema.checkChild(n,"paragraph"))return!1;const o=n.getChild(0);return!o||"paragraph"!==o.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,i=t.document.selection,n=t.schema.getLimitElement(i),o=e.createElement("paragraph");e.remove(e.createRangeIn(n)),e.insert(o,n),e.setSelection(o,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const i=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const n=e.getFirstPosition(),o=i.schema.getLimitElement(n),r=o.getChild(0);return n.parent==r&&(!!e.containsEntireContent(r)&&(!!i.schema.checkChild(o,"paragraph")&&"paragraph"!=r.name))}}class Tu extends Or{constructor(e){super(e);const t=e.document;let i=0;function n(e,i,n){const o=new fo(t,"delete",t.selection.getFirstRange());t.fire(o,new es(t,i,n)),o.stop.called&&e.stop()}t.on("keyup",(e,t)=>{t.keyCode!=No.delete&&t.keyCode!=No.backspace||(i=0)}),t.on("keydown",(e,t)=>{const o={};if(t.keyCode==No.delete)o.direction="forward",o.unit="character";else{if(t.keyCode!=No.backspace)return;o.direction="backward",o.unit="codePoint"}const r=Po.isMac?t.altKey:t.ctrlKey;o.unit=r?"word":o.unit,o.sequence=++i,n(e,t.domEvent,o)}),Po.isAndroid&&t.on("beforeinput",(t,i)=>{if("deleteContentBackward"!=i.domEvent.inputType)return;const o={unit:"codepoint",direction:"backward",sequence:1},r=i.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(o.selectionToRemove=e.domConverter.domSelectionToView(r)),n(t,i.domEvent,o)})}observe(){}}class Eu extends Qe{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,i=t.document;t.addObserver(Tu);const n=new Cu(e,"forward");if(e.commands.add("deleteForward",n),e.commands.add("forwardDelete",n),e.commands.add("delete",new Cu(e,"backward")),this.listenTo(i,"delete",(i,n)=>{const o={unit:n.unit,sequence:n.sequence};if(n.selectionToRemove){const t=e.model.createSelection(),i=[];for(const t of n.selectionToRemove.getRanges())i.push(e.editing.mapper.toModelRange(t));t.setTo(i),o.selection=t}e.execute("forward"==n.direction?"deleteForward":"delete",o),n.preventDefault(),t.scrollToTheSelection()},{priority:"low"}),Po.isAndroid){let e=null;this.listenTo(i,"delete",(t,i)=>{const n=i.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}},{priority:"lowest"}),this.listenTo(i,"keyup",(t,i)=>{if(e){const t=i.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}})}}}class Iu{constructor(){this._stack=[]}add(e,t){const i=this._stack,n=i[0];this._insertDescriptor(e);const o=i[0];n===o||Pu(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}remove(e,t){const i=this._stack,n=i[0];this._removeDescriptor(e);const o=i[0];n===o||Pu(n,o)||this.fire("change:top",{oldDescriptor:n,newDescriptor:o,writer:t})}_insertDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e.id);if(Pu(e,t[i]))return;i>-1&&t.splice(i,1);let n=0;for(;t[n]&&Su(t[n],e);)n++;t.splice(n,0,e)}_removeDescriptor(e){const t=this._stack,i=t.findIndex(t=>t.id===e);i>-1&&t.splice(i,1)}}function Pu(e,t){return e&&t&&e.priority==t.priority&&Mu(e.classes)==Mu(t.classes)}function Su(e,t){return e.priority>t.priority||!(e.priorityMu(t.classes)}function Mu(e){return Array.isArray(e)?e.sort().join(","):e}Ke(Iu,u);function Nu(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function Ru(e,t,i={}){if(!e.is("containerElement"))throw new l.a("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=Fu,i.label&&function(e,t,i){i.setCustomProperty("widgetLabel",t,e)}(e,i.label,t),i.hasSelectionHandle&&function(e,t){const i=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),i=new Zc;return i.set("content",''),i.render(),t.appendChild(i.element),t}));t.insert(t.createPositionAt(e,0),i),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),Du(e,t,Ou,zu),e}function Ou(e,t,i){if(t.classes&&i.addClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.setAttribute(n,t.attributes[n],e)}function zu(e,t,i){if(t.classes&&i.removeClass(en(t.classes),e),t.attributes)for(const n in t.attributes)i.removeAttribute(n,e)}function Du(e,t,i,n){const o=new Iu;o.on("change:top",(t,o)=>{o.oldDescriptor&&n(e,o.oldDescriptor,o.writer),o.newDescriptor&&i(e,o.newDescriptor,o.writer)}),t.setCustomProperty("addHighlight",(e,t,i)=>o.add(t,i),e),t.setCustomProperty("removeHighlight",(e,t,i)=>o.remove(t,i),e)}function Lu(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function Vu(e,t){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",(i,n,o)=>{t.setAttribute("contenteditable",o?"false":"true",e)}),e.on("change:isFocused",(i,n,o)=>{o?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)}),e}function ju(e,t){const i=e.getSelectedElement();if(i){const n=Uu(e);if(n)return t.createRange(t.createPositionAt(i,n));if(t.schema.isObject(i)&&!t.schema.isInline(i))return t.createRangeOn(i)}const n=e.getSelectedBlocks().next().value;if(n){if(n.isEmpty)return t.createRange(t.createPositionAt(n,0));const i=t.createPositionAfter(n);return e.focus.isTouching(i)?t.createRange(i):t.createRange(t.createPositionBefore(n))}return t.createRange(e.focus)}function Bu(e,t){const i=new Cs(vr.window),n=i.getIntersection(e),o=t.height+Ld.arrowVerticalOffset;if(e.top-o>i.top||e.bottom+o',"image/svg+xml").firstChild;class Gu extends Qe{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[xu,Eu]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(i,n,o)=>{t.change(e=>{for(const i of t.document.roots)o?e.removeClass("ck-widget__type-around_disabled",i):e.addClass("ck-widget__type-around_disabled",i)}),o||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const i=this.editor,n=i.editing.view;i.execute("insertParagraph",{position:i.model.createPositionAt(e,t)}),n.focus(),n.scrollToTheSelection()}_listenToIfEnabled(e,t,i,n){this.listenTo(e,t,(...e)=>{this.isEnabled&&i(...e)},n)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=Uu(e);if(!t)return!1;const i=e.getSelectedElement();return this._insertParagraph(i,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,i=e.locale.t,n={before:i("Insert paragraph before block"),after:i("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(e,i,o)=>{const r=o.mapper.toViewElement(i.item);Hu(r,i.item,t)&&function(e,t,i){const n=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const i=this.toDomElement(e);return function(e,t){for(const i of $u){const n=new Nc({tag:"div",attributes:{class:["ck","ck-widget__type-around__button","ck-widget__type-around__button_"+i],title:t[i]},children:[e.ownerDocument.importNode(Yu,!0)]});e.appendChild(n.render())}}(i,t),function(e){const t=new Nc({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(i),i}));e.insert(e.createPositionAt(i,"end"),n)}(o.writer,n,r)},{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,i=t.document.selection,n=t.schema,o=e.editing.view;function r(e){return"ck-widget_type-around_show-fake-caret_"+e}this._listenToIfEnabled(o.document,"arrowKey",(e,t)=>{this._handleArrowKeyPress(e,t)},{context:[Nu,"$text"],priority:"high"}),this._listenToIfEnabled(i,"change:range",(t,i)=>{i.directChange&&e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(t.document,"change:data",()=>{const t=i.getSelectedElement();if(t){if(Hu(e.editing.mapper.toViewElement(t),t,n))return}e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})}),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",(e,t,i)=>{const o=i.writer;if(this._currentFakeCaretModelElement){const e=i.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(o.removeClass($u.map(r),e),this._currentFakeCaretModelElement=null)}const s=t.selection.getSelectedElement();if(!s)return;const a=i.mapper.toViewElement(s);if(!Hu(a,s,n))return;const l=Uu(t.selection);l&&(o.addClass(r(l),a),this._currentFakeCaretModelElement=s)}),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",(t,i,n)=>{n||e.model.change(e=>{e.removeSelectionAttribute("widget-type-around")})})}_handleArrowKeyPress(e,t){const i=this.editor,n=i.model,o=n.document.selection,r=n.schema,s=i.editing.view,a=Vo(t.keyCode,i.locale.contentLanguageDirection),l=s.document.selection.getSelectedElement();let c;Hu(l,i.editing.mapper.toModelElement(l),r)?c=this._handleArrowKeyPressOnSelectedWidget(a):o.isCollapsed&&(c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a)),c&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,i=Uu(t.document.selection);return t.change(t=>{if(!i)return t.setSelectionAttribute("widget-type-around",e?"after":"before"),!0;if(!(i===(e?"after":"before")))return t.removeSelectionAttribute("widget-type-around"),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,i=t.model,n=i.schema,o=t.plugins.get("Widget"),r=o._getObjectElementNextToSelection(e);return!!Hu(t.editing.mapper.toViewElement(r),r,n)&&(i.change(t=>{o._setSelectionOverElement(r),t.setSelectionAttribute("widget-type-around",e?"before":"after")}),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(i,n)=>{const o=n.domTarget.closest(".ck-widget__type-around__button");if(!o)return;const r=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(o),s=function(e,t){const i=e.closest(".ck-widget");return t.mapDomToView(i)}(o,t.domConverter),a=e.editing.mapper.toModelElement(s);this._insertParagraph(a,r),n.preventDefault(),i.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,i=e.editing.view;this._listenToIfEnabled(i.document,"enter",(i,n)=>{if("atTarget"!=i.eventPhase)return;const o=t.getSelectedElement(),r=e.editing.mapper.toViewElement(o),s=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:Hu(r,o,s)&&(this._insertParagraph(o,n.isSoft?"before":"after"),a=!0),a&&(n.preventDefault(),i.stop())},{context:Nu})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[No.enter,No.delete,No.backspace];this._listenToIfEnabled(e.document,"keydown",(e,i)=>{t.includes(i.keyCode)||qu(i)||this._insertParagraphAccordingToFakeCaretPosition()},{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,i=e.model,n=i.schema;this._listenToIfEnabled(t.document,"delete",(t,o)=>{if("atTarget"!=t.eventPhase)return;const r=Uu(i.document.selection);if(!r)return;const s=o.direction,a=i.document.selection.getSelectedElement(),l="forward"==s;if("before"===r===l)e.execute("delete",{selection:i.createSelection(a,"on")});else{const t=n.getNearestSelectionRange(i.createPositionAt(a,r),s);if(t)if(t.isCollapsed){const o=i.createSelection(t.start);if(i.modifySelection(o,{direction:s}),o.focus.isEqual(t.start)){const e=function(e,t){let i=t;for(const n of t.getAncestors({parentFirst:!0})){if(n.childCount>1||e.isLimit(n))break;i=n}return i}(n,t.start.parent);i.deleteContent(i.createSelection(e,"on"),{doNotAutoparagraph:!0})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}else i.change(i=>{i.setSelection(t),e.execute(l?"deleteForward":"delete")})}o.preventDefault(),t.stop()},{context:Nu})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,i=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(e,[n,o])=>{if(o&&!o.is("documentSelection"))return;const r=Uu(i);return r?(e.stop(),t.change(e=>{const o=i.getSelectedElement(),s=t.createPositionAt(o,r),a=e.createSelection(s),l=t.insertContent(n,a);return e.setSelection(a),l})):void 0},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(e,[i])=>{if(i&&!i.is("documentSelection"))return;Uu(t)&&e.stop()},{priority:"high"})}}i(63);function Ku(e){const t=e.model;return(i,n)=>{const o=n.keyCode==No.arrowup,r=n.keyCode==No.arrowdown,s=n.shiftKey,a=t.document.selection;if(!o&&!r)return;const l=r;if(s&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,l))return;const c=function(e,t,i){const n=e.model;if(i){const e=t.isCollapsed?t.focus:t.getLastPosition(),i=Qu(n,e,"forward");if(!i)return null;const o=n.createRange(e,i),r=Ju(n.schema,o,"backward");return r&&e.isBefore(r)?n.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),i=Qu(n,e,"backward");if(!i)return null;const o=n.createRange(i,e),r=Ju(n.schema,o,"forward");return r&&e.isAfter(r)?n.createRange(r,e):null}}(e,a,l);c&&!c.isCollapsed&&function(e,t,i){const n=e.model,o=e.view.domConverter;if(i){const e=n.createSelection(t.start);n.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=n.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),s=o.viewRangeToDom(r),a=Cs.getDomRangeRects(s);let l;for(const e of a)if(void 0!==l){if(Math.round(e.top)>=l)return!1;l=Math.max(l,Math.round(e.bottom))}else l=Math.round(e.bottom);return!0}(e,c,l)&&(t.change(e=>{const i=l?c.end:c.start;if(s){const n=t.createSelection(a.anchor);n.setFocus(i),e.setSelection(n)}else e.setSelection(i)}),i.stop(),n.preventDefault(),n.stopPropagation())}}function Qu(e,t,i){const n=e.schema,o=e.createRangeIn(t.root),r="forward"==i?"elementStart":"elementEnd";for(const{previousPosition:e,item:s,type:a}of o.getWalker({startPosition:t,direction:i})){if(n.isLimit(s)&&!n.isInline(s))return e;if(a==r&&n.isBlock(s))return null}return null}function Ju(e,t,i){const n="backward"==i?t.end:t.start;if(e.checkChild(n,"$text"))return n;for(const{nextPosition:n}of t.getWalker({direction:i}))if(e.checkChild(n,"$text"))return n}class Zu extends Qe{static get pluginName(){return"Widget"}static get requires(){return[Gu,Eu]}init(){const e=this.editor,t=e.editing.view,i=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(t,i,n)=>{const o=n.writer,r=i.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=e.editing.mapper.toViewElement(s);Nu(a)&&n.consumable.consume(r,"selection")&&o.setSelection(o.createRangeOn(a),{fake:!0,label:Lu(a)})}),this.editor.editing.downcastDispatcher.on("selection",(e,t,i)=>{this._clearPreviouslySelectedWidgets(i.writer);const n=i.writer,o=n.document.selection;let r=null;for(const e of o.getRanges())for(const t of e){const e=t.item;Nu(e)&&!Xu(e,r)&&(n.addClass("ck-widget_selected",e),this._previouslySelected.add(e),r=e)}},{priority:"low"}),t.addObserver(cu),this.listenTo(i,"mousedown",(...e)=>this._onMousedown(...e)),this.listenTo(i,"arrowKey",(...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)},{context:[Nu,"$text"]}),this.listenTo(i,"arrowKey",(...e)=>{this._preventDefaultOnArrowKeyPress(...e)},{context:"$root"}),this.listenTo(i,"arrowKey",Ku(this.editor.editing),{context:"$text"}),this.listenTo(i,"delete",(e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())},{context:"$root"})}_onMousedown(e,t){const i=this.editor,n=i.editing.view,o=n.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(Nu(e))return!1;e=e.parent}return!1}(r)){if((Po.isSafari||Po.isGecko)&&t.domEvent.detail>=3){const e=i.editing.mapper,n=r.is("attributeElement")?r.findAncestor(e=>!e.is("attributeElement")):r,o=e.toModelElement(n);t.preventDefault(),this.editor.model.change(e=>{e.setSelection(o,"in")})}return}if(!Nu(r)&&(r=r.findAncestor(Nu),!r))return;Po.isAndroid&&t.preventDefault(),o.isFocused||n.focus();const s=i.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(e,t){const i=t.keyCode,n=this.editor.model,o=n.schema,r=n.document.selection,s=r.getSelectedElement(),a=Vo(i,this.editor.locale.contentLanguageDirection);if(s&&o.isObject(s)){const i=a?r.getLastPosition():r.getFirstPosition(),s=o.getNearestSelectionRange(i,a?"forward":"backward");return void(s&&(n.change(e=>{e.setSelection(s)}),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const l=this._getObjectElementNextToSelection(a);l&&o.isObject(l)&&(this._setSelectionOverElement(l),t.preventDefault(),e.stop())}_preventDefaultOnArrowKeyPress(e,t){const i=this.editor.model,n=i.schema,o=i.document.selection.getSelectedElement();o&&n.isObject(o)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const i=this._getObjectElementNextToSelection(e);return i?(this.editor.model.change(e=>{let n=t.anchor.parent;for(;n.isEmpty;){const t=n;n=t.parent,e.remove(t)}this._setSelectionOverElement(i)}),!0):void 0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,i=t.schema,n=t.document.selection,o=t.createSelection(n);t.modifySelection(o,{direction:e?"forward":"backward"});const r=e?o.focus.nodeBefore:o.focus.nodeAfter;return r&&i.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass("ck-widget_selected",t);this._previouslySelected.clear()}}function Xu(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}var eh=function(e,t,i){var n=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return w(i)&&(n="leading"in i?!!i.leading:n,o="trailing"in i?!!i.trailing:o),fs(e,t,{leading:n,maxWait:t,trailing:o})};i(65);class th extends Qe{static get pluginName(){return"DragDrop"}static get requires(){return[wu,Zu]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=eh(e=>this._updateDropMarker(e),40),this._removeDropMarkerDelayed=oh(()=>this._removeDropMarker(),40),this._clearDraggableAttributesDelayed=oh(()=>this._clearDraggableAttributes(),40),t.addObserver(pu),t.addObserver(cu),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(e,t,i)=>{i?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(e,t,i)=>{i||this._finalizeDragging(!1)}),Po.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,i=t.document,n=e.editing.view,o=n.document;this.listenTo(o,"dragstart",(n,r)=>{const a=i.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const l=r.target?rh(r.target):null;if(l){const i=e.editing.mapper.toModelElement(l);this._draggedRange=ba.fromRange(t.createRangeOn(i)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&Nu(e)||(this._draggedRange=ba.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=s(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),d=e.data.toView(t.getSelectedContent(c));o.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:d,method:n.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")},{priority:"low"}),this.listenTo(o,"dragend",(e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)},{priority:"low"}),this.listenTo(o,"dragenter",()=>{this.isEnabled&&n.focus()}),this.listenTo(o,"dragleave",()=>{this._removeDropMarkerDelayed()}),this.listenTo(o,"dragging",(t,i)=>{if(!this.isEnabled)return void(i.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const n=ih(e,i.targetRanges,i.target);this._draggedRange||(i.dataTransfer.dropEffect="copy"),Po.isGecko||("copy"==i.dataTransfer.effectAllowed?i.dataTransfer.dropEffect="copy":["all","copyMove"].includes(i.dataTransfer.effectAllowed)&&(i.dataTransfer.dropEffect="move")),n&&this._updateDropMarkerThrottled(n)},{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",(t,i)=>{if("drop"!=i.method)return;const n=ih(e,i.targetRanges,i.target);if(this._removeDropMarker(),!n)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=i.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==nh(i.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(n,!0))return this._finalizeDragging(!1),void t.stop();i.targetRanges=[e.editing.mapper.toViewRange(n)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(wu);e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i=t.targetRanges.map(e=>this.editor.editing.mapper.toModelRange(e));this.editor.model.change(e=>e.setSelection(i))},{priority:"high"}),e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const i="move"==nh(t.dataTransfer),n=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(n&&i)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,i=t.document;this.listenTo(i,"mousedown",(n,o)=>{if(Po.isAndroid||!o)return;this._clearDraggableAttributesDelayed.cancel();let r=rh(o.target);if(Po.isBlink&&!e.isReadOnly&&!r&&!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&Nu(e)||(r=i.selection.editableElement)}r&&(t.change(e=>{e.setAttribute("draggable","true",r)}),this._draggableElement=e.editing.mapper.toModelElement(r))}),this.listenTo(i,"mouseup",()=>{Po.isAndroid||this._clearDraggableAttributesDelayed()})}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change(t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null})}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:i})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return i.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.innerHTML="⁠⁠",t}))}})}_updateDropMarker(e){const t=this.editor,i=t.model.markers;t.model.change(t=>{i.has("drop-target")?i.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})})}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change(e=>{e.removeMarker("drop-target")})}_finalizeDragging(e){const t=this.editor,i=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&i.deleteContent(i.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function ih(e,t,i){const n=e.model,o=e.editing.mapper;let r=null;const s=t?t[0].start:null;if(i.is("uiElement")&&(i=i.parent),r=function(e,t){const i=e.model,n=e.editing.mapper;if(Nu(t))return i.createRangeOn(n.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor(e=>Nu(e)||e.is("editableElement"));if(Nu(e))return i.createRangeOn(n.toModelElement(e))}return null}(e,i),r)return r;const a=function(e,t){const i=e.editing.mapper,n=e.editing.view,o=i.toModelElement(t);if(o)return o;const r=n.createPositionBefore(t),s=i.findMappedViewAncestor(r);return i.toModelElement(s)}(e,i),l=s?o.toModelPosition(s):null;return l?(r=function(e,t,i){const n=e.model;if(!n.schema.checkChild(i,"$block"))return null;const o=n.createPositionAt(i,0),r=t.path.slice(0,o.path.length),s=n.createPositionFromPath(t.root,r).nodeAfter;if(s&&n.schema.isObject(s))return n.createRangeOn(s);return null}(e,l,a),r||(r=n.schema.getNearestSelectionRange(l,Po.isGecko?"forward":"backward"),r||function(e,t){const i=e.model;for(;t;){if(i.schema.isObject(t))return i.createRangeOn(t);t=t.parent}}(e,l.parent))):function(e,t){const i=e.model,n=i.schema,o=i.createPositionAt(t,0);return n.getNearestSelectionRange(o,"forward")}(e,a)}function nh(e){return Po.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function oh(e,t){let i;function n(...o){n.cancel(),i=setTimeout(()=>e(...o),t)}return n.cancel=()=>{clearTimeout(i)},n}function rh(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(Nu);if(Nu(e))return e;const t=e.findAncestor(e=>Nu(e)||e.is("editableElement"));return Nu(t)?t:null}class sh extends Qe{static get pluginName(){return"PastePlainText"}static get requires(){return[wu]}init(){const e=this.editor,t=e.model,i=e.editing.view,n=i.document,o=t.document.selection;let r=!1;i.addObserver(pu),this.listenTo(n,"keydown",(e,t)=>{r=t.shiftKey}),e.plugins.get(wu).on("contentInsertion",(e,i)=>{(r||function(e,t){if(e.childCount>1)return!1;const i=e.getChild(0);if(t.isObject(i))return!1;return 0==[...i.getAttributeKeys()].length}(i.content,t.schema))&&t.change(e=>{const n=Array.from(o.getAttributes()).filter(([e])=>t.schema.getAttributeProperties(e).isFormatting);o.isCollapsed||t.deleteContent(o,{doNotAutoparagraph:!0}),n.push(...o.getAttributes());const r=e.createRangeIn(i.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(n,t)})})}}class ah extends Qe{static get pluginName(){return"Clipboard"}static get requires(){return[wu,th,sh]}}class lh extends Ze{execute(){const e=this.editor.model,t=e.document;e.change(i=>{!function(e,t,i){const n=i.isCollapsed,o=i.getFirstRange(),r=o.start.parent,s=o.end.parent,a=r==s;if(n){const n=ku(e.schema,i.getAttributes());ch(e,t,o.end),t.removeSelectionAttribute(i.getAttributeKeys()),t.setSelectionAttribute(n)}else{const n=!(o.start.isAtStart&&o.end.isAtEnd);e.deleteContent(i,{leaveUnmerged:n}),a?ch(e,t,i.focus):n&&t.setSelection(s,0)}}(e,i,t.selection),this.fire("afterExecute",{writer:i})})}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const i=t.anchor;if(!i||!e.checkChild(i,"softBreak"))return!1;const n=t.getFirstRange(),o=n.start.parent,r=n.end.parent;if((dh(o,e)||dh(r,e))&&o!==r)return!1;return!0}(e.schema,t.selection)}}function ch(e,t,i){const n=t.createElement("softBreak");e.insertContent(n,i),t.setSelection(n,"after")}function dh(e,t){return!e.is("rootElement")&&(t.isLimit(e)||dh(e.parent,t))}class uh extends Qe{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,i=e.conversion,n=e.editing.view,o=n.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),i.for("upcast").elementToElement({model:"softBreak",view:"br"}),i.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),n.addObserver(yu),e.commands.add("shiftEnter",new lh(e)),this.listenTo(o,"enter",(t,i)=>{i.preventDefault(),i.isSoft&&(e.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"})}}class hh extends Ze{execute(){const e=this.editor.model,t=e.document.selection;let i=e.schema.getLimitElement(t);if(t.containsEntireContent(i)||!gh(e.schema,i))do{if(i=i.parent,!i)return}while(!gh(e.schema,i));e.change(e=>{e.setSelection(i,"in")})}}function gh(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const mh=zo("Ctrl+A");class fh extends Qe{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new hh(e)),this.listenTo(t,"keydown",(t,i)=>{Oo(i)===mh&&(e.execute("selectAll"),i.preventDefault())})}}class ph extends Qe{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",t=>{const i=e.commands.get("selectAll"),n=new ed(t),o=t.t;return n.set({label:o("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),n.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(n,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),n})}}class bh extends Qe{static get requires(){return[fh,ph]}static get pluginName(){return"SelectAll"}}class wh extends Ze{constructor(e,t){super(e),this._buffer=new Au(e.model,t),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,i=t.document,n=e.text||"",o=n.length,r=e.range?t.createSelection(e.range):i.selection,s=e.resultRange;t.enqueueChange(this._buffer.batch,e=>{this._buffer.lock(),this._batches.add(this._buffer.batch),t.deleteContent(r),n&&t.insertContent(e.createText(n,i.selection.getAttributes()),r),s?e.setSelection(s):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(o)})}}function kh(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const i=[];let n,o=0;return e.forEach(e=>{"equal"==e?(r(),o++):"insert"==e?(s("insert")?n.values.push(t[o]):(r(),n={type:"insert",index:o,values:[t[o]]}),o++):s("delete")?n.howMany++:(r(),n={type:"delete",index:o,howMany:1})}),r(),i;function r(){n&&(i.push(n),n=null)}function s(e){return n&&n.type==e}}(gr(e.oldChildren,e.newChildren,_h),e.newChildren);if(t.length>1)return;const i=t[0];return i.values[0]&&i.values[0].is("$text")?i:void 0}function _h(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}class vh{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if(function(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!kh(t))return!0;return!1}(e))this._handleContainerChildrenMutations(e,t);else for(const i of e)this._handleTextMutation(i,t),this._handleTextNodeInsertion(i)}_handleContainerChildrenMutations(e,t){const i=function(e){const t=e.map(e=>e.node).reduce((e,t)=>e.getCommonAncestor(t,{includeSelf:!0}));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find(e=>e.is("containerElement")||e.is("rootElement"))}(e);if(!i)return;const n=this.editor.editing.view.domConverter.mapViewToDom(i),o=new Er(this.editor.editing.view.document),r=this.editor.data.toModel(o.domToView(n)).getChild(0),s=this.editor.editing.mapper.toModelElement(i);if(!s)return;const a=Array.from(r.getChildren()),l=Array.from(s.getChildren()),c=a[a.length-1],d=l[l.length-1],u=c&&c.is("element","softBreak"),h=d&&!d.is("element","softBreak");u&&h&&a.pop();const g=this.editor.model.schema;if(!yh(a,g)||!yh(l,g))return;const m=a.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," "),f=l.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," ");if(f===m)return;const p=gr(f,m),{firstChangeAt:b,insertions:w,deletions:k}=xh(p);let _=null;t&&(_=this.editing.mapper.toModelRange(t.getFirstRange()));const v=m.substr(b,w),y=this.editor.model.createRange(this.editor.model.createPositionAt(s,b),this.editor.model.createPositionAt(s,b+k));this.editor.execute("input",{text:v,range:y,resultRange:_})}_handleTextMutation(e,t){if("text"!=e.type)return;const i=e.newText.replace(/\u00A0/g," "),n=e.oldText.replace(/\u00A0/g," ");if(n===i)return;const o=gr(n,i),{firstChangeAt:r,insertions:s,deletions:a}=xh(o);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const c=this.editing.view.createPositionAt(e.node,r),d=this.editing.mapper.toModelPosition(c),u=this.editor.model.createRange(d,d.getShiftedBy(a)),h=i.substr(r,s);this.editor.execute("input",{text:h,range:u,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=kh(e),i=this.editing.view.createPositionAt(e.node,t.index),n=this.editing.mapper.toModelPosition(i),o=t.values[0].data;this.editor.execute("input",{text:o.replace(/\u00A0/g," "),range:this.editor.model.createRange(n)})}}function yh(e,t){return e.every(e=>t.isInline(e))}function xh(e){let t=null,i=null;for(let n=0;n{i.deleteContent(i.document.selection)}),e.unlock()}Po.isAndroid?n.document.on("beforeinput",(e,t)=>r(t),{priority:"lowest"}):n.document.on("keydown",(e,t)=>r(t),{priority:"lowest"}),n.document.on("compositionstart",(function(){const e=i.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;s()}),{priority:"lowest"}),n.document.on("compositionend",()=>{t=i.createSelection(i.document.selection)},{priority:"lowest"})}(e),function(e){e.editing.view.document.on("mutations",(t,i,n)=>{new vh(e).handle(i,n)})}(e)}isInput(e){return this.editor.commands.get("input")._batches.has(e)}}class Ch extends Qe{static get requires(){return[Ah,Eu]}static get pluginName(){return"Typing"}}function Th(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>n.is("$text")||n.is("$textProxy")?e+n.data:(i=t.createPositionAfter(n),""),""),range:t.createRange(i,e.end)}}class Eh{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))}),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",(t,{directChange:i})=>{i&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))}),this.listenTo(e,"change:data",(e,t)=>{"transparent"!=t.type&&this._evaluateTextBeforeSelection("data",{batch:t})})}_evaluateTextBeforeSelection(e,t={}){const i=this.model,n=i.document.selection,o=i.createRange(i.createPositionAt(n.focus.parent,0),n.focus),{text:r,range:s}=Th(o,i),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const i=Object.assign(t,{text:r,range:s});"object"==typeof a&&Object.assign(i,a),this.fire("matched:"+e,i)}}}Ke(Eh,Ue);class Ih extends Qe{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,i=e.editing.view,n=e.locale,o=t.document.selection;this.listenTo(i.document,"arrowKey",(e,t)=>{if(!o.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const i=t.keyCode==No.arrowright,r=t.keyCode==No.arrowleft;if(!i&&!r)return;const s=n.contentLanguageDirection;let a=!1;a="ltr"===s&&i||"rtl"===s&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()},{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(o,"change:range",(e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&Nh(o.getFirstPosition(),this.attributes)||this._restoreGravity())})}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,i=this.editor.model.document.selection,n=i.getFirstPosition();return!this._isGravityOverridden&&((!n.isAtStart||!Ph(i,t))&&(Nh(n,t)?(Mh(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,i=this.editor.model,n=i.document.selection,o=n.getFirstPosition();return this._isGravityOverridden?(Mh(e),this._restoreGravity(),Sh(i,t,o),!0):o.isAtStart?!!Ph(n,t)&&(Mh(e),Sh(i,t,o),!0):function(e,t){return Nh(e.getShiftedBy(-1),t)}(o,t)?o.isAtEnd&&!Ph(n,t)&&Nh(o,t)?(Mh(e),Sh(i,t,o),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change(e=>e.overrideSelectionGravity())}_restoreGravity(){this.editor.model.change(e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}}function Ph(e,t){for(const i of t)if(e.hasAttribute(i))return!0;return!1}function Sh(e,t,i){const n=i.nodeBefore;e.change(e=>{n?e.setSelectionAttribute(n.getAttributes()):e.removeSelectionAttribute(t)})}function Mh(e){e.preventDefault()}function Nh(e,t){const{nodeBefore:i,nodeAfter:n}=e;for(const e of t){const t=i?i.getAttribute(e):void 0;if((n?n.getAttribute(e):void 0)!==t)return!0}return!1}var Rh=/[\\^$.*+?()[\]{}|]/g,Oh=RegExp(Rh.source);var zh=function(e){return(e=Sn(e))&&Oh.test(e)?e.replace(Rh,"\\$&"):e};const Dh={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:"1/2",to:"½"},oneThird:{from:"1/3",to:"⅓"},twoThirds:{from:"2/3",to:"⅔"},oneForth:{from:"1/4",to:"¼"},threeQuarters:{from:"3/4",to:"¾"},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:Hh('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:Hh("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:Hh("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:Hh('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:Hh('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:Hh("'"),to:[null,"‚",null,"’"]}},Lh={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},Vh=["symbols","mathematical","typography","quotes"];function jh(e){return"string"==typeof e?new RegExp(`(${zh(e)})$`):e}function Bh(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function Fh(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function Hh(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function Uh(e,t,i,n){return n.createRange(Wh(e,t,i,!0,n),Wh(e,t,i,!1,n))}function Wh(e,t,i,n,o){let r=e.textNode||(n?e.nodeBefore:e.nodeAfter),s=null;for(;r&&r.getAttribute(t)==i;)s=r,r=n?r.previousSibling:r.nextSibling;return s?o.createPositionAt(s,n?"before":"after"):e}class qh extends Ze{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",(e,t)=>{t[1]={...t[1]};const i=t[1];i.batchType||(i.batchType="transparent")},{priority:"high"}),this.listenTo(e.data,"set",(e,t)=>{"transparent"===t[1].batchType&&this.clearStack()})}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,i={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:i}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,i){const n=this.editor.model,o=n.document,r=[],s=e.map(e=>e.getTransformedByOperations(i)),a=s.flat();for(const e of s){const t=e.filter(e=>e.root!=o.graveyard).filter(e=>!Yh(e,a));t.length&&($h(t),r.push(t[0]))}r.length&&n.change(e=>{e.setSelection(r,{backward:t})})}_undo(e,t){const i=this.editor.model,n=i.document;this._createdBatches.add(t);const o=e.operations.slice().filter(e=>e.isDocumentOperation);o.reverse();for(const e of o){const o=e.baseVersion+1,r=Array.from(n.history.getOperations(o)),s=tu([e.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const o of s)t.addOperation(o),i.applyOperation(o),n.history.setOperationAsUndone(e,o)}}}function $h(e){e.sort((e,t)=>e.start.isBefore(t.start)?-1:1);for(let t=1;tt!==e&&t.containsRange(e,!0))}class Gh extends qh{execute(e=null){const t=e?this._stack.findIndex(t=>t.batch==e):this._stack.length-1,i=this._stack.splice(t,1)[0],n=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(n,()=>{this._undo(i.batch,n);const e=this.editor.model.document.history.getOperations(i.batch.baseVersion);this._restoreSelection(i.selection.ranges,i.selection.isBackward,e),this.fire("revert",i.batch,n)}),this.refresh()}}class Kh extends qh{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(t,()=>{const i=e.batch.operations[e.batch.operations.length-1].baseVersion+1,n=this.editor.model.document.history.getOperations(i);this._restoreSelection(e.selection.ranges,e.selection.isBackward,n),this._undo(e.batch,t)}),this.refresh()}}class Qh extends Qe{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new Gh(e),this._redoCommand=new Kh(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(e,t)=>{const i=t[0];if(!i.isDocumentOperation)return;const n=i.batch,o=this._redoCommand._createdBatches.has(n),r=this._undoCommand._createdBatches.has(n);this._batchRegistry.has(n)||"transparent"==n.type&&!o&&!r||(o?this._undoCommand.addBatch(n):r||(this._undoCommand.addBatch(n),this._redoCommand.clearStack()),this._batchRegistry.add(n))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(e,t,i)=>{this._redoCommand.addBatch(i)}),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var Jh='',Zh='';class Xh extends Qe{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?Jh:Zh,o="ltr"==t.uiLanguageDirection?Zh:Jh;this._addButton("undo",i("Undo"),"CTRL+Z",n),this._addButton("redo",i("Redo"),"CTRL+Y",o)}_addButton(e,t,i,n){const o=this.editor;o.ui.componentFactory.add(e,r=>{const s=o.commands.get(e),a=new ed(r);return a.set({label:t,icon:n,keystroke:i,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",()=>{o.execute(e),o.editing.view.focus()}),a})}}class eg extends Qe{static get requires(){return[Qh,Xh]}static get pluginName(){return"Undo"}}class tg{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise((i,n)=>{t.onload=()=>{const e=t.result;this._data=e,i(e)},t.onerror=()=>{n("error")},t.onabort=()=>{n("aborted")},this._reader.readAsDataURL(e)})}abort(){this._reader.abort()}}Ke(tg,Ue);class ig extends Qe{static get pluginName(){return"FileRepository"}static get requires(){return[Cc]}init(){this.loaders=new Zi,this.loaders.on("add",()=>this._updatePendingAction()),this.loaders.on("remove",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0)}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return Object(l.b)("filerepository-no-upload-adapter"),null;const t=new ng(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then(e=>{this._loadersMap.set(e,t)}).catch(()=>{}),t.on("change:uploaded",()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e}),t.on("change:uploadTotal",()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e}),t}destroyLoader(e){const t=e instanceof ng?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach((e,i)=>{e===t&&this._loadersMap.delete(i)})}_updatePendingAction(){const e=this.editor.plugins.get(Cc);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,i=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(i(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",i)}}else e.remove(this._pendingAction),this._pendingAction=null}}Ke(ig,Ue);class ng{constructor(e,t){this.id=s(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new tg,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(e=>this._filePromiseWrapper?e:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new l.a("filerepository-read-wrong-status",this);return this.status="reading",this.file.then(e=>this._reader.read(e)).then(e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e}).catch(e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e})}upload(){if("idle"!=this.status)throw new l.a("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(e=>(this.uploadResponse=e,this.status="idle",e)).catch(e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e})}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise((i,n)=>{t.rejecter=n,t.isFulfilled=!1,e.then(e=>{t.isFulfilled=!0,i(e)}).catch(e=>{t.isFulfilled=!0,n(e)})}),t}}Ke(ng,Ue);class og extends Mc{constructor(e){super(e),this.buttonView=new ed(e),this._fileInputView=new rg(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class rg extends Mc{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}function sg(){let e=function(e){e=e.toLowerCase();const t=document.cookie.split(";");for(const i of t){const t=i.split("=");if(decodeURIComponent(t[0].trim().toLowerCase())===e)return decodeURIComponent(t[1])}return null}("ckCsrfToken");var t,i;return e&&40==e.length||(e=function(e){let t="";const i=new Uint8Array(e);window.crypto.getRandomValues(i);for(let e=0;e.5?n.toUpperCase():n}return t}(40),t="ckCsrfToken",i=e,document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(i)+";path=/"),e}class ag{constructor(e,t,i){this.loader=e,this.url=t,this.t=i}upload(){return this.loader.file.then(e=>new Promise((t,i)=>{this._initRequest(),this._initListeners(t,i,e),this._sendRequest(e)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.url,!0),e.responseType="json"}_initListeners(e,t,i){const n=this.xhr,o=this.loader,r=(0,this.t)("Cannot upload file:")+` ${i.name}.`;n.addEventListener("error",()=>t(r)),n.addEventListener("abort",()=>t()),n.addEventListener("load",()=>{const i=n.response;if(!i||!i.uploaded)return t(i&&i.error&&i.error.message?i.error.message:r);e({default:i.url})}),n.upload&&n.upload.addEventListener("progress",e=>{e.lengthComputable&&(o.uploadTotal=e.total,o.uploaded=e.loaded)})}_sendRequest(e){const t=new FormData;t.append("upload",e),t.append("ckCsrfToken",sg()),this.xhr.send(t)}}function lg(e,t,i,n){let o,r=null;"function"==typeof n?o=n:(r=e.commands.get(n),o=()=>{e.execute(n)}),e.model.document.on("change:data",(s,a)=>{if(r&&!r.isEnabled||!t.isEnabled)return;const l=Ns(e.model.document.selection.getRanges());if(!l.isCollapsed)return;if("transparent"==a.type)return;const c=Array.from(e.model.document.differ.getChanges()),d=c[0];if(1!=c.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const u=d.position.parent;if(u.is("element","codeBlock"))return;if(u.is("element","listItem")&&"function"!=typeof n&&!["numberedList","bulletedList","todoList"].includes(n))return;if(r&&!0===r.value)return;const h=u.getChild(0),g=e.model.createRangeOn(h);if(!g.containsRange(l)&&!l.end.isEqual(g.end))return;const m=i.exec(h.data.substr(0,l.end.offset));m&&e.model.enqueueChange(t=>{const i=t.createPositionAt(u,0),n=t.createPositionAt(u,m[0].length),r=new ba(i,n);if(!1!==o({match:m})){t.remove(r);const i=e.model.document.selection.getFirstRange(),n=t.createRangeIn(u);!u.isEmpty||n.isEqual(i)||n.containsRange(i,!0)||t.remove(u)}r.detach()})})}function cg(e,t,i,n){let o,r;i instanceof RegExp?o=i:r=i,r=r||(e=>{let t;const i=[],n=[];for(;null!==(t=o.exec(e))&&!(t&&t.length<4);){let{index:e,1:o,2:r,3:s}=t;const a=o+r+s;e+=t[0].length-a.length;const l=[e,e+o.length],c=[e+o.length+r.length,e+o.length+r.length+s.length];i.push(l),i.push(c),n.push([e+o.length,e+o.length+r.length])}return{remove:i,format:n}}),e.model.document.on("change:data",(i,o)=>{if("transparent"==o.type||!t.isEnabled)return;const s=e.model,a=s.document.selection;if(!a.isCollapsed)return;const l=Array.from(s.document.differ.getChanges()),c=l[0];if(1!=l.length||"insert"!==c.type||"$text"!=c.name||1!=c.length)return;const d=a.focus,u=d.parent,{text:h,range:g}=function(e,t){let i=e.start;return{text:Array.from(e.getItems()).reduce((e,n)=>!n.is("$text")&&!n.is("$textProxy")||n.getAttribute("code")?(i=t.createPositionAfter(n),""):e+n.data,""),range:t.createRange(i,e.end)}}(s.createRange(s.createPositionAt(u,0),d),s),m=r(h),f=dg(g.start,m.format,s),p=dg(g.start,m.remove,s);f.length&&p.length&&s.enqueueChange(e=>{if(!1!==n(e,f))for(const t of p.reverse())e.remove(t)})})}function dg(e,t,i){return t.filter(e=>void 0!==e[0]&&void 0!==e[1]).map(t=>i.createRange(e.getShiftedBy(t[0]),e.getShiftedBy(t[1])))}function ug(e,t){return(i,n)=>{if(!e.commands.get(t).isEnabled)return!1;const o=e.model.schema.getValidRanges(n,t);for(const e of o)i.setAttribute(t,!0,e);i.removeSelectionAttribute(t)}}class hg extends Ze{constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,i=t.document.selection,n=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(i.isCollapsed)n?e.setSelectionAttribute(this.attributeKey,!0):e.removeSelectionAttribute(this.attributeKey);else{const o=t.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const t of o)n?e.setAttribute(this.attributeKey,n,t):e.removeAttribute(this.attributeKey,t)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,i=e.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const e of i.getRanges())for(const i of e.getItems())if(t.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}class gg extends Qe{static get pluginName(){return"BoldEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"bold"}),e.model.schema.setAttributeProperties("bold",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"bold",view:"strong",upcastAlso:["b",e=>{const t=e.getStyle("font-weight");return t?"bold"==t||Number(t)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),e.commands.add("bold",new hg(e,"bold")),e.keystrokes.set("CTRL+B","bold")}}class mg extends Qe{static get pluginName(){return"BoldUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("bold",i=>{const n=e.commands.get("bold"),o=new ed(i);return o.set({label:t("Bold"),icon:'',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("bold"),e.editing.view.focus()}),o})}}class fg extends Qe{static get pluginName(){return"ItalicEditing"}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"italic"}),e.model.schema.setAttributeProperties("italic",{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:"italic",view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add("italic",new hg(e,"italic")),e.keystrokes.set("CTRL+I","italic")}}class pg extends Qe{static get pluginName(){return"ItalicUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("italic",i=>{const n=e.commands.get("italic"),o=new ed(i);return o.set({label:t("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("italic"),e.editing.view.focus()}),o})}}class bg extends Ze{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.schema,n=t.document.selection,o=Array.from(n.getSelectedBlocks()),r=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(r){const t=o.filter(e=>wg(e)||_g(i,e));this._applyQuote(e,t)}else this._removeQuote(e,o.filter(wg))})}_getValue(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!wg(e))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,i=Ns(e.getSelectedBlocks());return!!i&&_g(t,i)}_removeQuote(e,t){kg(e,t).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const i=e.createPositionBefore(t.start.parent);return void e.move(t,i)}t.end.isAtEnd||e.split(t.end);const i=e.createPositionAfter(t.end.parent);e.move(t,i)})}_applyQuote(e,t){const i=[];kg(e,t).reverse().forEach(t=>{let n=wg(t.start);n||(n=e.createElement("blockQuote"),e.wrap(t,n)),i.push(n)}),i.reverse().reduce((t,i)=>t.nextSibling==i?(e.merge(e.createPositionAfter(t)),t):i)}}function wg(e){return"blockQuote"==e.parent.name?e.parent:null}function kg(e,t){let i,n=0;const o=[];for(;n{const n=e.model.document.differ.getChanges();for(const e of n)if("insert"==e.type){const n=e.position.nodeAfter;if(!n)continue;if(n.is("element","blockQuote")&&n.isEmpty)return i.remove(n),!0;if(n.is("element","blockQuote")&&!t.checkChild(e.position,n))return i.unwrap(n),!0;if(n.is("element")){const e=i.createRangeIn(n);for(const n of e.getItems())if(n.is("element","blockQuote")&&!t.checkChild(i.createPositionBefore(n),n))return i.unwrap(n),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return i.remove(t),!0}return!1});const i=this.editor.editing.view.document,n=e.model.document.selection,o=e.commands.get("blockQuote");this.listenTo(i,"enter",(t,i)=>{if(!n.isCollapsed||!o.value)return;n.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"}),this.listenTo(i,"delete",(t,i)=>{if("backward"!=i.direction||!n.isCollapsed||!o.value)return;const r=n.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),i.preventDefault(),t.stop())},{context:"blockquote"})}}i(67);class yg extends Qe{static get pluginName(){return"BlockQuoteUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("blockQuote",i=>{const n=e.commands.get("blockQuote"),o=new ed(i);return o.set({label:t("Block quote"),icon:Tc.quote,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(o,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),o})}}class xg extends Qe{static get pluginName(){return"CKFinderUI"}init(){const e=this.editor,t=e.ui.componentFactory,i=e.t;t.add("ckfinder",t=>{const n=e.commands.get("ckfinder"),o=new ed(t);return o.set({label:i("Insert image or file"),icon:'',tooltip:!0}),o.bind("isEnabled").to(n),o.on("execute",()=>{e.execute("ckfinder"),e.editing.view.focus()}),o})}}class Ag extends Ze{constructor(e){super(e),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",()=>this.refresh(),{priority:"low"})}refresh(){const e=this.editor.commands.get("insertImage"),t=this.editor.commands.get("link");this.isEnabled=e.isEnabled||t.isEnabled}execute(){const e=this.editor,t=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=t&&"modal"!=t)throw new l.a("ckfinder-unknown-openermethod",e);const i=this.editor.config.get("ckfinder.options")||{};i.chooseFiles=!0;const n=i.onInit;i.language||(i.language=e.locale.uiLanguage),i.onInit=t=>{n&&n(t),t.on("files:choose",i=>{const n=i.data.files.toArray(),o=n.filter(e=>!e.isImage()),r=n.filter(e=>e.isImage());for(const t of o)e.execute("link",t.getUrl());const s=[];for(const e of r){const i=e.getUrl();s.push(i||t.request("file:getProxyUrl",{file:e}))}s.length&&Cg(e,s)}),t.on("file:choose:resizedImage",t=>{const i=t.data.resizedUrl;if(i)Cg(e,[i]);else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not obtain resized image URL."),{title:i("Selecting resized image failed"),namespace:"ckfinder"})}})},window.CKFinder[t](i)}}function Cg(e,t){if(e.commands.get("insertImage").isEnabled)e.execute("insertImage",{source:t});else{const t=e.plugins.get("Notification"),i=e.locale.t;t.showWarning(i("Could not insert image at the current position."),{title:i("Inserting image failed"),namespace:"ckfinder"})}}class Tg extends Qe{static get pluginName(){return"CKFinderEditing"}static get requires(){return[Rd,"LinkEditing"]}init(){const e=this.editor;if(!e.plugins.has("ImageBlockEditing")&&!e.plugins.has("ImageInlineEditing"))throw new l.a("ckfinder-missing-image-plugin",e);e.commands.add("ckfinder",new Ag(e))}}class Eg extends Qe{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",ig]}init(){const e=this.editor,t=e.plugins.get("CloudServices"),i=t.token,n=t.uploadUrl;i&&(this._uploadGateway=e.plugins.get("CloudServicesCore").createUploadGateway(i,n),e.plugins.get(ig).createUploadAdapter=e=>new Ig(this._uploadGateway,e))}}class Ig{constructor(e,t){this.uploadGateway=e,this.loader=t}upload(){return this.loader.file.then(e=>(this.fileUploader=this.uploadGateway.upload(e),this.fileUploader.on("progress",(e,t)=>{this.loader.uploadTotal=t.total,this.loader.uploaded=t.uploaded}),this.fileUploader.send()))}abort(){this.fileUploader.abort()}}class Pg extends Ze{refresh(){const e=this.editor.model,t=Ns(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&Sg(t,e.schema)}execute(e={}){const t=this.editor.model,i=t.document;t.change(n=>{const o=(e.selection||i.selection).getSelectedBlocks();for(const e of o)!e.is("element","paragraph")&&Sg(e,t.schema)&&n.rename(e,"paragraph")})}}function Sg(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class Mg extends Ze{execute(e){const t=this.editor.model;let i=e.position;t.change(e=>{const n=e.createElement("paragraph");if(!t.schema.checkChild(i.parent,n)){const o=t.schema.findAllowedParent(i,n);if(!o)return;i=e.split(i,o).position}t.insertContent(n,i),e.setSelection(n,"in")})}}class Ng extends Qe{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new Pg(e)),e.commands.add("insertParagraph",new Mg(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>Ng.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Ng.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class Rg extends Ze{constructor(e,t){super(e),this.modelElements=t}refresh(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some(t=>Og(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,i=t.document,n=e.value;t.change(e=>{const o=Array.from(i.selection.getSelectedBlocks()).filter(e=>Og(e,n,t.schema));for(const t of o)t.is("element",n)||e.rename(t,n)})}}function Og(e,t,i){return i.checkChild(e.parent,t)&&!i.isObject(e)}class zg extends Qe{static get pluginName(){return"HeadingEditing"}constructor(e){super(e),e.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Ng]}init(){const e=this.editor,t=e.config.get("heading.options"),i=[];for(const n of t)"paragraph"!==n.model&&(e.model.schema.register(n.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(n),i.push(n.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new Rg(e,i))}afterInit(){const e=this.editor,t=e.commands.get("enter"),i=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",(t,n)=>{const o=e.model.document.selection.getFirstPosition().parent;i.some(e=>o.is("element",e.model))&&!o.is("element","paragraph")&&0===o.childCount&&n.writer.rename(o,"paragraph")})}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:a.get("low")+1})}}i(13);class Dg extends Qe{static get pluginName(){return"HeadingUI"}init(){const e=this.editor,t=e.t,i=function(e){const t=e.t,i={Paragraph:t("Paragraph"),"Heading 1":t("Heading 1"),"Heading 2":t("Heading 2"),"Heading 3":t("Heading 3"),"Heading 4":t("Heading 4"),"Heading 5":t("Heading 5"),"Heading 6":t("Heading 6")};return e.config.get("heading.options").map(e=>{const t=i[e.title];return t&&t!=e.title&&(e.title=t),e})}(e),n=t("Choose heading"),o=t("Heading");e.ui.componentFactory.add("heading",t=>{const r={},s=new Zi,a=e.commands.get("heading"),l=e.commands.get("paragraph"),c=[a];for(const e of i){const t={type:"button",model:new Od({label:e.title,class:e.class,withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(l,"value"),t.model.set("commandName","paragraph"),c.push(l)):(t.model.bind("isOn").to(a,"value",t=>t===e.model),t.model.set({commandName:"heading",commandValue:e.model})),s.add(t),r[e.model]=e.title}const d=xd(t);return Cd(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:o}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(c,"isEnabled",(...e)=>e.some(e=>e)),d.buttonView.bind("label").to(a,"value",l,"value",(e,t)=>{const i=e||t&&"paragraph";return r[i]?r[i]:n}),this.listenTo(d,"execute",t=>{e.execute(t.source.commandName,t.source.commandValue?{value:t.source.commandValue}:void 0),e.editing.view.focus()}),d})}}class Lg extends Qe{static get requires(){return[Hd]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",t=>{(function(e){const t=e.getSelectedElement();return!(!t||!Nu(t))})(e.editing.view.document.selection)&&t.stop()},{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:i,getRelatedElement:n,balloonClassName:o="ck-toolbar-container"}){if(!i.length)return void Object(l.b)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,s=r.t,a=new pd(r.locale);if(a.ariaLabel=t||s("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.a("widget-toolbar-duplicated",this,{toolbarId:e});a.fillFromConfig(i,r.ui.componentFactory),this._toolbarDefinitions.set(e,{view:a,getRelatedElement:n,balloonClassName:o})}_updateToolbarsVisibility(){let e=0,t=null,i=null;for(const n of this._toolbarDefinitions.values()){const o=n.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&o)if(this.editor.ui.focusTracker.isFocused){const r=o.getAncestors().length;r>e&&(e=r,t=o,i=n)}else this._isToolbarVisible(n)&&this._hideToolbar(n);else this._isToolbarInBalloon(n)&&this._hideToolbar(n)}i&&this._showToolbar(i,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?Vg(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:jg(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);Vg(this.editor,t)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function Vg(e,t){const i=e.plugins.get("ContextualBalloon"),n=jg(e,t);i.updatePosition(n)}function jg(e,t){const i=e.editing.view,n=Ld.defaultPositions;return{target:i.domConverter.mapViewToDom(t),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,Bu]}}class Bg{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,i){const n=new Cs(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const i of t)if(e.classList.contains("ck-widget__resizer__handle-"+i))return i}(e),this._referenceCoordinates=function(e,t){const i=new Cs(e),n=t.split("-"),o={x:"right"==n[1]?i.right:i.left,y:"bottom"==n[0]?i.bottom:i.top};return o.x+=e.ownerDocument.defaultView.scrollX,o.y+=e.ownerDocument.defaultView.scrollY,o}(t,function(e){const t=e.split("-"),i={top:"bottom",bottom:"top",left:"right",right:"left"};return`${i[t[0]]}-${i[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=n.width,this.originalHeight=n.height,this.aspectRatio=n.width/n.height;const o=i.style.width;o&&o.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(o):this.originalWidthPercents=function(e,t){const i=e.parentElement,n=parseFloat(i.ownerDocument.defaultView.getComputedStyle(i).width);return t.width/n*100}(i,n)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}Ke(Bg,Ue);class Fg extends Mc{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",e=>e?"ck-orientation-"+e:"")],style:{display:e.if("_isVisible","none",e=>!e)}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",(e,t)=>null!==e&&null!==t),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",(t,i,n)=>"px"===e.unit?`${t}×${i}`:n+"%"),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",(e,t,i)=>t<50||i<50?"above-center":e)}_dismiss(){this.unbind(),this._isVisible=!1}}class Hg{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())},{priority:"high"}),this.on("change:isEnabled",()=>{this.isEnabled&&this.redraw()})}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change(i=>{const n=i.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const i=this.toDomElement(t);return e._appendHandles(i),e._appendSizeUI(i),e.on("change:isEnabled",(e,t,n)=>{i.style.display=n?"":"none"}),i.style.display=e.isEnabled?"":"none",i}));i.insert(i.createPositionAt(t,"end"),n),i.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=n})}begin(e){this.state=new Bg(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change(e=>{const i=this._options.unit||"%",n=("%"===i?t.widthPercents:t.width)+i;e.setStyle("width",n,this._options.viewElement)});const i=this._getHandleHost(),n=new Cs(i);t.handleHostWidth=Math.round(n.width),t.handleHostHeight=Math.round(n.height);const o=new Cs(i);t.width=Math.round(o.width),t.height=Math.round(o.height),this.redraw(n),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change(()=>{this._cleanup(),this._options.onCommit(t)})}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((i=t)&&i.ownerDocument&&i.ownerDocument.contains(i)))return;var i;const n=t.parentElement,o=this._getHandleHost(),r=this._viewResizerWrapper,s=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(n.isSameNode(o)){const t=e||new Cs(o);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[o.offsetWidth+"px",o.offsetHeight+"px",o.offsetLeft+"px",o.offsetTop+"px"];"same"!==ln(s,a)&&this._options.editor.editing.view.change(e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)})}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change(e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)})}_proposeNewSize(e){const t=this.state,i={x:(n=e).pageX,y:n.pageY};var n;const o=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(i.x+t.originalWidth),y:i.y-t.originalHeight-t._referenceCoordinates.y};o&&t.activeHandlePosition.endsWith("-right")&&(r.x=i.x-(t._referenceCoordinates.x+t.originalWidth)),o&&(r.x*=2);const s={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};s.dominant=s.width/t.aspectRatio>s.height?"width":"height",s.max=s[s.dominant];const a={width:s.width,height:s.height};return"width"==s.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const n of t)e.appendChild(new Nc({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(i=n,"ck-widget__resizer__handle-"+i)}}).render());var i}_appendSizeUI(e){this._sizeView=new Fg,this._sizeView.render(),e.appendChild(this._sizeView.element)}}Ke(Hg,Ue);i(70);Ke(class extends Qe{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=vr.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(cu),this._observer=Object.create(Mr),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const i=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=eh(i,200),this.on("change:visibleResizer",i),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())},{priority:"lowest"}),this._observer.listenTo(vr.window,"resize",this._redrawFocusedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",()=>{const e=n.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null})}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new Hg(e),i=this.editor.plugins;if(t.attach(),i.has("WidgetToolbarRepository")){const e=i.get("WidgetToolbarRepository");t.on("begin",()=>{e.forceDisabled("resize")},{priority:"lowest"}),t.on("cancel",()=>{e.clearForceDisabled("resize")},{priority:"highest"}),t.on("commit",()=>{e.clearForceDisabled("resize")},{priority:"highest"})}this._resizers.set(e.viewElement,t);const n=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(n)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const i=t.domTarget;Hg.isResizeHandle(i)&&(this._activeResizer=this._getResizerByHandle(i),this._activeResizer&&(this._activeResizer.begin(i),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}},Ue);class Ug extends Ze{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change(t=>{t.setAttribute("alt",e.newValue,o)})}}function Wg(e,t){const i=e.createEmptyElement("img"),n="imageBlock"===t?e.createContainerElement("figure",{class:"image"}):e.createContainerElement("span",{class:"image-inline"},{isAllowedInsideAttributeElement:!0});return e.insert(e.createPositionAt(n,0),i),n}function qg(e,t){if(e.plugins.has("ImageInlineEditing")!==e.plugins.has("ImageBlockEditing"))return{name:"img",attributes:{src:!0}};const i=e.plugins.get("ImageUtils");return e=>{if(!i.isInlineImageView(e)||!e.hasAttribute("src"))return null;return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:{name:!0,attributes:["src"]}}}function $g(e,t){const i=Ns(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class Yg extends Qe{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,r=o.document.selection;i=Gg(n,t||r,i),e={...Object.fromEntries(r.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change(n=>{const s=n.createElement(i,e);return t||"imageInline"==i||(t=ju(r,o)),o.insertContent(s,t),s.parent?(n.setSelection(s,"on"),s):null})}getClosestSelectedImageWidget(e){const t=e.getSelectedElement();if(t&&this.isImageWidget(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&this.isImageWidget(i))return i;i=i.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==Gg(e,t)){const i=function(e,t){const i=ju(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return Ru(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&Nu(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function Gg(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?$g(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class Kg extends Qe{static get requires(){return[Yg]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new Ug(this.editor))}}i(72),i(7);class Qg extends Mc{constructor(e){super(e);const t=this.locale.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(t("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(t("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._focusables=new Sc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),Ic(this)}render(){super.render(),this.keystrokes.listenTo(this.element),Pc({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)})}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new Md(this.locale,Nd);return t.label=e("Text alternative"),t}}function Jg(e){const t=e.editing.view,i=Ld.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.viewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}class Zg extends Qe{static get requires(){return[Hd]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",i=>{const n=e.commands.get("imageTextAlternative"),o=new ed(i);return o.set({label:t("Change image text alternative"),icon:Tc.lowVision,tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",()=>{this._showForm()}),o})}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new Qg(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this._form.keystrokes.set("Esc",(e,t)=>{this._hideForm(!0),t()}),this.listenTo(e.ui,"update",()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=Jg(e);t.updatePosition(i)}}(e):this._hideForm(!0)}),Ec({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:Jg(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class Xg extends Qe{static get requires(){return[Kg,Zg]}static get pluginName(){return"ImageTextAlternative"}}function em(e,t){return e=>{e.on("attribute:srcset:"+t,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function tm(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,r=n.mapper.toViewElement(i.item),s=e.findViewImgElement(r);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class im extends Or{observe(e){this.listenTo(e,"load",(e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)},{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class nm extends Ze{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&Object(l.b)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&Object(l.b)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=en(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})})}}class om extends Qe{static get requires(){return[Yg]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(im),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new nm(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class rm extends Ze{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change(e=>{const r=Array.from(t.markers).filter(e=>e.getRange().containsItem(n)),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const a=e.createRangeOn(s);for(const t of r){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(a,!0):a;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}}):null}}class sm extends Qe{static get requires(){return[om,Yg,wu]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new rm(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageBlock",view:(e,{writer:t})=>Wg(t,"imageBlock")}),i.for("editingDowncast").elementToElement({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(Wg(i,"imageBlock"),i,t("image widget"))}),i.for("downcast").add(tm(n,"imageBlock","src")).add(tm(n,"imageBlock","alt")).add(em(n,"imageBlock")),i.for("upcast").elementToElement({view:qg(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",{src:e.getAttribute("src")})}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!o.hasAttribute("src")||!n.consumable.test(o,{name:!0}))return;const r=Ns(n.convertItem(o,i.modelCursor).modelRange.getItems());r&&(n.convertChildren(i.viewItem,r),n.updateConversionResult(r,i))}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isInlineImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageBlock"===$g(t.schema,l)){const e=new du(i.document),t=s.map(t=>e.createElement("figure",{class:"image"},t));r.content=e.createDocumentFragment(t)}})}}i(11);class am extends Qe{static get requires(){return[sm,Zu,Xg]}static get pluginName(){return"ImageBlock"}}class lm extends Qe{static get requires(){return[om,Yg,wu]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{isObject:!0,isInline:!0,allowWhere:"$text",allowAttributes:["alt","src","srcset"]}),t.addChildCheck((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new rm(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToElement({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(Wg(i,"imageInline"),i,t("image widget"))}),i.for("downcast").add(tm(n,"imageInline","src")).add(tm(n,"imageInline","alt")).add(em(n,"imageInline")),i.for("upcast").elementToElement({view:qg(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",{src:e.getAttribute("src")})})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isBlockImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageInline"===$g(t.schema,l)){const e=new du(i.document),t=s.map(t=>1===t.childCount?(Array.from(t.getAttributes()).forEach(i=>e.setAttribute(...i,n.findViewImgElement(t))),t.getChild(0)):t);r.content=e.createDocumentFragment(t)}})}}class cm extends Qe{static get requires(){return[lm,Zu,Xg]}static get pluginName(){return"ImageInline"}}function dm(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}function um(e,t){const i=t.getFirstPosition().findAncestor("caption");return i&&e.isBlockImage(i.parent)?i:null}class hm extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils");if(!e.plugins.has(sm))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=um(t,i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!dm(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)})}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const r=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=r||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageUtils");let r,s=i.getSelectedElement();s?r=dm(s):(r=um(o,i),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class gm extends Qe{static get requires(){return[Yg]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new hm(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.conversion.for("upcast").elementToElement({view:e=>function(e,t){return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}(i,e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!i.isBlockImage(e.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),$d({view:t,element:r,text:n("Enter image caption"),keepOnFocus:!0});const s=Vu(r,o);return Du(s,o,(e,t,i)=>i.addClass(en(t.classes),e),(e,t,i)=>i.removeClass(en(t.classes),e)),s}}),e.editing.mapper.on("modelToViewPosition",mm(t)),e.data.mapper.on("modelToViewPosition",mm(t))}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.commands.get("imageTypeInline"),n=e.commands.get("imageTypeBlock"),o=e=>{if(!e.return)return;const{oldElement:i,newElement:n}=e.return;if(!i)return;if(t.isBlockImage(i)){const e=dm(i);if(e)return void this._saveCaption(n,e)}const o=this._getSavedCaption(i);o&&this._saveCaption(n,o)};i&&this.listenTo(i,"execute",o,{priority:"low"}),n&&this.listenTo(n,"execute",o,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Js.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}function mm(e){return(t,i)=>{const n=i.modelPosition,o=n.parent;if(!o.is("element","imageBlock"))return;const r=i.mapper.toViewElement(o);i.viewPosition=e.createPositionAt(r,n.offset+1)}}class fm extends Qe{static get requires(){return[Yg]}static get pluginName(){return"ImageCaptionUI"}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",o=>{const r=e.commands.get("toggleImageCaption"),s=new ed(o);return s.set({icon:Tc.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",e=>n(e?"Toggle caption off":"Toggle caption on")),this.listenTo(s,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const n=um(i,e.model.document.selection);if(n){const i=e.editing.mapper.toViewElement(n);t.scrollToTheSelection(),t.change(e=>{e.addClass("image__caption_highlighted",i)})}}),s})}}i(76);class pm extends Ze{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]}))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change(t=>{const o=e.value;let r=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,r)&&(this.editor.execute(n.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",r):t.setAttribute("imageStyle",o,r)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:bm,objectInline:wm,objectLeft:km,objectRight:_m,objectCenter:vm,objectBlockLeft:ym,objectBlockRight:xm}=Tc,Am={inline:{name:"inline",title:"In line",icon:wm,modelElements:["imageInline"],isDefault:!0},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:km,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"},alignBlockLeft:{name:"alignBlockLeft",title:"Left aligned image",icon:ym,modelElements:["imageBlock"],className:"image-style-block-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:vm,modelElements:["imageBlock"],className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:_m,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"},alignBlockRight:{name:"alignBlockRight",title:"Right aligned image",icon:xm,modelElements:["imageBlock"],className:"image-style-block-align-right"},block:{name:"block",title:"Centered image",icon:vm,modelElements:["imageBlock"],isDefault:!0},side:{name:"side",title:"Side image",icon:_m,modelElements:["imageBlock"],className:"image-style-side"}},Cm={full:bm,left:ym,right:xm,center:vm,inlineLeft:km,inlineRight:_m,inline:wm},Tm=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Em(e){Object(l.b)("image-style-configuration-definition-invalid",e)}var Im={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map(e=>function(e){e="string"==typeof e?Am[e]?{...Am[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Am[e.name],e);"string"==typeof e.icon&&(e.icon=Cm[e.icon]||e.icon);return e}(e)).filter(t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Em({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some(e=>o.includes(e)))return Object(l.b)("image-style-missing-dependency",{style:e,missingPlugins:n.map(e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}(t,e))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...Tm]:[]},warnInvalidStyle:Em,DEFAULT_OPTIONS:Am,DEFAULT_ICONS:Cm,DEFAULT_DROPDOWN_DEFINITIONS:Tm};function Pm(e,t){for(const i of t)if(i.name===e)return i}class Sm extends Qe{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Yg]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Im,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new pm(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(r=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Pm(t.attributeNewValue,r),o=Pm(t.attributeOldValue,r),s=i.mapper.toViewElement(t.item),a=i.writer;o&&a.removeClass(o.className,s),n&&a.addClass(n.className,s)});var r;const s=function(e){const t={imageInline:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,r=Ns(i.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle"))for(const e of t[r.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,r)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(Yg),n=new Map(this.normalizedStyles.map(e=>[e.name,e]));t.registerPostFixer(e=>{let o=!1;for(const r of t.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let t="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const a=n.get(s);a&&a.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o})}}i(78);class Mm extends Qe{static get requires(){return[Sm]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=Nm(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=Nm([...t.filter(w),...Im.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,n=>{let o;const{defaultItem:r,items:s,title:a}=e,l=s.filter(e=>t.find(({name:t})=>Rm(t)===e)).map(e=>{const t=i.create(e);return e===r&&(o=t),t});s.length!==l.length&&Im.warnInvalidStyle({dropdown:e});const c=xd(n,sd),d=c.buttonView;return Ad(c,l),d.set({label:Om(a,o.label),class:null,tooltip:!0}),d.bind("icon").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return t<0?o.icon:l[t].icon}),d.bind("label").toMany(l,"isOn",(...e)=>{const t=e.findIndex(Z);return Om(a,t<0?o.label:l[t].label)}),d.bind("isOn").toMany(l,"isOn",(...e)=>e.some(Z)),d.bind("class").toMany(l,"isOn",(...e)=>e.some(Z)?"ck-splitbutton_flatten":null),d.on("execute",()=>{l.some(({isOn:e})=>e)?c.isOpen=!c.isOpen:o.fire("execute")}),c.bind("isEnabled").toMany(l,"isEnabled",(...e)=>e.some(Z)),c})}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(Rm(t),i=>{const n=this.editor.commands.get("imageStyle"),o=new ed(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",e=>e===t),o.on("execute",this._executeCommand.bind(this,t)),o})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function Nm(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function Rm(e){return"imageStyle:"+e}function Om(e,t){return(e?e+": ":"")+t}function zm(e){const t=e.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${t.join("|")})$`)}function Dm(e){return new Promise((t,i)=>{const n=e.getAttribute("src");fetch(n).then(e=>e.blob()).then(e=>{const i=Lm(e,n),o=i.replace("image/",""),r=new File([e],"image."+o,{type:i});t(r)}).catch(e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise((t,i)=>{const n=vr.document.createElement("img");n.addEventListener("load",()=>{const e=vr.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob(e=>e?t(e):i())}),n.addEventListener("error",()=>i()),n.src=e})}(e).then(t=>{const i=Lm(t,e),n=i.replace("image/","");return new File([t],"image."+n,{type:i})})}(n).then(t).catch(i):i(e))})}function Lm(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Vm extends Qe{static get pluginName(){return"ImageUploadUI"}init(){const e=this.editor,t=e.t,i=i=>{const n=new og(i),o=e.commands.get("uploadImage"),r=e.config.get("image.upload.types"),s=zm(r);return n.set({acceptedType:r.map(e=>"image/"+e).join(","),allowMultipleFiles:!0}),n.buttonView.set({label:t("Insert image"),icon:Tc.image,tooltip:!0}),n.buttonView.bind("isEnabled").to(o),n.on("done",(t,i)=>{const n=Array.from(i).filter(e=>s.test(e.type));n.length&&e.execute("uploadImage",{file:n})}),n};e.ui.componentFactory.add("uploadImage",i),e.ui.componentFactory.add("imageUpload",i)}}i(80),i(82),i(84);class jm extends Qe{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/svg+xml;utf8,"+encodeURIComponent('')}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",(...e)=>this.uploadStatusChange(...e)),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",(...e)=>this.uploadStatusChange(...e))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,r=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),a=n.plugins.get(ig),l=r?t.attributeNewValue:null,c=this.placeholder,d=n.editing.mapper.toViewElement(o),u=i.writer;if("reading"==l)return Bm(d,u),void Fm(s,c,d,u);if("uploading"==l){const e=a.loaders.get(r);return Bm(d,u),void(e?(Hm(d,u),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",(e,t,i)=>{n.change(e=>{e.setStyle("width",i+"%",o)})})}(d,u,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,d,u,e)):Fm(s,c,d,u))}"complete"==l&&a.loaders.get(r)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout(()=>{i.change(e=>e.remove(e.createRangeOn(n)))},3e3)}(d,u,n.editing.view),function(e,t){Wm(e,t,"progressBar")}(d,u),Hm(d,u),function(e,t){t.removeClass("ck-appear",e)}(d,u)}}function Bm(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function Fm(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),Um(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function Hm(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),Wm(e,t,"placeholder")}function Um(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function Wm(e,t,i){const n=Um(e,i);n&&t.remove(t.createRangeOn(n))}class qm extends Ze{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=en(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const r=i.getSelectedElement();if(t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);this._uploadImage(e,o,t)}else this._uploadImage(e,o)})}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(ig).createLoader(e),r=n.plugins.get("ImageUtils");o&&r.insertImage({...t,uploadId:o.id},i)}}class $m extends Qe{static get requires(){return[ig,Rd,wu,Yg]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(ig),o=e.plugins.get("ImageUtils"),r=zm(e.config.get("image.upload.types")),s=new qm(e);e.commands.add("uploadImage",s),e.commands.add("imageUpload",s),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",(t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter(e=>!!e&&r.test(e.type));o.length&&(t.stop(),e.model.change(t=>{i.targetRanges&&t.setSelection(i.targetRanges.map(t=>e.editing.mapper.toModelRange(t))),e.model.enqueueChange("default",()=>{e.execute("uploadImage",{file:o})})}))}),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(t,i)=>{const r=Array.from(e.editing.view.createRangeIn(i.content)).filter(e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(o,e.item)&&!e.item.getAttribute("uploadProcessed")).map(e=>({promise:Dm(e.item),imageElement:e.item}));if(!r.length)return;const s=new du(e.editing.view.document);for(const e of r){s.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(s.setAttribute("src","",e.imageElement),s.setAttribute("uploadId",t.id,e.imageElement))}}),e.editing.view.document.on("dragover",(e,t)=>{t.preventDefault()}),t.on("change",()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,r="$graveyard"==t.position.root.rootName;for(const t of Ym(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(r?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}}),this.on("uploadComplete",(e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change(e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(ig),r=t.plugins.get(Rd),s=t.plugins.get("ImageUtils"),a=this._uploadImageElements;return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","reading",a.get(e.id))}),e.read().then(()=>{const n=e.upload(),o=a.get(e.id);if(Po.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n})}return i.enqueueChange("transparent",e=>{e.setAttribute("uploadStatus","uploading",o)}),n}).then(t=>{i.enqueueChange("transparent",i=>{const n=a.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})}),l()}).catch(t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&r.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange("transparent",t=>{t.remove(a.get(e.id))}),l()});function l(){i.enqueueChange("transparent",t=>{const i=a.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),a.delete(e.id)}),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter(e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0}).map(t=>`${e[t]} ${t}w`).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function Ym(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter(e=>i.isImage(e.item)).map(e=>e.item)}class Gm extends Qe{static get pluginName(){return"IndentEditing"}init(){const e=this.editor;e.commands.add("indent",new et(e)),e.commands.add("outdent",new et(e))}}var Km='',Qm='';class Jm extends Qe{static get pluginName(){return"IndentUI"}init(){const e=this.editor,t=e.locale,i=e.t,n="ltr"==t.uiLanguageDirection?Km:Qm,o="ltr"==t.uiLanguageDirection?Qm:Km;this._defineButton("indent",i("Increase indent"),n),this._defineButton("outdent",i("Decrease indent"),o)}_defineButton(e,t,i){const n=this.editor;n.ui.componentFactory.add(e,o=>{const r=n.commands.get(e),s=new ed(o);return s.set({label:t,icon:i,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",()=>{n.execute(e),n.editing.view.focus()}),s})}}class Zm{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(e=>this._definitions.add(e)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const r=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,r);for(const t in e.styles)n.setStyle(t,e.styles[t],r);n.setCustomProperty("link",!0,r),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(i.mapper.toViewRange(t.range),r):n.unwrap(i.mapper.toViewRange(t.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),r=Array.from(o.getChildren()).find(e=>"a"===e.name);for(const e of this._definitions){const n=gn(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,r);e.classes&&i.addClass(e.classes,r);for(const t in e.styles)i.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,r);e.classes&&i.removeClass(e.classes,r);for(const t in e.styles)i.removeStyle(t,r)}}})}}}var Xm=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:zn(e,t,i)},ef=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var tf=function(e){return ef.test(e)};var nf=function(e){return e.split("")},of="[\\ud800-\\udfff]",rf="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",sf="\\ud83c[\\udffb-\\udfff]",af="[^\\ud800-\\udfff]",lf="(?:\\ud83c[\\udde6-\\uddff]){2}",cf="[\\ud800-\\udbff][\\udc00-\\udfff]",df="(?:"+rf+"|"+sf+")"+"?",uf="[\\ufe0e\\ufe0f]?"+df+("(?:\\u200d(?:"+[af,lf,cf].join("|")+")[\\ufe0e\\ufe0f]?"+df+")*"),hf="(?:"+[af+rf+"?",rf,lf,cf,of].join("|")+")",gf=RegExp(sf+"(?="+sf+")|"+hf+uf,"g");var mf=function(e){return e.match(gf)||[]};var ff=function(e){return tf(e)?mf(e):nf(e)};var pf=function(e){return function(t){t=Sn(t);var i=tf(t)?ff(t):void 0,n=i?i[0]:t.charAt(0),o=i?Xm(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase");const bf=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,wf=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,kf=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,_f=/^((\w+:(\/{2,})?)|(\W))/i;function vf(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function yf(e){return function(e){return e.replace(bf,"").match(wf)}(e=String(e))?e:"#"}function xf(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function Af(e,t){const i=(n=e,kf.test(n)?"mailto:":t);var n;const o=!!i&&!_f.test(e);return e&&o?i+e:e}class Cf extends Ze{constructor(e){super(e),this.manualDecorators=new Zi,this.automaticDecorators=new Zm}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||Ns(t.getSelectedBlocks());xf(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,o=[],r=[];for(const e in t)t[e]?o.push(e):r.push(e);i.change(t=>{if(n.isCollapsed){const s=n.getFirstPosition();if(n.hasAttribute("linkHref")){const a=Uh(s,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,a),o.forEach(e=>{t.setAttribute(e,!0,a)}),r.forEach(e=>{t.removeAttribute(e,a)}),t.setSelection(t.createPositionAfter(a.end.nodeBefore))}else if(""!==e){const r=gn(n.getAttributes());r.set("linkHref",e),o.forEach(e=>{r.set(e,!0)});const{end:a}=i.insertContent(t.createText(e,r),s);t.setSelection(a)}["linkHref",...o,...r].forEach(e=>{t.removeSelectionAttribute(e)})}else{const s=i.schema.getValidRanges(n.getRanges(),"linkHref"),a=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&a.push(t.createRangeOn(e));const l=a.slice();for(const e of s)this._isRangeToUpdate(e,a)&&l.push(e);for(const i of l)t.setAttribute("linkHref",e,i),o.forEach(e=>{t.setAttribute(e,!0,i)}),r.forEach(e=>{t.removeAttribute(e,i)})}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return xf(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class Tf extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();xf(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change(e=>{const o=i.isCollapsed?[Uh(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of o)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)})}}class Ef{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:r}){this.id=e,this.set("value"),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}Ke(Ef,Ue);i(86);const If=/^(https?:)?\/\//;class Pf extends Qe{static get pluginName(){return"LinkEditing"}static get requires(){return[Ih,Ah,wu]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:vf}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>vf(yf(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new Cf(e)),e.commands.add("unlink",new Tf(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach(e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e)),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:"link"+pf(i)});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter(e=>"automatic"===e.mode)),this._enableManualDecorators(t.filter(e=>"manual"===e.mode));e.plugins.get(Ih).registerAttribute("linkHref"),function(e,t,i,n){const o=e.editing.view,r=new Set;o.document.registerPostFixer(o=>{const s=e.model.document.selection;let a=!1;if(s.hasAttribute(t)){const l=Uh(s.getFirstPosition(),t,s.getAttribute(t),e.model),c=e.editing.mapper.toViewRange(l);for(const e of c.getItems())e.is("element",i)&&!e.hasClass(n)&&(o.addClass(n,e),r.add(e),a=!0)}return a}),e.conversion.for("editingDowncast").add(e=>{function t(){o.change(e=>{for(const t of r.values())e.removeClass(n,t),r.delete(t)})}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})})}(e,"linkHref","a","ck-link_selected"),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:"automatic",callback:e=>If.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach(e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new Ef(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i})=>{if(t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change(t=>{Sf(t,Nf(e.schema))}))},{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,t=e.model;e.editing.view.addObserver(cu);let i=!1;this.listenTo(e.editing.view.document,"mousedown",()=>{i=!0}),this.listenTo(e.editing.view.document,"selectionChange",()=>{if(!i)return;i=!1;const e=t.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const n=e.getFirstPosition(),o=Uh(n,"linkHref",e.getAttribute("linkHref"),t);(n.isTouching(o.start)||n.isTouching(o.end))&&t.change(e=>{Sf(e,Nf(t.schema))})})}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",()=>{n=!0},{priority:"high"}),this.listenTo(e.model,"deleteContent",()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:Mf(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),o=i.nodeAfter;if(!o)return!1;if(!o.is("$text"))return!1;if(!o.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(o===r)return!0;return Uh(i,"linkHref",o.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))},{priority:"high"}),this.listenTo(e.model,"insertContent",(t,[o])=>{n=!1,Mf(e)&&i&&(e.model.change(e=>{for(const[t,n]of i)e.setAttribute(t,n,o)}),i=null)},{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let o=!1,r=!1;this.listenTo(n.document,"delete",(e,t)=>{r=t.domEvent.keyCode===No.backspace},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{o=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=Uh(e,"linkHref",n,t);o=r.containsPosition(e)||r.end.isEqual(e)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{r&&(r=!1,o||e.model.enqueueChange(e=>{Sf(e,Nf(t.schema))}))},{priority:"low"})}}function Sf(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function Mf(e){return e.plugins.get("Input").isInput(e.model.change(e=>e.batch))}function Nf(e){return e.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}i(88);class Rf extends Mc{constructor(e,t){super(e);const i=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(t),this.children=this._createFormChildren(t.manualDecorators),this._focusables=new Sc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const n=["ck","ck-link-form","ck-responsive-form"];t.manualDecorators.length&&n.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:n,tabindex:"-1"},children:this.children}),Ic(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((e,t)=>(e[t.name]=t.isOn,e),{})}render(){super.render(),Pc({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new Md(this.locale,Nd);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new td(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",(e,t)=>void 0===t&&void 0===e?i.defaultValue:e),n.on("execute",()=>{i.set("value",!n.isOn)}),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new Mc;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map(e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}})),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}i(90);class Of extends Mc{constructor(e){super(e);const t=e.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(t("Unlink"),'',"unlink"),this.editButtonView=this._createButton(t("Edit link"),Tc.pencil,"edit"),this.set("href"),this._focusables=new Sc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new ed(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new ed(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",e=>e&&yf(e)),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",e=>e||i("This link has no URL")),e.bind("isEnabled").to(this,"href",e=>!!e),e.template.tag="a",e.template.eventListeners={},e}}class zf extends Qe{static get requires(){return[Hd]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(lu),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(Hd),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:"link-ui",view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:"link-ui",view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new Of(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",()=>{this._addFormView()}),this.listenTo(t,"unlink",()=>{e.execute("unlink"),this._hideUI()}),t.keystrokes.set("Esc",(e,t)=>{this._hideUI(),t()}),t.keystrokes.set("Ctrl+K",(e,t)=>{this._addFormView(),t()}),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new Rf(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",e=>!e),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",()=>{const{value:t}=n.urlInputView.fieldView.element,o=Af(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(e,t)=>{this._closeFormView(),t()}),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set("Ctrl+K",(e,i)=>{i(),t.isEnabled&&this._showUI(!0)}),e.ui.componentFactory.add("link",e=>{const n=new ed(e);return n.isEnabled=!0,n.label=i("Link"),n.icon='',n.keystroke="Ctrl+K",n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",e=>!!e),this.listenTo(n,"execute",()=>this._showUI(!0)),n})}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set("Tab",(e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Ec({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=r();const o=()=>{const e=this._getSelectedLinkElement(),t=r();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find(e=>e.is("element"))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has("link-ui")){const t=Array.from(this.editor.editing.mapper.markerNameToElements("link-ui")),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&Nu(i))return Df(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Df(i.start),o=Df(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has("link-ui"))t.updateMarker("link-ui",{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition(({item:t})=>!e.schema.isContent(t),{boundaries:i});t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has("link-ui")&&e.change(e=>{e.removeMarker("link-ui")})}}function Df(e){return e.getAncestors().find(e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t})}const Lf=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[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]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Vf extends Qe{static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new Eh(e.model,e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=jf(e.substr(0,e.length-1));return t?{url:t}:void 0}),i=e.plugins.get("Input");t.on("matched:data",(t,n)=>{const{batch:o,range:r,url:s}=n;if(!i.isInput(o))return;const a=r.end.getShiftedBy(-1),l=a.getShiftedBy(-s.length),c=e.model.createRange(l,a);this._applyAutoLink(s,c)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=Th(e,t),o=jf(i);if(o){const e=t.createRange(n.end.getShiftedBy(-o.length),n.end);this._applyAutoLink(o,e)}}_applyAutoLink(e,t){const i=this.editor.model;this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange(i=>{const n=this.editor.config.get("link.defaultProtocol"),o=Af(e,n);i.setAttribute("linkHref",o,t)})}}function jf(e){const t=Lf.exec(e);return t?t[2]:null}class Bf extends Ze{constructor(e,t){super(e),this.type=t}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document,n=Array.from(i.selection.getSelectedBlocks()).filter(e=>Hf(e,t.schema)),o=void 0!==e.forceValue?!e.forceValue:this.value;t.change(e=>{if(o){let t=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;t&&"listItem"==t.name&&0!==t.getAttribute("listIndent");){const e=t.getAttribute("listIndent");e=i;)r>o.getAttribute("listIndent")&&(r=o.getAttribute("listIndent")),o.getAttribute("listIndent")==r&&e[t?"unshift":"push"](o),o=o[t?"previousSibling":"nextSibling"]}}function Hf(e,t){return t.checkChild(e.parent,"listItem")&&!t.isObject(e)}class Uf extends Ze{constructor(e,t){super(e),this._indentBy="forward"==t?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=e.document;let i=Array.from(t.selection.getSelectedBlocks());e.change(e=>{const t=i[i.length-1];let n=t.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>t.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const t of i){const i=t.getAttribute("listIndent")+this._indentBy;i<0?e.rename(t,"paragraph"):e.setAttribute("listIndent",i,t)}this.fire("_executeCleanup",i)})}_checkEnabled(){const e=Ns(this.editor.model.document.selection.getSelectedBlocks());if(!e||!e.is("element","listItem"))return!1;if(this._indentBy>0){const t=e.getAttribute("listIndent"),i=e.getAttribute("listType");let n=e.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=t;){if(n.getAttribute("listIndent")==t)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}function Wf(e,t){const i=t.mapper,n=t.writer,o="numbered"==e.getAttribute("listType")?"ol":"ul",r=function(e){const t=e.createContainerElement("li");return t.getFillerOffset=Qf,t}(n),s=n.createContainerElement(o,null);return n.insert(n.createPositionAt(s,0),r),i.bindElements(e,r),r}function qf(e,t,i,n){const o=t.parent,r=i.mapper,s=i.writer;let a=r.toViewPosition(n.createPositionBefore(e));const l=Gf(e.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:e.getAttribute("listIndent")}),c=e.previousSibling;if(l&&l.getAttribute("listIndent")==e.getAttribute("listIndent")){const e=r.toViewElement(l);a=s.breakContainer(s.createPositionAfter(e))}else if(c&&"listItem"==c.name){a=r.toViewPosition(n.createPositionAt(c,"end"));const e=r.findMappedViewAncestor(a),t=function(e){for(const t of e.getChildren())if("ul"==t.name||"ol"==t.name)return t;return null}(e);a=t?s.createPositionBefore(t):s.createPositionAt(e,"end")}else a=r.toViewPosition(n.createPositionBefore(e));if(a=Yf(a),s.insert(a,o),c&&"listItem"==c.name){const e=r.toViewElement(c),i=s.createRange(s.createPositionAt(e,0),a).getWalker({ignoreElementEnd:!0});for(const e of i)if(e.item.is("element","li")){const n=s.breakContainer(s.createPositionBefore(e.item)),o=e.item.parent,r=s.createPositionAt(t,"end");$f(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(o),r),i.position=n}}else{const i=o.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const t of i.getChildren()){const i=r.toModelElement(t);if(!(i&&i.getAttribute("listIndent")>e.getAttribute("listIndent")))break;n=t}n&&(s.breakContainer(s.createPositionAfter(n)),s.move(s.createRangeOn(n.parent),s.createPositionAt(t,"end")))}}$f(s,o,o.nextSibling),$f(s,o.previousSibling,o)}function $f(e,t,i){return!t||!i||"ul"!=t.name&&"ol"!=t.name||t.name!=i.name||t.getAttribute("class")!==i.getAttribute("class")?null:e.mergeContainers(e.createPositionAfter(t))}function Yf(e){return e.getLastMatchingPosition(e=>e.item.is("uiElement"))}function Gf(e,t){const i=!!t.sameIndent,n=!!t.smallerIndent,o=t.listIndent;let r=e;for(;r&&"listItem"==r.name;){const e=r.getAttribute("listIndent");if(i&&o==e||n&&o>e)return r;r="forward"===t.direction?r.nextSibling:r.previousSibling}return null}function Kf(e,t,i,n){e.ui.componentFactory.add(t,o=>{const r=e.commands.get(t),s=new ed(o);return s.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",()=>{e.execute(t),e.editing.view.focus()}),s})}function Qf(){const e=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||e?0:no.call(this)}function Jf(e){return(t,i,n)=>{const o=n.consumable;if(!o.test(i.item,"insert")||!o.test(i.item,"attribute:listType")||!o.test(i.item,"attribute:listIndent"))return;o.consume(i.item,"insert"),o.consume(i.item,"attribute:listType"),o.consume(i.item,"attribute:listIndent");const r=i.item;qf(r,Wf(r,n),n,e)}}function Zf(e,t,i){if(!i.consumable.consume(t.item,"attribute:listType"))return;const n=i.mapper.toViewElement(t.item),o=i.writer;o.breakContainer(o.createPositionBefore(n)),o.breakContainer(o.createPositionAfter(n));const r=n.parent,s="numbered"==t.attributeNewValue?"ol":"ul";o.rename(s,r)}function Xf(e,t,i){const n=i.mapper.toViewElement(t.item).parent,o=i.writer;$f(o,n,n.nextSibling),$f(o,n.previousSibling,n);for(const e of t.item.getChildren())i.consumable.consume(e,"insert")}function ep(e,t,i){if("listItem"!=t.item.name){let e=i.mapper.toViewPosition(t.range.start);const n=i.writer,o=[];for(;("ul"==e.parent.name||"ol"==e.parent.name)&&(e=n.breakContainer(e),"li"==e.parent.name);){const t=e,i=n.createPositionAt(e.parent,"end");if(!t.isEqual(i)){const e=n.remove(n.createRange(t,i));o.push(e)}e=n.createPositionAfter(e.parent)}if(o.length>0){for(let t=0;t0){const t=$f(n,i,i.nextSibling);t&&t.parent==i&&e.offset--}}$f(n,e.nodeBefore,e.nodeAfter)}}}function tp(e,t,i){const n=i.mapper.toViewPosition(t.position),o=n.nodeBefore,r=n.nodeAfter;$f(i.writer,o,r)}function ip(e,t,i){if(i.consumable.consume(t.viewItem,{name:!0})){const e=i.writer,n=e.createElement("listItem"),o=function(e){let t=0,i=e.parent;for(;i;){if(i.is("element","li"))t++;else{const e=i.previousSibling;e&&e.is("element","li")&&t++}i=i.parent}return t}(t.viewItem);e.setAttribute("listIndent",o,n);const r=t.viewItem.parent&&"ol"==t.viewItem.parent.name?"numbered":"bulleted";if(e.setAttribute("listType",r,n),!i.safeInsert(n,t.modelCursor))return;const s=function(e,t,i){const{writer:n,schema:o}=i;let r=n.createPositionAfter(e);for(const s of t)if("ul"==s.name||"ol"==s.name)r=i.convertItem(s,r).modelCursor;else{const t=i.convertItem(s,n.createPositionAt(e,"end")),a=t.modelRange.start.nodeAfter;a&&a.is("element")&&!o.checkChild(e,a.name)&&(e=t.modelCursor.parent.is("element","listItem")?t.modelCursor.parent:ap(t.modelCursor),r=n.createPositionAfter(e))}return r}(n,t.viewItem.getChildren(),i);t.modelRange=e.createRange(t.modelCursor,s),i.updateConversionResult(n,t)}}function np(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){const e=Array.from(t.viewItem.getChildren());for(const t of e){!(t.is("element","li")||cp(t))&&t._remove()}}}function op(e,t,i){if(i.consumable.test(t.viewItem,{name:!0})){if(0===t.viewItem.childCount)return;const e=[...t.viewItem.getChildren()];let i=!1,n=!0;for(const t of e)i&&!cp(t)&&t._remove(),t.is("$text")?(n&&(t._data=t.data.trimStart()),t.nextSibling&&!cp(t.nextSibling)||(t._data=t.data.trimEnd())):cp(t)&&(i=!0),n=!1}}function rp(e){return(t,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const t=i.mapper.toViewElement(n),o=t.getAncestors().find(cp),r=e.createPositionAt(t,0).getWalker();for(const e of r){if("elementStart"==e.type&&e.item.is("element","li")){i.viewPosition=e.previousPosition;break}if("elementEnd"==e.type&&e.item==o){i.viewPosition=e.nextPosition;break}}}}}function sp(e,[t,i]){let n,o=t.is("documentFragment")?t.getChild(0):t;if(n=i?this.createSelection(i):this.document.selection,o&&o.is("element","listItem")){const e=n.getFirstPosition();let t=null;if(e.parent.is("element","listItem")?t=e.parent:e.nodeBefore&&e.nodeBefore.is("element","listItem")&&(t=e.nodeBefore),t){const e=t.getAttribute("listIndent");if(e>0)for(;o&&o.is("element","listItem");)o._setAttribute("listIndent",o.getAttribute("listIndent")+e),o=o.nextSibling}}}function ap(e){const t=new Zs({startPosition:e});let i;do{i=t.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function lp(e,t,i,n,o,r){const s=Gf(t.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:e,foo:"b"}),a=o.mapper,l=o.writer,c=s?s.getAttribute("listIndent"):null;let d;if(s)if(c==e){const e=a.toViewElement(s).parent;d=l.createPositionAfter(e)}else{const e=r.createPositionAt(s,"end");d=a.toViewPosition(e)}else d=i;d=Yf(d);for(const e of[...n.getChildren()])cp(e)&&(d=l.move(l.createRangeOn(e),d).end,$f(l,e,e.nextSibling),$f(l,e.previousSibling,e))}function cp(e){return e.is("element","ol")||e.is("element","ul")}class dp extends Qe{static get pluginName(){return"ListEditing"}static get requires(){return[xu,Eu]}init(){const e=this.editor;e.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const t=e.data,i=e.editing;var n;e.model.document.registerPostFixer(t=>function(e,t){const i=e.document.differ.getChanges(),n=new Map;let o=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)r(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(t.removeAttribute("listIndent",i),o=!0),i.hasAttribute("listType")&&(t.removeAttribute("listType",i),o=!0),i.hasAttribute("listStyle")&&(t.removeAttribute("listStyle",i),o=!0);for(const t of Array.from(e.createRangeIn(i)).filter(e=>e.item.is("element","listItem")))r(t.previousPosition)}r(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?r(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&r(n.range.start);for(const e of n.values())s(e),a(e);return o;function r(e){const t=e.nodeBefore;if(t&&t.is("element","listItem")){let e=t;if(n.has(e))return;for(let t=e.previousSibling;t&&t.is("element","listItem");t=e.previousSibling)if(e=t,n.has(e))return;n.set(t,e)}else{const t=e.nodeAfter;t&&t.is("element","listItem")&&n.set(t,t)}}function s(e){let i=0,n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(r>i){let s;null===n?(n=r-i,s=i):(n>r&&(n=r),s=r-n),t.setAttribute("listIndent",s,e),o=!0}else n=null,i=e.getAttribute("listIndent")+1;e=e.nextSibling}}function a(e){let i=[],n=null;for(;e&&e.is("element","listItem");){const r=e.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const n=i[r];e.getAttribute("listType")!=n&&(t.setAttribute("listType",n,e),o=!0)}else i[r]=e.getAttribute("listType");n=e,e=e.nextSibling}}}(e.model,t)),i.mapper.registerViewToModelLength("li",up),t.mapper.registerViewToModelLength("li",up),i.mapper.on("modelToViewPosition",rp(i.view)),i.mapper.on("viewToModelPosition",(n=e.model,(e,t)=>{const i=t.viewPosition,o=i.parent,r=t.mapper;if("ul"==o.name||"ol"==o.name){if(i.isAtEnd){const e=r.toModelElement(i.nodeBefore),o=r.getModelLength(i.nodeBefore);t.modelPosition=n.createPositionBefore(e).getShiftedBy(o)}else{const e=r.toModelElement(i.nodeAfter);t.modelPosition=n.createPositionBefore(e)}e.stop()}else if("li"==o.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const s=r.toModelElement(o);let a=1,l=i.nodeBefore;for(;l&&cp(l);)a+=r.getModelLength(l),l=l.previousSibling;t.modelPosition=n.createPositionBefore(s).getShiftedBy(a),e.stop()}})),t.mapper.on("modelToViewPosition",rp(i.view)),e.conversion.for("editingDowncast").add(t=>{t.on("insert",ep,{priority:"high"}),t.on("insert:listItem",Jf(e.model)),t.on("attribute:listType:listItem",Zf,{priority:"high"}),t.on("attribute:listType:listItem",Xf,{priority:"low"}),t.on("attribute:listIndent:listItem",function(e){return(t,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const o=n.mapper.toViewElement(i.item),r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s);r.remove(l),a&&a.nextSibling&&$f(r,a,a.nextSibling),lp(i.attributeOldValue+1,i.range.start,l.start,o,n,e),qf(i.item,o,n,e);for(const e of i.item.getChildren())n.consumable.consume(e,"insert")}}(e.model)),t.on("remove:listItem",function(e){return(t,i,n)=>{const o=n.mapper.toViewPosition(i.position).getLastMatchingPosition(e=>!e.item.is("element","li")).nodeAfter,r=n.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,l=r.createRangeOn(s),c=r.remove(l);a&&a.nextSibling&&$f(r,a,a.nextSibling);lp(n.mapper.toModelElement(o).getAttribute("listIndent")+1,i.position,l.start,o,n,e);for(const e of r.createRangeIn(c).getItems())n.mapper.unbindViewElement(e);t.stop()}}(e.model)),t.on("remove",tp,{priority:"low"})}),e.conversion.for("dataDowncast").add(t=>{t.on("insert",ep,{priority:"high"}),t.on("insert:listItem",Jf(e.model))}),e.conversion.for("upcast").add(e=>{e.on("element:ul",np,{priority:"high"}),e.on("element:ol",np,{priority:"high"}),e.on("element:li",op,{priority:"high"}),e.on("element:li",ip)}),e.model.on("insertContent",sp,{priority:"high"}),e.commands.add("numberedList",new Bf(e,"numbered")),e.commands.add("bulletedList",new Bf(e,"bulleted")),e.commands.add("indentList",new Uf(e,"forward")),e.commands.add("outdentList",new Uf(e,"backward"));const o=i.view.document;this.listenTo(o,"enter",(e,t)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"}),this.listenTo(o,"delete",(e,t)=>{if("backward"!==t.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const o=n.parent;if("listItem"!==o.name)return;o.previousSibling&&"listItem"===o.previousSibling.name||(this.editor.execute("outdentList"),t.preventDefault(),e.stop())},{context:"li"});const r=e=>(t,i)=>{this.editor.commands.get(e).isEnabled&&(this.editor.execute(e),i())};e.keystrokes.set("Tab",r("indentList")),e.keystrokes.set("Shift+Tab",r("outdentList"))}afterInit(){const e=this.editor.commands,t=e.get("indent"),i=e.get("outdent");t&&t.registerChildCommand(e.get("indentList")),i&&i.registerChildCommand(e.get("outdentList"))}}function up(e){let t=1;for(const i of e.getChildren())if("ul"==i.name||"ol"==i.name)for(const e of i.getChildren())t+=up(e);return t}class hp extends Qe{static get pluginName(){return"ListUI"}init(){const e=this.editor.t;Kf(this.editor,"numberedList",e("Numbered List"),''),Kf(this.editor,"bulletedList",e("Bulleted List"),'')}}function gp(e,t){return e=>{e.on("attribute:url:media",i)};function i(i,n,o){if(!o.consumable.consume(n.item,i.name))return;const r=n.attributeNewValue,s=o.writer,a=o.mapper.toViewElement(n.item),l=[...a.getChildren()].find(e=>e.getCustomProperty("media-content"));s.remove(l);const c=e.getMediaViewElement(s,r,t);s.insert(s.createPositionAt(a,0),c)}}function mp(e,t,i,n){const o=e.createContainerElement("figure",{class:"media"});return e.insert(e.createPositionAt(o,0),t.getMediaViewElement(e,i,n)),o}function fp(e){const t=e.getSelectedElement();return t&&t.is("element","media")?t:null}function pp(e,t,i){e.change(n=>{const o=n.createElement("media",{url:t});e.insertContent(o,i),n.setSelection(o,"on")})}class bp extends Ze{refresh(){const e=this.editor.model,t=e.document.selection,i=fp(t);this.value=i?i.getAttribute("url"):null,this.isEnabled=function(e){const t=e.getSelectedElement();return!!t&&"media"===t.name}(t)||function(e,t){let i=ju(e,t).start.parent;i.isEmpty&&!t.schema.isLimit(i)&&(i=i.parent);return t.schema.checkChild(i,"media")}(t,e)}execute(e){const t=this.editor.model,i=t.document.selection,n=fp(i);n?t.change(t=>{t.setAttribute("url",e,n)}):pp(t,e,ju(i,t))}}class wp{constructor(e,t){const i=t.providers,n=t.extraProviders||[],o=new Set(t.removeProviders),r=i.concat(n).filter(e=>{const t=e.name;return t?!o.has(t):(Object(l.b)("media-embed-no-provider-name",{provider:e}),!1)});this.locale=e,this.providerDefinitions=r}hasMedia(e){return!!this._getMedia(e)}getMediaViewElement(e,t,i){return this._getMedia(t).getViewElement(e,i)}_getMedia(e){if(!e)return new kp(this.locale);e=e.trim();for(const t of this.providerDefinitions){const i=t.html,n=en(t.url);for(const t of n){const n=this._getUrlMatches(e,t);if(n)return new kp(this.locale,e,n,i)}}return null}_getUrlMatches(e,t){let i=e.match(t);if(i)return i;let n=e.replace(/^https?:\/\//,"");return i=n.match(t),i||(n=n.replace(/^www\./,""),i=n.match(t),i||null)}}class kp{constructor(e,t,i,n){this.url=this._getValidUrl(t),this._t=e.t,this._match=i,this._previewRenderer=n}getViewElement(e,t){const i={};let n;if(t.renderForEditingView||t.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(i["data-oembed-url"]=this.url),t.renderForEditingView&&(i.class="ck-media__wrapper");const o=this._getPreviewHtml(t);n=e.createRawElement("div",i,(function(e){e.innerHTML=o}))}else this.url&&(i.url=this.url),n=e.createEmptyElement(t.elementName,i);return e.setCustomProperty("media-content",!0,n),n}_getPreviewHtml(e){return this._previewRenderer?this._previewRenderer(this._match):this.url&&e.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const e=new Xc,t=new Zc;e.text=this._t("Open media in new tab"),t.content='',t.viewBox="0 0 64 42";return new Nc({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]},e]}]}).render().outerHTML}_getValidUrl(e){return e?e.match(/^https?/)?e:"https://"+e:null}}i(92);class _p extends Qe{static get pluginName(){return"MediaEmbedEditing"}constructor(e){super(e),e.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:e=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:e=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)/,/^youtube\.com\/embed\/([\w-]+)/,/^youtu\.be\/([\w-]+)/],html:e=>`
`},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:e=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new wp(e.locale,e.config.get("mediaEmbed"))}init(){const e=this.editor,t=e.model.schema,i=e.t,n=e.conversion,o=e.config.get("mediaEmbed.previewsInData"),r=e.config.get("mediaEmbed.elementName"),s=this.registry;e.commands.add("mediaEmbed",new bp(e)),t.register("media",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["url"]}),n.for("dataDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const i=e.getAttribute("url");return mp(t,s,i,{elementName:r,renderMediaPreview:i&&o})}}),n.for("dataDowncast").add(gp(s,{elementName:r,renderMediaPreview:o})),n.for("editingDowncast").elementToElement({model:"media",view:(e,{writer:t})=>{const n=e.getAttribute("url");return function(e,t,i){return t.setCustomProperty("media",!0,e),Ru(e,t,{label:i})}(mp(t,s,n,{elementName:r,renderForEditingView:!0}),t,i("media widget"))}}),n.for("editingDowncast").add(gp(s,{elementName:r,renderForEditingView:!0})),n.for("upcast").elementToElement({view:e=>["oembed",r].includes(e.name)&&e.getAttribute("url")?{name:!0}:null,model:(e,{writer:t})=>{const i=e.getAttribute("url");if(s.hasMedia(i))return t.createElement("media",{url:i})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(e,{writer:t})=>{const i=e.getAttribute("data-oembed-url");if(s.hasMedia(i))return t.createElement("media",{url:i})}})}}const vp=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class yp extends Qe{static get requires(){return[ah,eg]}static get pluginName(){return"AutoMediaEmbed"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",()=>{const e=t.selection.getFirstRange(),i=ec.fromPosition(e.start);i.stickiness="toPrevious";const n=ec.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",()=>{this._embedMediaBetweenPositions(i,n),i.detach(),n.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(vr.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedMediaBetweenPositions(e,t){const i=this.editor,n=i.plugins.get(_p).registry,o=new ba(e,t),r=o.getWalker({ignoreElementEnd:!0});let s="";for(const e of r)e.item.is("$textProxy")&&(s+=e.item.data);if(s=s.trim(),!s.match(vp))return void o.detach();if(!n.hasMedia(s))return void o.detach();i.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=ec.fromPosition(e),this._timeoutId=vr.window.setTimeout(()=>{i.model.change(e=>{let t;this._timeoutId=null,e.remove(o),o.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert),pp(i.model,s,t),this._positionToInsert.detach(),this._positionToInsert=null})},100)):o.detach()}}i(94);class xp extends Mc{constructor(e,t){super(t);const i=t.t;this.focusTracker=new Rs,this.keystrokes=new Os,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),Tc.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",e=>!!e),this.cancelButtonView=this._createButton(i("Cancel"),Tc.cancel,"ck-button-cancel","cancel"),this._focusables=new Sc,this._focusCycler=new id({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=e,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),Ic(this)}render(){super.render(),Pc({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element);const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e),this.listenTo(this.urlInputView.element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"})}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(e){this.urlInputView.fieldView.element.value=e.trim()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const e=this.locale.t,t=new Md(this.locale,Nd),i=t.fieldView;return this._urlInputViewInfoDefault=e("Paste the media URL in the input."),this._urlInputViewInfoTip=e("Tip: Paste the URL into the content to embed faster."),t.label=e("Media URL"),t.infoText=this._urlInputViewInfoDefault,i.on("input",()=>{t.infoText=i.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=i.element.value.trim()}),t}_createButton(e,t,i,n){const o=new ed(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}}class Ap extends Qe{static get requires(){return[_p]}static get pluginName(){return"MediaEmbedUI"}init(){const e=this.editor,t=e.commands.get("mediaEmbed"),i=e.plugins.get(_p).registry;e.ui.componentFactory.add("mediaEmbed",n=>{const o=xd(n),r=new xp(function(e,t){return[t=>{if(!t.url.length)return e("The URL must not be empty.")},i=>{if(!t.hasMedia(i.url))return e("This media URL is not supported.")}]}(e.t,i),e.locale);return this._setUpDropdown(o,r,t,e),this._setUpForm(o,r,t),o})}_setUpDropdown(e,t,i){const n=this.editor,o=n.t,r=e.buttonView;function s(){n.editing.view.focus(),e.isOpen=!1}e.bind("isEnabled").to(i),e.panelView.children.add(t),r.set({label:o("Insert media"),icon:'',tooltip:!0}),r.on("open",()=>{t.disableCssTransitions(),t.url=i.value||"",t.urlInputView.fieldView.select(),t.focus(),t.enableCssTransitions()},{priority:"low"}),e.on("submit",()=>{t.isValid()&&(n.execute("mediaEmbed",t.url),s())}),e.on("change:isOpen",()=>t.resetFormStatus()),e.on("cancel",()=>s())}_setUpForm(e,t,i){t.delegate("submit","cancel").to(e),t.urlInputView.bind("value").to(i,"value"),t.urlInputView.bind("isReadOnly").to(i,"isEnabled",e=>!e)}}i(96);function Cp(e,t){if(!e.childCount)return;const i=new du(e.document),n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),o=[];for(const e of i)if("elementStart"===e.type&&n.match(e.item)){const t=Ip(e.item);o.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return o}(e,i);if(!n.length)return;let o=null,r=1;n.forEach((e,s)=>{const a=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const i=t.element.previousSibling;if(!i)return!0;return n=i,!(n.is("element","ol")||n.is("element","ul"));var n}(n[s-1],e),l=a?null:n[s-1],c=(u=e,(d=l)?u.indent-d.indent:u.indent-1);var d,u;if(a&&(o=null,r=1),!o||0!==c){const n=function(e,t){const i=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),n=/mso-level-number-format:([^;]{0,100});/gi,o=i.exec(t);let r="decimal",s="ol";if(o&&o[1]){const t=n.exec(o[1]);if(t&&t[1]&&(r=t[1].trim(),s="bullet"!==r&&"image"!==r?"ol":"ul"),"bullet"===r){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const i=t._data;if("o"===i)return"circle";if("·"===i)return"disc";if("§"===i)return"square";return null}(e.element);t&&(r=t)}}return{type:s,style:Tp(r)}}(e,t);if(o){if(e.indent>r){const e=o.getChild(o.childCount-1),t=e.getChild(e.childCount-1);o=Ep(n,t,i),r+=1}else if(e.indente.indexOf(t)>-1)?r.push(i):i.getAttribute("src")||r.push(i)}for(const e of r)i.remove(e)}(function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i){const t=e.item,i=t.previousSibling&&t.previousSibling.name||null;n.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==i&&o.push(e.item.getAttribute("id"))}return o}(e,i),e,i),function(e,t){const i=t.createRangeIn(e),n=new mn({name:/v:(.+)/}),o=[];for(const e of i)n.match(e.item)&&o.push(e.item);for(const e of o)t.remove(e)}(e,i);const n=function(e,t){const i=t.createRangeIn(e),n=new mn({name:"img"}),o=[];for(const e of i)n.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&o.push(e.item);return o}(e,i);n.length&&function(e,t,i){if(e.length===t.length)for(let o=0;oString.fromCharCode(parseInt(e,16))).join(""))}`;i.setAttribute("src",r,e[o])}var n}(n,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,i=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),n=e.match(i),o=[];if(n)for(const e of n){let i=!1;e.includes("\\pngblip")?i="image/png":e.includes("\\jpegblip")&&(i="image/jpeg"),i&&o.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:i})}return o}(t),i)}const Np=//i,Rp=/xmlns:o="urn:schemas-microsoft-com/i;class Op{constructor(e){this.document=e}isActive(e){return Np.test(e)||Rp.test(e)}execute(e){const{body:t,stylesString:i}=e._parsedData;Cp(t,i),Mp(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function zp(e){return e.replace(/(\s+)<\/span>/g,(e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length))}function Dp(e,t){const i=new DOMParser,n=function(e){return zp(zp(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(e){const t=e.indexOf("");if(t<0)return e;const i=e.indexOf("",t+"".length);return e.substring(0,t+"".length)+(i>=0?e.substring(i):"")}(e=e.replace(/ + + + + + + + + NURGUL-{{ this.page.meta_title }} + + + + {% styles %} + + + +{% if user %} + + + + {% flash %} +

+ {{ message }} +

+ {% endflash %} + + {% partial 'seller/mobile-menu' %} + + {% partial 'seller/top-bar' %} + +
+ + {% partial 'seller/side-menu' %} + +
+ {% page %} +
+
+ + +
+
Dark Mode
+
+
+ + + + + + + {% framework extras %} + {% scripts %} + + + +{% else %} + +{% flash %} +

+ {{ message }} +

+{% endflash %} + +{% partial 'seller/login-page' %} + +{% endif %} + + \ No newline at end of file diff --git a/themes/nurgul/meta/menus/aside-menu.yaml b/themes/nurgul/meta/menus/aside-menu.yaml new file mode 100755 index 0000000..dce6541 --- /dev/null +++ b/themes/nurgul/meta/menus/aside-menu.yaml @@ -0,0 +1,84 @@ +items: + - + title: 'Baş Sahypa' + nesting: null + type: cms-page + url: null + code: '' + reference: seller/home + cmsPage: null + replace: null + viewBag: + locale: + ru: + title: '' + url: '' + isHidden: '0' + cssClass: home + isExternal: '0' + - + title: Harytlar + nesting: null + type: cms-page + url: null + code: '' + reference: seller/products + cmsPage: null + replace: null + viewBag: + locale: + ru: + title: '' + url: '' + isHidden: '0' + cssClass: shopping-bag + isExternal: '0' + items: + - + title: 'Haryt Sanawy' + nesting: null + type: cms-page + url: null + code: '' + reference: seller/products + cmsPage: null + replace: null + viewBag: + locale: + ru: + title: '' + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: 'Täze Haryt' + type: url + url: /seller/product/add + code: '' + viewBag: + locale: + ru: + title: '' + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Sargytlar + nesting: null + type: cms-page + url: null + code: '' + reference: seller/orders + cmsPage: null + replace: null + viewBag: + locale: + ru: + title: '' + url: '' + isHidden: '0' + cssClass: layers + isExternal: '0' +name: aside-menu diff --git a/themes/nurgul/pages/seller-crud-product.htm b/themes/nurgul/pages/seller-crud-product.htm new file mode 100755 index 0000000..5e32117 --- /dev/null +++ b/themes/nurgul/pages/seller-crud-product.htm @@ -0,0 +1,20 @@ +title = "seller/crud-product" +url = "/seller/product/:type/:id?" +meta_title = "Haryt gosh" +layout = "seller-master" +== +param('type'); + $this['id'] = $this->param('id'); + +} +?> +== +{% if type == 'add' %} + {% partial "seller/prod-create" %} +{% else %} + {% partial "seller/prod-update" %} +{% endif %} \ No newline at end of file diff --git a/themes/nurgul/pages/seller/create/product.htm b/themes/nurgul/pages/seller/create/product.htm new file mode 100755 index 0000000..568374b --- /dev/null +++ b/themes/nurgul/pages/seller/create/product.htm @@ -0,0 +1,5 @@ +title = "seller/create/product" +url = "/seller/create/product" +layout = "seller-master" +meta_title = "Täze Haryt" +== \ No newline at end of file diff --git a/themes/nurgul/pages/seller/home.htm b/themes/nurgul/pages/seller/home.htm new file mode 100755 index 0000000..190891e --- /dev/null +++ b/themes/nurgul/pages/seller/home.htm @@ -0,0 +1,81 @@ +url = "/seller-home" +layout = "seller-master" +title = "Seller/home" +meta_title = "Seller Panel" +== +
+
+
+ +
+ +
+
+
+
+
+ +
+
33%
+
+
+
4.710
+
Item Sales
+
+
+
+
+
+
+
+ +
+
2%
+
+
+
3.721
+
New Orders
+
+
+
+
+
+
+
+ +
+
12%
+
+
+
2.149
+
Total Products
+
+
+
+
+
+
+
+ +
+
22%
+
+
+
152.040
+
Unique Visitor
+
+
+
+
+
+ + +
+
+ +
\ No newline at end of file diff --git a/themes/nurgul/pages/seller/orders.htm b/themes/nurgul/pages/seller/orders.htm new file mode 100755 index 0000000..44959ad --- /dev/null +++ b/themes/nurgul/pages/seller/orders.htm @@ -0,0 +1,5 @@ +title = "seller/Orders" +url = "/seller/orders" +meta_title = "Sargytlar" +layout = "seller-master" +== \ No newline at end of file diff --git a/themes/nurgul/pages/seller/products.htm b/themes/nurgul/pages/seller/products.htm new file mode 100755 index 0000000..b557236 --- /dev/null +++ b/themes/nurgul/pages/seller/products.htm @@ -0,0 +1,69 @@ +title = "seller/Products" +url = "/seller/products" +meta_title = "Harytlar" +layout = "seller-master" +== + +
+

+ Product Grid +

+ +
+
+ Add New Product + + +
+
+ + +
+
+
+ + + {% partial "seller/loader" loader_id="loader_seller" %} + +
+ + +
+ + + + + +
+
+ + +{% partial "sellerApi/getProducts" id="seller" limit="6" %} diff --git a/themes/nurgul/partials/seller/loader.htm b/themes/nurgul/partials/seller/loader.htm new file mode 100755 index 0000000..5c267dd --- /dev/null +++ b/themes/nurgul/partials/seller/loader.htm @@ -0,0 +1,4 @@ +
+ +
Harytlar Ýüklenýär...
+
\ No newline at end of file diff --git a/themes/nurgul/partials/seller/login-page.htm b/themes/nurgul/partials/seller/login-page.htm new file mode 100755 index 0000000..fb64fcb --- /dev/null +++ b/themes/nurgul/partials/seller/login-page.htm @@ -0,0 +1,70 @@ + + +
+
+ + + + +
+ +
+

+ Içeri Gir +

+
Shift Global Logistics Platform
+ {{ form_ajax('onSignin') }} +
+ + +
+
+ + +
+
+ + +
+ {{ form_close() }} + +
+ + +
+ +
+
+ + + + + + + + + {% scripts %} + {% framework extras %} + diff --git a/themes/nurgul/partials/seller/mobile-menu.htm b/themes/nurgul/partials/seller/mobile-menu.htm new file mode 100755 index 0000000..b800135 --- /dev/null +++ b/themes/nurgul/partials/seller/mobile-menu.htm @@ -0,0 +1,167 @@ + +
+
+ + Midone - HTML Admin Template + + +
+
+ + +
+
+ \ No newline at end of file diff --git a/themes/nurgul/partials/seller/prod-card.htm b/themes/nurgul/partials/seller/prod-card.htm new file mode 100755 index 0000000..92b5eca --- /dev/null +++ b/themes/nurgul/partials/seller/prod-card.htm @@ -0,0 +1,23 @@ +
+
+
+
+ Midone - HTML Admin Template + + + +
{{name}} Smartphone & Tablet
+
+
+
Bahasy: {{price}}
+
Remaining Stock: 101
+
Status: Active
+
+
+ +
+
diff --git a/themes/nurgul/partials/seller/prod-create.htm b/themes/nurgul/partials/seller/prod-create.htm new file mode 100755 index 0000000..14834eb --- /dev/null +++ b/themes/nurgul/partials/seller/prod-create.htm @@ -0,0 +1,44 @@ +
+

+ {{'product.create.title'|_}} +

+ +
+
+ +
+ +
+ {{ form_ajax('onCreateSellerProd') }} + +
+ +
+ + +
+ + +
+ +
+ {{'order.form.cancel.btn'|_}} + +
+ {{ form_close() }} +
+ +
+
+ + + + +{% put scripts %} + + + +{% endput %} diff --git a/themes/nurgul/partials/seller/prod-update.htm b/themes/nurgul/partials/seller/prod-update.htm new file mode 100755 index 0000000..88fd56e --- /dev/null +++ b/themes/nurgul/partials/seller/prod-update.htm @@ -0,0 +1,154 @@ +
+

+ {{'seller.product.update.title'|_}} +

+ +
+
+ +
+ +
+ {{ form_ajax('onUpdateSellerProd') }} +
+ + +
+
+
+ + +
+
+ + +
+ +
+
+
+ + +
+
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
+
+ +
+ +
TMT
+
+
+ + +
+ +
+ +
TMT
+
+
+ +
+ +
+ + +
+ + +
+ {{'order.form.cancel.btn'|_}} + +
+ {{ form_close() }} +
+ +
+
+ + + + +{% put scripts %} + + + + + + +{% endput %} diff --git a/themes/nurgul/partials/seller/side-menu.htm b/themes/nurgul/partials/seller/side-menu.htm new file mode 100755 index 0000000..c3cb4a7 --- /dev/null +++ b/themes/nurgul/partials/seller/side-menu.htm @@ -0,0 +1,48 @@ + + + \ No newline at end of file diff --git a/themes/nurgul/partials/seller/top-bar.htm b/themes/nurgul/partials/seller/top-bar.htm new file mode 100755 index 0000000..57c7dc4 --- /dev/null +++ b/themes/nurgul/partials/seller/top-bar.htm @@ -0,0 +1,283 @@ +{% put styles %} + +{% endput %} + +
+
+ + + + + + + +
+ + + +
+ + + + + + + +
+
+ diff --git a/themes/nurgul/partials/sellerApi/getProducts.htm b/themes/nurgul/partials/sellerApi/getProducts.htm new file mode 100755 index 0000000..4cc6d25 --- /dev/null +++ b/themes/nurgul/partials/sellerApi/getProducts.htm @@ -0,0 +1,38 @@ +{% put scripts %} + + +{% endput %}

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≤wk{D#Z8^0t?W+Ad1j}VtW)^0Cf#u&ng zZwaOg%*nn$Z$ablmj_>VH=mH}k3o^0dNW^5C;9OBV#b#dI!uFi!dI;f%vx!AGb>1K zDz8%9_H3gMPJY`e*Y%-t+GX*rpMy8PcXeKy38)Isc5j^1;gHy+T|x((5&sQf)*#7p zuE$@KJMy^Ol|peep{ZF_HB#0CFlQ*6#lpy~rY3UM3cXPMKJQkGbD^({dj2Xn%Kq6j zj6N%7^)cXjXRUFqzKMZb1pTjbx4$n`?F5`wZQaD_vZSurm`0&q&N|!g4tDzK>|csc z&bg*Ehg(MF3UrANQzvQU55{dm1xs!)(dR_;F$=+l;nCq9!K;!w@yY5RxE?BMX+`@X~cym4vZ zNTnY8ZC4h}VUq$4rP3>F9H+&n(DEkrNbBgTn6*?LOOHV)PUjFyYO^Qg|9wI0Kg;8C zZUP$Eo~nvHGEH&+2>&VzoP67U3I7Bmz5>F(2W_DKO-qiOj-u#4;(zJ>Bp_D}f9d{M zYm{Eb0lGh>$+u0WLpO)m3sVV4p7_C9$~~|2Re#JY0ej%s@K_<4I5+5U#QGPRDV|HF z8Kmi2^p7WGKB0~i4dUeXdEo{RNZu*P(S}8J(eC)_7ma!1jC(2N7Z~LucFoz0Q@Njv zsxQQI(ayfsArz3wYo|TTv{i6q1dMxeytG_&G}%fSztdTCEo~wuaN9OS8-TiqCb9&_sli%UH4y;UY-rpA*gF5TP zUfAEP4}mRTo7-FxOBABHM&}7Wo^}?IS~3(awE6lSn>J^3>wxgC>aZ$dL12W7$2P3^ z^IxUU>Y_VU`q{sCth!875_;*(j9S;=kE>qXX!?mAt4m@Pj9C%usaq@CS+{|xB%e4L zNX~nU*w%&hg!ZF;156mV*I8nH zQ=sdd`u9@Z8=S*Z${eLcK~@#lmaTF9%$X6&VET3Iy01m^cajdt;vbZ z&l`iR5E*(C14VwC8_Wr=M%@eQo`~lr{KbQ2`EeqlEHt_0` zbRO|I2+{Qqu(q>an)}wf!>U$?3vq{7JUy4Zm)kuVMUox&g&9uAu+V$KJoTSIAdKH}#BOA5i5}UlLJE4XH^e0%PF~m9Ji+5soi$?2jsGh)F$4;@4`Im?tiUgkZ?_1CH|O_`Zg$FF;#T`eov9YYM)iYp7*x?b{HNo>M@WW$z@?jZ8ZMtAmJ}G}-UBj}_le<+$@n|G=nMZHPoRSo`%2w4#myuMNt z)!`>$eT{=p8oz0(Uul@7q#g27ZcTYQSkq&-j8Gf@uZ7c6k!GD#f%pzbJm}4i#>vV* zeatq3dDZ78MUmtaMG0E*@;}Gfi4z-9KIl!ArR>cnGxq7Blvf`L8&Av*Z-;oy(|`3A zljjz$6qDSm^sE#Ndr&x`XDi!3BJ%_lBNLCiJ>n}Tt6Cu6IoYvFREiMPX}eZ76!7qA zsZQbD0;7nRvVaqf73&Uud%OY&V?De9$>49F)cY|~D?iWWeRuCs-&|a_$oG{CvJbW& z`S(b-riL0u?!{nKr_@KG}`~_E?#T_eA(d~Cad%$1>J81&H*!5u~e~}T=-Od@3 z-ZY^KTk+C#ql;0!jdpmR^mVf0llIZh=UdHQ+;(;2upKwML*1sX;cI?=NWs}7pFp}}I#DXV@!S1j~l?tja8S zvq%q+k|;=c(vlS2&IHf=uDa}6qy0h8{)R&!N9wX9prdf44Mq*dbiXu9 zy&k@COui6a=`Ed>zD?`>1d#^TI~8wx$9q=VwoTm3s!k)U@+RrVmh0^IKvjqfq|9yU zR|Q5ymnMNWY&=4lTUaseeY!=1nv%{ItJU;Jfe*S`u8E?}nI7~R{IRgyCD%U$)*F#C z8iz?YF!#T}-+aKRw&ilGbZ8bm$&>!@qQFdB8DAqIVw_9QiszWtkx3O6aun7yF5a4? zlB=;q$sX`;MT-SncG5(}_&}7F)&oDM5{rdPJjXLqkJ+q4(7~pknwwG`+9viLp2Na^ zfRfWK+K0ejn`r(~&3= z$vq*=>}j6^758Ot355Mh5tbx~(~WWdV18h?YD)B8{p$yJ;exSi*>h^(4eAR>gQ_?w>0(dd*7MVO93a5bXO8C|F2x6AiK;XUh=z!nrK4Z3 zCkGujyQ+kar-AX?qtvc{Hd6I^YC6Q*U=De#Jfm4f1QP(Kyb1}zp2W|p-?o|L_oG4u z9BKqqmfy;2s3!?5j0(>l@P<>YRt#4;}KeWcGoZ@PMAB8n#+VS7p29}Sdbkr z0Xf6SoJL0wgbt9j=R@k&vkEuoj(ohzcV05R5$qa?Fps~L+&{UGxLx|Ht~c}srcp+l zFFgo%SsL>p>nsppWKq(f9(=xdrV+$+a;6)`v%Q%e^J3F}IQ|u5Wl-Gc5_S?4lo$-m?8_2Ho zN5G_~6>|NNk7pd3oMn=!{qqVyXbD8K%y1(}_{zah)`Qud+Y& z4N=|73bs)NS}HhT+TthHW2xs(Mzpe0G01s8Kx=L`ux3;Me^N((1qYJs0?qLsKcE&t zoW* zzMh2k;RFD*56Ha5&r}?KCZ3NAUiF$by22#cuM{Q~?;O)%SRtn1_hutW#)6X0&7k1% zR)73yF8|eQrZyrWT&b*gXNDTIwjTVqPVQm@euSC)w&RSJK&ZOr@e&nD(Z%oSOjwM< zs7z-YPp0KwnRPz@Tss-K_;C2Kclo}!Yl1)+;i{3vqK4>iLQr|vvXFu}z;uYRD%s;~ z*+@^H;hd4k)d&Koua+1Ab^gaE|Ke34|3^v3Rlg==0$2m>E8SN_ugl`U*30|GX`TQd@z{IIiKgb@85l0*^jtTHjUTK z`fbrRG+JE!&d%<*C*!>g6WswF^&PeZTRRA3_578jB|emsLIa`#FZG;4Ar1_te3Oi} zRwiHugt!ZE@E^Ey)T@Z5bcd^?|y^= zb0VZP&VkWZm@Ga`uD9wp5A!$Z1L$j~Ds1bd0o4Li0D|A7z&dBkxWGJhNwLvczqC-% z2%;kipyuKoNqhS=rN29cas8;7Pda72`Ur9fCfVZTP+@qJ$1^3e$1$OXo6d`RjE_MV zD=k0x1Rc}5=S)4Xs&rNQGvmmKgRLW%8X>}R{zv?xpbjVbxm*6w$s$m=T45vT0R`TZ z(d(GXw-ym)X2yL#OruVS?8AAnHr4~4mUso@T$$a@&ry+_5{24`$i5dT8#W`3d%)bv z?Uf*1?7|8(>{J_HRYZ6;&N!UM8HJ=vXbum8+=SeypWDh4uZ`(=fDvks3pb2G1XBGm z-^JGD(3bjTVq}5>9H4D6;?%h}Gq`zSfrjmIqk{%s3=z!H$~Kg*R)hfzgvg$EP`X#z zGq?q9%1qX%%Ig04k~PqDZ9-@ zTdSZU+wLURmS3Me^QmEl0Mol&7ejToG){F|1LP=M$LPN^_t{XS90y!26kg7}3$n)c z_Y8_xe97@fb!aL~q?x?ya-b{7{tjnV&}B@1)mfACa$H;Pq=S-OX7+r%^oj|1!csNC z?18CZKG>e$rS&#T0D&FSC`c61gkm{PK_z*f$$Oh z{SNr2GrNU~lV8`whJRh-=zPDTE&2%eDNiV}p2Y~tin^#a+xwy4N)JWl;Q)5BcM z|9u0c%>&wXp@6Ku`hkwG$WruiRz3Bq1;zc|{rziKk44UVug!#m?8oLd*Fbx;YXfUh z-N@TSHaxt)EmixWhA3P#ta#B1l65QTBTl%jCPv2A4t>S3Fs$A_#eQHAF2NV!v$8cSO7>ph(am4GQ8_qRDbe4jvl%@}0Q3M0V@ zUw~s=qw1m5xU}fEp(A)=YNA6VCcpS-9neCDEIV;`o4x70G^J2Cvl0tDTvsK(-j5oJ zuq?k}rD56Ja;|+977K#7&)-<>-@ROInIq`pQZP1QA?y(Sh$Z&$Ji!^4#-FHb zI^gof6`;8cbTbgPp$Ou|`>t|Egpk$|hp~<*-CIx#V0j7mSuBJ(;_bTH=%b>f$=Sd6 z(>d;D8D~S>Q)9VRtc|5D`G2e!5XSoLgf^HKtwHo4NKF5$I;P>LCuci=PzeFqUN|e) z(KTLfZ$SLL{y(4OzmIAE(N_8Y`@?hR(}kZtYk zvs&`XQ(TZ9Z_O%*R5a*_KKgZC~fBGD;=sOMvA_?wHo%99g&_ld~bIbJp1g+@m zd@v3C(3J)E)@qC6K6by@yU1D5e%!l$1Etr{ipcePJ4AbTY8qB7@1n+L%>jTB^kqEo zS<-cMg8inGh33@2amnUzlqNnSMPZxr_f>y(FlTWZfs5MBy?ho#dsWnNdt5GtND-ut z9ZTF3W;hHa@x5f{)QdSeAl+s(UO^^l;G&{d46#iub?YVHPvU-hJPp@(+N$16>S2~; zjrMvz!QHzs>i`wRYwD(Hf6sjevWpJ4FRX~HEW-%cIHj&$aPEGRM*Ut%Uiu2a%kJ-G#!zh-shf^d#ZwBSh}vlkIU!T}Q75^F={jis+6c zZK@*!@h`9HJKjo(^o{#?ex%TL;pI(jjtF|Bsb9u=V);F&-W)8O+y=?L0_@S(?=jK8 zWH!Aw_~-pl@yB;UNdQ3_U6wY0A*+x+(S9^xWx(PpJpsUoA#)`NZJBb&?il8XNOt4$ z5oi~EsSVxiZhM<~1vp-57dhF3l&J+SS@1SJ28+*q+EweGXrPx~i5Q@^ZZM>Y9PdDK zb44Gf>*A=kXwfL_ST7K67eLvDRDEzjfSU2Hk3lc%D+h};J46`mhuE4~DXgtnTwD9{ zSWZw{!hJ(+e%E z1#E87JG5vXoUWI9Se5qUaM-1)zP&88LT+jmQe^>pB6J~7RQ;VHlQJ8ZKDY-_OpmIt z;MvHmFtgk`I~@<6t8&A`WJo}?4R<#dpMb;Lo;MpQ9YZuo0QX;j`f;_&!gfhBV z1P*Rw<73^=&0bG#EEEDHp_vQm8}h@2;$04z!4O;AT!YWuam8R! zb=NN~jv>$VxOJ~el+UZTD1Ce0??WeqT>NH8ZZ_VtD|1S7ruWCk0BCH&AT*w0dsPtZ zwl|sMktU#5p|9O60EnLT0|uJQ@SUm{fWe!i08VH9qvvDWELc;W$#RfR3anR>tXHf9 z-8QPDgQ#&A05S@_(6g7xuFAT1i9^U+1O;gG7TT_IQGM`RO|*M8!ueV3(P*wvb*=}~ z>IZ*k?|56;(5@EA6*75F;p#f-L2KC}a}Tq`ht-ntEWfUmLI!Nh`HHU)EKN=6)5H?b zHF%8KC^MQTud*qAB0(e7_KiJ02EM?oBiW}1u^ywePB=L5maf9W_GECT(1YGhlp?Dd zRhTlZ@`ZJVyAy+w#nO|-Y>Pcj8sR6dlYK77W5WK<_RLwr0ASk?dC|W8b?IoLS z@@peOTk*!9#Vj&7>6QALSiPv0EjXhp`CzLNNo)7={4-(&R^u-lGVI~#k(y$MX3ue% zUEP#(D}Y+KVD=0e{W3qZ#3cqapZk4 zvLMI5gZ{+BYF2=h&@yvp(u?mW2`Ya!JeCYiMoH^%kPoqb<*?9J{XKjt@?;RQdvHH% z9`efFJxV@F3C(sOiVUOU2X@)DTiGfV?cK>SifsTAIB!Mo8g5Ud{DU){U@0p^X)N9YoQ(X( zdscDMWv@J@AjZX{{THY!z!_hVM|M?l3$ zig5569`({yrlKe;2q3eQ0dzWF3=f#}iY2=aJ?TV7twNY z+O^r)KX2FKRpk^b?Ul!83KcZW&OvM3$Wf>BFiXu505d&zSqsnDVuxwx_oDxOs0^yR zd=>K5h7{=v3vD~-N{VB+E8>>p)JcnT$fs2fCO_Ahn+AW|9^not>6b5etg$&Lke5}afT1dZNI74wm$mQQ5;p4A5IECAq~l#iKv zLSuNPiE}p>J9hdFPmdV`4tTV#Z_S;lDOJ0d`I;gXWb$u7NBaa4!!RTCi)EK;;fEb^ zr`9enb`)i%i$5*3G*0q9M9Yy1h-K}!bHbrYm@!(YNWZ@>n@6v;)2zakjm+Tos9u+2 ztBk+u&bf}PMB6DeT1}VABHf_N4q{u^Xo5g}`E^avX5RVK6<=`48{~lV1AY*f_2)#8 z5!#~ojhM*u>ku~l)f;7lzF<5 zFZJ9wt4B|;D7sg~*OXes9jt6@(j*}-AUam~dvfmZfQBGGNO=6EFKF_R0Q^omdP7HQ zN{ z!$kVSIn?bW+uhTSNpsC5t)%^}D4WtazEzC>#(Qm^8&K+7Iw(`lw z>v>gA@;sS}zm7LD*xsD1ERGMiY3$WHti~({YHlFfBAuPHAw|tC%`FM&yk)3WVHR`2 z2jgcYv1)IAB&wNc0RG=Ev9rW-xPGp=M+F%8s^rqo1$!C5^>fBk`ABc7)l0E zyAS{Vr|#x>EF8%U@G$S-5|VnT!eIA0%&-f6iXjZ_e%%`Z)USc-#9UKmBdDJNYeS0L(6))fk44qz@eI_ljQx?l`V+JD z1TGZs$>eVsR}tPjuJ0BpMXnEEAUj25hD~Wl-1Ey(p2hem^mOO_Cr?>?Ya*0I*uup!Ly|HpNNuOFDRGxT zEM{hT3~eoXmDj3q~V_IUH!q;`tCig`k!80F6+JIdOY z3o@y0=N|hi=w5;@o(HH(c2891B&$V@ueno{^($itB8)>i$vr=$YtP;6a|E^0rmGSLu|~PuhE=(C zJPa%7{y1d?Z{R(m-61k`Om;k~T*SkSJI5WS07(d?P;Us+Sxm_xr4Bdt`i1dI;5 zb(8M;vXW=MY-#rKFp7J4ECP&oKH^-2dD|q2EWD2eF)8^*w%l?sgdJamDz(BZnyj=op4Cn(%Lq_$y%F%|TQCqzwKK4Z zw3@LonmIZGrE~;c+y_e8;hxOhaAFB=vOrEZ_Rxh#pr6yIc(5f&a1-@?^ku6{9d%9E zFs6z=$;WP&=PEm-9}vER=A2I#zuUIpAFX{AQHHQrSnhC=208NP{~e_BJ(*j~TMFvy zOaAp_M0Qqm3xOnGan4fy1EW>3;2d-FMy$^!RSaawsq@#hqdKBEwD;Htr`tv0vV}`j zRh$zpFE>>Y8L*2UmbYX1F%G}=vEvc*OHUcrMsc%Z3V?(Vza&U6&_B=VW$cK4_vgJu zi!Q&L)6FkX-mcyh>1PaQ)J5McA4^Jmt4d1>X$VX9jj(IB59cvCp<)F`$Ul z`OOn_GAPs0p%<78(+@|>BmODJG53T>PiXXWQiE1=^K1KiHLLdtu9pG?n$AhFLwBI} z_GMl-9MRrvCjhCIL6WEzIE^n#qz$wNPIx?v&jfih3>i6zz{RqWo8G6^>=$bIo$mLA zTHH9BgrBz9Q$z8O!)J`ys}MD>c{;2@4-Ws#z%q8SP|X1Uc_k!hMFm8lRw9x{p21w* z=K{WJkA2OjCn{<{j)VYp=buTKfZ1caq+|EA(0cR-vX$lv!pgZY?CTX7NV}%^=9|k~ zn1m4RM_V5G*TGE*ptBf{_L}cDXIT|+pZSmzY(J5-|B@_-qpcZr^^c5?E=AJB@>3Z!f(rr>Q0Rg}$9t%s~E%xNs68XpZKRk@( zHeE}UF-(;I{^Zj`ezNG;>*b|n<=3wL0mQ+;`Z>h{nuGdo`l;DosoCwomuvIe<*M!e zZ~q+j_}4y%_z0-*@2xESi6>tb>l&L4>&}9wV8jx$FhQpH!do5bd(t3s6^?BYcQpG$ zBBQq_Jv?58tLF4`+Ay`~c?jc*`J-->G}h8t(`kJ{Z3jqopXZN*G(wmzmfbUP#t(CU zu1g~uYVT^!Z7_ZHe&zIde$>>3aetlR*c3k?RJ2C;!+7%q`_Js087CH!v>PneD>i?G zaoqF6uq*Ij;k*5-aO_N2wP=-DIxG&v=z@4eqx4x8z4+u1>W-euk1v>dXj+m!ZNrEU zS^eCaPAh6;9pgv%KsY&$#Hjs+9;Ujhmu(tQRbrTbi~N zLP|=og1wh8mj62mIv|dB=Nv!}joQ>j5u`W?bOvUCrl*Sa5`@m*izpbt#euV?Cw4FF zk-Z`+fx)zEItg@DT%R{8{A)TBa7q?Ab2+LJ7)ucjOO9Yo{XVeJVx(($l5kE{ zkxFxzp_7{ViQu>1N!O;mtCz+aN2|Z%SSi1*VNGo2Ms?#>8irxCL7sl~z%!c^^dNZDOHGYMm z)MF*qP`p*xN|XOP%F~Uk*gQun+AAfff(<86h?|>;^~L#@SSi*UV#`+sMPMHsFMs?i zS?QxfixVwgU7`7z$3M<}c*0Kgq8Zsd@POyg=B#PL^~b`}7kfnOIc^ZV70r1!jaf4}-I%u&kkS6{U> z*Wvm7>Y@)mfFhBf>*FWLbJwA43%5jFWI>cboyTzfuJ6HkZle+Zq(QMU$f1abBkJ5e z|HsE=w$TRVIEg4;DWN{&ZsU3<#ribcJ~CSzfByai#X=_Y zNs@YOZsi7QG(m#QR`G6PE_M-e+T~j!P1?HPZh>U8?+-8Cvi?$H{aB2Mq1&c;hD^oR zbs={|HLeOmi#Bs!*Opm_+p>-^hP_P}B7FlFnAA&ZMsXKiRr08lDnBhkdSiup#7>lA zjEz1{zxXO2Tg)aa=*!~-rRefjy^++B6``n~N~}mo@wDzP5}HggefF5BX@Z+0hW=ZC%DSfgUS<_|0zrQZ*b3oqz=~=H1$AQ^Yr8}Ao(C2+be{+=NAJ7wiy(&JoPrUI` zNLP8ZK{~4-as+1&qK4Zk0jjZcMzD%N@#1{GyU)P56MfvKpxf+B}`CachjYm=)it zG2vl+JrdHVER>G{k2j=coVW@a5&!q_i!$G7+*KBlf;g2=fv^cj zvUM=qt#OiU>xk}!SMik8q4%8l`9g5g}Q28|YiS9(cZco1(jz)(rD-@s8Oz2r=mHTfgbo(AIPTVpAM=Jdh z?X$Z5qJp*C10IbUO%zOEIR@&OAUwYxfqG_bW!J#F5(<%abh>Dpk`ka(eN{N2rNWZlZ%Bg~`ao9$T(kMVpsU8~Me zrVdi2Bq3eA{~F~J9EKAcWi?a}L=TpRcZu}v$t#aLme4V~j##8ffLsR}Id27^dwpku z&w%DCF)RP6{O075I}<@{s48DC;yH}fqxyD)=8y`UGmyH+OobyJ=r5B?7Y58V-OiO^ zn@)AI`?(+uw`Q(6xwLe|<3k{@uII?rTx*gmq{`jS44N$!X8h)ATwujPIFj1!Z+nIr zQHmLB3Y=PRrT(%dUaUu7uS}3rt=$V^wyOtr1(Ma&Sgz=Gz}R+Wk_8kJV9$e@ zRX${H0{VgY!r1KIjUe(o!(!FA7O%9YOJJ?V;#_;5?NMpSrkRh0Pirwa4@9{q&Xkop z3EY19n@50#Pp${_4tbAY1oWbsBYZ)(p=VuLIc+A<%AoQdnn1`m;rELcBdnUhXiQc_ z<@=Q_MMU_FqFYtT;{3Lv@6<@{uoUR;tYmGa64*CgQcw50xS6}_mL}bq)r^W?r7DFz z{X=ZS0Uvwgk3~no0S{D@Vo_7^SUgZl08q@&0gPmjnxJplDD_dB<9Ci;tj$_RBJno# zBQ&gQW^K1w`zDY@imH**DuhN3GCEiU{=73nhr5%q8<0>Idpc0`UQHm>Iop3jPv02E zH^s@`mqYm;H*I=I*rd9g2N%^7`VtBghAOnVw_oH|=~L}S==JH!4X&nu z_PbWlBm7A**BcW%4V){Yey9p6rJp5HJ||iE3bWDG*E200k$I|Cy6{lmfODZrnD6~# z%fqlFxW<(Wj1;#SnWOr}w5jg6vo&?9bS-qW_FKl3P|5o47UtnT7TQm8q)Tb6uYD9q zHXE%rsZcXde)K-KGyI6@jiahXX)*)Yg`l9%ihrktC}d%5r9VI6?Cr7TM>&o(jN7d+*M7`e7UhM z05(i@jHnO*8x-!nF7LW%h~y8IUDb3Ef>Fxu;imB^oQ%=o?y-Y7Q93DQu5sc5 z`52#~^`Tx5dfkFt4yxWzM)p1`eu~rKzi-I@{Ej6+6j6zHHr3 zPChdbceJLCbHRf~d1EgoWQ3SscGPw@=F&Jjx0`*+Bh`By`_%U)Yfj4|1G!`u#*5HT z3e5IMGzy|UKeD-Tqzm1NLm7v`EvRBpCK14TViaCX)>z){v;DYbP((Iq*?o?Wc$eg= zG=!Wt9}Sx)e^z%@tV{)QOaI_BpY|h!0bc_zdYnwE8!zG_=CeXuWZP^d7Ar0E*<0_; znk2Mju45)64+KBsD+Lf_w7CGieLv8ZKv`HvUG1ehZXFPyPUdinG*#1(=|Mxps)t8bF?g>}kT z)u1YV!drOdtM&+*!GYeZ?8g2Mlyt`Px^Xq`X7SecMIxTpk@Z-UVj%`oa-bjr1+7`-^jPUPxza@3tau)-OqTq;3RdXUt|$eUd*%X~Nl@-Jm)H1Y5Ye(~ ziSr$Y%s*!w7fF`ctzs|J%pJ`6J0&gc)Wqa6Lv<0y_oarqvSTuyhu} z5`0=!ZfyaXcgS$`E!|d(_%YxPv9qgOvWe{0;5|kP6YUF)8Lv@!=nD)A>m_Em!&a zj|u>2>WE09ddUJq(ZjlARc_-!=HtkEA`ii$4v5lVdb}vCdNE@$(=4ulbJM!e!eYoZ z7_A#MtwN41DSN%=k$y3qP_E2K(<^Q_Bsao);gWQ;*_+4vTfev>(=%SSC$8Z0>ssC6 zMkiy`mr>6$W2($DRqFV3A!;3SIdGLy(NxlGR?5-KfA5$6_dV->H)Q@le@6iBvam$t zE1#=sfbRoP%H5-UUQenBg$y1o2Ki&3W6d)WS~cWv-qLgdRzu^%o*M5{ZLKdzC!9oW zr~<40Ob0!>g)H)EvQo(&&m1sCs@rqr*JaHQbT#E?NTX_uP-0`_gA$s9lWWlx(udoJ zI^Q=U#nPjcoRiZ9+qWlvT@xML0(JbO^?BnsiAXAT>A3>ydW3YV3A1TrJ6Zy^SDnQ1 z6d*d(m#a9b&E=GThu|(#l8>2Ts0}$K?x1K;#rPw&iK!3nL8@qxhoq)Y4-EK^)N0x% z@k#ga#>#fx{&_m7A+2BQGA-BbcaMYxQ?WalTO>0&B{Y>M>xI#!(`B4HRd6R+md<>; z3W#6&d}L<1+3%JADrdkG5^NiI-EwZ(eDSHd!d|uO`fnq3CZMGL2AJSdfkuoY=|s-f zWIT|yE+*~P?0b=85nsrCq93OXgiXvc___J7Blglt3LOEP1H(7#S(^o2`#?uu8eLaE zh%arIx2xyPcZFG`XusGuMaI8#n71_P(*o!`r2)n-UD*r@BVbryonWf|Te#abQ2|Uq z2zt0`T zitn9X5Be zP1=lM2bC57Lm*rK`~HRzwHC8GcBr3|(iv}pQ3*r|=BlOY)SSZanv@Msb3N=I^%eIt z;;AzK$Sm0Ez+2d?B6Q0f!mk6c#7puELGe&`Hs$;1L@D1l9T&M&yETjPfha`OkuJ?p!##}@Glv@64vVy&Z@DqvQA;)^43Byge|44iBe zbBt1;P7P4SDG`CeG?#~OizD4Yg)FxG$6#qRt#+tb7Pcig~i;H(pzOu9qF+VarG z+&zlwpLuuUuB7+QUxn_TXGLbUs8MHEJbR&G+lqYOVZPdonnR6XrLzW(vKmTLx%OWk zky@8a2nzhy<3iYcLCfFU9da8bGl^Yz!ksQ}Cpq@8 zmorm(_P2M% zk>O%w#bMA+7(w{!n;)~gqlsej2I*YV1!?g3o~iyRtvpH1?p%@=a589sUe6>-;Yp5@ zyuf5Oth?hes`EZ{rI#u3;gF<@`kko72jK$}W|QeQVTI{0VC^}qMuHf}m}Hf``gPh8EKPWYnU{mDAM`-cbWD09@h7-sS#G;ByMLOGDa^WL|Q( zx_m}XvYlIJWK8W>U-i2N&vb+6RhWb9#}SmQYSXXUgSE6f8YT&kLLyP77Od_5BGprs zn_pX!2GY_sck}k=o6eLj4h($P-{kHlk4DmA15or zB<}e%Fin-Fjahygz?{M%Bk=@Y`^ww)qLDj*ryzkd^8juecM%P=c9zbKcAR3f@QS9fTmEuQM@zZ6y0DEwkBWLIh0 zYhPme>zWt-)^YQ&yxz+ejh=aYUnHXu!ziV6qZcSb-wWks+c*>N^T zW<Kgo9EWH$&L#4{(uw+Py=DanG^3& z-^?k+)I!UF5v+phW>WDZwIk~pm z4St}kY!o&BmYBc)erIq9%>U~9YQ_W#01{FbhJM9Q6S+JhS#pJC_#I@@?(z?bAE!RJ z^={0cN4Psz(aC1_d`a2fY(7^JfaN8qXu^bkT|>ANXbw(?uim?zC?TWs$q*n~=pEhQ z?*vmkgz_Lkg=5HJ{9MA?NiiZV)x0@;+{}|qbxoTS)lBpJYZGpaZTfIzhO9PkbgTg= zK6IU10t8TH{tG?4#M&)35m9zbhp1UThQ7EvNL!Iv>|S?$lJZYvOYVEk$0NQ4b{Im}D%=J+OV4@=>*x@Ko zIlB6WT!qlhNxoXms9E{L-413<;6T`{d^2{VN;q8-;%Dy86QDFoKB{Mvb!7r1;{`%8 zk*cNBiOxVOFMQ6xGK2_T52p`1hyl_a|Sfij3oF`(2&s zGR&jGWys68ot1hMH}$cJ#onSdMQT7xwCZQpeq(u?dx!PTi8UEIauVpBT_ z(wJ_jxqDP;q~OU%+4m{!xr`>izW?cy@=>5E-pP^rszT2T9yx-YTnp<1=YpZaZg=op z_#vzXCTaH)N81A;3z5K!nPWMVlqGzoFY+R)EY5*{+P7))xc%#Jy5e+1*+bS`E~{}j zcj*N4@5u+c9j(p2?=Ps6lXXP5@(=QFd)AOcBT%h=^jJ6F(6M^9(d4p-{+H$6rDN%$ z)r|D&;NR1W(nV!!;!JHo(il8w=t&2ejEg_g!VK!C8%1;gH1M?a-1MgI zlyrORt}nSz_*XN)z>=r1`u@6!k6TfNWKP9B?X$^^zL(g{NCv=o6oFdvfPPdojTaS6 z0EWtsm$87#!Jf2lO9?Du#n+~>o&N$X8}R0V77aK zEhl5rN69xjH1^8$2qIks-Ca-lpZ+T{2p#Vc+jSBIl_#`61)OEbH* zbC&D^RbuI8h(ld+2Snp|h{%tO;b8uCEz`Z9w#EYWbE#K{zTI0=S8@ny8}86815@w!Nv_#KuSi1S9$ z&r#9~wKb3B{y+L!bZcIK#m%N|bfj^0hzwb|n>lY@xmToF3ZZlag@B~Tj~_@;f?AMl2eV3<*H^`2^B)u|bUM^8TKlKy>ztjvv1hKn9Z$c4BJ+$j zHy_~oG=*Gkw80u!IVe2rxGM84HGWavuZj1?x<7t@b8CI1fS@>05}uEFlM7rl@dz(>EWaio~a2N;?#IJ*Wr<#)@gxp{?^$4LX)0X@tW5iMGyO-uA`5|56UNRY7*4-4P$wr)=Ltfb}RO(R)UE z$B%jMjyF`q^{+X356*;)QAHKgv&cW^;1HWbdzd=;)V7#|rAzhUH$Mfqa&7$2QVz;l z!7F5+0w?lF{j0xxb;GQwW{?dkVj;7PGe8*Y7`nUPkzk>X*LHMu55yJrNbvSi*##C@ zLqL?GlZ^(q@F}N5a!1nVEFuDZhe)-WG59$lX+DS&t$Pv{x3vLiOD06oEvn+>>#P%b zb^>4pd&VpLRKjx~Kbu|U`f&*8NVq!e^5Z|NC?>GgSY#dBN^=r{PHHu&yUIqrbt;4b zDrNv;BFcV^$>s;}=t`{(lkjn0jrrm95Cz=RWhVUF4GJqh0#77{G2CLn`=*X%UGQ== z;jH(rfF(~?Yl%v(=|n#UcrH2ELy-P!b#o2P$VbpV5eW9jJ=@V{J7z5)+E zuTyu4bbt}bmt=IZLh@(I@Se;MA_L6|l*;7u2fIsaB>IsxG-daIT+WbF+Ta{ybOmfy z)RmPn(Kr~Xy;)CDp2Rrx`JmwPhFv&9SPKH7k8YIk!PE?CP;1NijE!6r?)|d}b0q~@ zof}(N=A7?8rJe}64Mmz>+Vp{Dk1jdUkrnhy6Cud)45~yjjKyzT!Zt0P&PW%ZK>DI46e|r=V7Mn!xA5a)6|=fvE-H zRKEDm<3E)nQPys=qaTZGNC6dQ4HFE3H<)S&z|bA+cB?3aj2#6%#xAGNz^FUPM9yLw z(Gc2!z)Gl~Pc(i)mAZ%A5>ZuEg^Y2bPB$yeR%@%TGYq!=p+(3)Zo^i29z=O#lp9EP zJjHGZo|mxBb`5sQah3jkG<-+cw|q;lSXUZV0+%1VVI0XWVCQu7>)PAkKRP@@7@^Ht z;Zl`eD6D%-efN)#W0i*S;;nwP`e|w?Gr01+p;5re&g+k50tRqJ|6B?kLH$H4wF#ou z4&g7*&zt|cK)#J5v{j!@?#d(xZdc4tzaV_A6g4ph9pe;FFvZv@($|IFd4Lx zL5a$Q9OyJzPVT&@xua91AUYnO)duOE>n%wExvJ0*)F*&JbWTm2QGN#fWZCH>w?0|E zOF4_CL{PJN(288@^AAhrQZ(acmJ84DZ|!aNtEn)SatyEKmFJ^`g}^E(&Zs!|?UoC@ zq-p-08ZNH{bCDfEdWhz{b}{ia^j%lW=q(HY>*zTe4d*$@X`q+RnDJ^m%AfLNf$Y(Q z|9nL=&QvZ_z}hF_K3=g+6${*h0CRdJ^cWUxO*cj0sa9(nGHQ}2+Ag1%wdOkzK4I0L zUGTQ|D3cC~crWx=^rw9qYafOp=~j=wx)fi3_pyXej-4JiK&{YNE{G`(1Q0&4Qi)}n zd^&#N>x{>MprJL1#Bt8=p1t>a&#I8XU`mQ%9n?SYV-9saU2v8Qb$@iUUT>?6{fX?( z+|W)y6J}Ub9q#?;SuJn#f~bHemx?v0H5+rvOp4Zk8AcT|9`2$no2`Bd9D`M_KZjNR zy3wN&Dv1J?x;Rf?ek1MfPKLHPCmHNip(6dKY)h=0=nK!3^@@Q<|D>q=A~pBElSX+$=AKRmtZ|k+QVlm{4K9%Mlt>o88PAM-nC?-qeB7Z!U>c7s^3)Y!Y?&LrZ=SS27 zQIpCza$yF`I(nQTHs7=dBk-*(Cb`U9nnSS4DYbMEE~BO{b?T9`fo3W*UEdje^yUAh z?tSTes(RI~B2N5zG2ey0?87;tM4s%7;TTcuZu^f57oS~*XXQs#5Bt&LZLClGd)L!Tz~s z!C7bxtFwQI?=SJeXsMZ!M^S>dwdS;V$UVQSoh` zGRI6SOsWUIwNi&vF$r)}b|yQ=1i4~cKqz-wtw2SWWPptYqac68+9Q{M^6wP* z4iscmQ$><}6P!NGYgdmM;kP?Aj%}ilU|@(lNG5?oR-?Z)&pz!%ya0+DlV{B{#PuY* z!vpV|73kt-rRLNs+2M9)$<=zgc}=6w9WNWGnPmZFDCZ7NKO$?x(-r+9LL{K-l-jk! zWK}as%8arZjq2@D`$YD^arV~NU3_ma$SjaN5;(d8^PF9<#tBA}7bqZGo<{L>H=Roc zfRdNczsX$^j#7*i+}BxQq<*Yn#Ss(YL;$QWp|^m;xf+3zr~mZMJ0eGrDWdr<<^X-r zGje@lR4sdm!ziQ22LGpw05?F*8^5VH*Z#3fZAs;UVx^i~yXT4SaqE=`DqnY{Fg=h3 zHqX3C?U81lz^4)2;wWA*z<1X@1bG)$$@HdI>n!N7GD9XCp)?W%gkABxegwKZ-IAIN z6_@ve0@~jsPOC8CVU_r0$q@GwZ>S_?2y@h6$eY}m{rL3^+42dP8%Q=|)9#e5W=rNc zcw~(kt!%r>0tRn60E(EeKbr6bxw>LG9PK(1fm?;m$(A8sIT6K0k*vr$zth;JkJtKy zl0soL==Vaw(*k^e?E(8q36iq1Szkwa(p?f8zc zjZ{>ZU$7{e>>6F#?Ia7E%K_!lTR8#Tev5g#71~tH{}qag`VU?v4b#d`rwKTBSv!Cb;Hr{^A`PgBm0{EP9hoUJ$#{vG`}&^SGcz-Dvb&ALY-5k_|-2$QEpp z6QEzZ!cf6CUQC?S%xkUnwd2U-!P>s7?vVlausU(l<#5^NPKl`+L{*@E?T4?D>~d<@ zVq)(C`;X@fGXk&j=Mp*=kgHWSBl$y}_d~`zd4|RD@r;ojx89-WwB_~3p!u9v%?aTa zHlGVqZ24c-GPyi8nha@37%8<{Hhi6yf82#$x}k-IM;(ii|NLP2_!Hh;eL|Y@A^B%j zy{Ucl_;Db=^bSci!s->UjW(X#=V}D(zLPRqJ0t3+f6mA?`!PytNgaOn-G^oRCxYm+ zHkb$#?25h;t?5$qNqstroK)e(%Epo%IHs8K?w4CHx@{qYRhlif*hYTz&)#w$0fSMDTUB=#b?{m%`=Z^aq0|=0W?|a{O&iOpQM<4GZ!L-si z@~g(md21S1k+Pwg-2}i>)Tz4tXPfPAMe;X&FLlADRTLxrA{bUUqHhqanYxXfMF-dP zk1W>*M$uwlz(|eS(1Fi2bLK7&(?rtbFKxSfBSIx-WDZ%$zt5f0Qyyk_05n+{!9#`u z?>BIIlAx+_3lW+i+u)FUyJf`tuH;#6DaSJzCtkJ*)%3`kT469QX8lNxD{KcYqV}-` zR=Re!}pn3~U$PUZ%QIkw`HLzVOJ1Xg!RI*&Zg??ctS3ei=e1&=@)BAjVA zPE{b%S%=Y5si-ZHQ%l)p*6o*unmwEH9YbUxMyw=vj1?b2mIhxLnR6H6(wMpf2L;Gq zc2ueht8Gp7(pFlkzY8wQyCt_2=io5T} zNN_>U)9}MI`fsD%o^z^Nm-LM`fb8{Dq3y%EvO=;lK`;V>EBoP#=ni6?xTP_ooKf!G z%1dQ8_&GQ8SQS?j_K3Z%r4Au2*j2a3_ZEBKU?Y=U%*>hN{tG~v`Nm=e2Hd?;_(cpV z-*rFDa?VRNrT!{6s24W}vx`kO>obTKE@Gkqq%|U9{*E(R3m@MaxOiXf(TYISr>nKV z)~ZbT*>i0`dei@9>Xb&xg45^Dl4|<A9>$-$kb7JmiIJ zRW$@Xx%@J{DW$l8=3UqB-EBsju$Z}n#11u1sIdB=*S=qVL!t@2 zMo!Q&eJ`Bk99k3U)b#3V!v#5Xv8h^*GH1I$ok48V%(wM3c*0r*7s>4{xiBe@Q3?63 zTl-TvMq#`y830bCo`X_P#n*SRebD-Gm8#b3=>?HR&v)LiJZBdyLMg(iqXCPP+yX&0=|(?m^*R1(nMnrpVVzN^JxB zD8-%=;EoH11N-e|2rHZ>keiUOZGA%1y$~a}vhZ|-a*0mbnsS?{`qPy^>K7W!?d;cf z$JzMQKxQ*du8pH6btRgSaU_*!>qRa;{|2d3->m;~`)%785aU&;MTI(Zk}% z@;DL4CFaq?6&kPb{nB55J!NHLxn%V8{M&QqXjh;^oSFtHC`Cn0?Oy$4&lIGfkFflk z8JD`5X8)@FEC1FcIIn0IeWfVNkuRLX*3T}@#FP*%G}e-&!S}v|OGxZjm&hlvu5;QK zH0qMH>qaz0>*l{np!d~}DLH{B<1+8HLvQjCv zbDJo52qo!mdn_Rs(Ft8{(-@OjU%7xy&!)U=qF{%-yd31_y{O;k5GdSIK3jcci?%e5 z=jmn}ZxxZZ+tgw zy>dW&PU$SQ|DTt@I95sKtK2>oGlwQ{qHNJhZAgnWm`LZmYHdjltns+}X1aEMJ;yJ#=~t`nJCb1N?d}}W_`cgL zdpt_Ml#j08dhTII^S>1R+>cYS!0|7V@k zHAL`0iFyfB&)udX4&P0P*JyFxCfkx&D^(nbyS|Grx5~vUeofV4XnJnJgtYPZ)ofhc z&VRd$#UAB>ni_1tOQpZhMK5T;uA=a;$cAZCI+cRXS`R+<mYd($kV2o|`=K^rSH1@mP{V(+{|c zv00ZvNYL=;5b^b#)41hr?G^H?`7oAs{Ktj%TFO4c>|cFVAoZXD1p5qNm*@L3?rNq2 zB1GN#JTd+wLkhI>h&g-Kd9uz)qJj zUi&n|seT!|G_t;BCrGC*o{iPV4Fx2lf>Jp%bil(Onf`Ukq?`MoqMx zvI1mJiV?ZnveS;m0M*t$Yq&VC1l7cr@pljL7YHY` z&5p7Gc3e{d9-t$vZ|EWIV&f-xEc@VM@ICd5yjS?DDwob`0`eDTHfnY4|989NzppLI zZV~xRKz?UFu1Pn(jmNjpgoucFtr0r?rnb=1kDV#DByD;{&`jK$9QjJjj+Mc%h9rjDZ7+GSr5OGQ1kDLM`=R6nj1>b;R7 z$j*st=#|z1*o@o2`Y-^Tg21o$ZA&8mZ6`kWADbHg_QeYW5D5x5*@CpwuCxlM-(rI< z14Rg#vFj;^w=M%YdT3j&`_K5gld!OU7lwjDXJdLk-J;ED@LYI(;aq6z$iX$`hNVpN ztv{F=g0mg6oB|g4%d6jipL^Dp zfYBXfT@rdmw(XWIAv&M}+UqNPe0ZVWl?b>~1DeT-4`wi{}iM!W*vo|@Gt>l%+^ zhuY5Nh`mZ5M<3K2kX1B23nX}1YC8tl`Ou|JzDa*GA}h~UZ@ed>?dIVotzz)#Z{0|2 zd};5W>(F6;aLIFF{mO@E0MsxV<^=vU2o^R*>WjSI7%8Fo8=!f^Aarrofepzv`lRx~ zho>~9a4>m>q>g7DZXhzog0*kVnfjN_?Wd~zJ}20@K(au|lJY0}mz~i#$c9V>-Y)k?JVNGwuYJa>ZW$xcpbpc2I`OL5-?ZH)$==BGR z3g29_C~bR0hFgpAVt79dheigQcPLJUGsodWGH2~b9+YnL*~&J$(5iQ)NOcMG4t52? zA2rjBVT8+<&s(179}kOOpWbu04?Ytv_kRC}a&XLcbEAkht-gi)Ng(cpicdF>%-3q2 z+x?#n9VrUBt|SGZ$@Q9|Ul|-&v1UDON#5y35Vb4A%}cTn7s-7%$n}QzU-&DKtohNe zGjxsOIdaxcKB9>RN(=7;1Ps|+DHqmj^rPsO{X0ni0aihFS`b+Ch zaCn;2b}cAh<rt8Du z8Xsf?nt^~FRc~c8u#3p=b2@e|IJxS1i_Qo01z>X}au73~+0Q?4{4gL6?IkdW!{F^>g_ZYx{Jvl1q%=gemm8r~>qHK!C1G z;cg~f!1-|L#v@#yHy9)GIPP$Fk(C!+^!p4+zlx=k_$#9+X0Ph!d5Gxp7#yznon#c) zuOM;Jd52*^z17blO6#!`aDQy?T41m%i0n4GpkWND2X2mr}Fqd z9PZjReQAt7956n57FP>nat2btobv=Gtoa|qOi7muOPsXbSmYL*PF1esKw?N?u{kInURXHR zCRIZRRehK$C>$WJL3;Ne)moH&pg{e)KzzzbwuSvrHX~atqTNoFmk`@tXZ6H{4j`hS zVYgQM0{&}N2$fwh?%9uTvM_t%e2Lv+AmrEdOUarupPnY;FVFj@RZeA5+`VUP7)Zoc z&{ZPhWB^xFMJ}~GHeomw>tXJ%)TxsPnwR!A*6VvFC>6t{yLcs2%@hK2)3X(XzgVC&Xil{jUiho4#Y7tMNYO3mQ8FCT%>24Uh0BfZ?UMeb9Ttb z&eM(5wrc6rG`?IK2fuuMcKZeM#`WN$V*`f)k`I#&*&ss3^7KZ^#09$LhcPaJww%U# zg(2AW9exXD{S-l=xzXZP{fQ9h4;X&+EnJX@YKPF0Z5PGw&|m0)GQvea_=cK@$i?7!Roe^UGw-Du%DL}+XfH+k=` zFC@ue6$CyI(Ghfyc=$0~i{1;%EBJS((dTi?pGH|TdZUuAXo2ZoJpc39@(btII-ip` z=#06!L(4=s%5VBBl!IR?>!kX#@&TfI%u47Ir=%<*VUoh4e5gQzZ84wPP@K;);ChFB z&ANa1esrW7)5KuM)ETE)M*uyg%*4ElRu=&D}4v{zc?K zb?@%)b7lE}sN*t80uhm?+!p4scXj8Y%)=W~YXt!%}YR;Nws+Rdn za>b{UxBnb`fJQlp4A8o$wD&MIJ6pNlr+n~7<5>s*b|8_7T({=Q+FjJ}Sz?@`p1i3h zYVRxm+_P&WyZA!!)=r74u60d_h;;mHrH5Bwx%Cyl4Yk2D&BR~IW0f&}`yd9uFh|p!Uk}@AwL3L} zUnJ3lh~KW)1^EW_lVDhFHCrBQ-RPQA$A|0e>=IC~Vsh5N>abg8_P6>p!jNH-;)~JS zniN2%O#9Ne9{7fzy?5wW$CWbDF;+U+7&ai(l)<&#rs-Lx&Mq`) zYRY$_zE-)EC)f^SlaA-_GDJ%-4;)J~$aRbwlx%zQSUI_@uzXUb?r|qQ=hKquENVr* z)azQbQF8AwOr*e^%v}o#|BitDn{wGyks9D#yx||XCF$m8^T~9GAHAG9*HZA}Z?3lR ztvpUvYhk_NcDp;6E)`>Trr<8ZJ=0!R_a80%{y!{@xmx&j>Of2pC4Z-zqGXXeXpzsU zO7D~OLkWZt$NYU{a5r8?jQ8&}1zD*Kx*)D_`Ae}_!?;&+l2@aVwEwWkxx>s^*T%xk zjcx&^Q$UTYEgkpF`(L$dAQY@xw>yEXv2RCqBPb70ZxPQbb{J=8H8Q;eFaMEH74DVk zCj0oXyA`D_k`*#wht@hil`+SiPc<=adAvMx^RLnr=49$^vM z<4C>$W!4a*)WX>tCnFrc&!wrr7Ufe3t2j<0_OtBxQcTUK(S+uAJw|S41!_{7dF-6Z zUW&?(*yXvA*0FqNt&5CNo67AYi{*RQ^E?3I|BoM8qeoxFszXgq`BGNqEL~yR5F=Lq zhAV3D3R6o}Gm0K895j0SKdkxxN&ojBU7nZD1;qw^MG*B7arxEcQ8<4Ipa*3Ry8b{# zX#NU`{wGS0xE!zNzEU#4R!<~K)RzV4d*0fEZ8&8^KC#5(LUHMzwLZ!+!) zH`4IXy=+i&r6ooREg#h;8M(Rp1tG ztr+MNdC#!0gZGXRQeP`-Hx>*I8T2qtDS-(0+H9?@czVHWWi)Seu0jSz<6hZIGKORE zd}ngh!Tj3F_MPdNKdF;sGs3Ae+I-?}pic+Tik0lnyO~%R_rpnvWtX!;EadT>7>kj7 zz3&zF8tCm>VF{Otf{-&U;$%0&1(Jot$?DZr*)m(9PRV;;t8yBi?1?AGzL*gFL*Md1 zNKnGmmYCGFd|;2#NfR-0Gzx=~n7g5cN70Z=D+^N;AME&=-NA;Yq6xDdu6b=pO%@do1dxtBMSQWiu}LX6c`6VGg{QE4yQsv zGwvHotMM(oD(oaz!i3N(sx*>4UW4>uqCa3J(hgA>g*qqt~s#?d;vSj@s z_3@gFcAIjM!MwrEW9tQp1-_F<9WbPN4CIO~4s)WnfFUI2FvJMh)%U6|Bv-?E9V~x6WjH)u8SZ3=U%b!(Z79$aLl3RTOXoBQr-#|d{q+^J=FtqPWd55nL4m_tMDMEm2iLas|>ElL%zw}TU2zx@Q zVT!PRfpO8&02zPRQkQ671xxGO&$9d%SoEt-=RPh^0uXpQ8b0v+VbS_$cwCu!DfP%c@V+ z?5RUz_{pV)_n(wMTAT_^&3M*mwwVnKTX9=A{XUm?Ea0|p-@DN`bcgWj4Wkb&XE8%K zM11pCpzSr4Hp8U=b6rMr4NFS(*`hP5YcxG z0!0%8y2`noDrs#|4$gSzMX8eG$`ZonI$)D%oKQVgqnvMeXtKnP4J>+AP8A=1cK6W9}iQ_QsFa_RuZh2y7VnSLIt5+M)bJ>D-73*FR{&qW|EIAvI{BPKtrjr}ZMbAK{g zcJA7XKcWO4+cw;i@+G9?a6kQY^yV1z{p^|$5z`}P8{I|XwN2Dd)=%yxy@8Y`y=gYA zZqZRX5U+6%@h{WVn?hp~--~`qdCo3PU|H;jY z%wkSkcxs4tQ%jAfcEu;2t2)ta^ZE$6^p&7tEQI;F^s#;yNuArngqd)ACs4<)+cBiq zRCU;yqI1DTL+Qu_%zM>kx95OQU}*23)kSX{Uf*Wu_^Nit zP621FEjjeF9>KRqy-za1R$e25rd0yEIR)wUQUvwG=-x<3N_Urfc;++N`tbmvXZtSJAYM|0=oPve`3b+Z z?%~5epUUOsSTfe`KFH>Z4iG?vcdeM^-Bc@biR=|MfLESqodMBNrC1z_UZ10L;o8}XhpN4K$aE*QCpYo+R}2;hS=;TBP^=k~ z(LD~Vtl1?Q&u_Eq=PQjE65l`V81bmFqlHYS>Xgq=>PsR2;;DtU0&yX-&4;wv9RSEq z5GZl~ga>{sS6c19+(K3-3Rk-P*;q$*#s|KDcDb?r_;#m34sZreq}$=0HTZTV(CPTW z+I+bli>Pec>gMHbObI0p;L0sW_uo?ig_QZ5xk=b&d-lzxDYc3|`@E}F!F^TV=w~ir zUM_F6XlN^|8k+U+-^^$K&6fVZ+wT9T-@9>58!ZXW~OMoln%&oq5!~@R?@Yix_d3OEhi4M068}Ub+6y$eskztrT;KYjWL(22*4$f26D^9=%io+MrV~)_f)ptCh&0`j;pPXG zQB)9In;0LmgrM21bB$vt{NNj-6JjvB>}~Aj_U8TU70E5+omJhoXhQcoUt@h5c-j9Y zA}2E*7Smfr?ytY8W+;`xqiP9|Gg5Oz^|C`Jbzat0UX^^~?vY{<^JHI%;T}+eLbDdg zVxX;HDkJFyqL%&b{^vGU5_+yKo1{6|yTG)TCzp{?u3~iO&tQdDDlo1d#}eH;pI|Hx zB_t#Sn@K8qII7K=Obb_K9Wr&^B~y^W-n}$m*+PPMq(N*lD=?K~>AOsIKvrJqTxU>J#fnSB;W$ zpTHQkhnRwqG=gH$Wrb>SVi0wGFN%ESBKAz}U$0JZ%}p;u;>4F?=M(YSG^L6}Kl+2X zF<)^OqJrIQIjshBY>%w;#2H299aYhY^dbIBikFWC$Amz+rjDDGetES4Cdt-=8z$qr=Oe8!@x0ka#7?9n!hN zZsYCd#e z2X0YcR6#^g)L}whdlT&wE4UZr!=!lmKZI-9B`iKYci%nh7DASc;IA^^=OO1;==V!YgUp#qSEZT|4zh# z=m4Mb=Um@CaknkI;FTM_nhF}{zj4cYURJY%#2aL<0KJh2EVT=%59Y^mj+hNGjA=^8 zpmhI;^~|&4O4mU@$!oKSEL|U6Mf2+jBUBb@d??(`B$)?+>gH!@ZL%+|p(Ecl?xWtd ziCF+_7JkCdKR2p=Op%-as%s%uwEC_+318A1fz#VJn<;JEuf_92Qx3U?gIw!zr;6y@E6XG1>TbgezTp~8&?&a1!vpRthDp(=aNKHb?pR$Dpnu^- zJO@n=9lpq04w9!_Bu6a9DNUY>hK&Kns zdN<73iJ(i~-8^zdye6{81H7eNTDN!P(+IDAZPRXN(Rit6GGB$|lFQz&cyu_(COhJk zGB|Lxh5oSR=)!}i|7BEs-x+Vxt{aEpsWsh)g#ZHKJ8+$`7Y)(l1fqHN{&$EJgTK5)_?~4>jAVI>86>7gr;eQgscldtz5mVOcYhl}uC{fSx z_Md)nf~>+`j;zqRg{fxh6~R*m3KN?@rb`>t1*-9h74OmqA9XcDF-ySX)O9z$eYll;S%@6t0*kZc#*Yms`iUp z`_8;gz$f#<5{Ti{-mFoVDTL*#jMx#^DDqu_@MvLwp_s8q&XL5F^-He6evOT$~g-ahEIK& zf=4I$Ydz;lMhw#UoO%`HH?9N6Q@YO3n-knp*lCVZIhTe`{aSxo>piS-p*#t6!3bpi zPX!E`K~T7WBIy!1LAPlFvzUe9PVl6;X1;uRo$p1UZG&@g=1}H(dBNTvHFp?X@2kDqgIcF>n#`XuxRTmBy}u?d;RIAH47;`&aYt8 z|Mjfjgim7Xp3CyNR`fy6N6|T@lk@dTK?QCufzEe*&jtVj-TdK;d$N~1MtZ>Pz=51^(f@-yowaD3Lp8(b&8?_Hm zJW+IsD4e4h$yDnMiPsJ+*mY?!Sv+0;bvc5-ZA3>ZX^6k-0w^bcrZ}Dqq#=uI;tylD zsT^c9zRm-0!nKmam)-5n7m+{V8QXzPN^?shh!~pEbtmcQ=@dB*#tWp_@rQSR@51L4 ztu;bVoQX2sydY8^Ha0oI^Qr+-#R^*DFr`_xE&75-H4Le-lBxP;%zm7692MCyk#mdW z=PGz9?rE$Ct>|hgW%1u5d=8+YP?p++(0R#P5<~uq<@)HWFQm)wL9hHPQbt7kIObB~ z4`&k~oj+r-3PLzEsxcZ?zBnk>O$_qVlE!)&VGWlHG8T`~Jl0I#6mhV*IDeObC-*I^ zS=mKfMN(~`p(Mt4(mU4`{M&S60J<%5AgWh}!P;?AiWFLSwK-rEYpgr8U`gd*T<1y0Jz#W4+Qmw);{@tPR?sKSsLFz zb2G`F>}caf*Vgjsxv-XLv-#69%{Q88+WlG4r)ZETnzOUWswnPcU-vH1oMVKLGl{DY z$%S~Ja=*42_4x_iiT%e&-qpwBw(1tz4`fo`y2nPG)&z2lWA{nUSRI5X%hQ%1?sg-4{MjfBM|9wVB!joV%GEO*unHKU3ir1%Q-+@ zXg<<~Ul}<}5q&rkT3%Ee_PDcL@Cpz{s3O(XXu|#?L+n(ba{IIIw9j&CDqP%m9dXWZJ#OoFesvAu+TV@af&yp&q+yPXt9e%};XC~we zB}glJrI^I>`M~nC0@=VPj;BwuY$&+r`}lO8NSM*(V~kW0 zO(pSOODcD-t$NKOBUXVl-R)yau^+ps(j(HC;Uhl$_0@tDX=n_38j_>;W}^Y(x{R)jmwKqJnzOt#GK zO8#0z*n)Ni_n(qe|>Rj?tZ}M*YD`&EsrA)M7qPx2&?KtR!erJNPcS4rN}&|TrUi4y`Zc_25Zo@{Fe zM7`pr4rWp?4lPoIN;=<}hocnT#hvSGc_IKD=t{#Vc!yyl&3rHsarLfWT2_2M7+1c* z!RjVqEQC*Nx4VUKT{f#T%3HiQRiTyn%EIUkn<&eqXhgB?=)qFM26DKf4K?okjYmj))N|LBwn^!p$l8Wx_2=8~ZUxg{h(%si zbN?4wLOsAu@X?Pkb}UZTRz{UVxXA+m`s4dqXb?oh$B)E)Xh(LGtAbl=RWgy)pEQs? z2o~AtdyiXMC);?f$hHP!zfzHs7^8+ZGtIx!ugdD(wS7EZaNu^iWG+SyG1P! zU3Rt-362$#0M5;bJWOo!Yr*p72KwMJAo82sY(9SjbKxW)9O@_-)A&Mom=MIW*d~NxuzsaVYnINq0@kliuR%w2+j{=| znG9$k9ff+e8+wIR;kTFa$#OnRE}=^TIiu9uFhR(ur?06n0)%?3e+-VGFnSjVD3rk`I4uRvVyeE-&6z`;Q@^eM zDse;zV1UK~7otN~Y(>g~I+$ku(TkdBLrPz?bkBL+xq-OxdNbZXwq409IzpbR zCAkZ!julm|ZhDiKLXv@W@sVKQ7fNVXsML*$vy;&k3E5M6V=G zrf2CL>e3@Rnlbf<4bQ0)W03Q{QdUeq0gP7!L88(3`!CN*X35YNCW5!0tzOHq>-Wzh zY@Ra!7k?Dif5v`X19x>eRfQywS)rviBN34MNs-hJK0=v(pL41_M|O1QdP!j>u69A>pSK4;k9P6tf-(k&bEjC!(%C9_ zxd;kBC219LA2Gp$Qa&3nYY;l_Z2O` zoKwcElAwPz;46zYj<b`&t5%Spjgm*ihb$m09=p2!^>4E?W@C+#vJxZ z1ZaV!ixYowi&dIuS?`=`JME>oZ41i%Tv*7Giz@W>(XJV8ffhMtu_f5tnEBzT1P%jc zj#GcW6?x=nYsbP?H+<)98IRN*p>vnc83*LQwUug^?P0dy&Uj8TrP$wbMZ&FRm`qrs zD)n`CbDa)Wm1+fMnp0K<=FwTNc?$l!h7nCTb!4GN9SfRLUQ`F%JJW(oyfsbiSWFm% zy_F<~d0n<*Z7u6^vm*J!I@>JwKtNa1_(U%L>@x1Ld{#Ho?v)iAkhbhn)Rb2N>?#cr za_uh~T_m03`lXl()RfiaTS|>fB)_PI2?4>|XIbtk<=eKDV9cw^X$&xNZ9dhcn4T54 ziCHz13kg0^J75bdR>_LWeat0aYj(ML79uDD+1yq3!58`jb{!nr)0(0%%k< zVL0~5(LbHk3uiQl#W7%VB^Wr=QTeV-`mC8M@DgTA`h9Mj^?4p6S^m;ldE&wv?EHS5 z8uyt&7n2|9(OoF9hGJ!7=X2woiay!71Hv(0?n+6xZuRh9iDDK|MFMGD6vCj+>eowMmrkcfuZ&Al@Kcv^y7(>74&_A3^8&-@qO1k=8g`G+3Vv-tm zQq6P8-PE#=Cc54B6P7uo`)OHt*Y{7Av^CBTMoX^#1GD*}Gax(Sa54*YLd7tPA9(42 zRsDTX&jKU#B|U?cG`8pcjQZk29QE4h@@fZ&T~-u`z0jy3qhI6^Ru&#iUcyyIx7<2n z)|G8zpOmd>%B|%NAQvpB_*u2>Jfi$s`gI-Wu6x7Q)4#Nc7_ZBm`n(u3U%gSC{y95I zQvxlj#Td1$A*L!4FPhka8TL;mbOLRB@&zg__bIPA6&M!M*uxm6%~eSO?N|LO;L2ln zcb^5CNYRY9F!}ijjK}wNz3c3cDk0?I7P{EX~^3G=@5|Kv>;si{BhRYk=7 zh-M|$0=;WlCmWK2Q?1Z*A>+`Ji301`WgRqE%}NRoj|vo7ctG=`+N~iw42TNImd4yS z!?CvR-hj2mx0l7k^ocQV5dhQ&g6b8<3#`M;U7wbz)e3hbMcyZe;sL!;ai)Hi()oXx zkuVkkEj73JbQrDo!dC8cGeM$Uvp4%;IY=e0(CV|PiDgxs56{Odqx$u6T2|A4#g-ni z)%7BDiIWLs?(sGUDzBCeZuN^k+DtiHS7EhJVS|Jk%@G=Hqfsn#PEs)%V@M59j4uvv z#{lWY)JU&AOlMg(6g;49+v3Z#A+7e`tBu~ zXho!gVdy9zr^+#R{5bCP47l}Zg5iN=;GOir3T~Crqhep17H4CdlJRVwYR9jw9zJ>T z116my@hI(c^OQI5bLZxO$|3lp#aB>HJ4Dmd!rW&zipveCm!;`P$ah`6lfM4j5@z?^ z4;r1-h~6dRXSSVg%u+$TtIjh`8Sy;*8wRMHXN7*6srh0uVs|C&VmgbD7t5=BgPfRa zCU|QZdj?Fj#$Ib{o<1JmS{*&OFSlZ$yeXO@HRR%TAtg!ti}GW z`#UPClkieQC)EiI3ucbnoL|J@g98YoO>ML}{wgH1b! zJDniVW)O>CalDJJTD(ykvAcOWOgn2e-1}nVu(#aqgJ99dt-%5Z?q60f*tbkQS zc%Jd-(V-`>)QyrKS)Z~;ARKjRpuq=s5&4 zc;H1PQY;8`H%Iu<6CJsh6wuZV784C(po){<%;56rD316c9smISv>1gS(4WzZ=Hy{M zbY3g)@+w|X4>#LCd&q6E>BvNAsE_{ZHEes3n^3{ML|2#Q)_J^QmTy;UXpXaMXfn-s zsBdy;gukkkVfojq@h5TuEM+4}DIx~3A4h<8jso^wLl1U~Q1_sF7Mw$D^LX%0>r&35 z^Wv&8lVbo}Tr<(oqXEdXNRy$_Z)2A&!$|5Y^oKmBky2wk>r z&X65YzS)$Q|8ecat|i?+9$jWV<2db_?|5ZSe0=-h=jZ8Zi!O|8vaXoNhvf{~m2TU6 znL%uA@}Ow!Gj~&SPjnP+Npu8jw8>m)|e%SLC ze?GEuq*((X20~Q~@Dk90y(je{Qbr9CR})83XO&$XO48vE!f}%+Y20Gir7DJ$FDl;t z?j=!fVudm7c;eVG$#fd*j29vx^p|!nD(rQ(MBE)zQEkVQbwORVfH&wFvDhXumR!d9 z7ON)7nM2rZ5vk-!7sncvs9#R=ifmsoEw_U?1ou_3xc{K2F|KKzaZp14Zo};X|M8HI z(8W(Nq`jq^5nHT8+pbL?V#p#}%QU9DRsC@Ww1o?jC2QDt1=xwP z9r5Y5k_Nw^f%|sa%8IOvovdpfjZ2rA+y03G^t2ZFKd2YnL5FG<5Q+XZ&lR&)kV9(c z$D_}gPqMNr3Io(CY!$j4YlnFFMJ$tIJ-`K$Kl5s#AOG2@F6=u~uNs_Q^8J5!d+(^G z_O)Bsy%mur(mROsF1U0#cGtq$kt> zA^R@(x#xUmobi75{oX(B#~_1*k&KaKt@Zmo&z$p_GmAtid*M!$x-1mGJ+*@S-Cig; zLWz+3n1-`}k)VuD*e1t&ty*-N;w?SSFYLZUWq~2hE|4^|vbR+{i}_$)%m3P-ZFy(M zJ%f1s)r60}4%E(vajibA7+kg)#a0bl22{@pgMPlDp8^2PZ-DjwTSc0&A9$9pYl#jw z1}q6T2sU5rsm7m$DX#2ag9fPMQlf~erKnX%D|t+qe3|vn`I`yw2fD1!o_9zN&h$;( z`I{Acij^OPRIOVfvyCw)%G(w1Q_4_WqUTRm)aWn}`~P}b{q_gl5Tgl-Usj9r+Xx3r-1x%)W6dK#tNiE(6LeAA0?;aJn_r_BX7`et zgp}n#=E@o&N1nytA#xJc0ssR|<&r3tFWfzi2`mpY$4OmqTrPpIUCMI&xO+CpvenR|s{XGlp2czXe0r1XL{KHz>~AKDb`D9nLrVlUJz(92 zkY>)!n=sXy=MHmqSn(XKS1@<3>x?cKBR;$3VnAy`)ivukmnvqdB z`kp$u!r>X+;X>BK;1txJ=PD&PaP6pZunKZQB{QEV!jE9rT@#LcOac|9ppTZpu`C@>{F8HjbCb?Gob!|-9qZsg9L4QY6K$hv zA$C(}X1=gkvqc)9UFw7es-h5PE~fBZVei|bhHSsS=k!!9sYHL&~7~uEkBiDLhHWg!h|2ndY7bpxxO@8G`vyL)Er2|HeBAUK`8}ip<`2kCY z{1mix`j%0-ikXv&8ARW7%cPv`0gwQbmWT$P`oK38@cvIP=AYF5pi}#6F*{Q{Nxv*a z6O!P1fO9;Rjd+CW#IC8f&#i|J44Wr|FXr@81d|mbGT60uwa@&HM8){oWzr(~>u3iN6 zi>j0FD#N1hVhVT$1D05aHx0|4|eInAKK|-7(GAnKM_AM!5hgK|rv;xM2@m z`R=p5-%t-^EA@TPtK9U>M9&ORg^_x=h{=bwvqU}TastxoQ0ivfhk09VIAmU2^O447 zA0p)0o?yWNUazCHD&(=>ZbN6LZqZr~=Q3X(Cp|$j`Ff0VjuYN$R5hpWi=+EgCI`){ z$aLmAWioBW#(`qy`uXhAU406r_Wo5ZPV9xDU%2_TdTlk`;s*U6o0G@ZEq*T7-&+$V}t1er<{%q3& zH92%uTD*UJsu{OK!CJHJ5G`d5!E-!DFkdUS_kPJHMpz|qvjJ+FFm?HoKm$M@9|@Ic zvzqaUdjv6ELVgKqwMQ`_O!~x!5;~)lsbJ-ekef;*nAkPD(lNfCS?KnVmDLRrc}j7a z3!u}J2?_ogv0n($@6bwca_&b4N`oDlMg^Lb68hE8L{m;Q)rvhh>wiuROq~AM)@%Ow z*OmNEv4|1w-^U8XWO0RYHALE!!uoQ9*uyceLfr6{j^Fd2PBpbTW3?612_H+%JG^hF zH7HH?Od6$S?d*TqUsyh|B#t}+p(+dXKj^)8fBZG4F7 z4dNwS+|?{LU1YGtrNGg@H7{Ax6e~0sp5#zpIC}rT>f!#&#_m7=$<2n3J;@@_;3$U| ziME6yv=6zC^P$uD9)iaZFTWb99-PU|G+s0nrX9}BCM!{vC8ym%)f#IYL6rnD!U3T1 zyxKw{6d^L;iXEe70;tmUjN+$fpU*TYS@Xu|IFy#2`=-5KPm#-#L2lV|L4`0)2}&uI zgwQW@`*f2gCxHR%tk9K%$DqAgK`FK23daLm@qISy0zMx7k`|XCHl=zbCkfz_yS&96 zFYJ>pl*0gH&fnaN@%<=4&rne10B0&>iQ=0NYH`@OzZTPdVTxDF7x#+p#2tp=QZS?7 z^FTxR?q_>;-}=e{#Ty$xEEiQ&bd1tJ&oMi^Ihl4+nlIz-l#=h!mmH$YM23)`E21rS zP$;wWP8X~cM?cl|^o?%fjba-*h$cgnbe=)36E}B~PQZF;LidV4$VIubUDA)|MbViZ zPa@0%Fau;kEmMbqfIJtB6xa6B?Wt8y8kqygGY}1$L!!@4*CF@*w_WG)dOfj6^@6&K znluuKr!m43>PvP5p47;JccbmL=Nf*QWW+|?iQUewg zNIibd6lbLenw3LzN^j*^psgUskAqEqMq^bfwCTru9 z!HcxR+kevbfC*AOM5a6aB#QnE;ib)jD>Gg!Cq;xqNG0IM&{@bd1)f*CRdY)K8Bda2 zw0@#(KHJsU^tKC)754n$L|*|vrS@z6#vEU5=wW0^NwigXSR#LzNtD&Fb}_ryxw+RD)^6XfQe zG@i}zUysn$Ai3d!67&2>O@89I_w1xe{;!L+%v5tDIx$l8WiztU2?@UC?30P^=q-)r zAsWs6M>Y!vxu++8{@rK(Z~XE9>K`y5QeUY8CO-S3xql%x!qM_qXBV=0sVHtO?+%jgJl$ZVJy)AU9G>NH4DIsw?}K1AUXN@ z)A@sytrSjP$=fmaY_?!U0MN_B^()pUqX-c2|1|DJS55}Ot)rnpTH)sqds(>fpo)-N zg>uNve;5#u4v;Ie2!farzCWf4wvx-k-Tns>mq`$Mgq(u8AQ`t#t0tkjT_OGhu<9_5 z=7KHFV0qZJ`Ea-mj?-f=jUY&4(lf5*OdeSel?RDx?MfA%6%N>gpuxvFhuE+WDHjT& zCA@`BoBcYhm!>|CrUQoFi*C83SHExVH!*5M%R3| z)hFk80HpFJ_RMr+aLw_4mFf(DxGaPHNX$3~0B;*aM)P(2^<|?<*#vX7%*nYDhoqZ9 zLy{(s}jKaeX$ z%QgC?7eZnBDuprCK2m_=#`(eC;g{C>>^ygt-j3 zr*GAZJ?UMw!({nuVf`KBYir-~e{^bYKJOEEwy1OFYT8|5gXSFwY26;%8Vr^zDSF*E zcu-&=GDHZBn8MMg`RI;O?qNzbnkPxm@P%DayiBj30hM928gCTW;~~lDA_LWEB^di_ zf>TbPv{Bt!jEaazGlo9jXY#9SJVqG)+H&JHbi&;=dgf7Cyap|2&7l->I!}n=SI-2rzrw#1D3Ctw`bj-io}TGnGN|W32y?|mUimK; zBwFY1P8oPAz=vRexs+*_r9I4e3P2#g;e~cpFI0J$0M3r;%ghx*=8fS_-f=JIGorc= zJ@po|UwPMzSMg&#A9kN;taUO0 z0eUF89LOS&W-4E-_pG<%*C5xws&zw|KaR1fSBTnQcuc+&pYIYn$QqG27+K{RPbm)# z>0TH+;oiy^EtISwU(3E@@W@DLf9(uYOc(=qO7!Se0rfIfa8RK<*X?`B6t0h?Y@n^CV za$@hK0}U zfHz-fCN+g|0vOUV!5{A>x1Zv02?to*tPT z37~98l8Fp0!Zv0B>2lpwZ-}AfzxgR4qtgZB)t)B&# z_ehNJMgp+9fB=Oqjeduagp;wKhXFyWm#5ev*`B3JBSIRt{N{7EH`~y>Tks2Rwi69@ z$WUgrEtaqRy`%5va@Lk^rNQqWgDR$_`W}W3h8A0JbkYB;efn(`%s>K%F%YEOBsNgs zcr{AgAMx_(mfIo6>DG%AwXsHUXb79&Y@jw9?fcK0t$|Zzcb`(!SjG0?E#8FDbTPU) zBq$;HzP8*c`RH6nd8^+{FF+t>s7Pd;wOr|9koB3oRr8WsSfjOsCtL#aI3;Qrf z7ITFql~}Y}thZUQ3QzZtHb_zVK~-)E-t<%@HZdwOaY%ID^W=qpTHB6?`MtugAfF=y zJ}vR`6L%);Cc}^ioaH52MP^7;sU92bIxUI`_~gbsHO<)<&87%*tmbw&y4vIOCt`e~ zr%9d3Cc46J$xls)GhWu>q?1Hx6fJ6sW=!YRmrgXU)h0_y+JlF>m2Ea=v7E;g1^PHUIYX$kfTp4; zK%k?#w7OkqV$9DE6i0oxubRJB<%5Xp?}_&)2^B}a%^vd7ta*CY&+i@ycbkb>Agn#| zMdix7lz{>JlHwZ=L zf9#>uoxv_wB%0x&4-DqJh{&b69RqO8wT;U-aij}4W~0|$s3%Lm+ zPl>AW2;H8W^eD5~n@$M(r~qQ0G!O`nf)XXn^o^>m^L4)479@ojRlgkEQ0-0@y4ybq zD?YxIfw7TYfiCY-;1AJ3J8d`%jMnaN_`=@IB}M`Shv+^}iElTk)W=Sb(MV^i80IqE?NSl$4_;L}91N4W72fO1zNkdV1zU@kDwq z<_>EJTMa{+i9+Tt5;?#FR3u8Fix)&gU_Fl~O)aSbbh|*d z+)%iyUlCCmCl};;s7LU^jXf$@fm(F6hII?mZ-rV4W%yEHbc?8h~5xmhX9#D#L@ zBOgEcP=!R#k>23kC{~oDZg;J|=g^z5pXEsKTPslIGSb>+&8}=>5={s91~*Pu=Gnh%WnYiC9O2rWs@jk0Zp@M^xKphh;A9P+{Jmui{q6s-L;q{e=-;ZT z|JcO;Cr_b8*O6}K0pGlZwkH&cGY0P2^SIV`dQo*F8|))Xt-mh2w42u9PG6B^Z#=O` zR`vWk`4}gav}*LbR#*Y;Ojz8;6jAqMe}i&(*1<1hgUT;zVB?hYlpOQZ;$1&ZuysjR z2ghKen0VXtpu`jkZC;JSK7XcCg@SD!x@YhSx2Aoia z-Vnuvc3zAZw@=+x4tX5t-bb6QR!M}D0;|AG;YaI*AKiA`GWh6sTvWV@%79KpL6z!F zm$NWXHle=#LlUOnK=}r(;w5!CVk?;X-N@8P9u>kfZ17J26nDwQqCX+ zd6PvC2iv7s5mQKBe7?+*aQh@e4tE@B0L0d^V945Kx8|>m_6?*Y^ZiTUt-nrp(~HDgskye4qPqeohL! zL28&PEcjK}uYoz#s0l0p6V_wEKoldyl>uZkG@!T9l|fF;*uz?(^ybq^`AhnB%QBmL zZjah10$r4oALUifFZKjD2LyV8zv5@Ft#aS-?SypOYR8=S+2k1d2E^V$IrQa zs?hT49Ff&S=FwVg_ZvjbiY#c&t3?Y#(OGc-Q7^>tG%vV|uw3D$EGS@Vx)rMJSSQY8 z5WtbX{#;}w+o#6bT8K!Wi58XfTU& zvxQpOdU;daV1UZ=HEKy9ld4<^(C*0pXyH5)Fkpxc$iuyF4g7qNcbVs5KuQn0g)fW- z1+IwKB`aB1lx=-nIo!#tww&ts-3!&pP{#V_xfGMj>rEv+W0o+18}PiUj74=bURHga zJljGlfgS$Uc${AVOkn9AiHF00oG`v8&qD@EU`iq^%AZEJ_bE%4vFna-gnH);7!&Bg~P`gi^hCP1=hWoxP&TgCY)}T8 zQuDkiH;QiUa!qZynU4)NtiMh~T+^<^g#t~WPXuq+y~(kY6^Q^0_~u;Sl^Ki7T=U7> zw$A4EPdn<93{L)B^rHk$(l{1FA{C03n)#juMvb!v*0gOQJ0z@O!`W0IOGV~$f~u+< zj|aGJi*mB#PcCt!GMq_YRz|zj4ZjE}68*9Sb*^&n$g)JJ$q;_pC3J27ky8x=Y)5jc zVra{ozKi7b)-=P>EdA}^{cE>;?~}j1zY_UXp4d03_lvxT7wdWF{2agh^WVct+$U|M zMX3MhtKij5L^MyM!7do52l!%h5#8~hGD_xlm`R*d$4q#w=%OT@y?9z0=m!bshxJxW z54}%bm>)7;5w9@QA(eImhD()SDl#P5v5AKik;N_s;;1L)p6T79v(X@ge2n5%4Q&B7 zooLE{wFbccK7y}*8St^Z+O8M4?UxeME}Jqe4H|6>c-7UOa<5#W6f!+}pu9F$z}syc zkm#pWF?E*f59ePk{CV2FPmmbvyGP-*LlP%S;2e56+`lC2ne?#C$G$wCvv9nQ*>p+i zJ?9!mAFPW>h-tpo=+)r`cOW*C8P5apW%lLc*qaPr3CZbRY)=lVH2Grj2j)%n6>!ek z-^@Q`tPQDCyoL+xNowsE_JsvrNQWtpxY*DEl?@kO>V`#bKnyvk8?A&8Ej#=4@mspk zyY+MtrFl_kUWAJ|?Q+C;#Lgu(!3W^9-dw&5bNAY9w+g@(Mq5lc3HUG(?7f_|80wfF zMw;MEm-t)mHhrZTA!U_m&^?(vGc49~7$-^}eZvKSPM+7rx13Tu5pW+^KQqNQ3mCO& zs58AAlP&*x)M2a1Ky^c5QU8&~FzFAh!QA*!G`iHfiS`@X`(AhVL6krBL4n=-RwL~} zGhdLdfxw3fso)CM$1fC0AEuU$8S7-9!g`kHrB)PCFkUrIq7xwiOI4X)V4qbCZPF~X zp%EO3Q+Pe=x2-TC{oIHP6=lrq*cRmHfW&RY+4J}X)!EASg~{hlS9;qDQYm$r_50Pt!e|&|+=Y=RAXX4l5h+#H+h5efC^_SvS8GkBlV`H^XE~Ga7DsLrg}T zV+(Ao>5S3>isQ?vB)vU7LhpsQoPGXpMPYLNI0wbF&=JVjRg^zZ@IEHg#;~+z|i%xWh?~hg!dCkTKWG z|HXqrtKaixSAOUoHRH5mgV9=VYQl8m;h|{2eHQg(a=c+ExvvT-`Z3qMLp)sbQ?9lL z%*fa0o6x2RYBb}q!HpFqRWkFLK735jt1og0CIJvaGSjobIMpCqbk0sd(!5yk2n>!8 z1Q;=Y`Cttcq6_)zJUnHYd48j}Is|L%N@l4!L2v*j91^I+7++9f7BU>!l)m~AcTr#i z(9_FONy?SS^0aZr{dhGe6UN0!qkzF$M8!wBUBOI0BUPo%2$#!%E}q(L$+ArgJP(T6 zRSX?i+eta-zLIVY8I?O6KHMHHdD`+J7kw_FP+HyMupxv3a@c2g2)XTzjQ zhTh6K#2PISZjRHZyS&%-tO%pgH&}2y` zK1q$&W~$_K1S(r_u@6B&XosG});NyzFi2EU)xvOTPD^#(B-oRb#!fU-KF;MAs7*^e z)pVH-w6RHq8dFemDe4E!EGbJ#9ks|IkD7ia9ff6D=#pXj*;eubIQ4{QSK2G-0JGPc zl^Qv_=2#XTBd;g;=M}JS4Q2m!1$F~&tmyYd{?CP2hsotl2hP1tmlcaxtM~$=NQAi5 zo4Gyu0EcEof)WFcT&hdJjEM`EJ?*HPAIf-0>0OFDmD`6K1vS2#88 z;d4M-n1ozGM4pTjdY5a1zR)sOZ|v0I6z!c6gvf^-5V_@~LYDg3_PQyM2Gd&p_V;Zt zZ98i!z_Ji{BSsyk0yAcbc3d;XPB3)rq>4!Q;C>K6>JZ!*#*D*WS`NWxII*-th3oaO z0L>~d5JDm+u}GuO$fPt8CBG|ey~Nm&%+<#b9cXeET}`|A`WLo(brI~EGB=Bf-F3q+ zpbK~QaX#wdFboe$ieV1W_cadairrXSRI9|$xNeX=3j?D&?ojQ9+9Q3<$8;w5HmLYM z^ljFs`4p{gWY1iUt<8H8kUeec3#Ft-nA;3`LG+V^FI%U#l#EKr@TPg@@w>23g*yTl z>_q9ySAZEGkQnYzC)M2yTIB0uH!SQe5Gc4&G#wU%9Wirm!NZc}5hA7>yP>8xPfpfK z?8LMpb-(SFC|KKlwl`n!sv~Y%BY6)^}s;?}Ju zg&VD*otNu?^+fPa?#WeqK0?Nd+RqwJ?tPLdyRms&n@V%@w#9GbQK%<(m8#Sf$*rMb z=JXxn`s^Kw9_gOrIpsPfJlcT$sfC`MM-F%Z0E9LGOaX%rA~L9-wBvochSH}34Wc4M zFMt4SjA2OfD&L+eyAezn=GDgOWgy6IhZ#sk`66DLINE+=3=b2BMNiv+@Sv$}zK*=a zS+HsN&%bx2@L%W#=CYF{4(n0^d+=P380VpW3UI7m93;B^crdLXvY=msP=uQ_X@1py zA1z^oS$bgNW*~C4c6^5zq|r`{qr0v zv2k|*p9ff64zoqn9`?4U!CeaEzTYI+RV>ZzTiU5W6s=JxDS_`g0zt67xgX5 zb_z_=@hG^HXD&+-RjGSU{u6uj3gb|`%}3uzJNR5 zm0-;EJ(-Uw^lLD_(3#q`=D3tHic~nAVYy}7jpAn_iQpY5H}aTzmEqKW+}Fz-@?2Q6 z(KV)mxlz^C;+pKG>3*yrGa+hC1_u2jJZnh$R#)=?&k^iPyI+qQAFe>VubnsBcmxUq zcTM&=`kBs~@s2=ex}W@99HL6;vPgO?2qrh5{@h$44+KXVy8Y&$67K%bB8Yr^`FEhd z@Cri9&u?14X`Thq1}knuCGbK=w1edeNJo3c&zGIYPYp0nlfLQ1cjron_;eVVR7Ec z7QKWJFT-IbxsU5~iCzX2Il@{6B~0nU7)+@HWxY|gb|}MfWDmCpAnr*#vN5;?7>_qj zALULDE1C~SSl9+)QG2^Qe9RFtVA@~;`8YX?AO&U>mU;#LP?(fd_9DD5==%GhA`Oh+k9wDYT zz^l^JdplSMLe8Na)g`<`p63f-F@n6%TEO$r0GBgbeW^0rCEb~HIRkAMP(qw8u2}=N z=Js`Eoed+L2FF6Lm*injFD;^=NS3hjgKqg?U^8+r??vvJK_3mE0|KfZ9+qD?zSO0A(=iXQW&-B)Oyv{P55*f)CCcDjYrhw~BY~9<1qWTWQ13fG&o2<&-mED4r;@61LZ&@BQqBRLns` zjwCE)ZoU5QRGp~piN5_1(@i(lK?}bGho?|666OAdJ3-GW#SE|Ynsgg=#mp3scy-hZ zp|jz2ZNWY5q-}qn(d#9iCHTUqrBo)3_Y%Q({uH{LF093pvl^yF`9eo|T^)%0GwFa^ z@Mr2;2ib4uRkS8~tZxMKjB@H-fJjMJ#EP-s-T^I|X~mDcX193h+C%~2xmHu9R8EbU zvhf z<%_H-XZlnm@{P#i`I5oW$!Ph378tiJ)^}8HAvER}?2_iW6vM;ua^$SV>~i3V^YHxT zs`x%Z=vKs#J!kcGWU%F?8a+xbrA1pb81#@zq(P!;dD6~Xm z;hKod%O}sL+M9`1xMj>n^m^csE_{w)(cAi5Uy<1&51OWl6npuK`=027;a(NZ$_}K_ zU_`z>J1~xy=R3x_ChKX1{<)@H#!hQfZfaFPb!#Reqn|=>0rIgF*en>wkgke}P|0B6 zK(j+b3nmgf=ArGH;i=A|T8ni_LTRp+8e%O0noxoOE1XT=c+KGtLJ*0v7UAjMNqA7C5`fgdnGmNoTPci9$&0|Lwj2u;!O zy}p_ByJyK>S*n1f|T z)Dn0ewdW5!A+lq)Mn(02N^MoC3a@6foUxj4*Tj2iE5SR&U&M~Px`Y@;U_yAQ@bnc% z&42Z!ggqr{;v$NhrCp4X&NHq*sKkW%Zf7_uU+-)q$FN*kXFiYR^o>!?83mhQY_k}i zFK8p2lk)c_brwzR*l?DBDLv6-5OGw^XmZpwB5Q@HGAmy(QHvnsoqyFKR(CL5g3ngLRN6~&BKJ?!W6#HTL% zVGVoxMb&n(|5!gv+o#0kjt-^vy~Le)-)jd4(A3__4az@Mk!11TQ|{ig#ono@e$#_4 z9(jY%jC!^#@A0{mL(Fc;KfbmV=~=m#oT$dYl8`0HK=THrzv=JvbE;ZwkXV_S_jF&< z%F4z@_1P$`Dd6*vqJDFJ76p!FSLvg8yH%is8!h0YltGOwmESP@lU~>Hx0y~DOJ5$> zOJnGsI699#-rIns&;=UE*yJBrV_0iv^ZmSvHdc+-HCar2MPFvvcHYpEn`IR5?X~ma zGl4yCS%<>|F{Yqwr7jb|3s%ic;G_mG%kU&KM-;`_*h zW`}&murk%Yee#1fL+ zdunKUdVaA9N7vbsg{DPgMI$7tYuxWNs}nv{(s1hH!-i)eGSQxJ;r8FB;A?4I*YEaP z6N0)r)n-5w3=w>tO}PFOeH+n)br0#J-PeC;KZem|hl_#8hk}bGmElR1jPs?Lt9j~4 z8}-4}>_-QP^2J4sfG1B{@^fwL{4Rxr&Z)zN0}8aYdPG~i*y{7cuyINTk|#k~5*yLg z1u%CjtAPW@^)s^xZ__CvEntRb4VyF3I{ferB#VzkO;)5`o3Urdouriw0uzADx=Eg> z%#cLUM{G_dkN&K->^+xhZz7M*of$Nfp6lRz%$#8M zI#(MJSU+*;%zv4qcF$F9G`KMcJxe>0WCBJ z=bwZrKSU(nR-LX#({xxk7P;Vd zQb%|zV89&ljfZ}{G4HF}f= zF#r#XYbnkp#Gx2UjRvNAR%F?;73krrZAp*0AJ-DaR|7BZ0PLbrW^r+G`Nvpj zc%WZsZ~&iPKv0lemZBnk%g_+$PG1%?h-1}oeq{RONhRjq7sWepTn|Vy-H3XC! zdz<7HT4^_)*PRg6fZ+NfU7F}3Et;4jvR^s&I*jf{a4tSd({ca<=@!#q)zEmZ;qmqR zKQZd7C+Z}MXrR9Wa*vZ*M|1HPn57&f?qj=jRSgaqBhT?*6ED@vZWAN3cwgmB8O}T* zyhbWPdlI?KhNgUC*w3`Wkv)T5>3iV@%Vff)7Z0`n4<8^V!`XrOQ2bCr_uklDXf&Iz zxlwY0PCjLQ$(AwZ*$~x;xTtZdjqsP5(i|a9O+LvS(g!+vIZLeBqj57jx(6TbysW6G zxMF5_#q0|3^8`8l9;G3S67Cbxl#bWd5O|tu&7T=3K@aYs_($fo{y#IXgLRC9fXHjF zwx&w1$M^r>83-bB<^ni!Qp$-p0ag*w%~KbYz$`U?6;tp!4v*+#CnNd<;v&)JNS9FR zPR9Dq$%Y&Ia#C?5aAT+y!)VHG1Q(8My6@v#n=PPZ??gCPE7>jXG#FoMOrW<%MTN>lg#YxY->hLfMObWifZ zy)cHv7xuiAa&4HYSvKL;Kii~Voxs1B!T)z2McBc*Y>_Lu z1=Ij1oDJ+Q!UXjo=65AwPPo)1=;TQ_p7dvd5w5V;#zwEa)I%jo;gsbqLAKv~Tq*`g z7H3rSE3Ine=8ZLIn+cQuz$z-U7Ibk*+YW#cHMTUprn17V88Sb#Bw3WYx|X+DMRW;o zBR!-TqS8(X5Jl!yxW=elRXQ|){JWg6QlG}F$7m7?~* zy_c7u>W$z=7CxS?UuZrs9q~3f`;AOEU_W>IU5Pbm0&fGf~l*p?<)N@yV<{A+`*H8wsc;xGpUiHq}kZ zBdC8iTCk0B4sHh$&UjJ?P3R6ag~1uHB>V$x_SE|UUUC5s_BkrK0|>^|qUoYj#nyS7=D(z;6Xh&`U%E+J)aEF? zj$s~uo(mg478vU*){p!p(*)lG`|N-B>{)JTdg)+>BeF*%;oG{IWx=o8wMF~AxH~-A zLgPRT7@I$fN+x_(AvQW4+1c&)D)mmjr+oKr2-V%+;3)yWYzayP-4nOBGoX2mZO^4u zerlDM4$-<>$|9QjwN9s8NSynQz7K`HS9=p1*oXEcq%3pM+HRJ*mZ#N|T|le+^)Qc%Gr}UrQB1Rwfh`Kb?GXquO&OIJ8PF_ce+OVq(U$sj z8~?C=37pin-3R}Ou#KT^}|!u}}|deE6x@sM(LOS>nbL8&>KP!F4F(1Ss_a4ZGj)T_y>!P?g$*lV*sHMRinVh!#U&UT(-8`B_OT zNyb~c>msZbQHz>Lv{#gc_;(Ks#MXQ>C{#B#AC;At9ZoS|qPD-e9%5gv@Y{|ou>yig|% zpO6%F5p2-w6Z1oTRGr}_+Ui`@@VGujx$#U9AJ0$pvKuY&G!JVop2qn`Of1I{-l4t3 z&&);%AxWZa6YJ#(U8ue!&RN|SRHyaxn$y{N?d}4BrrkC6!VcI3H!XC*CPqL#hEPXm z!_bqGnMr;(H9t&KbKiY3N5`yk?Zt}|BQw#J2?vX)j|gX;Vcj9s4z<1YZqf{9@MJXD z>(kC&QR>qAJcdPjgshjoLYI16rB<6W{!=35=W7-R4Ic8Jrz_BS#tK7(W(jZ|TGPXU ztViv>=UXN@|6BMim;dvY9sr4d4@$&-y~-3YC^gRo+$?}F zdm##?K?%8e7mu$${#jN0PlP}JDIb#G4ZM7T0<}qan%AXx2oBll94sn4r0i>Zl70Pq z7cUFzAHa6_X;3-YDb}`L`uiYVz4MS3lYLG-gOPa@rkZg+eok=Lc?^-hW?3G9@gGLg zsSess<19TU)^qj!*UR&NK1(2;-muoP{y zbA@Sv`wr%Yh9=uyzzvj@rgE8rv~I0Vt9A(YbAnd1sE$c_59dAQfhCgy-ONGb@HG*q zT%VB|Afcs3?KbS&F_woYa*QPDSNwIw3YtQSJ)0$Q`7IOM3y)Q!U_Ud_V?^n-LgJvy z7$${&QA}X=O~XQl>(Y=~HB6>%L-oD3@0Uhx)i^Ph!CcvkiwUZ2 z^uxo$+OAIkb!4hG|9Z24kl>o&nuwx^j$V`C;)2)KLP+EBvm-1J@Dz2Y_(mz~ud*r8 zte6#L_3H&ynQy%A{LSqA=aHqIq$LO;c4#oP^M$CH0wsJ$()v3bL-%|ISCCP_z5Mh>pv6->g(^4CAx9B2- zreiRN)VhJfrWk4s3Xvg!AyKW&h*3RFwgQ#(;$t2940a~xq;kD+lHj>RxOi>K?@FO` z-9+j59#?L0w`L0QN^&M$2CeA3@81vJ!hqJ(TQ)=8H3rLcGcBS>9dS|8tT{465VIuM zwzKAVeag*EcGp*bLNZkV4?N5H%^b~lW!62;a7b%lqKJ>1v$LD`yDl$JuWJzMTMyzm z{XSHDyaIsRjyOwkZkx#NwX+Bo+E-s3eUCmjgSeT~g`GY(d)!J=krOt8vrYm5E=qlj zo86*770M5MZZKP>%X>Gr7)1qOk*yk%8?G_K&&4<;BTSeQ`>@hx0ycEyu6YH*Ni|;pg2u-z*!*)q8k9uwelWZmoZvXI#LYH0_H`FJj;Lb{I16N zWAV#@`bQ3{qIN)+|xhzXL{VED64t{^Qd|k zJLls?t$^2{e=gufcX|4{%gKL7kmI*kMFv!nUE}cB9;cuEnfdH;AByyE+5L)}8fa@# zSnx?K`$sS+`B5NX$hZ&d5-7WDN4i^*z(jZ4{323 z6F7}D*rSq_uzxV|Y5ZoyNM`n%>6I&=0tkLUTk-36Zy~htylFbs@b>?Ig37QPm|-$rHfU6yaa9fYRaI4k7i4g0dv13dXcS-K|GH9G?ftKjDxUBAL=NC2Caa4@11ifx zg3#EmGv=s~V1d}uGPul(5Fz9m2Q~r@xc7`#Sk)Myxker7D98$!Zi^mC)X$ z*LX26u)uTEQ^5pkBl`A2H=^4t{A zW$RttZA0yL4b}@w(s}v}-^I@=+Ev59j|=gak!u|3i;CN>F1n2H3b!?>H=zcC+V^|q z_vVUMciwSteAlLh*7M$Je=&1j#RdTQo_6hI603bF|BJWtj%q6J*FBDvCeo`g(h0pu zCnF3XL4x#7q&MjxK>|_feWZ6p2rU%pRS*(DK|y*i2?Ek2p&2RhZs&dPDfg^()?MqA ze^4ZuA2VFBbp`7Uuu&|zuNbRNtC!x~u(kK6{J zO4`ckboYt=34qk%Vs9xAHS2Y#(!6fOOn@yGY4)I66y8;TQxzCcO!T(LK||s+BhRe z3)#_~s^*uOht0irC}aV>U*$GkOTFt>7Oe#@i(3{kTzg_Xm$kvRh-TH{$#U>mC1!^N zjA0*UiQm7Q?^M@RBHT*Z2Xqcx#Xu2KzPZtEW?ir2yxK`kHN7mC zXnucE;0IH$SoF~L6R=a}5-PqITtQ;(-@O^M>p#L9=)X93Fo8-mm|G|P=mgYEfK#og zqd@7yXS89Dqq4UzW{{MJU7=`H=QJz2UcQV|pfk}EUxU}2KyNU{H=}GlzE~lcQ z)QlRbFpDTts_e?Jm$2rdkvqR?%@4%QlYp^sk@-c>d4>hIWwmI5gZ+g-Gv#fK=X?#* zX7UI~eMRzwak8x64NBU~ZW4;KwJC)^4+>X? zZi{9ngQSCgPq#OpH%jC)0KAS=2&a#2fEEBPpMe;T+@3^`v^=t_t4#UVRiRd!!pnJi z0oX^b^4cZ-l{&LC8M>zDWx#SfsE*2$b^dy6;7*dL`Gkv`#BQz0b!{$mNu^u)3sYXb z&}?qK&{#{s7rMMbj^{}^&TYFToUy}=V)73JWvLYaMRe78f;B{3fg^pR1{CBzWU_s4 zAaGsygTlp5x+}X2GRr>TaS=Q4zrN;P)rQc&w&=`Sl2{_ZK8}W(M_I``QZ;#Kn{4+n zCcdusj6CZ5S5M!6M-}=nI^F;K#V+svq?pw_VI{img{&Ee0mqpe+;g=js*V@1qfHD* zYcPaCaH^Ft5$7WO#4c9uJ8xh7nR-AhDICS*A`&WKgKD1!(oowyW84(*>-q2xh03J5 z>U9Kt`b^BpM$ira$$k@?G;;rtfRRkOv2-02DD)L4i!<#@>lI@s(Z<&!fdiZW0z^)q zyFRuVZN_@}Sakv*<1I?8mj=bQ9#x?ktjsJnGY*+=`z5!7fLFPHg-ANguCagRSmTWF~?Q!i$ILV z<#5a#Cc+bjfNE<36;lk5SxmMD%jzBye|x4ba?ykIp?d))Kzrtf`@u~*1AF(rG)yc7 zN?wNZ>9@5e^z$&1e}~O4*|^zVCtw4<83sRX2{s2J1o(~S;YiF0NA26Esn%P2G_@ih z=8za3!#*y7T))Dgm=6tY0wQ&u3H?y<&+i`Lgsa-B_QJ9cwVAfcP*zP_V-ZFLGe6YA z=XqLm238g@ClSP=Jx<~dR=ft@)6Y`!LYel)&LYeTZ8wj*inpranh%4`f~MG$mQ0rHhOxa`?v*oSKSy*FE>9`Cq?a=k3AClR5@%Bqc*{%Wify5B0HfQ0g*SXIsNzwXhTmKFP*=y~e#w=_lMv@Fe$gNfHdv;8Fel1C09-81Yd)!QR8CxMUN z&MSJ*dqbI|j?#t4BD|`6Q{+%WBH&^XZpHuIu_G|pyyD-_MAW4j8d+8mY-iI0 zm7@9i+wpRIz{c1&fWj|yvL9i`Un@Fnrj<8i5Zll}52?|uMJ!x~evTFiP6AM*CU_VoWr;dJo=kU^56r#cs0QtF^b9z-4Lam=dfy?6FU z;p;RCO!gHTlLzO0CF@bD1Npp_>+KoZsSq}6nveZUjRr{%a4Cj)Yu33tgB$VIf&OI zf&l1jx9C_i4;?)1kDj*i;~GZurrbfJ33+N=nqZc!%tm1TQs4GSadCk2|@} zA<4SgYyOEVSL22QR6FU-DFK**@JO^MbzF%M0Qxkl0Dx%CQB*_lPjd?m_m_{8acN&G;V z5>2$hG@P#=u@L<>6P6olv%;SuplF=GpY+Z+rK7vts^nr_SbIoO`QXGbk&lX5YB(>C zkivkVdEYj?u+c90=DlKa_;?Lua;t5<9c39hdZtOI8@}DO`Efl3qqzVv6*6YlW0!y$ zO!!EK};QfOdju-*1vdn`!gtsN^To2_BLv3^+z$I;FhG~qmr^peoi-$N}wIHqdoU})30 zHQ!v3sn2KLYTKS?&Rc`=JLu>WEwIecE!GEhmyYhm0 zm1pcsm6)Pn(PcjEAAWt%enayEC;TKT-Kl$8eWY8xI~bE3QS;!XRw?LgSR@i34n;~Ww zWJgCESwN$v>TUm=+^)`ju10X}E4t>!Lr3QM%A(FrNQr*zIB^ulV~|)arBT||s4tpT z2#m~wGxr}(O04I8fA}^xboj$Yd#w}^W|8QGyjQ_5>dD=Q0j(cMvCTA6; zD7daP;_qK+O>b3NZp|21qcnq^DS!a}=IV7I{92t0)_<-$*rl5XM3=kFR`16KbeRxC zk{uIrGa$|U>Gsfk-V$Izj4?`-BB^q7GrgHrl?PcomIs-*YtZlREU3E)Uw-$K!hLk! zXSH=VlwdHh(nL47&o)OA!nHmJu5a_URpi>}WRR_fzr#2}7FQ#}?j5wk1b=ZfSpGFv zK3jHa={|?{i*e4p3J(2F@wuHZmMreroHACSA*pe|I}orQ$?{kE)f(U}gP$aGC;BKi zJC`~%b>%z!q!`L0QvneHS7k{U;G@z-Nl;3B_ucl%a}`1(CQCUwg&?^~oKznxLC6zq zQnAGw$(L>ymaO?OQtNpc50C}ime&j?uW;A`dkCLD3FNHuzyT0w>1iYI{CfuH6koN; zEQCcRDbGc@_0@Xi`1?-{I;1`o+y}~?07xNA)Oe(%k?suIs`Mv?>~>1~-z~sR^tg;Aeo-oTL!N-|cL!-_}sZlG$Xjigct{ue&*wOWm67R4IbvBIMMOMMi z=>a6KIZl!!D7pK|wZ!vDhgtKP-nj*k%ArsENioRs!N=dL*{RVoa6f99bFxH+y^EP} zs)yduv#uyG$L1bSH{wJ1T3aXOmSiCt`Rzriv*h21Dk(&+pu(XV5fjwQ^#in~P~Q-7 zqio%MZKrpBw%P%Z>ouRnOQY`H#VJi*{8a&#{}0X2f7g%ne|A35iIRZyKwQk;Z9>*y z&*g4ek{*;eilK`O=V>RbB%DiEiE@UXQ7((d3cY~mNCaM(Lng&{kCW&u>N9Eew5F@& zE?^JZTPDS7YWWyjDvo5TCwNjf6d%lpVGV!<+H?{^{;AJ$DWgH$P|gAyd928jvZUpXqMHs1Qa$l1vCeqR+y)4uJ>1meD0qrJK=gP!<%kjUO?jBK&mV0c z^98e^7!FZtu_+H(CF-j{DZ4}Lr9m>4QC0h&n3avPT1u>>&oNc%yMMQwlI~B-P_I3# zo;1JSR+!hWFNIloJ?8#qtl=k` zI9^eT_;j2ZBg*U+pz9ZaqLg16N8Q&~1X!zSiN(JlK)RKJ6Z*0joWL0QSrNgelWxJY zZ{B>j=**Z@@?Zk#nR3mY(r2}Y#RI@Sg5Bw;w^;nu28wUNiyL9_%iM2T7)fU2gSR9U3a`%CjF8{0D z#h%6;s2OI;V>YBY3N1Pm2`otrnR7`0DDcA{lUHB_gB~jK6qzS$fSXPqSZ?2L66NjC ziFJzeY67&Bmh=5BbTsfj3qBb|(?4UhX6A%C$C4M^&DQi>T4R1BY*8Nt4IylY%L|;w z`qovE&x#*&I|>8G+(DGERiSwSG~cEm-9$<$Aqg@oE~0DN*9zsChyA&N8VOrv@iB;j z$6M^4^>xiKA~3>{OOIV?9Xu!B+8oA+Oyx#er=yHzhfFFTe$3d>F!B3fR(W1{{s#%U z297F}nn7G9UdGG=FfvcV z++JC{*-wf)q=cA&ZpM-Nb2Y4`w~)w)%+NQ$wi*8-31ZxkF2JreQ~=DvYcQ>km`lfK&i5%JgYmFGV%t%a$>!PjJtR)#+bd5DDniS_w4QBaW zat>~O+wzxM^Ik~<-`ko+<3C1TerWud#2)sbMER2p*JD|l5>9L2-L7w;S#;>-y~I}<7X%%ehTDZt{*TFzc*<7Z=$tcl4)8P!Hrua_ z-nRDOW+G9dR$R_3RH~1Cc=TOGSUIjoU}}l38^z7jhzI7oPryBm6LyDY(Rfk1ZNM`# z)~Q5<-HyT2kTZpZ31^hC-FzJTI_y~45>b=k18?U~yCG}4_3fy)$vofFeQR4}nD4}p zc~33Eq}qbtRX4Ks<%?QhFCx_^_bpIoN!Vz^`U2~3K{LIuHVy0WB3DTtK&-lA(I37; zpOnlaS*Z>0*#=yw%Qt}$-#+!%a4LdXOgYIDK#xtVjyI{%L7rL9Zk^m+-A$GoR!zOX zd$_nbaAF z5Tn0$lF*u`jRhVPm1d=zk_4exQi>XW_q!b4Tkw-~&U9FTBWUgL!32-#RKEk!6!unW z_QS)RnIN_)al#=3}_vxx3I-~^2aN?{KO@SDUclXQD_U1XNe zIg1{d>IV@pOuQuKE?V?fk?2lfB`e?|B;x`nS)}qTtw)TUWf~1j-L&Zf3Nr9 zKim!c{ZO?}I=Dlj+y~?5#2BN%Z>L)m!4~GE3H|3(zqwB z7q7bcNg*hbz^a$aRrl^&2uY%Pj;=;{ zNPdbHXZH_{iZxIMJ7x{w!vCyl`yc%~bznI3B8uG0a}B&&0&9dNfL)6c?|OQCPY~=R ztPP$#@w0`;;C!&5qN1HhI?{p$9sf0)SJLFP@=5HBS<5m%VeebzYa1J@y!UlpTu%6J zJ-E@T)n$o~BuQ1wrqbi~bT2*5i1d87HG)yPvo*EZhlRWhXp)^JB+6}~D!tvtnQQ=S z5!#I-mY;B3yg~$=DI!8XJB}d&R?%(CoIBTZcQA#Lgeme51b7V~ss-G8JYOEIs^wDT z{-!-NG<4W@DwI@?Qp19I*PI8hL@Bt-=m!>Sg#%%y+SN~+0hVjFPV={lU1XI zm03HJk2V&iEdSLk(!;0*QfdP-u7tV|_~u&!flUD8BIPI@xcbb<-XOs2g(NvbF7m-{ z7v|c8qP-lP8e2`l8nr&3#>Hznao*1#g78JuRs+8`PLS_xo%pKlC!Nzfz3dIT5)2qq zqZ+>I)w+e>+{{-BvJTfF3dNI|%yCr50Cu;)Mu!FuIvWFcOdqNyGfHBxy35ABBlcgPhyU0cQZ88ynmKU zZtIJUJ|ypC(#pG3iar01YsyfSsrONph*|Ft%8EoeUSLJQBB2+Y;pwVgM_hT{xzw+m z>t7Ufg;gRHNtL**K=E)ab%Ny@ve|9^Bui9g-ZPwgir$RY7}9y8SMZOt1!$Uu$K7eG zjGCofT8+iQ>p2+u0jrE zf1gSC;ahf)QGWjRSk>r9_;ovs$b`rQu=mw zfu7Y)4qvQEf6un4w1*n$))TYBI6Xf=JxbC!H<_nd+Z~@;g$ z9w-up*fsosPzz_4$=4GAz_dPa+oZ&Z*&V18$MZdm&`_gaXjTE>#RcS1ESEDc4tBS9_j9T5 zca=N@m@04ugIhZ;U3^r5qUs(Q2ijB0%+?#}sLW6EOoB`4zCm14(>}A4uS%$7$<>6x zEo$={Z+`G_Pom>6wGc&b{zPYMW-SSeKBa!ea${zF?en=P0b|y{Lf&LSDU zpC)QF07wwve}<3bkEc6z%BAem2uf0?UYoH9dLvs;u&akM3<OnNLbC%yspX}I74`ethyuhbMFFD?cnnB4S&(mQ;4iG9~)`b zqy{$TS`?UbTyio&-6~QarKh$XfYdJ+P$}9$+M-&^9Vi`-w?|AtQ$REm0Ab8~JYHK8 zD}4E*y6m|t$@WYYApv+Sijvgj$HKYKrAeW$7d^@1MDHHoM{gz`|1QGiH^}8KzFbnd zt>C|~l`D}@X1(ljx=|P6TT^EY<9neeP_kLl^V9 zPB{&*ddw$^^nr}gX8uXaCTq$WLL7eSSwDbPQm+emwULJjxmv-)WDujO7*rS2)1ZS{ z^1%BP$z*e(bpp zULy9MR>(2(HMkQYOBlWME}PB=Hs`3Az^*HXk%AD4ue+;WyYxXsla`WydkQE8GkB{^ z3?tnhmXKo1!pr{I)*v4h5xf=7=|#v2J7l&CK%V5WPi3n~K=yX5*VX~oN}9-$&N2ba ztK*u=++UG$@SC3 z^Ydr_V=dSJhkbzMieemP;F;-p(_JaFeMkMk3cRmF$?A3?Ag<0B+(m&Twk zw{KOeHDjuy0GrEPpld0v)G-l|gr_Pl%1pERnr(@nW0C;6+phd^5Lo=S{YaQvm_kXn4F?wobMuc&3D0OvF3c=BfIsO}nh z=BanywHzFb-6l_sudk>H@kF|TvT3%&I+Ta*+=AsL|NKm3u|?oM(?^M*x@%e#sr!BN ztp74H?Cgi#@Z%C!)kb2DwjJ911A?U4+zw5!PRU;GhTZPd!$0y&>Lm_ewYxjyc__xO zOv<~2-~9Vl-HcO(k|IGqbRJ$z zD=zsJS{+So@tY4OU;i0lRNomz&w9Aepel`%WQK>A)A_kvnkiw2w7|0M*Ey654HMIq zSY##o6%FQ0nlr5A@0e4^N1CddQhkPq9wV=Jxvh;}ZmZ2=@fCD=)4a}RfA|>9%8r+@ z0f4`WKbB#6tEQ0f<&4Dw8ZC}==~+-}h7F4-osm&`Pio5i&Iv!M^^BKPw7V?Qr}c-vhcglH5Uc(8$kkkl!+S&mQTEPD~E!ln5%U4HBb+j5rDK6 z&2xI~R4q(MRsB@sOZWmWRxB&w4HKU#Q0)hZL3z$#zu_yjTfh>Axgp(Jd)osUViR2=^s@*zqJokmz8pB7;GkYAGNuF+uWoDl^ zZqcp1|K}y6g@>#y+wr{5tRlL?(S6{^h_~X9P#>IxaDQ^Z$kv1i?tY_*}w3BC>eaSTWF9goO?QT#lmSxGDaRLfw4}ETEvUGyu?j1NPkRo&tiQu zaO2SKu8Pi477cNq*3ZNd(7tlOXE;a22K;eEVnbKEh!TV?8<>{hJj^3a+t*o(&qD|7 zSp8Bij|6-=_+U1i-fo}2eopFYaPQQaH%sI*rWAR5$KbXet&tblm3?qI{4LBW91b7s zFM3``O=@-;G;1Y)Br-`gJq?aKBK-whcw?i*ylY*OVp?xTWi`G&t@X!_Ymn1{Tr-i& z{+%Tc+e4%c>ey!JmLJBY4K7)2^yE9A9c!W=JaF%+yj5z7OtD#H=|*_kJ8ls_$(Y&f z>Z?9=PRAgTH5pZ#^<&6~p<|)wf^yYsAVdEa-b80gy$rmYgX4_}uozkRoP{{p7kbDV zD@Hq=B)4o=fVWk0D$;qoNUg&-^iVB|_;8_GGLt>$bXUGKqj4F`YkWfSw+NtXHEsTQ=#7mH7W2gGy3h8~^Kd;BVv{)b`Wm z633FS^Fb$dXpi8B7F!*5IqpE1%rG6TI6R}iZ z`*6}0yZSUN*J)!19HmX&afG%9;vCtDP{FsB!bT+;QEVeM9?gQ2?i1ydP=62U1TVg{ z+sVDo*{WuaIgV28;jrh$=FCZhjzElPwkkJAUh9`!gjMA9mJqW^&ajf)?v9&5U964Z($R%K>f9y|IP z|8*^ZO)t~r;OkH=^$k2KE>rZ@MKayF$Eo>+nxBn6*C?jwG7xdl8B>N{|M8Q8$H=&E zL+OiBf$}VrB{kiT{fVIw)kAb1R4zaa;e?Bbrl#ca$qxVejOpq_W)q4kz^yAqarqg= z>ZNzg7X-jerWK%YO>!mlk}?0E^13pdyvqec2m2iAx|YQQ32AVhbr9ctvIQ2_FT1_9J?_i=#H zQCh;*g3OjYXOSgSi~bVhJtu10GTu)ECDn5tPx)X5vJkZh zs%fe#sM5*?Dkk@(a9^7skr6ByS3DdN>W8OefTz5^WoQ=$`zHEB}c zrI}EgX`kc2ELS37se1Erj)-xehM~=&hrC}9Z`G7xe2GR3KFRVl_Mg_^3sz+BRbZJH zKi_)JWPra1tmQU!XXGSjS8(Bt4BHI6`eloVC&bzUKblX31x#-8*V^9+wfWEVh@99{ zch3Yj{#HU+oS$c{N9)tksK)#srkVQ$atBWWsTCilPScBYc4iha#oL4ly)P(h$QQ%U z%%C+by8c|w1~GnjnyhDb1evTsdQKhOas^XxHJtYen=wsq!J41tXk{>eem=4l9H#|C z#*V^3)1tR!^(Mr`jYK`g!3GU4sP$Cz;3Y5S=h<*k405Jin}l_%X3?oit7hG)8mrRn zDYOwZ2xv8g08qM;g2;%!w^4fD-`KzMd)fbXIPt$;mtG<<0x|`FrT9V=E<~oXBupE` z0pXKgfj-yBb70yoa1hV)F6fqPxqA^ylb-OGjtCqKt8#MdS?U9RgDddb14p1J&nyp7 zRY+Xso@~C_+Gdb32h_B5vd1gbss{bO>PnBK572SA>L9l++bioz>r+mXcJ>j`9Vnj~ zdwkElNWUWa^w!2t3TZ&)#7#kL?W^M?)#2)}Dbzc5l*I4PoA>lE+>(T>*j<+i`B6I0 zQ>~AgPm{AMEfzt;S3fmlp@~vPS_@(Z{Lthjm0e^Ypsu&UP{#}ct#-Y|16ww8jDzr} zU&-aXKyrER*nsXz2SBOTxpQy)?~Bda^w!vDOkP~YYAlFzj}ItnYvlEX%*MZc6O$L0 zHG0#Q{B6*1qOOKNetYP2Xj{0}OJWZdkDtd2Z$$t3lKGhy#1~CDj=o`nGGZteSqa6_R|guzN^GH)tlbOctt}CLky{HEds9yU zMF{c^9KDJ?h=RqoY0_DBTZT-1lzD2HVKwJ5ZH!$_eG6&3f$nJHD6rvxmO2|#e|%Fk z%j|?y{D&S_dQI{wNe|Bx9fZ6_+Qf9|#CM6;&cDs9DF%dMD_h^+fcX%zqE~WRspV@X z1y#^0+4zp;T+Y~%4Ats=z7GIPZNMq##5&^BL4IF)g`*VP=`E~1dg5uVo4&ebACMMr z0dSSgq|n+xiqEIed8nmES8EOWT(>ojE3vbnvnzGG(nCxrw8e#*aT!$3qB;-7p~wBiLyOz^|pg)T=IG zJ`C4O5dy&<^nlZGFL24?H9}z5>!5hHaPAQgD<;PmSaUedFtc!V%UdpOP_(fDaiAxD z^vL($KiU!gx->68(WEfdD+Bq;jr=d)C$jS=O-AczU&=_2HluiPqbda2hJLKLl+ZN0Ch)-^~xcld(-{WmTZjQ(jObr%XRPV^MD}d5INHZ%v+J7<)i?0;D zw>+eXFi96%kr1SkMoDh(-z2}R+Pd^>sz9WaajHgHNQ{_W9AC{>pcsD;kNFa70>Ko@Nq zWT9WSm>n#xCSuSYZ7*#ih_j}%%dea&7Z^88g^t3T;UDCMTXJ2G3t`!-vX5`mV8r@y z#91y=`M)nil!v^%K;W9<-P)FPTNE%H7T_QMRBPPy?|%~h3xA?>An_4c@#TB;Yt{yr z&V>mz`?1GyiT?t~ z737IIt-eSAuNLx9_c$%7(=ovEV6i;xwR=`-27_5Apq8f$pW5`x;H>&>hcK;XX{naZ zsV~9P$3cwjE^j8jX(#!RTi`rLJ~)FLQb&iXIt_RUg&M6vW-MDgrQz_D-XYGPMjjgc z0`>kP<6hq~MrIKQS#!Ot zxwW=(PMx_ynYumR9o)fJZ6z1GB>^gUmowcSXr(ygf*Z*b1(59zzVAIhb3CWGi0ZyU zN?F_A<6OJ1%C}lTeL-i?(0YHr%XAIKFzVx{p0(QZ+t+KMAzhmInnzZnCwfe|%Om5{ z)Nf%{lX3;up_9kff@x_DYTr0<)obyG5G8HBD0sdp?5V#OhA!$AirJVsp~j^Gw-q4a z4mdazCs0%w<^jU=sCWOlayVLGIsu0^ zzjloXjxUc^u~0Q7(wRSVHJqvSisUfus(Vd(LVa6dPdsdlP5AWK^?Pv4^6hoi>zQX_ z%F(h4*gi>_Pv!dBH6h|*(YF(BVEZnu1 zOiws|J?D1H5?6-3)7;n`$r9|%;fe0d5qjIxm5DzkZ)}`w;PFtGeKa_tesVY#T+r-&su5DbF{3jEJbqv_Ur)Slw??R%KiQxb1@pMKe8zaL z@^Ef5=rG=+QKu!^j*~)~)I58wG!PwXJ$xsll;@^(y|dX)KwxQGGF!jN*x3~5%hWdH z0E@%diP!_sfrP$Zg(pNs_?eHV9y8f%loxSqkD_$ywMU- zTxKlIV%nVa5atT=62(cBRmT0w3Bd5l2?WPC1C%8ox*?m1^PiJup1JGi^rGaO;K^E&EG##sp^nEjj(i+gU=5jRs*weZylP;pG5H$xQ8VD17Ccxm z9B=j#HEc;fG?+a4q%opfBYAXord!<6*wvhC?TL1GETrTXGE?OFApifB=%^ia9o!|FqQr2@b#%RSp#4%A(MOhVGWV-Hk_LQkua<{9m zIvu?5<}VA6iOoU*!I>+L>Szd24 z^Hkvh{>sQfE`9pKu-`GaESQB+dS( zn)n^PshW@a;+?8-*NV#*MLcZ{AYBIqyFs?2rgoX4l(19-x&#cgmb=S11C**;v{!z`Z-x?}A7yik zt>&Ly!dhN)29mLTS`o* zrLSqvAGlFQ#m49*n;a!z`vblg7yT90ftDuI&$pp%2Wsr84Q*g+zhS8o~hx2^Y0GUg{m z%XLf<(?#KMKV`sbnAN@J!i%VH&kiWs=(h=joD0`~EGQ>spt|m9aJJvh3f@;$Sp(C$ zERRHcakSr*u~Ks2X&pw1iw`G7I)ZHGJMjR0?n=9@``xSUhObC&wPgw6|*~PYNJxt_jA`oqVc^ZoKjr5?hY# zkncx(-1WQvXYtWnmqi=CKfc7#c3zbAIcN_1+?m&z-^`cA*mymQnQ^x#Hmw_6q{#J} zloI9a1fTsTJft@A$X1jyeA+Az)gAFbaiud(3 zN?*Y81()TJrCb?^F>TOn7tZ>UDV(&Q%ob|ikCurBM63;*`t z5mNIXpF7|OKmasJFs46c-aAZkKwT>3A<3R#Wo8{s)W66EIMppvkhJU1k3zB6;NF)G zX0WG;d>XCSbRW;yv^D4HgD34MFId}p`a#(?K;b781?ToM32EVtPj=2X(pNCJ(`#;C zNrhgrtQDk|EZ>L54^E;~MFHf?{foPbmwP!ZzH#B^R!M8vHW5Qh7RFoaX@rXq!3;a$ zkG|s`84$^p5bm2LpFBg;i84c9XUdacljgmW&sL~)&-R8=~&2 z{yjXXKlDMkb8Nha#m7-j`8{G=WvkGrnN7N*qNBZ&sfL8Fw^xwfCtZrS9kwzEv6~q&58L9$X-RFS#Ouva1EH^*_HG zOGh@zdQ5%+^2dFwRTM)J4`v9y=^Irh;YaI`NDs4evV9RyN}e-;Pf~zFA_d{uP3i~C zDcC*nnlw9$b7hk2YyDs!K*0%%_I9<@j>6sMa9{szMZ08=8Ka53Pcp}JJ*cM&w8;It%#)ByC~zD-hhOP`WN z{14Vq!UPVR<*Vn4M*KM=#-D_0bE`e7`)vyV2Bu*jF6jl}MsJc{3&}HYoWSai+ka%m zsq;IZU(al21!%Zy?gnSF5*r=K1dCmd1f%j7D7ih(fij6wTPg{VJo+KvVla5#b2*$T z{8JH?Dlbv!3<5UxwVZ|%X)rQp1B*9 ze!=LS+_y^`=&EJgZPs8`h5&^y%X7}$jrQo^Y=_1N6U^r9DFdcKer)lzKvfwp4H*Lp zd!uqlhCD~$FSzG`RJ`7_uqxqynK1JoPX(aD{YQ=Y1=&l903@71jk(--_9uCiBmCuR z&w^&(DJUx;tS|*vG|#Ftwx?kQHy#L<5xYC@lTy9=D#d`HlTuq2eJx%EMg<>oAsl?| z*nH6x`6DniTxYM48D1Z^x_xx;cq2&KMmiQ<^1aIZmv(SH7Nccn+y~JgWsZ#Z{$`OV zbFw_0DSE!pg#>cLmq;C)b8wk*x(awsn0t;%hVo ztl+`M#C-+?{}5@u;K4A(mNP<^O~S@Uth**#JKrjbrZ1nTzsWwSoYFz0Ut69p7DW|U zOn%wZ7_%o%P&jEL>Eh~=k&QiATRMC&hKG4jcmkpMy7{Bb{EGEs)>H1cB_3ucRx8n6 zI;gIfWtF%+By^&=K&>=($x=H_`8a>zHsC&KA{Zk$^YP~C4biA%^w zq~wpNn1n8&;K2AgB(5feHx)mi$!|8XXaUX26|6YPtlzORLwQm4!U{_if5_k1Wuf=BVgj#<1B);Z)wWYxp8bPHNQnd7EKSM%mTs9{*NJ8RLr7AB?%}ob=T*~yj=&2 z;Z)5!CS(Vs=O{@KHc&K&I`&~9d5Cm_&Uso~+F>kTpFn~0H+t8imT{n)Gj>!ybwO6n zpmxik!Yx3P!)|%_wSJ&nC-ML@VDNf{3vNfu88Bxj`dl;et{RbI;%}sBi0~L2m3gn6 z_NwwOP7FgSrv005qUTKJZ$V}ZMQ0I5A*bGO_ca@TGS5i4!L#!}YfH2UWcRp)p@3>5 zqpmhr<%&upY{yu9zJE2sHwUGhmdQy=Gg5Fpx#mX=?4!`htN*Ykxg8VP1$dTzv*jGU zK}s|ITR&8q)tv5SWg#EJRAT>6pow@gu zLdnm3Eaj^8JRS~Ksf?(YNSFDzrK-*Tf0%pksHWDn-5V<+0wU58RCc%GDSFCwLU01N539(&8}y3Np|=O@)4x++>OYO zPN_?XvAq7@2Z}6G;jjC*N`3cv&6l`RMYRf7IQES3nn67{ho6)2ybKB&^8H=`s4D~% z+!*KM81O*E=bookJ?D5u%03QaS~8KUYM9biglzY2HAqww0x%oQRIa+g?Ped~*x~uj zizvw`Ds?OJsw~X(1NW|P#Vg+DH3Dguy9NCBxlUj)NI9ZAyPs?Sm3>e(d(yy%tEmsw z>206e-te*L^2Q|i#C_Okwu4Jp5j2bXOCAC8;7w?o4`H*}O|eDy}%!iF04d{VBwC9RUlcB*yz>N!{<7(o#|#tn#jt z5MoTf8^@ySM`nGtq(K)^wGAH(;qf3@U6l1%Hz2dY3hp^ac7*l&b@PxEti zDcMUD{kDVL#kU2nxly+4O_!@Lj1ijS4dQ>?^qMb3Bh>_Ct7xl{pAh8J1n&-!@ZmrdC06tmu3+pOC#Hc%XmM zaJIk6t>ufMd{h2*jr2m9N=pzct!L-#{vlLCP6*QM?QCU*vLq4W7@RlLu2tBqmInw* zV9#()egsdIEG2L(MRJUY=WJ=oWnjd91~y|9XUEaS9Czzd zNf)y&5QJ92ffwuhMI}tq5$8Xd&RR1DVB+3Dwp!6Ihk4c-z=s?%28OMLGbxz>#m=A4 z^cRPkZ)g`_5mV`pNqSVeH9HKFjUqD7OCcOT>3x2HAw2Y$IQ|H}=#-;KS8`%KCSO+D z6neF*;>KJQ_MR$n@^Q<{{1!4WsE+tPQy~>>OQ4l}0n0`G%&kFq5H7;;CI#fd&FsL6qfhv+m0;G;11PHtL~ zAAa=D!V?ADDXO8JJZeBPl~IV8ViCH&j>s3K3R$kW|E?*>&RzI3_R}r{It?fbUlO_zsevWbm=$ zWeDAf8XxiwCAd(tfZ~dUf*$e5+!<6@Ehw3PG_v5TdQcNAiAQ6$j*4*em`ayJ|G*rS zzfX{l{P56>`>qc~TWN5g=U4{kI8`rJ40xzYHZ3qloAY17Z&z@c!ZpQwokxvOx>@$W z+M3!QMnIqc_g07hu!{V*z6m}Xx>(midH@JQNXEP8hRNClWFXMem=W%T%4rZ_+_S&c ztFq&Q`3+vi=VCiz*x5eR4n(uMod_;zFw7SatT?P}G=m90pHw_E{C)cLSroF zX>k%4?@i!I6Jix)4%45TD?fxzx82X^Oz$GK*vOH$g1&f`rxa10VO&(Y6Z6w-H4#ex zVgr8Roa+K(h%kcIB2$xW01ykE-7woyOY{=#S0Ba;7NZJXUL@T|uLpih_X;R*oz|R7 z!xSvQ;OX@Z#@~f9n#cKORcztuYnE3Ool*fIjweU6OC=w(md$4%9ZV7~<|o>#Y*u8X zRU!5!RrQa!B@v8d@jp3xwDWu)*iWwe9OM9ZsmBS_AO>916PvbR02ng}l-DF|xB8k9 z#e=M^H9EaGvtcX!nb1_1zN4rY5a;=@H(<6svJn#G7L61v03UJ>ttew(=Z2Y1{Et`|8Qm}V>s*wL)rxF>Ivs6R<5VQ zIXa^_^|_ltY%LRmjqTKZpJ5T@BY$u-ViyZ&EMIy_5;so$MaqnNXtV6{q|3%y4&hJp zcJ*juYIH_QPqTG=f}wQ?JOo_fC%pEz)p_#48!i=ATP1UCZNpFNAIrqW&vIH`<9v8C z>^?`42pX8QiS#P>$pZHH@=*h=j4!AHjlZVJ$#KLnfHlaeW#kVq=p29bQ zfj0#~3Q%UJQSoXF^_e6eqT46e*X0$Gk6;W){lKAO9lzkqUDNPZz}$tt=90tl(k;h4 zW8d(zg5L3K_btjXUOJzh)@ugmly#jn%ZgJlL91SeD+6iTk84*zj^~(kefq`6^yUE_ z(d_RPnyoDh zOo+%4&MS_`*rOkr`o)``%+)%#WBl5yui@B=oE*F#(Ni7BYmu{XLhlqo*Q1c#cweu?GFnnjCfnmM|Ij?i!Ja36V~l zV+Sua>RFsrV^``Wvpy;Q(9~}B8i?H$L+`7z3hNNOAX%GFs+2S6%tC}=S3)xWJBiQP zFw;n5vy`xMy7O1PFY*6zf0_Byuhv(l{#_vL>lcrUMF+?{{x$fQ{|^6^*_`M`(%xYv zJADij4_4~l-)w&No7e`g07HdksWd&0wAbxTHZN)Ca_I{DhOfq^6GE5+hvVX056nmI6;^bkZ%|PGjdMNDZCNT z^3(@p;jw@N|CVvq5+Lya?2H1xBp!erKYtdGc%V1|?1lWcY~jCI&3f~H+Tw8;=C97b zE$Za|l-11azQn-8%kQu0&|Ddfv&o1vNhut&=O~`de4!&)=C+#C7ZQea0vyl zwtq3TS44HD1d`n9x6{f`-Aj<#w%ckU(cq$mRh2Z8$OdXcEI9Narq~nmKkC?yg|R{zkNuGJ@6r=gfLKa z7I(l{RiB^6F6o=ayWPCETchu=Q*TeYD{ZQ_ecl(?(;UE0<5d{yv)!DW(eAk$xo0Ro zo%3AJ$i2#U1+fkYr+x|BTheZCSIzP>EaUq5Ofp&G%A1OMcbv9Mv><6fOpKWPB&CO# z7(0Ip(c8@epmq?6oY_nK!&exY>!SK(k)T=Yu4g~Zcx`xL_xCiWo8`xmri*1u;!nL8 z&5Cvu4ry0k0?ku9fWu1VAz4KE4YO0QwqIH$2?kd-ET#dkjvn!b?y%P9+8gY8^-252 z<8|@Yh8gockkN9<+i9zN2j37CJB#rvX_}e>7i&cTDEVI$mL3 z2!NHcl>t9fRz{rt^%bEJ-8IrA(D(`muzOj4d@PATOAtWA>u0+kYmknETkey4c3{go z4wbGSJ|$ZLIl$+9w`LH#pnJusj)_#Z$O0bTo6RqhJT7cBUxUJPq{kH_?q#*_0=_-| zBMdh5Y@WtfC!~iit7}lIXX`yc9hu=`h|U<2#Md63sxy3vsm4Jt@}#jpX=2^9jm8w> z)sM}`F&G7X3)9x-F~55TM$I{ghGTy8Q}e3_M@I)MD@{NYb5ojLERe-4kV6dMwR*h# z!oKQM<&t{VEl3tW@aFzvnBNJ%odT46zu54`M!!xDx;Rz(e@wK&Nbq88F6jZ&>jjbt z6X(o{J|zXD0f_vSNC}u_3W|84t>J6yeX<^)3w+i_V(+r@qqo|wl(J7_uO(~83pBKU zY2{C^*9*3W%@p>qWF%yVN}KFSv$UFgBq_2kdaCvCbvI`CV;5(eN)~S^d|Q%Zr4tpY z9V@Xj&9h)3`4`3?|C377eQOt|$HKzcTAyN1MdK|Khw~GKqWI26^@SKh6gKSA0479jHz|06lS_ z3+uE?5o5=`cATu(QR5963Asu-or~&%B{aJgdz5qXy3R;nLjG3MU`Ums1o)Noi}%_q z`gt%61_zf?px=gwyJpoBVzOQ#kByGNQSAb2Jhbt;$!T%|-4k*9JjLFJPWf?F$}0En zP(F2v>xX=64i_cz3vzj*s80cA*uu8|@o!WtjLUEL_l4Tfmz5{1OWADl9aZlHjzc3` zVT67(D(VqAG_3XhHNo8IR+&=ugM7S$fH2 zTPtnFUKuZ(ol65HB(>N>g#F-#rH2h?ULUC*p`yW*hEzh|$sR*NuR z!~!8S4s@4HPw0qk)mxOlLD4p8m}r$;lBV4XOpF2<5aw*hl0DGQ)2qo|@RE&&H|`GB zv3k*kU%y4f+!a+)sX{!G0y9|CCSVQmb~5sFfZTvZmv!A7B}o8cH2PR#cSP!ZbJnSA z9gE4KBwy{w6HkydiJf{`Kd2a?gqNy6QhRx93O@?2OkK>qW|NjcuSvnZhntfu5qu_1 zFJ`=!JeVwJ5I3t>wgR=oB`Utv!9S#`RULPHqMDHDKe|v1JTgfST%LZI|Dii|eogFc zDf4*$v0|N$3UQ-no8YQzS(#G$)Nx5a)S=lCRlF7Go?E^?9g%=3*gR0o$Vo1Pr@uHn zaz_;}%=Gx%m%tAvlJs1I?1Nk-EELmUjP!f>cu4qY@Z&do_15F`yEn!=}YNa z{TF@WTcTF?_fYZAxOXZSC2S`S#tE%;$%pl$xSLl%wl@j0u`$)<5S{J-b6V9tFE2gj zmjfc|ZFF@Z&^N|50RPwx=qVdVxELRzO~cEF^9c|sV#vkeJ4n4Q&TkIbrf+8E z8r#GPA2D7s)uUEFq$^nMh!y#^*mBiSxGwAL!DJdRbQ=h5ZOC|VtBk@9Cd?j2)I8GC z>kfe26&&=87o+fCnM|0X!%}|=703h3fNO1HW3wA(iER+?1k_P(SF1G^J4n|!TSZB?O=!&3Zc8gWQ0`D{G`v>jGC48-KM*m|_6Yp( zDGA4qlX%Xn!tbcVJhozW3GMFEED4&$NyH{v_@p~6~(!S zqoi=!clL4O#dHRTw<<%$CR|fIn>s^YePY@S;VH`%s>yw*%Tu5&Q}eZM1L?F|wS}c< z@vIdr^sak-4C2ht)3j%eG$*ZvWvngdRgnDr)fawq_@hSlXX*{kyCV_0uH{b3V-}-u z5feDl93l%BL5V6(A2|0gv%35cH47GoWRs;R z(AV`H)d2R4!IyV?c5~QHc|f{kT}vBxTJbautir6Yl+du934K_ZI`sHa&6N?n<2R$# z1C!1Xgs@SNDrNiL&-A_F_>McH84o6%Z(G7yf{6yr#VU$VB= z>pxZ9yjKVguYFPt4`F$@%t(4{RWTfWR+sb`5w>@R$Lmj;V&3b)Tqi0dv|$h7gF!SU zKQnIO+FDA719l{y&c zSbCUq^)&Z{uk5i-k08!RN57+y zf5&J)_)nVts?)NMw(QS%=(QBk_Z?MMbX}CQmRKNSh3;)fmY0>XJS|`B`f)>0`ag_8Zi`tF~5KYAmE1-4@eK zfM3fw)-vTWbkKpnqU|sugay{|=AeU3>-Gc^RxE$eP8Y--)QEIIIjGENb^wlp^Cv7g zJ`Pf=9FLX;)=y*!@e*%Z#nISk*7a;8WIH9PRfaQ;^{3~z?;l2Mt8~3%u?D9sAofMf zr4waRdKBowBGZ-ikSipESKnQMMuT-%4(F((yxTeK5pTMCT60KhA^ZjN{a?vG9$cCi z+FEtE#J=|mEQWGEt+LE=zuhj)XC05V#%TuhRk)11D2a}tjotcu{%VD*244C9 zm3#CbEU*97|D(VTj)7Va0Z0!>Mjc^?fG`{E%y(H^VZ7C!-Ij)unP>eKdh(EBO{6n= zv1Q9J`OQtrmP3kH#Kea5WAia0wEM*y?TZztLCLoG!OXa<$CD>2KajWZRtpy#JqN0h z8b--+UT?W7y*usKF+crY7jSCrJZ?72UxJ2b`mUy+I78pAom?NK(&-)Rg?8R)7sf5a@zEg-$~MgxF16pKgp4}93IX^)uXbdn=dA_DPpDVOb#<|H3W?{p(uMZuZnn03 z#vru`>lHtaE8q6&z&lJseMw5uoP0MH@3q5BHh;!n_Dr)+nMfrotMt!#$7MaKva~YL zwJbGSf#VhIwQ79rf5w^yfBomQlXeGiM;=q@(~kikMyG-TgHmTkNS<&H)6|>FzNc*TZWqY(p2~O7p6@%jPCFrqS z)-^>@qdQ0j3luTfb_DSF@{>$l0RqioA{!GooGZ9!EuMM>(Z8L+hch^Tuj>r|CKpXh zQ(Kuz=Xo@iFwojZOsZLmg-~&=p zu<5v-|9!clpIx^sv6b{=Nw*rhr+hs8-L{bO;qQIs+$ZXtlZ%x5BuqQ$37cLvEv!1o&EtNvXDP<3aFflu?^WNs!su$gge5Q&MXp<-ZpFqP zI~5WTp&Qa=SqkA8xLypn+dE|P#4JzR%ae4??jU01vMeNK-_OFjI>hqB{o$d znulRO>^lvnE&g!qFzp3-eCikC1_J!GiN-r`a@ERm3ANd=~o2 z^sThy$&7XMLBEImo9ZSi_b|d=jezW`H0usfbb7ODYHfDMs+gWRtlLVbC+BLnI%AQj zLZBadf252XlC{E?2}~Ig_OXrD@!qAJyO+Ee^}CzYZfTATct7f)e`jZ%VtSggY3DL# z>e?w^O4tIZVonG%6dm5kCIZp(6){ zJgtUg@aETn8o>Z1CJV1*BIKq||K7%zz~e_3*y&a|OH%?;Ro`9_e9m9S=LBPq>X4#lek93)>#KZml8^P*Nqos?d|~A&~px+UmK_ z#WwJtQcm9j>Nx;vRH}FgL2`1*qnq0=!3d4$cvJ_Yg)6xj-SwK7swyF z$PHY^$FAvKy0Lyw|5rx$@H=d29?486w z+Gv$^gs*7XTk}C#V#=b9%5%j413bv%D3H=ZEcddKrXLUCAVoMSgV>qu%i8$|?(FC? z=D2o$PGG-=9t+Pvhxds%AOinLDS0}tO8<`f{Gyw` zrfG1YW?EvRzq&ENIM-NLR9qnGi$JZ8^P3X|QC;tpHNYd@r2E$d7l>Jb>;P8kh8I8V z(a}I_;>xMD`AF>zIm3w`g9Zj)YTbl}){Msef}wjekWu+TwIQLLZ^womtx4S0;&&~X zSDTuf(v)w$=F)j=q;tl1W30^hI$HggEBaU8tItnZ<*wG%aFdiGp^>6jJig^L-rE9&&g9%T^$jCXi$9GH_TPW=pH25FOBfy>RuiZrCWA@+CF zyHf9v6DoYlU6qCk9NL-(Jy#^Y&s;hSg$L?~zi75iw!f~(<&a&Jb@gMWKvMM=z6lj~ ztMp}xn92)_SJ=fnmWaJCSUWU6Rm9J`)@((kBd|!P$rP=)rUFDNu9^=0Lx*>EH5=u^ zh0n7u+)z}?C@w3tg>FnczC%HWgGyXfBepl(9PI5Ko+r)D%|D*)ztL7v(dupB1$uq` z;hrk`QWgQif;RR7gnkYHr%3RU`c;T=){0O85YO18Q=6pUV1EpF;G7BER|u3sWF)>4cgrF{@D483|~A6QCg zp-ZaS{6NW&{xi34UYN45!^VGev0TFt`Q2;wzRs3%UB9ZzqlP#?FCdO68}q7qxx4?^ zB}U|ZjIv#VvR$Nn%wMvD{CIV39}=22UG{nuN&D9^e{qQIg zcz^%zUd;c>QuF`Kg7u&O724F3=agHdbU==8M_hQt$Ai2;0Hms+S3o`}#dKomB}CHH z+J}w?iRw-e%S^vV2^?CP>-`4ie6*Sv03;wcr?5@uyeYAAVVgLVc|Btq$Z6~PcDeCH z%_;Ti))Oy^PHBpayg&*;G6RnOmD15TR%9$!WX@=arc;MVpKO8`tH2}=VLabg=vH?w z@1Hb|4?%k5jsqRp+0E%%87rWAKGCBvyDAKnH;2Y;Kex5Uup@-V2dBx)qmYRQ;x)ZPbrGC|iv>KYcI_ z1f&$#2J#J9o^;&!b*<$9%;C9sY=2TaJFBj*t4V6I&F2h*G$R+oq*f*vP72FMaQs1u4!f;EK8K1k~nhA`l>9& zC`k2$H>JtW$F}Fm+zG9+LufJ+4H@FmHC3x}oy=(~I$9Kqf5FxxsjkG1hk-}`xkp2Qn-w3Cl z-ld#7=F<#5`V-le(Z`Sm54T%E9)tyE>MKhgjqX)74zKgoM_EZ|MjoQhSht;^k?Zyc zt2qt>_NZ4eE~%gp_8Y=x7}rFUuFY7-$nGUDJjW^A@=*c4k~P6qZ(1uAa%b_#_rqI? zaazuT453w17s2!R;UL<)EOp8I6Fw{iD_#M;tk7{?O`bXc=IwAQTdk!uk%qf-uGhIH z!{J2QdVRgFz?4p7O?^2W^ilfsh3$&#Z$7!@k1;IYYHi6xIO^OsAXF-oFx`BN;>{rY zuBjX&opE31RoTKSD=o1X#ztMM6cvm9vcWE+^y*0A8TFGoc$bS&;*k>pm7sPV(Gg*p z2!uBa4sVsxGe`H?+gbuE^9B7rLvQ@DO8A|odM%T~CXdK-1Q3KdCkNwLR{d0k&#;;^Tnm8QKn&};W-2Q(hF$z1X7cr0%^TculYVP z{7uPecri0xKVQ+%!uB@oR~q8EJrC+-Y2Xgb{AHicgqnRzCTru}$mf=VtZ-iWA;X~z zQocayssR3AZf(?~6*@AfS$F~>{rI@&=w^arH$RG>3$O4ew9$7b;oZ0jXeHCK=X=&| z*a^8TZ4$x+@t0DK`%+iG?Mp=pG;~&>4EQU0%s-kM~U!2Xf7Z@%B0e} z9y^A1>R@(H6o7C#>8{YJ!<{#?aK4&Jtm|>V0o^0X92H5a_M5J8_0tR8bGD-I!**cZ zLSRPtQMh>Mub9FR|CDxeSYqZb^>N}h$;*V9GY5HbXu078MQI*lcEL{cwNhhdCJ4YCFi z7URILPuh*DNTv2WT>qo!TT|txzpV9!8aHVoML0&^9>`bumYokb{FDTP{Z^To3>R-p z6jvGAtK{w9T5TFqOaMTcwx=#56aei|q?KiYwr$f>fc)Y;X=Q}pct=eDleBXwH<>zN z6yfZ&C^BZrlXM8YkeQ3t4vmT3dsEsaNHvPIMCR*iijI95oHP%9Z7!_XjOwm{a0j~} zTKoAJED`qlP2TpeIX%kVB|O;Zey_L z>ti32kDbjr(`IY7Ud0=s560h7KK=8<_#dq*|0jN?En#GE{f|K&9}Rhr>s7k30>-%8 zDM>2)o@Psaf{y|DhoI%vhwtIF0Hq@Xj&jVHLVc->qy7e7#DtQbqr%$d`B*|e19Nr* z201K@o+{Qn=Ry@b&E${l!RFFaZ_c_k$l4%fniBNx@ew>;Tit5*A-n@j-|aVBo1?Z5 z)h-4Fp??J18&B(*Euc?t5PA|2FABWqnq_Eku)bmwhgXiDasE^#2@K!wDOx$|TD@XU%&e`5mIYW7XS18McKvoWX zQ>Im?;->0%bM{#S;J*OE1`872Z~m)Mcx-(j2`p@p)JZ;)!7g`0e5fN|Y+z5=Qb$YJ z5>Ab_PYoNod=WLIZm^Ef! z4fdL%6otUj|FAifDvI%pP2gjv|I%Z}?Z1kBik>cKS18=j8H&)V04AOd?5C5Vohm@- zwzfNU_uxJ7I4PZ$mzM(peGBpF<`ar?lyuXvh~e!+;to8Vts2NH@1rhmb}(@pwaD3O z=256BzQJsRgldmy>a7;-oJS7&6?L%J0H7r2yceU!4!QN7s28IJC&VQ}*?Udd1==gt z=q&9NzZ{>xxj2nB*XiFheL4agZHqWfK-)W^H`3FZ6EaJtXBIY&A|kq#UMNi{c^2V{ zRdM}Juj9t^d*VcUvB&WV1;QpzvM~;N<@?8`Ag<`%2keG455a`Bn`6B=^#>EKG z`RUu#-M{ts>Ty9*@6l*oCVd-_c)MNqSlTd5&-zr!xHjyl>tNb!MzU=#d(3-gw)1vU zHE;`aW3CjMbCgSQb4OK#aqZ$!h%Pe zo%UYu+@+Zk`>PP;7w^)UvyvKT*=|>|vqxg|=d+)y-45TFC@^QTG({;7Nt=#>71{yy zv2cfjK`egXl!T86CfVaG)SkUErXa`~gemtM1!9x!m)cpJjb`w%H?JZ*5e~}%89Ltt z#eNUHLq7b%)CH0Cs|qkb$K1(TXA76GVCcKr?_|_CHTkLPasU#J6BRU&u(Bx<{dKZU z0@t2M9EBi$5Qx|(J_DolL~{-8B&G{^=IlqrY!1A?rLAyRGa#dY7{BuKNzcYJ7w755 zD~KvlcF7G?x--XyNV#K30g2)a=0@JVtRs@%wO<@T{F)c7-Bj7iUpXh7D-pLXxr0;z z{E3@p@%>nq>)KSQB}`s!Osn*c7wGP3ZjaS-e$jmgGye3otKrw(x1N1HDw~Et45q&H z%S>fkl{ARl-@^g3CSDHe7rt|dnXikKrqyD8zU ztUG0EDvtW5(aSF%k*hW4D{0QC8<~VP zX{c{9eTsUPW7~61WIzS8Qoh7L)EIQbLSnc&t6y-yxy9_`YNG@M7K@tz18Oe@T+A0L(u`m%-a1Em&_i0~(*Y)?Zd^Zi&mld|JlJtEvaxGr^MOq^8z25cJ!-$UJ0+*Q)7F}BNT2Cg;skg{H z&5pU~p37yR59=eF7H`iytxK{imXzOy!yQTA^Iru z9Q$|u^pQ9%I)HL1N_3rq$`^@h$(~4eCl+GDcv(unHx748Br?4FeDEgie(HEmaQEff zYc3Hs1wxTZ>|xp3B6wCgktd`{cN5GdEuX}#VW5oLGKPH4M8QAr` zM!$!(t<8yT(ray)&@@0$&29a(?N7@Ixxqz6m4`Me1*e)tRFJmPBd|Ha7+gaiA9oMb#jJ4f`g@l;? zqj`&bdHghF9#);Z%}qL`-lC3nup{r0s6h2U90ihD&4v+a<16z3S@v%v*vsz=;BM8E zVlzv3X}9fBt&t4N)rlYavY+ev>ewZ(sU=5J^rDp;I6efhJ+|hQpRC7tIKAq^%`D)a zmU@55FaP#_d2_7B6g`&S9LfO9pmr&$1_y6W^R!w>!v}&Rey}Nj0_%77=En=&lJ~#Q z>`v3-GJ;1qcB_dV9opcwG{aW~w6cFvVovN}sU07W_KeO;$tpf72Q0lYL}p=O>I zzrPdG->#Z9G0q8o+lepq^fXB@h|2P-MGvZ1J{g@O+8ZzlejBEf1|WRm8TA#VThlpt z6`WrW(()Hx#ynqbG8vRxA5~&5H#WKQ zu(8&61evL(vQjIwTH?k+M?w#PGgz2=NPjL#e>XyhG;@F;dAupx{9py{mX660P&`6) z55I1%%fFft6;rpqvy;Tl9l&co(khb=-3a0M@}NcswP7?r2jEQ`bs>;#DnF5`INUgM z2eG}z66iad#w49LXmIW&O1dg4e?@3@#CD|3$`oVX3n>7MMW;K)$bYaX|0m}M|K4Hu z-!Dt~()mcnp%ej+?QGykq(t&H2aYBn>QzeH`wcwyV<;bz)ydwC%!Iw8k4vk@cE!@0llQN4IKxY)qG^ukKzMM-9jJ z$rz`6@S9mNF4GqtjKC>($ymmy?Hk3pbk*K|ADTIQa^0UwC-c`lQm*y+kq18UQb#nE z#pMWd;14Vj)3lv08UmxROq{i!_59(*a{$dW_W}i1QL(G`Wf8+Blw0;_+O`bHjU}^3 zxjiLcn0)Z8sQ$D$clv~t$j3+?Vl|NHF6E3@MN$TGSw*mXku^psOZ0oh53@sxIJ=)4 z7&wHrEgr5abJFwAq`|+6NTxBSuXm~RbjJW0u@fX+{#=dr1ll~Q#&+NDAYNk;-2J1K zjOh~po@9S-dSjXacUp{Ij4hio$POqy0Zp_Dm%{qqFz9|enuE@*8pbt153O@)aqZls zTuybLLGSgEp2lg;`g7^@Z##>e_a_WfL8eb@<3SD*n#w{y`RRiCj}gBfa^Qatc2v>s zJU)HB=rPR*qu6)EH7q#Q?6u$Ay0Zzs0MaOF|9a>QW~25OPf=Wl9g$kC6gs}ooXB}>N>-1UwtpFIU4pzS40%o`R8@#Wr zHYV+2v5-$q*1Azb?2*QYj;e8q=RfYr?oAqv`f*zaoq`QNH2#9T;lEvPtZl7nX$ZL4 zT-O}-aIK*+Ogqx~u|WJ3r{!vhure@}11OPnT|hdAa^nyS;08~DLS$q0btQ!|;ALqg z0{`5`&&2{W!cc&-!cyxGENtCC`msfis`zWKVg%;?sKVAmTeHji*4k)m8+yGzSg-h- z7jwVO=1&qee)uIFJ4|tkLX@4~`zH9QI_voCSVhF(-ief*79(6()d**d-ga5fay4Eq zqtlWNUlPG#iU{s<#Ba0%_L(FPmbF>QcepOf>?;NQie=0jl(5Js2E^(Dw#@SfVtr4G zxZb1?jI;7oG^vg!FyLwc-m`YF60kckeFIsMT&>=oyB@+f#@*e1orULT(kvpVd&Fjw zBc#lu2$8N`7o9lwk!2aPG9-7zMltDzRPsl;IG(V?XF!w|z`hHT4fqdI8=bh{conlr&lW{>mnSME=`@JFm6-PIFW?r) zM?0Bq_UU6BlOV8J(79tB&{ZPLA!-TK^7=%zM@QNf#{LSa_XnV-*uaSa;gHAkv5pC`on?5BmD5}7XM$Bs!K>2QCKK$^oKjdf zu756$M2Y#3QfvI2I5J+RC78rB)9e|*0l&YIl?U5$q zp`AAvhqseGQF!hSW{v!~NFp7)jkA?)lThS}kRS1>u&vG0O<{riK)m9oEyj+m2^J?T zu?ILx?ZiGDM(a0B2WNR3>)LS*Dt%^3<4PZ|cphr27$5@9s9xQYdXwjJ6Mg042;FIa zczYaGp8To^Bz$3M4|zkIdzA-5z<$3)S0plS`Mh%!fTz-{r|`B&~I|i5k*ea-t&wkeBIpJt_MsK!{^`Da7k;Vp>Ouvc~!izPZVz zd8Op>Ae)+SQjDtYZo10ghVBl=KmC}&Y7-@yNKCv6cH#MxCMXgp8Z9dXO4dLDiQX+W zMyrI`u-50vwLd#1EC$*pb-~O>nI!)Mrqh&mT7{yuu=cA6?=4u3^GYHvpSRPn`%7l}0c=yOzInnGTc`*HR}jZ_Or#3e5GkKA!!(6c`1v{zgM{k%q>ThKEM^Y=`|X%dtQ? zFs!cE@qI`Q_{W5>1?XMY|8Q&jTHF24`Zf31k~$k&oxXijD@5#1h0LuG%_GppNA6Qr@|ai5*ewm;BtPKE7aX#**F2Pdrxq$$ptmTk3Eg;TtQF zQ4AMsa;uN5{IfU}`XMHgow2C4O1Zg`1F2eHHa!-Ha#fcF+HydL_yP?uk*aFHgH)%^ zPymtKdEkHoY)+RAy1Y;Gd#LQ8-CGRY-5qRx;xFd-WxEA7C{fUwmI5qyU!t*~} zeac*wEd1jyG&iKeT?DONmCw#hW3OC#Q;8PL|4fbg=s@AY(Cb}DTO@tGa)Y&Bk0HFk zfJuuUBdKZ>=YE({F(_P~>ArU6(e}SuN#mbuB|UIl6Ul^*E9=vk=vGb4ra4qC;=MD} zZyr1~61XnfBWxyR2pkZ_UtQD#8Su8elHhMgFGzAh$HB{^1hDFA0fwk*j z3g}GBpyf-DR55_t1Gvkl!*2mzD2TomppAV<{S01AULd)qHDP8EPD?;}R5=YK`S~H^ zVc3r9w8T;!+UOr29(hmckx@7VepZud}%^$`(AU z9fo9HT!?JH2JFVaxAP(_u=BJe?eOpYZtPfIW>QX~9RaB1DWSi7HH3}l1O`CF6#vUKM>2atIUX4|MTYKzGp4JUr(vx=|A=*MQ!=V^dbqsjUQwi(ro3V(5YMS!uj=`B!1f%AHs{Ok z$xb3^-%RAG=eU!48&@oRqzqz|CFnT*H{6#3DA~daLp#ed64IrksQ`zkQ@(O}?7Lss zuK7f$g8|1@l79JDkiNi356P)#dS|q~&iP>FLPJ>l%}su2q_ry=7}efz9d&{FN6DWS zm=prYt9@_@g}!Iq)YQ9OIVM66pDlG0Ypk0xsw4c4AgX<6yh^FER1OjOi7jN^1<^*_a#*@FM9EnKG9!ubPtvZ>1eff%r>j z%iGzhBk9jGB2kMBCS6>o{rPDVw6}`zvU9ErXflrxVc`-P>0+SNhYo(>xnfn!`1MgA zn|WN0P?lTtGE_ZBHb*GVgvxoE6w(bN`Au#olT&>c=t91RT$%(sB=Yp7rR^*|=07$d zf;;1Ff2>#sI414ujdl=}Nd`H4f&=D(n5Ywtg0E1)-Z79P@1^(&NV2u-&)h+f$@gHQ zL`^O;7Ex+NWmeJKtW&vTm91Rlo8n@y*;pn(T!GYa)uc-caa;7C-UFbk7*fZQMY#NK zG#_pIZ3-VT_od(ScsV?n31pT>>BlM!z2-^MbgQ5Q9vhAp=3LLbeFnU5^9h1j7R2bqK>fk?{qD8j*OrO+p#g9LO*H96sW9SIzpa^VGs;um5MPdgeOm zzTcJl!#g-H4_SGi`yjZ4EPjar@RxE5Xz|Ear}Bp}XzKcIcA0K=v5F2!$)SwJJOPWn zY+N$nR*07$-Gu8_Kv{1=<8@P9jgzufYf*sren^U(C48}nPID6|CW7RahhKv~gaT=y zmc!DqA?Fdi;>W+^^tDYU0(wpWz!kn3UY9;5IP z7zi7j9|`E8d3LAURKK4y#So39^y(L;Lf^(ERKkqg9`50XuWe}-0rvFF6u#XP_U~m! z>LjLW6qYJR)_f$$&U&Q-+&w}pZo|T#Sv`a%Uita4(zAWkK3{$o;p6o zdhD-V3%;Pt#Jf30NRS|^@s=rxswdd#UC3R8EBSMn6c?l{1!o*u?ABcVA(83hws8vU z1p1G=IG!q_0(>id7mt-zMx0Z0pX;iP_&W=|R9(N)zJPEw~%?!5%`)W9V zjhV>we)4rwXf65=r&h^sQ~SYQfD6;4XlLB3JRK=a4?D*$?6~s(Dys^+Zi7$!g77$@D$v3a~WJQ)^S9L~2`QNaRZ4TGh z05_M)X%M#ZW;dR3epH}HBf3CjeT-Pm^)v1#6n^|UF0T~Lp(`5~T7Yoc@c-^c#2Fkb z;pSO8A^9EEL|sZHbC%$XY?XGAu9fRQ$C6`~(aNSHKw<(*c+p-@bn7kRFzsA$6b@LF z*&}ve`>}=G1`-*rt-l?b>mlNqy8J_Ta17kBw